]> SALOME platform Git repositories - tools/sat_salome.git/commitdiff
Salome HOME
initial commit : transfert of salome configuration files from internal git base V9_5_0
authorcrouzet <nicolas.crouzet@cea.fr>
Fri, 25 Sep 2020 09:58:03 +0000 (11:58 +0200)
committercrouzet <nicolas.crouzet@cea.fr>
Fri, 25 Sep 2020 09:58:03 +0000 (11:58 +0200)
731 files changed:
README [new file with mode: 0644]
applications/GCC-6.3.0.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-7.8.2.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-8.5.0.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-9.3.0.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-9.4.0-windows.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-9.4.0.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-9.5.0-MPI.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-9.5.0-int64.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-9.5.0-windows.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-9.5.0.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-MPI.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-master-int64.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-master-windows.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-master.pyconf [new file with mode: 0644]
applications/MEDCOUPLING-native.pyconf [new file with mode: 0644]
applications/Paraview-offscreen-rendering.pyconf [new file with mode: 0644]
applications/SALOME-6.6.0.pyconf [new file with mode: 0644]
applications/SALOME-7.8.0.pyconf [new file with mode: 0644]
applications/SALOME-7.8.0p2.pyconf [new file with mode: 0644]
applications/SALOME-7.8.2.pyconf [new file with mode: 0644]
applications/SALOME-7.8.3.pyconf [new file with mode: 0644]
applications/SALOME-7.8.4.pyconf [new file with mode: 0644]
applications/SALOME-8.5.0-MPI.pyconf [new file with mode: 0644]
applications/SALOME-8.5.0-native.pyconf [new file with mode: 0644]
applications/SALOME-8.5.0.pyconf [new file with mode: 0644]
applications/SALOME-9.3.0.pyconf [new file with mode: 0644]
applications/SALOME-9.4.0-windows.pyconf [new file with mode: 0644]
applications/SALOME-9.4.0.pyconf [new file with mode: 0644]
applications/SALOME-9.5.0-MPI.pyconf [new file with mode: 0644]
applications/SALOME-9.5.0-int64.pyconf [new file with mode: 0644]
applications/SALOME-9.5.0-windows.pyconf [new file with mode: 0644]
applications/SALOME-9.5.0.pyconf [new file with mode: 0644]
applications/SALOME-master-MPI.pyconf [new file with mode: 0644]
applications/SALOME-master-int64.pyconf [new file with mode: 0644]
applications/SALOME-master-native.pyconf [new file with mode: 0644]
applications/SALOME-master-windows.pyconf [new file with mode: 0644]
applications/SALOME-master.pyconf [new file with mode: 0644]
applications/appli-test.pyconf [new file with mode: 0644]
jobs/TEST-820.pyconf [new file with mode: 0644]
jobs/clean_all.pyconf [new file with mode: 0644]
jobs/salome.pyconf [new file with mode: 0644]
products/ADAO.pyconf [new file with mode: 0644]
products/ADAO_INTERFACE.pyconf [new file with mode: 0644]
products/ALAMOS.pyconf [new file with mode: 0644]
products/ALAMOS_PROFILE.pyconf [new file with mode: 0644]
products/BLSURFPLUGIN.pyconf [new file with mode: 0644]
products/Babel.pyconf [new file with mode: 0644]
products/CALCULATOR.pyconf [new file with mode: 0644]
products/CAS.pyconf [new file with mode: 0755]
products/CDMATH.pyconf [new file with mode: 0644]
products/CEATESTBASE.pyconf [new file with mode: 0644]
products/COMPONENT.pyconf [new file with mode: 0644]
products/CONFIGURATION.pyconf [new file with mode: 0755]
products/COREFLOWS.pyconf [new file with mode: 0644]
products/COREFLOWS_PROFILE.pyconf [new file with mode: 0644]
products/Cython.pyconf [new file with mode: 0755]
products/DOCUMENTATION.pyconf [new file with mode: 0644]
products/EFICAS.pyconf [new file with mode: 0644]
products/EFICAS_TOOLS.pyconf [new file with mode: 0644]
products/FIELDS.pyconf [new file with mode: 0755]
products/GEOM.pyconf [new file with mode: 0644]
products/GHS3DPLUGIN.pyconf [new file with mode: 0644]
products/GHS3DPRLPLUGIN.pyconf [new file with mode: 0644]
products/GMSHPLUGIN.pyconf [new file with mode: 0644]
products/GUI.pyconf [new file with mode: 0644]
products/HELLO.pyconf [new file with mode: 0644]
products/HEXABLOCK.pyconf [new file with mode: 0644]
products/HEXABLOCKPLUGIN.pyconf [new file with mode: 0644]
products/HOMARD.pyconf [new file with mode: 0644]
products/HXX2SALOME.pyconf [new file with mode: 0644]
products/HYBRIDPLUGIN.pyconf [new file with mode: 0644]
products/Hexotic.pyconf [new file with mode: 0644]
products/HexoticPLUGIN.pyconf [new file with mode: 0644]
products/JOBMANAGER.pyconf [new file with mode: 0644]
products/Jinja2.pyconf [new file with mode: 0644]
products/KERNEL.pyconf [new file with mode: 0644]
products/LIBBATCH.pyconf [new file with mode: 0755]
products/MED.pyconf [new file with mode: 0755]
products/MEDCOUPLING.pyconf [new file with mode: 0644]
products/MeshGems.pyconf [new file with mode: 0644]
products/NETGENPLUGIN.pyconf [new file with mode: 0755]
products/PARAVIS.pyconf [new file with mode: 0644]
products/PY2CPP.pyconf [new file with mode: 0644]
products/PYCALCULATOR.pyconf [new file with mode: 0644]
products/PYHELLO.pyconf [new file with mode: 0644]
products/ParMetis.pyconf [new file with mode: 0644]
products/ParaView.pyconf [new file with mode: 0755]
products/ParaViewData.pyconf [new file with mode: 0644]
products/Pillow.pyconf [new file with mode: 0644]
products/PyHamcrest.pyconf [new file with mode: 0644]
products/PyQt.pyconf [new file with mode: 0644]
products/Pygments.pyconf [new file with mode: 0644]
products/Python.pyconf [new file with mode: 0755]
products/RESTRICTED.pyconf [new file with mode: 0644]
products/SALOME.pyconf [new file with mode: 0644]
products/SALOME_FORMATION_PROFILE.pyconf [new file with mode: 0644]
products/SALOME_PROFILE.pyconf [new file with mode: 0644]
products/SAMPLES.pyconf [new file with mode: 0644]
products/SHAPER.pyconf [new file with mode: 0644]
products/SHAPERSTUDY.pyconf [new file with mode: 0644]
products/SMESH.pyconf [new file with mode: 0644]
products/SOLVERLAB.pyconf [new file with mode: 0644]
products/Sphinx.pyconf [new file with mode: 0644]
products/TECHOBJ_ROOT.pyconf [new file with mode: 0644]
products/TRIOCFD_IHM.pyconf [new file with mode: 0644]
products/TRIOCFD_PROFILE.pyconf [new file with mode: 0644]
products/TRUST.pyconf [new file with mode: 0644]
products/Togl.pyconf [new file with mode: 0644]
products/TrioCFD.pyconf [new file with mode: 0644]
products/VISU.pyconf [new file with mode: 0644]
products/XDATA.pyconf [new file with mode: 0644]
products/YACS.pyconf [new file with mode: 0644]
products/YACSGEN.pyconf [new file with mode: 0644]
products/alabaster.pyconf [new file with mode: 0644]
products/boost.pyconf [new file with mode: 0644]
products/bsd_xdr.pyconf [new file with mode: 0755]
products/certifi.pyconf [new file with mode: 0755]
products/cgns.pyconf [new file with mode: 0644]
products/chardet.pyconf [new file with mode: 0755]
products/click.pyconf [new file with mode: 0644]
products/cmake.pyconf [new file with mode: 0644]
products/colorama.pyconf [new file with mode: 0755]
products/compil_scripts/ADAO.bat [new file with mode: 0644]
products/compil_scripts/ADAO.sh [new file with mode: 0755]
products/compil_scripts/Babel.bat [new file with mode: 0644]
products/compil_scripts/Babel.sh [new file with mode: 0755]
products/compil_scripts/CAS_6.7.sh [new file with mode: 0755]
products/compil_scripts/CAS_7.0.sh [new file with mode: 0755]
products/compil_scripts/CAS_7.3.bat [new file with mode: 0644]
products/compil_scripts/CAS_7.4.bat [new file with mode: 0644]
products/compil_scripts/COREFLOWS.sh [new file with mode: 0755]
products/compil_scripts/Hexotic.sh [new file with mode: 0755]
products/compil_scripts/Homard-SALOME9.sh [new file with mode: 0755]
products/compil_scripts/Homard.sh [new file with mode: 0755]
products/compil_scripts/Jinja2.bat [new file with mode: 0755]
products/compil_scripts/Jinja2.sh [new file with mode: 0755]
products/compil_scripts/MeshGems.bat [new file with mode: 0755]
products/compil_scripts/MeshGems.sh [new file with mode: 0755]
products/compil_scripts/ParMetis-3.sh [new file with mode: 0755]
products/compil_scripts/ParaView-3.14.0.sh [new file with mode: 0755]
products/compil_scripts/ParaView-4.2.0.sh [new file with mode: 0755]
products/compil_scripts/ParaView-5.0.sh [new file with mode: 0755]
products/compil_scripts/ParaView-5.1-820-offscreen_rendering.sh [new file with mode: 0755]
products/compil_scripts/ParaView-5.1-820.sh [new file with mode: 0755]
products/compil_scripts/ParaView-5.1.sh [new file with mode: 0755]
products/compil_scripts/ParaView-5.4-b5c4c89.sh [new file with mode: 0755]
products/compil_scripts/ParaView-5.4.1_b5c4c89.sh [new file with mode: 0755]
products/compil_scripts/ParaView-5.5.2p2_7591431.sh [new file with mode: 0755]
products/compil_scripts/ParaView-5.6.0_bfaf7b8.bat [new file with mode: 0644]
products/compil_scripts/ParaView-5.6.0_bfaf7b8.sh [new file with mode: 0755]
products/compil_scripts/ParaView-5.6.0p1_7bafc2b.bat [new file with mode: 0644]
products/compil_scripts/ParaView-5.6.0p1_7bafc2b.sh [new file with mode: 0755]
products/compil_scripts/ParaView.bat [new file with mode: 0644]
products/compil_scripts/ParaView.sh [new file with mode: 0755]
products/compil_scripts/ParaViewData.sh [new file with mode: 0755]
products/compil_scripts/PyQt-5.6.bat [new file with mode: 0644]
products/compil_scripts/PyQt-5.6.sh [new file with mode: 0755]
products/compil_scripts/PyQt-5.9.bat [new file with mode: 0644]
products/compil_scripts/PyQt-5.9.sh [new file with mode: 0755]
products/compil_scripts/PyQt.sh [new file with mode: 0755]
products/compil_scripts/PyQt_5_5_1.bat [new file with mode: 0755]
products/compil_scripts/PyQt_5_5_1.sh [new file with mode: 0755]
products/compil_scripts/Pygments.bat [new file with mode: 0755]
products/compil_scripts/Pygments.sh [new file with mode: 0755]
products/compil_scripts/Python-3.6.5.bat [new file with mode: 0644]
products/compil_scripts/Python.bat [new file with mode: 0755]
products/compil_scripts/Python.sh [new file with mode: 0755]
products/compil_scripts/SOLVERLAB.sh [new file with mode: 0755]
products/compil_scripts/Sphinx.bat [new file with mode: 0755]
products/compil_scripts/Sphinx.sh [new file with mode: 0755]
products/compil_scripts/TRUST.sh [new file with mode: 0755]
products/compil_scripts/Togl.sh [new file with mode: 0755]
products/compil_scripts/TrioCFD.sh [new file with mode: 0755]
products/compil_scripts/XDATA.py [new file with mode: 0755]
products/compil_scripts/YACS.sh [new file with mode: 0755]
products/compil_scripts/YACS.sh1 [new file with mode: 0644]
products/compil_scripts/YACSGEN.bat [new file with mode: 0644]
products/compil_scripts/YACSGEN.py [new file with mode: 0755]
products/compil_scripts/YACSGEN.sh [new file with mode: 0755]
products/compil_scripts/alabaster.bat [new file with mode: 0755]
products/compil_scripts/alabaster.sh [new file with mode: 0755]
products/compil_scripts/boost.bat [new file with mode: 0755]
products/compil_scripts/boost.sh [new file with mode: 0755]
products/compil_scripts/boost_V1.67.0.bat [new file with mode: 0644]
products/compil_scripts/bsd_xdr.bat [new file with mode: 0755]
products/compil_scripts/bsd_xdr.sh [new file with mode: 0755]
products/compil_scripts/certifi.sh [new file with mode: 0755]
products/compil_scripts/cgns.bat [new file with mode: 0755]
products/compil_scripts/cgns.sh [new file with mode: 0755]
products/compil_scripts/chardet.sh [new file with mode: 0755]
products/compil_scripts/click.sh [new file with mode: 0755]
products/compil_scripts/cmake.bat [new file with mode: 0644]
products/compil_scripts/cmake.sh [new file with mode: 0755]
products/compil_scripts/colorama.bat [new file with mode: 0755]
products/compil_scripts/colorama.sh [new file with mode: 0755]
products/compil_scripts/cppunit.bat [new file with mode: 0755]
products/compil_scripts/cppunit.sh [new file with mode: 0755]
products/compil_scripts/cycler.sh [new file with mode: 0755]
products/compil_scripts/cython.bat [new file with mode: 0755]
products/compil_scripts/cython.sh [new file with mode: 0755]
products/compil_scripts/dateutil.bat [new file with mode: 0755]
products/compil_scripts/dateutil.sh [new file with mode: 0755]
products/compil_scripts/distribute.bat [new file with mode: 0755]
products/compil_scripts/distribute.sh [new file with mode: 0755]
products/compil_scripts/docutils.bat [new file with mode: 0755]
products/compil_scripts/docutils.sh [new file with mode: 0755]
products/compil_scripts/doxygen.bat [new file with mode: 0755]
products/compil_scripts/doxygen.sh [new file with mode: 0755]
products/compil_scripts/eficas.sh [new file with mode: 0755]
products/compil_scripts/eigen-3.2.7.sh [new file with mode: 0755]
products/compil_scripts/eigen.bat [new file with mode: 0644]
products/compil_scripts/eigen.sh [new file with mode: 0755]
products/compil_scripts/expat.bat [new file with mode: 0644]
products/compil_scripts/expat.sh [new file with mode: 0755]
products/compil_scripts/f2c.bat [new file with mode: 0644]
products/compil_scripts/freeimage-3.16.0.sh [new file with mode: 0755]
products/compil_scripts/freeimage.bat [new file with mode: 0644]
products/compil_scripts/freeimage.sh [new file with mode: 0755]
products/compil_scripts/freetype-2.3.sh [new file with mode: 0755]
products/compil_scripts/freetype.bat [new file with mode: 0755]
products/compil_scripts/freetype.sh [new file with mode: 0755]
products/compil_scripts/ftgl_2.1.3.sh [new file with mode: 0755]
products/compil_scripts/functools32.sh [new file with mode: 0755]
products/compil_scripts/gcc-6.3.0.sh [new file with mode: 0755]
products/compil_scripts/gl2ps-1.4.0.sh [new file with mode: 0755]
products/compil_scripts/gl2ps.bat [new file with mode: 0755]
products/compil_scripts/gl2ps.sh [new file with mode: 0755]
products/compil_scripts/glu.sh [new file with mode: 0755]
products/compil_scripts/gmsh-2.12.0.sh [new file with mode: 0755]
products/compil_scripts/gmsh.bat [new file with mode: 0644]
products/compil_scripts/gmsh.sh [new file with mode: 0755]
products/compil_scripts/graphviz-2.38.0.bat [new file with mode: 0755]
products/compil_scripts/graphviz-2.38.0.sh [new file with mode: 0755]
products/compil_scripts/graphviz-2.44.1.bat [new file with mode: 0644]
products/compil_scripts/graphviz.bat [new file with mode: 0644]
products/compil_scripts/graphviz.sh [new file with mode: 0755]
products/compil_scripts/hdf5-1.10.3.sh [new file with mode: 0755]
products/compil_scripts/hdf5Autotools.sh [new file with mode: 0755]
products/compil_scripts/hdf5CMake.bat [new file with mode: 0755]
products/compil_scripts/hdf5CMake.sh [new file with mode: 0755]
products/compil_scripts/hdf5_cxx.sh [new file with mode: 0755]
products/compil_scripts/idna.sh [new file with mode: 0755]
products/compil_scripts/imagesize.sh [new file with mode: 0755]
products/compil_scripts/ispc-1.9.2.sh [new file with mode: 0755]
products/compil_scripts/ispc.bat [new file with mode: 0644]
products/compil_scripts/kiwisolver.sh [new file with mode: 0755]
products/compil_scripts/lapack.bat [new file with mode: 0644]
products/compil_scripts/lapack.sh [new file with mode: 0755]
products/compil_scripts/lata.bat [new file with mode: 0644]
products/compil_scripts/lata.sh [new file with mode: 0755]
products/compil_scripts/libjpeg.bat [new file with mode: 0644]
products/compil_scripts/libpng.bat [new file with mode: 0755]
products/compil_scripts/libpng.sh [new file with mode: 0755]
products/compil_scripts/libxml2.bat [new file with mode: 0755]
products/compil_scripts/libxml2.sh [new file with mode: 0755]
products/compil_scripts/libxml2_2_9_2.sh [new file with mode: 0755]
products/compil_scripts/llvm.sh [new file with mode: 0755]
products/compil_scripts/markupsafe.bat [new file with mode: 0755]
products/compil_scripts/markupsafe.sh [new file with mode: 0755]
products/compil_scripts/matplotlib-2.0.2.sh [new file with mode: 0755]
products/compil_scripts/matplotlib.bat [new file with mode: 0755]
products/compil_scripts/matplotlib.sh [new file with mode: 0755]
products/compil_scripts/med.sh [new file with mode: 0755]
products/compil_scripts/medCMake.bat [new file with mode: 0755]
products/compil_scripts/medCMake.sh [new file with mode: 0755]
products/compil_scripts/mesa.bat [new file with mode: 0644]
products/compil_scripts/mesa.sh [new file with mode: 0755]
products/compil_scripts/metis-5.1.0.bat [new file with mode: 0755]
products/compil_scripts/metis-5.1.0.sh [new file with mode: 0755]
products/compil_scripts/metis.sh [new file with mode: 0755]
products/compil_scripts/metis_5_0_2.sh [new file with mode: 0755]
products/compil_scripts/msvc.bat [new file with mode: 0644]
products/compil_scripts/netgen.bat [new file with mode: 0644]
products/compil_scripts/netgen.sh [new file with mode: 0755]
products/compil_scripts/netgen_5_3_1.bat [new file with mode: 0755]
products/compil_scripts/netgen_5_3_1.sh [new file with mode: 0755]
products/compil_scripts/netgen_CAS7.sh [new file with mode: 0755]
products/compil_scripts/nlopt.bat [new file with mode: 0644]
products/compil_scripts/nlopt.sh [new file with mode: 0755]
products/compil_scripts/numpy-1.12.1.sh [new file with mode: 0755]
products/compil_scripts/numpy-1.15.1.sh [new file with mode: 0755]
products/compil_scripts/numpy.bat [new file with mode: 0755]
products/compil_scripts/numpy.sh [new file with mode: 0755]
products/compil_scripts/omniNotify.sh [new file with mode: 0755]
products/compil_scripts/omniORB.bat [new file with mode: 0755]
products/compil_scripts/omniORB.sh [new file with mode: 0755]
products/compil_scripts/omniORBpy.bat [new file with mode: 0755]
products/compil_scripts/omniORBpy.sh [new file with mode: 0755]
products/compil_scripts/openblas.bat [new file with mode: 0644]
products/compil_scripts/opencv-3.2.0-with-ffmpeg.sh [new file with mode: 0755]
products/compil_scripts/opencv.bat [new file with mode: 0755]
products/compil_scripts/opencv.sh [new file with mode: 0755]
products/compil_scripts/openmpi.sh [new file with mode: 0755]
products/compil_scripts/packaging.sh [new file with mode: 0755]
products/compil_scripts/perl.bat [new file with mode: 0644]
products/compil_scripts/petsc.sh [new file with mode: 0755]
products/compil_scripts/pip.bat [new file with mode: 0644]
products/compil_scripts/pip_install.bat [new file with mode: 0644]
products/compil_scripts/pip_install.sh [new file with mode: 0755]
products/compil_scripts/pip_install_whl.bat [new file with mode: 0644]
products/compil_scripts/planegcs.bat [new file with mode: 0644]
products/compil_scripts/planegcs.sh [new file with mode: 0755]
products/compil_scripts/pockets.sh [new file with mode: 0755]
products/compil_scripts/pthreads.bat [new file with mode: 0755]
products/compil_scripts/pthreads.sh [new file with mode: 0755]
products/compil_scripts/pyhamcrest.sh [new file with mode: 0755]
products/compil_scripts/pyparsing.bat [new file with mode: 0755]
products/compil_scripts/pyparsing.sh [new file with mode: 0755]
products/compil_scripts/pyreadline.bat [new file with mode: 0755]
products/compil_scripts/pyreadline.sh [new file with mode: 0755]
products/compil_scripts/pytz.bat [new file with mode: 0755]
products/compil_scripts/pytz.sh [new file with mode: 0755]
products/compil_scripts/qt-4.6.3.sh [new file with mode: 0755]
products/compil_scripts/qt-4.8.4.sh [new file with mode: 0755]
products/compil_scripts/qt-5.5.1.sh [new file with mode: 0755]
products/compil_scripts/qt-5.6.1.bat [new file with mode: 0755]
products/compil_scripts/qt-5.6.1.sh [new file with mode: 0755]
products/compil_scripts/qt-5.6.1_test.sh [new file with mode: 0755]
products/compil_scripts/qt-5.8.4.sh [new file with mode: 0755]
products/compil_scripts/qt.bat [new file with mode: 0644]
products/compil_scripts/qt.sh [new file with mode: 0755]
products/compil_scripts/qwt-6.1.0.bat [new file with mode: 0755]
products/compil_scripts/qwt-6.1.0.sh [new file with mode: 0755]
products/compil_scripts/qwt.sh [new file with mode: 0755]
products/compil_scripts/requests.sh [new file with mode: 0755]
products/compil_scripts/root.bat [new file with mode: 0644]
products/compil_scripts/ruby.bat [new file with mode: 0644]
products/compil_scripts/scipy.bat [new file with mode: 0755]
products/compil_scripts/scipy.sh [new file with mode: 0755]
products/compil_scripts/scons.sh [new file with mode: 0755]
products/compil_scripts/scotch-5.1.12.sh [new file with mode: 0755]
products/compil_scripts/scotch.sh [new file with mode: 0755]
products/compil_scripts/setuptools.bat [new file with mode: 0755]
products/compil_scripts/setuptools.sh [new file with mode: 0755]
products/compil_scripts/sip.bat [new file with mode: 0755]
products/compil_scripts/sip.sh [new file with mode: 0755]
products/compil_scripts/six.bat [new file with mode: 0755]
products/compil_scripts/six.sh [new file with mode: 0755]
products/compil_scripts/snowballstemmer.sh [new file with mode: 0755]
products/compil_scripts/solvespace-2.1.sh [new file with mode: 0755]
products/compil_scripts/sphinx_rtd_theme.sh [new file with mode: 0755]
products/compil_scripts/sphinxcontrib.sh [new file with mode: 0755]
products/compil_scripts/sphinxcontrib_napoleon.sh [new file with mode: 0755]
products/compil_scripts/sphinxcontrib_websupport.sh [new file with mode: 0755]
products/compil_scripts/sphinxintl.sh [new file with mode: 0755]
products/compil_scripts/subprocess32.sh [new file with mode: 0755]
products/compil_scripts/swig.bat [new file with mode: 0755]
products/compil_scripts/swig.sh [new file with mode: 0755]
products/compil_scripts/tbb.bat [new file with mode: 0644]
products/compil_scripts/tbb.sh [new file with mode: 0755]
products/compil_scripts/tcl.bat [new file with mode: 0755]
products/compil_scripts/tcl.sh [new file with mode: 0755]
products/compil_scripts/tcltk.bat [new file with mode: 0644]
products/compil_scripts/tcltk.sh [new file with mode: 0755]
products/compil_scripts/tk.bat [new file with mode: 0755]
products/compil_scripts/tk.sh [new file with mode: 0755]
products/compil_scripts/typing.sh [new file with mode: 0755]
products/compil_scripts/uranie_win.bat [new file with mode: 0755]
products/compil_scripts/uranie_win.sh [new file with mode: 0755]
products/compil_scripts/urllib3.sh [new file with mode: 0755]
products/compil_scripts/vtk.sh [new file with mode: 0755]
products/compil_scripts/zlib.bat [new file with mode: 0755]
products/compil_scripts/zlib.sh [new file with mode: 0755]
products/cppunit.pyconf [new file with mode: 0644]
products/cycler.pyconf [new file with mode: 0644]
products/dateutil.pyconf [new file with mode: 0644]
products/distribute.pyconf [new file with mode: 0755]
products/docutils.pyconf [new file with mode: 0644]
products/doxygen.pyconf [new file with mode: 0755]
products/eigen.pyconf [new file with mode: 0644]
products/embree.pyconf [new file with mode: 0644]
products/env_scripts/ADAO.py [new file with mode: 0644]
products/env_scripts/ADAO_INTERFACE.py [new file with mode: 0644]
products/env_scripts/Babel.py [new file with mode: 0644]
products/env_scripts/CAS.py [new file with mode: 0755]
products/env_scripts/CDMATH.py [new file with mode: 0644]
products/env_scripts/COREFLOWS.py [new file with mode: 0644]
products/env_scripts/Cython.py [new file with mode: 0644]
products/env_scripts/EFICAS_TOOLS.py [new file with mode: 0644]
products/env_scripts/Hexotic.py [new file with mode: 0755]
products/env_scripts/Homard.py [new file with mode: 0755]
products/env_scripts/Jinja2.py [new file with mode: 0755]
products/env_scripts/LIBBATCH.py [new file with mode: 0644]
products/env_scripts/MeshGems.py [new file with mode: 0644]
products/env_scripts/ParMetis.py [new file with mode: 0644]
products/env_scripts/ParaView.py [new file with mode: 0644]
products/env_scripts/ParaViewData.py [new file with mode: 0755]
products/env_scripts/Pillow.py [new file with mode: 0644]
products/env_scripts/PyHamcrest.py [new file with mode: 0644]
products/env_scripts/PyQt.py [new file with mode: 0644]
products/env_scripts/Pygments.py [new file with mode: 0755]
products/env_scripts/Python.py [new file with mode: 0644]
products/env_scripts/SAMPLES.py [new file with mode: 0644]
products/env_scripts/SOLVERLAB.py [new file with mode: 0644]
products/env_scripts/Sphinx.py [new file with mode: 0755]
products/env_scripts/TRUST.py [new file with mode: 0644]
products/env_scripts/Togl.py [new file with mode: 0644]
products/env_scripts/TrioCFD.py [new file with mode: 0644]
products/env_scripts/XDATA.py [new file with mode: 0644]
products/env_scripts/YACSGEN.py [new file with mode: 0644]
products/env_scripts/alabaster.py [new file with mode: 0644]
products/env_scripts/boost.py [new file with mode: 0755]
products/env_scripts/bsd_xdr.py [new file with mode: 0755]
products/env_scripts/ceatest.py [new file with mode: 0644]
products/env_scripts/certifi.py [new file with mode: 0644]
products/env_scripts/cgns.py [new file with mode: 0644]
products/env_scripts/chardet.py [new file with mode: 0644]
products/env_scripts/click.py [new file with mode: 0644]
products/env_scripts/cmake.py [new file with mode: 0755]
products/env_scripts/colorama.py [new file with mode: 0755]
products/env_scripts/cppunit.py [new file with mode: 0644]
products/env_scripts/cycler.py [new file with mode: 0644]
products/env_scripts/dateutil.py [new file with mode: 0644]
products/env_scripts/distribute.py [new file with mode: 0644]
products/env_scripts/docutils.py [new file with mode: 0755]
products/env_scripts/doxygen.py [new file with mode: 0755]
products/env_scripts/eigen.py [new file with mode: 0644]
products/env_scripts/embree.py [new file with mode: 0644]
products/env_scripts/expat.py [new file with mode: 0755]
products/env_scripts/f2c.py [new file with mode: 0644]
products/env_scripts/freeimage.py [new file with mode: 0644]
products/env_scripts/freetype.py [new file with mode: 0755]
products/env_scripts/ftgl.py [new file with mode: 0755]
products/env_scripts/functools32.py [new file with mode: 0644]
products/env_scripts/gcc.py [new file with mode: 0644]
products/env_scripts/gl2ps.py [new file with mode: 0755]
products/env_scripts/glu.py [new file with mode: 0644]
products/env_scripts/gmsh.py [new file with mode: 0644]
products/env_scripts/graphviz.py [new file with mode: 0644]
products/env_scripts/hdf5.py [new file with mode: 0644]
products/env_scripts/idna.py [new file with mode: 0644]
products/env_scripts/imagesize.py [new file with mode: 0644]
products/env_scripts/ispc.py [new file with mode: 0644]
products/env_scripts/kiwisolver.py [new file with mode: 0644]
products/env_scripts/lapack.py [new file with mode: 0644]
products/env_scripts/lata.py [new file with mode: 0644]
products/env_scripts/libjpeg.py [new file with mode: 0644]
products/env_scripts/libpng.py [new file with mode: 0755]
products/env_scripts/libxml2.py [new file with mode: 0644]
products/env_scripts/llvm.py [new file with mode: 0644]
products/env_scripts/markupsafe.py [new file with mode: 0644]
products/env_scripts/matplotlib.py [new file with mode: 0644]
products/env_scripts/med.py [new file with mode: 0644]
products/env_scripts/mesa.py [new file with mode: 0644]
products/env_scripts/metis.py [new file with mode: 0755]
products/env_scripts/msvc.py [new file with mode: 0644]
products/env_scripts/netgen.py [new file with mode: 0755]
products/env_scripts/nlopt.py [new file with mode: 0644]
products/env_scripts/numpy.py [new file with mode: 0644]
products/env_scripts/omniNotify.py [new file with mode: 0755]
products/env_scripts/omniORB.py [new file with mode: 0644]
products/env_scripts/omniORBpy.py [new file with mode: 0644]
products/env_scripts/openblas.py [new file with mode: 0644]
products/env_scripts/opencv.py [new file with mode: 0755]
products/env_scripts/openmpi.py [new file with mode: 0644]
products/env_scripts/ospray.py [new file with mode: 0644]
products/env_scripts/packaging.py [new file with mode: 0644]
products/env_scripts/perl.py [new file with mode: 0644]
products/env_scripts/petsc.py [new file with mode: 0644]
products/env_scripts/planegcs.py [new file with mode: 0644]
products/env_scripts/pockets.py [new file with mode: 0644]
products/env_scripts/pthreads.py [new file with mode: 0755]
products/env_scripts/pyparsing.py [new file with mode: 0644]
products/env_scripts/pyreadline.py [new file with mode: 0755]
products/env_scripts/pytz.py [new file with mode: 0755]
products/env_scripts/qt.py [new file with mode: 0644]
products/env_scripts/qwt.py [new file with mode: 0755]
products/env_scripts/requests.py [new file with mode: 0644]
products/env_scripts/root.py [new file with mode: 0644]
products/env_scripts/ruby.py [new file with mode: 0644]
products/env_scripts/scipy.py [new file with mode: 0644]
products/env_scripts/scons.py [new file with mode: 0644]
products/env_scripts/scotch.py [new file with mode: 0755]
products/env_scripts/setuptools.py [new file with mode: 0644]
products/env_scripts/sip.py [new file with mode: 0644]
products/env_scripts/six.py [new file with mode: 0644]
products/env_scripts/snowballstemmer.py [new file with mode: 0644]
products/env_scripts/solvespace.py [new file with mode: 0644]
products/env_scripts/sphinx_rtd_theme.py [new file with mode: 0644]
products/env_scripts/sphinxcontrib.py [new file with mode: 0644]
products/env_scripts/sphinxcontrib_applehelp.py [new file with mode: 0644]
products/env_scripts/sphinxcontrib_devhelp.py [new file with mode: 0644]
products/env_scripts/sphinxcontrib_htmlhelp.py [new file with mode: 0644]
products/env_scripts/sphinxcontrib_jsmath.py [new file with mode: 0644]
products/env_scripts/sphinxcontrib_napoleon.py [new file with mode: 0644]
products/env_scripts/sphinxcontrib_qthelp.py [new file with mode: 0644]
products/env_scripts/sphinxcontrib_serializinghtml.py [new file with mode: 0644]
products/env_scripts/sphinxcontrib_websupport.py [new file with mode: 0644]
products/env_scripts/sphinxintl.py [new file with mode: 0644]
products/env_scripts/subprocess32.py [new file with mode: 0644]
products/env_scripts/swig.py [new file with mode: 0644]
products/env_scripts/tbb.py [new file with mode: 0644]
products/env_scripts/tcl.py [new file with mode: 0644]
products/env_scripts/tcltk.py [new file with mode: 0644]
products/env_scripts/tk.py [new file with mode: 0755]
products/env_scripts/typing.py [new file with mode: 0644]
products/env_scripts/uranie_win.py [new file with mode: 0755]
products/env_scripts/urllib3.py [new file with mode: 0644]
products/env_scripts/vtk.py [new file with mode: 0644]
products/env_scripts/zlib.py [new file with mode: 0755]
products/expat.pyconf [new file with mode: 0644]
products/f2c.pyconf [new file with mode: 0644]
products/ffmpeg.pyconf [new file with mode: 0644]
products/freeimage.pyconf [new file with mode: 0644]
products/freetype.pyconf [new file with mode: 0755]
products/ftgl.pyconf [new file with mode: 0644]
products/functools32.pyconf [new file with mode: 0644]
products/gcc.pyconf [new file with mode: 0644]
products/gl2ps.pyconf [new file with mode: 0755]
products/glu.pyconf [new file with mode: 0644]
products/gmsh.pyconf [new file with mode: 0644]
products/graphviz.pyconf [new file with mode: 0755]
products/hdf5.pyconf [new file with mode: 0755]
products/homard_bin.pyconf [new file with mode: 0644]
products/homard_pre_windows.pyconf [new file with mode: 0644]
products/idna.pyconf [new file with mode: 0755]
products/imagesize.pyconf [new file with mode: 0755]
products/ispc.pyconf [new file with mode: 0644]
products/kiwisolver.pyconf [new file with mode: 0755]
products/lapack.pyconf [new file with mode: 0644]
products/lata.pyconf [new file with mode: 0644]
products/libjpeg.pyconf [new file with mode: 0644]
products/libpng.pyconf [new file with mode: 0755]
products/libxml2.pyconf [new file with mode: 0644]
products/llvm.pyconf [new file with mode: 0644]
products/markupsafe.pyconf [new file with mode: 0644]
products/matplotlib.pyconf [new file with mode: 0755]
products/med_pre_windows.pyconf [new file with mode: 0755]
products/medfile.pyconf [new file with mode: 0644]
products/mesa.pyconf [new file with mode: 0644]
products/metis.pyconf [new file with mode: 0644]
products/msvc.pyconf [new file with mode: 0644]
products/netgen.pyconf [new file with mode: 0755]
products/nlopt.pyconf [new file with mode: 0644]
products/numpy.pyconf [new file with mode: 0755]
products/omniNotify.pyconf [new file with mode: 0644]
products/omniORB.pyconf [new file with mode: 0644]
products/omniORBpy.pyconf [new file with mode: 0644]
products/openblas.pyconf [new file with mode: 0644]
products/opencv.pyconf [new file with mode: 0644]
products/openmpi.pyconf [new file with mode: 0644]
products/openssl.pyconf [new file with mode: 0644]
products/ospray.pyconf [new file with mode: 0644]
products/packaging.pyconf [new file with mode: 0755]
products/patches/0001-Update-PlaneGCS-solver-for-SHAPER-needs.patch [new file with mode: 0644]
products/patches/BLSURFPLUGIN_8_4_0.patch [new file with mode: 0644]
products/patches/CAS-6.5.4.patch [new file with mode: 0755]
products/patches/CAS_autotools_macros.patch [new file with mode: 0755]
products/patches/CONFIGURATION-FC29.patch [new file with mode: 0644]
products/patches/COREFLOWS_PROFILE_NO_ENV_78.patch [new file with mode: 0755]
products/patches/GUI_GLdispatch.patch [new file with mode: 0644]
products/patches/GUI_Python_async.patch [new file with mode: 0644]
products/patches/KERNEL-FC29.patch [new file with mode: 0644]
products/patches/KERNEL_libLauncher_Temporary.patch [new file with mode: 0644]
products/patches/MEDCOUPLING-FC29.patch [new file with mode: 0644]
products/patches/OCCT-7.1.0_transfrom_pers.patch [new file with mode: 0644]
products/patches/PARAVIS-MEDReader-CMakeLists.patch [new file with mode: 0644]
products/patches/ParaView-3.14.0.patch [new file with mode: 0755]
products/patches/ParaView-4.2.0.patch [new file with mode: 0644]
products/patches/ParaView-5.1.2-win.patch [new file with mode: 0755]
products/patches/ParaView-5.4.0-b5c4c893-0001-Fix-prob~stallation-of-VTKTargets.cmake-fi.patch [new file with mode: 0644]
products/patches/ParaView-5.4.0-b5c4c893-vtkXOpenGLRenderWindow.cxx.patch [new file with mode: 0644]
products/patches/ParaView-5.4.0-b5c4c893_temporaty_patch.patch [new file with mode: 0644]
products/patches/ParaView-5.4.1_b5c4c89-3DGlyphs.patch [new file with mode: 0644]
products/patches/ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch [new file with mode: 0644]
products/patches/ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch [new file with mode: 0644]
products/patches/ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch [new file with mode: 0644]
products/patches/PyQt-4.9.1.patch [new file with mode: 0755]
products/patches/PyQt-GLdispatch.patch [new file with mode: 0644]
products/patches/Python-3.6.5_windows.patch [new file with mode: 0644]
products/patches/Python_SSL.patch [new file with mode: 0755]
products/patches/Python_zlib_detection.patch [new file with mode: 0644]
products/patches/SALOME_PROFILE_NO_ENV.patch [new file with mode: 0644]
products/patches/SALOME_PROFILE_NO_ENV_master.patch [new file with mode: 0644]
products/patches/SALOME_PROFILE_NO_ENV_master_V2.patch [new file with mode: 0644]
products/patches/boost-1.49.0.patch [new file with mode: 0755]
products/patches/boost-1.52.0-cstdint_missing_include.patch [new file with mode: 0644]
products/patches/boost-1.52.0_recent_glibc_versions.patch [new file with mode: 0644]
products/patches/cppunit-1.13.2_windows.patch [new file with mode: 0644]
products/patches/doxygen-1.8.3.1.patch [new file with mode: 0755]
products/patches/doxygen_compatibility_flex260.patch [new file with mode: 0644]
products/patches/embree-3.5.2-centos6.patch [new file with mode: 0644]
products/patches/enable-windows-plugin-compilation.patch [new file with mode: 0755]
products/patches/freeimage-3.16.0_gcc6.patch [new file with mode: 0644]
products/patches/freeimage-3.17.0_windows.patch [new file with mode: 0644]
products/patches/freeimage-3.18.0_windows.patch [new file with mode: 0644]
products/patches/freetype-2.4.11_ft_export_FD20.patch [new file with mode: 0644]
products/patches/freetype-2.9.1_windows.patch [new file with mode: 0644]
products/patches/ftgl-2.1.3_no_doc.patch [new file with mode: 0644]
products/patches/geom-doc-gui.patch [new file with mode: 0644]
products/patches/geom_8.5.0_xao_data_dir.patch [new file with mode: 0644]
products/patches/gl2ps-1.3.5-GLUT.patch [new file with mode: 0755]
products/patches/gl2ps-1.3.8-GLUT.patch [new file with mode: 0644]
products/patches/gl2ps-1.3.8_link_libm_FD20.patch_orig [new file with mode: 0755]
products/patches/gl2ps-1.3.9p1-GLUT.patch [new file with mode: 0644]
products/patches/gl2ps-1.3.9p1-no_static_lib.patch [new file with mode: 0644]
products/patches/gl2ps-1.4.0-GLUT.patch [new file with mode: 0644]
products/patches/hdf5-1.10.3.patch [new file with mode: 0644]
products/patches/hdf5-1.10.3.win_unicode.patch [new file with mode: 0644]
products/patches/hdf5-1.10.3.win_unicode_new.patch [new file with mode: 0644]
products/patches/hdf5_188_remove_c++_comment.patch [new file with mode: 0644]
products/patches/ispc-1.9.2-centos6.patch [new file with mode: 0644]
products/patches/ispc-ispc-0621fcb.patch [new file with mode: 0644]
products/patches/ispc-makefile_WERROR.patch [new file with mode: 0644]
products/patches/kernel_orbmodule_safewakeup.patch [new file with mode: 0644]
products/patches/kernel_setenv_161024.patch [new file with mode: 0644]
products/patches/lapack-3.8.0_windows.patch [new file with mode: 0644]
products/patches/lata-plugin_visit.patch [new file with mode: 0644]
products/patches/libxml2-2.9.1.patch [new file with mode: 0644]
products/patches/llvm-8.0.1-clang-FD32.patch [new file with mode: 0644]
products/patches/matplotlib-1.4.3_fix_Cannot_connect_NavigationToolbar2QT.patch [new file with mode: 0644]
products/patches/matplotlib-1.4.3_no_auto_download.patch [new file with mode: 0644]
products/patches/matplotlib_1_4_2_patch_freetype_detection_for_SAT.patch [new file with mode: 0644]
products/patches/matplotlib_1_4_3_patch_freetype_detection_for_SAT.patch [new file with mode: 0644]
products/patches/matplotlibrc-qt4.patch [new file with mode: 0644]
products/patches/med-4.0.0_unicode.patch [new file with mode: 0644]
products/patches/med-4.0.0alpha3.patch [new file with mode: 0644]
products/patches/med-4.1.0_win_3x_files_support.patch [new file with mode: 0644]
products/patches/med_mode_non_debug.patch [new file with mode: 0644]
products/patches/medcoupling-7.8.0-m4-files.patch [new file with mode: 0644]
products/patches/medcoupling_abn780.patch [new file with mode: 0644]
products/patches/medcoupling_abn780_co6.patch [new file with mode: 0644]
products/patches/medcoupling_abn780b.patch [new file with mode: 0644]
products/patches/medcoupling_m4_files.patch [new file with mode: 0644]
products/patches/medcoupling_salome_9_0_0.patch [new file with mode: 0644]
products/patches/medfile-4.0.0.patch [new file with mode: 0644]
products/patches/mesa-19.0.8-debug_symbol.patch [new file with mode: 0644]
products/patches/metis-5.1.0_windows.patch [new file with mode: 0644]
products/patches/metis-use_cat_not_more.patch [new file with mode: 0644]
products/patches/netgen-4.9.13-for-OCCT7.0.0-includes.patch [new file with mode: 0755]
products/patches/netgen-4.9.13-for-SALOME-OCCT7.0.0-Porting.patch [new file with mode: 0755]
products/patches/netgen-4.9.13-for-SALOME.patch [new file with mode: 0755]
products/patches/netgen-4.9.13-for-SALOME_v2.patch [new file with mode: 0755]
products/patches/netgen-4.9.13_without_togl.patch [new file with mode: 0644]
products/patches/netgen-5.3.1-for-SALOME-OCCT-7.2.0.patch [new file with mode: 0644]
products/patches/netgen-5.3.1_OCCT-7.3_Windows-10_Visual-2017.patch [new file with mode: 0644]
products/patches/netgen49ForSalome.patch [new file with mode: 0644]
products/patches/netgen53ForSalome.patch [new file with mode: 0644]
products/patches/netgen53ForSalomeOCCT730.patch [new file with mode: 0644]
products/patches/netgen53ForSalomeVisualStudio2017.patch [new file with mode: 0644]
products/patches/netgen53ForSalome_Windows.patch [new file with mode: 0644]
products/patches/netgen53ForWindows.patch [new file with mode: 0644]
products/patches/omniNotify-2.1-lib64.patch [new file with mode: 0755]
products/patches/omniNotify-2.1.patch [new file with mode: 0755]
products/patches/opencv-2.4.6.1-gcc6.patch [new file with mode: 0644]
products/patches/opencv-3.2.0-ccache.patch [new file with mode: 0644]
products/patches/opencv-3.2.0_windows.patch [new file with mode: 0644]
products/patches/opencv-with-ffmpeg.patch [new file with mode: 0644]
products/patches/paraview.0003-ParaViewClient.patch [new file with mode: 0644]
products/patches/paraview.0004-ParaView_hdf5.patch [new file with mode: 0644]
products/patches/paraview.0005-ParaView_find_cgns.patch [new file with mode: 0644]
products/patches/paraview.0006-ParaView_find_libxml2.patch [new file with mode: 0644]
products/patches/paraview.0007-ParaView_find_freetype.patch [new file with mode: 0644]
products/patches/paraview.0008-ParaView_find_zlib.patch [new file with mode: 0644]
products/patches/paraview.0009-ParaView_volume_mapper.patch [new file with mode: 0644]
products/patches/paraview.0010-ParaViewClient.patch [new file with mode: 0644]
products/patches/paraview.0010-VTKM_MPI.patch [new file with mode: 0644]
products/patches/paravis_8_3_mpi_medinclude.patch [new file with mode: 0644]
products/patches/patchPyQt496noPhonon.patch [new file with mode: 0755]
products/patches/patch_shaper_cursor_cross.diff [new file with mode: 0644]
products/patches/pthreads-2.9.1_windows.patch [new file with mode: 0644]
products/patches/pv_coincident.patch [new file with mode: 0644]
products/patches/qt-4.8.4-enable-webkit-compilation-whith-gcc5.patch [new file with mode: 0644]
products/patches/qt-463-gcc46.patch [new file with mode: 0755]
products/patches/qt-5.5.1-qlockfile.patch [new file with mode: 0644]
products/patches/qt-5.9.1-UB20-FD32-socketcanbackend.patch [new file with mode: 0644]
products/patches/qt-5.9.1-mapbox-FD32.patch [new file with mode: 0644]
products/patches/qt_5.5.1-qwebengine.patch [new file with mode: 0644]
products/patches/remove-windows-python-subprojects.patch [new file with mode: 0755]
products/patches/scipy-0.13.3.patch [new file with mode: 0755]
products/patches/scipy-0.14.1.patch [new file with mode: 0644]
products/patches/sphinx_rtd_theme-0.1.9_no_dependence_sphinx.patch [new file with mode: 0644]
products/patches/tbb-2019_U8_windows10.patch [new file with mode: 0644]
products/patches/tcl-8.6.9_windows.patch [new file with mode: 0644]
products/patches/tcltk-8.6.9_windows.patch [new file with mode: 0644]
products/patches/tk-8.6.9_windows.patch [new file with mode: 0644]
products/patches/xdata-0.9.11.patch [new file with mode: 0644]
products/patches/xdata-0.9.9.python2.7.patch [new file with mode: 0755]
products/patches/xdata_qt.patch [new file with mode: 0644]
products/patches/yacs_cea_v2.patch [new file with mode: 0644]
products/patches/yacs_without_expat.patch [new file with mode: 0644]
products/patches/yacsgen_7_8_med_medcoupling.patch [new file with mode: 0644]
products/patches/yacsgen_7_8_portage.patch [new file with mode: 0644]
products/patches/yacsgen_hxx.patch [new file with mode: 0644]
products/perl.pyconf [new file with mode: 0644]
products/petsc.pyconf [new file with mode: 0644]
products/planegcs.pyconf [new file with mode: 0644]
products/pockets.pyconf [new file with mode: 0644]
products/pthreads.pyconf [new file with mode: 0755]
products/pybind11.pyconf [new file with mode: 0644]
products/pyparsing.pyconf [new file with mode: 0644]
products/pyreadline.pyconf [new file with mode: 0755]
products/pytz.pyconf [new file with mode: 0644]
products/qt.pyconf [new file with mode: 0644]
products/qwt.pyconf [new file with mode: 0644]
products/requests.pyconf [new file with mode: 0755]
products/root.pyconf [new file with mode: 0644]
products/ruby.pyconf [new file with mode: 0644]
products/scipy.pyconf [new file with mode: 0755]
products/scons.pyconf [new file with mode: 0644]
products/scotch.pyconf [new file with mode: 0644]
products/setuptools.pyconf [new file with mode: 0644]
products/sip.pyconf [new file with mode: 0644]
products/six.pyconf [new file with mode: 0644]
products/snowballstemmer.pyconf [new file with mode: 0644]
products/solvespace.pyconf [new file with mode: 0644]
products/sphinx_rtd_theme.pyconf [new file with mode: 0644]
products/sphinxcontrib.pyconf [new file with mode: 0644]
products/sphinxcontrib_applehelp.pyconf [new file with mode: 0644]
products/sphinxcontrib_devhelp.pyconf [new file with mode: 0644]
products/sphinxcontrib_htmlhelp.pyconf [new file with mode: 0644]
products/sphinxcontrib_jsmath.pyconf [new file with mode: 0644]
products/sphinxcontrib_napoleon.pyconf [new file with mode: 0644]
products/sphinxcontrib_qthelp.pyconf [new file with mode: 0644]
products/sphinxcontrib_serializinghtml.pyconf [new file with mode: 0644]
products/sphinxcontrib_websupport.pyconf [new file with mode: 0755]
products/sphinxintl.pyconf [new file with mode: 0644]
products/subprocess32.pyconf [new file with mode: 0644]
products/swig.pyconf [new file with mode: 0644]
products/tbb.pyconf [new file with mode: 0644]
products/tcl.pyconf [new file with mode: 0644]
products/tcltk.pyconf [new file with mode: 0644]
products/tk.pyconf [new file with mode: 0644]
products/typing.pyconf [new file with mode: 0644]
products/uranie_win.pyconf [new file with mode: 0755]
products/urllib3.pyconf [new file with mode: 0755]
products/vtk.pyconf [new file with mode: 0644]
products/zlib.pyconf [new file with mode: 0755]
salome-W10.pyconf [new file with mode: 0644]
salome.pyconf [new file with mode: 0644]

diff --git a/README b/README
new file mode 100644 (file)
index 0000000..fe7ffab
--- /dev/null
+++ b/README
@@ -0,0 +1,2 @@
+This git repository contains all SAT configurations files that define the SALOME project!
+
diff --git a/applications/GCC-6.3.0.pyconf b/applications/GCC-6.3.0.pyconf
new file mode 100644 (file)
index 0000000..c85d0d6
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'GCC-6.3.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    dev : 'no'
+    verbose :'no'
+    debug : 'no'
+    base : 'no'
+    environ :
+    {
+    }
+    products :
+    {
+        # PREREQUISITES :
+        gcc : '6.3.0'
+    }
+    test_base : 
+    {
+    }
+}
+
diff --git a/applications/MEDCOUPLING-7.8.2.pyconf b/applications/MEDCOUPLING-7.8.2.pyconf
new file mode 100644 (file)
index 0000000..8c580e6
--- /dev/null
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-7.8.2-SAT5'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V7_8_0'
+    #base : 'no'
+    environ :
+    {
+    }
+    products :
+    {
+        # PREREQUISITES :
+
+        Python : '2.7.10'
+# OP 18/04/2017 Artifact 8489 : passage a boost 1.58.0
+        #boost : '1.52.0'
+        boost : '1.58.0'
+        hdf5 : '1.8.14'
+        swig : '2.0.8'
+        medfile : '3.2.0'
+        doxygen : '1.8.3.1'
+        graphviz : '2.38.0'
+        libxml2 : '2.9.0'
+        cppunit : '1.12.1'
+        Sphinx : '1.2.3'
+        setuptools : '0.6c11'
+        numpy : '1.9.2'
+        scipy : '0.15.1'
+        lapack : '3.5.0'
+        cmake : '3.5.2'
+        Pygments : '2.0.2'
+        Jinja2 : '2.7.3'
+        docutils : '0.12'
+        markupsafe : '0.23'
+
+        # SALOME MODULES :
+# OP 18/04/2017 Artifact 8489 : passage au tag V7_8_2
+        #'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_BR'}
+        'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_2'}
+
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "7.8.0"
+    }
+}
+
+
+__overwrite__ :
+[
+  {
+    __condition__ : "VARS.dist in ['FD24']"
+# OP 18/04/2017 Artifact 8498 : Passage de la compilation de medfile a cmake
+#                               La section CMake devient la section par defaut
+#    # medfile does not compile under Fedora 24 using autotools
+#    'PRODUCTS.medfile.default.compil_script' : "medCMake.sh"
+#    'PRODUCTS.medfile.default.test_build' : "make test"
+  }
+]
diff --git a/applications/MEDCOUPLING-8.5.0.pyconf b/applications/MEDCOUPLING-8.5.0.pyconf
new file mode 100644 (file)
index 0000000..a7b7e2a
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-8.5.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V8_5_0'
+    environ :
+    {
+    }
+    products :
+    {
+        # PREREQUISITES :
+        Babel : '2.0'
+        boost : '1.58.0'
+        click : '6.7'
+        cmake : '3.5.2'
+        cppunit : '1.13.2'
+        Cython : '0.23.2'
+        docutils : '0.12'
+        doxygen : '1.8.3.1'
+        graphviz : '2.38.0'
+        hdf5 : '1.8.14'
+        Jinja2 : '2.7.3'
+        lapack : '3.7.0'
+        libxml2 : '2.9.0'
+        markupsafe : '0.23'
+        medfile : '3.3.1'
+        metis : '5.1.0'
+        numpy : '1.12.1'
+        Pygments : '2.0.2'
+        Python : '2.7.10'
+        pytz : '2015.4'
+        scipy : '0.18.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        six : '1.10.0'
+        Sphinx : '1.2.3'
+
+        # TA 06-04-2018 Add sphinx-intl prerequisite
+        sphinxintl: '0.9.10'
+        swig : '2.0.12'
+        
+        
+        
+#
+        # SALOME MODULES :
+        'CONFIGURATION': {dev: 'yes'}
+        'MEDCOUPLING': {dev: 'yes'}
+
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV8"
+    }
+}
+
+__overwrite__ :
+[
+   {
+       # OP 09/04/2018 add sphinx-intl, six prerequisites
+    'PRODUCTS.MEDCOUPLING.default.depend' : 
+     [
+         "Babel", "boost", "click", "cmake", "cppunit", "Cython", "docutils",
+         "doxygen", "graphviz", "hdf5", "Jinja2", "lapack", "libxml2",
+         "markupsafe", "medfile", "metis", "numpy", "Pygments", "Python", "pytz",
+         "scipy", "scotch", "setuptools", "six", "Sphinx", "sphinxintl",
+         "swig", "CONFIGURATION"
+     ]
+   }
+]
diff --git a/applications/MEDCOUPLING-9.3.0.pyconf b/applications/MEDCOUPLING-9.3.0.pyconf
new file mode 100644 (file)
index 0000000..ea84538
--- /dev/null
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-9.3.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V9_3_0'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+        launch : {PYTHONIOENCODING:"UTF_8"} 
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.6.0'
+        boost : '1.58.0'
+        certifi : '2018.8.24'
+        click : '6.7'
+        cmake : '3.12.1' 
+        cppunit : '1.13.2'
+        chardet : '3.0.4'
+        Cython : '0.25.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        Jinja2 : '2.7.3'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        markupsafe : '0.23'
+        medfile : '4.0.0'
+        metis : '5.1.0'
+        numpy : '1.15.1'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        Python : '3.6.5'
+        pytz : '2015.4'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        packaging : '17.1'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION': {dev: 'yes'}
+        'MEDCOUPLING': {dev: 'yes'}
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+}
diff --git a/applications/MEDCOUPLING-9.4.0-windows.pyconf b/applications/MEDCOUPLING-9.4.0-windows.pyconf
new file mode 100644 (file)
index 0000000..cbe6b21
--- /dev/null
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-9.4.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name
+    cmake_generator : 'Visual Studio 15 2017 Win64'
+    tag : 'V9_4_0'
+    debug : 'no'
+    dev : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+        launch : {PYTHONIOENCODING:"UTF_8"}
+        SALOME_HAS_GLOBAL_ENV: "1"
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.7.0'
+        boost : '1.67.0'
+        certifi : '2019.6.16'
+        click : '7.0'
+        cmake : '3.12.1' 
+        colorama: '0.4.1'
+        cppunit : '1.13.2'
+        chardet : '3.0.4'
+        Cython : '0.29.12'
+        docutils : '0.14'
+        doxygen : '1.8.3.1'
+        expat : '2.0.1'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        idna : '2.8'
+        imagesize : '1.1.0'
+        Jinja2 : '2.10.1'
+        lapack : '3.8.0'
+        libjpeg: '9c'
+        libpng: '1.5.10'
+        libxml2 : '2.9.1'
+        markupsafe : '1.1.1'
+        medfile : '4.0.0'
+        metis : '5.1.0'
+        numpy : '1.16.4'
+        packaging : '19.0'
+        pockets : '0.7.2'
+        Pygments : '2.4.2'
+        pyparsing : '2.4.0'
+        Python : '3.6.5'
+        pytz : '2019.1'
+        requests : '2.22.0'
+        #scipy : '0.19.1'
+        setuptools : '41.0.1'
+        six : '1.12.0'
+        snowballstemmer : '1.9.0'
+        Sphinx : '2.1.2'
+        sphinxcontrib_applehelp : '1.0.1'
+        sphinxcontrib_devhelp : '1.0.1'
+        sphinxcontrib_jsmath : '1.0.1'
+        sphinxcontrib_htmlhelp : '1.0.2'
+        sphinxcontrib_napoleon : '0.7'
+        sphinxcontrib_qthelp : '1.0.2'
+        sphinxcontrib_serializinghtml :'1.1.3'
+        sphinxcontrib_websupport : '1.1.2'
+        sphinxintl: '2.0.0'
+        swig : '3.0.12'
+        urllib3 : '1.25.3'
+        zlib : '1.2.5'
+
+        # SALOME MODULES :
+        'CONFIGURATION': {dev: 'yes'}
+        'MEDCOUPLING': {dev: 'yes'}
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
diff --git a/applications/MEDCOUPLING-9.4.0.pyconf b/applications/MEDCOUPLING-9.4.0.pyconf
new file mode 100644 (file)
index 0000000..38e4938
--- /dev/null
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-9.4.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V9_4_0'
+    debug : 'no'
+    dev : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+        launch : {PYTHONIOENCODING:"UTF_8"} 
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.6.0'
+        boost : '1.58.0'
+        certifi : '2018.8.24'
+        click : '6.7'
+        cmake : '3.12.1' 
+        cppunit : '1.13.2'
+        chardet : '3.0.4'
+        Cython : '0.25.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        Jinja2 : '2.7.3'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        markupsafe : '0.23'
+        medfile : '4.0.0'
+        metis : '5.1.0'
+        numpy : '1.15.1'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        Python : '3.6.5'
+        pytz : '2015.4'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        packaging : '17.1'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION': {dev: 'yes'}
+        'MEDCOUPLING': {dev: 'yes'}
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
diff --git a/applications/MEDCOUPLING-9.5.0-MPI.pyconf b/applications/MEDCOUPLING-9.5.0-MPI.pyconf
new file mode 100644 (file)
index 0000000..59fc5d2
--- /dev/null
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-9.5.0-MPI'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V9_5_0'
+    base : 'no'
+    debug : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build :
+        {
+          CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           SALOME_USE_64BIT_IDS : '1'
+        }
+        launch : {PYTHONIOENCODING:"UTF_8"} 
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.6.0'
+        boost : '1.58.0'
+        certifi : '2018.8.24'
+        click : '6.7'
+        cmake : '3.12.1' 
+        cppunit : '1.13.2'
+        chardet : '3.0.4'
+        Cython : '0.25.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        graphviz : '2.38.0'
+        hdf5 : {tag : '1.10.3', hpc : 'yes'}
+        idna : '2.7'
+        imagesize : '1.0.0'
+        Jinja2 : '2.7.3'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        markupsafe : '0.23'
+        medfile : {tag : '4.1.0', hpc : 'yes', section : 'default_Autotools' }
+        numpy : '1.15.1'
+        openmpi : '2.1.6'
+        ParMetis : '3.1.1'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        Python : '3.6.5'
+        pytz : '2015.4'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        packaging : '17.1'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'MEDCOUPLING' : {tag : 'V9_5_0', section: 'default_MPI'}
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
diff --git a/applications/MEDCOUPLING-9.5.0-int64.pyconf b/applications/MEDCOUPLING-9.5.0-int64.pyconf
new file mode 100644 (file)
index 0000000..85b0eb4
--- /dev/null
@@ -0,0 +1,81 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-9.5.0-int64'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V9_5_0'
+    base : 'no'
+    debug : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build :
+        {
+          CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           SALOME_USE_64BIT_IDS : '1'
+        }
+        launch : {PYTHONIOENCODING:"UTF_8"} 
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.6.0'
+        boost : '1.58.0'
+        certifi : '2018.8.24'
+        click : '6.7'
+        cmake : '3.12.1' 
+        cppunit : '1.13.2'
+        chardet : '3.0.4'
+        Cython : '0.25.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        Jinja2 : '2.7.3'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        markupsafe : '0.23'
+        medfile : {section: 'default_Autotools', tag: '4.1.0'}
+        metis : '5.1.0'
+        numpy : '1.15.1'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        Python : '3.6.5'
+        pytz : '2015.4'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        packaging : '17.1'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'MEDCOUPLING' : {tag : 'V9_5_0', section: 'default_int64'}
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
diff --git a/applications/MEDCOUPLING-9.5.0-windows.pyconf b/applications/MEDCOUPLING-9.5.0-windows.pyconf
new file mode 100644 (file)
index 0000000..a73c6ff
--- /dev/null
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-9.5.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name
+    cmake_generator : 'Visual Studio 15 2017 Win64'
+    tag : 'V9_5_0'
+    debug : 'no'
+    dev : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+        launch : {PYTHONIOENCODING:"UTF_8"}
+        SALOME_HAS_GLOBAL_ENV: "1"
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.7.0'
+        boost : '1.67.0'
+        certifi : '2019.6.16'
+        click : '7.0'
+        cmake : '3.12.1' 
+        colorama: '0.4.1'
+        cppunit : '1.13.2'
+        chardet : '3.0.4'
+        Cython : '0.29.12'
+        docutils : '0.14'
+        doxygen : '1.8.3.1'
+        expat : '2.0.1'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        idna : '2.8'
+        imagesize : '1.1.0'
+        Jinja2 : '2.10.1'
+        lapack : '3.8.0'
+        libjpeg: '9c'
+        libpng: '1.5.10'
+        libxml2 : '2.9.1'
+        markupsafe : '1.1.1'
+        medfile : '4.1.0'
+        metis : '5.1.0'
+        msvc : '2017'
+        numpy : '1.16.4'
+        packaging : '19.0'
+        pockets : '0.7.2'
+        Pygments : '2.4.2'
+        pyparsing : '2.4.0'
+        Python : '3.6.5'
+        pytz : '2019.1'
+        requests : '2.22.0'
+        scipy : '1.4.1'
+        setuptools : '41.0.1'
+        six : '1.12.0'
+        snowballstemmer : '1.9.0'
+        Sphinx : '2.1.2'
+        sphinxcontrib_applehelp : '1.0.1'
+        sphinxcontrib_devhelp : '1.0.1'
+        sphinxcontrib_jsmath : '1.0.1'
+        sphinxcontrib_htmlhelp : '1.0.2'
+        sphinxcontrib_napoleon : '0.7'
+        sphinxcontrib_qthelp : '1.0.2'
+        sphinxcontrib_serializinghtml :'1.1.3'
+        sphinxcontrib_websupport : '1.1.2'
+        sphinxintl: '2.0.0'
+        swig : '3.0.12'
+        urllib3 : '1.25.3'
+        zlib : '1.2.5'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'MEDCOUPLING'
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
diff --git a/applications/MEDCOUPLING-9.5.0.pyconf b/applications/MEDCOUPLING-9.5.0.pyconf
new file mode 100644 (file)
index 0000000..97ec6c8
--- /dev/null
@@ -0,0 +1,77 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-9.5.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V9_5_0'
+    base : 'no'
+    debug : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+        launch : {PYTHONIOENCODING:"UTF_8"} 
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.6.0'
+        boost : '1.58.0'
+        certifi : '2018.8.24'
+        click : '6.7'
+        cmake : '3.12.1' 
+        cppunit : '1.13.2'
+        chardet : '3.0.4'
+        Cython : '0.25.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        Jinja2 : '2.7.3'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        markupsafe : '0.23'
+        medfile : '4.1.0'
+        metis : '5.1.0'
+        numpy : '1.15.1'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        Python : '3.6.5'
+        pytz : '2015.4'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        packaging : '17.1'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'MEDCOUPLING'
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
diff --git a/applications/MEDCOUPLING-MPI.pyconf b/applications/MEDCOUPLING-MPI.pyconf
new file mode 100644 (file)
index 0000000..37124eb
--- /dev/null
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-MPI'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    # Tag set to master instead of V8_2_0
+    #tag : 'V8_2_0'
+    tag : 'master'
+    #base : 'no'
+    environ :
+    {
+    }
+    products :
+    {
+        # PREREQUISITES :
+        # OP 09/04/2018 add pytz for Babel prerequisite
+        pytz : '2015.4'
+        
+        # OP 09/04/2018 add Babel, click, six prerequisites for sphinx-intl
+        Babel : '2.0'
+        click : '6.7'
+        six : '1.10.0'
+        
+        Python : '2.7.10'
+        Cython : '0.23.2'
+        lapack : '3.7.0'
+        numpy : '1.12.1'
+        scipy : '0.18.1'
+        boost : '1.58.0'
+        libxml2 : '2.9.0'
+        hdf5 : '1.8.14'
+        medfile : '3.3.1'
+        cmake : '3.5.2'
+        cppunit : '1.13.2'
+        metis : '5.1.0'
+        scotch : '6.0.4'
+        openmpi : '1.8.5'
+#
+#       for documentation
+        setuptools : '38.4.0'
+        markupsafe : '0.23'
+        graphviz : '2.38.0'
+        doxygen : '1.8.3.1'
+        Sphinx : '1.2.3'
+
+        # TA 06-04-2018 Add sphinx-intl prerequisite
+        sphinxintl: '0.9.10'
+        swig : '2.0.12'
+        Pygments : '2.0.2'
+        Jinja2 : '2.7.3'
+        docutils : '0.12'
+#
+        # SALOME MODULES :
+        'CONFIGURATION': {dev: 'yes'}
+        'MEDCOUPLING': {dev: 'yes'}
+
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        # Go back to the SalomeV8 tag
+        #tag : "8.2.0"
+        tag : "SalomeV8"
+    }
+}
+# OP 17/07/2017 Plutot que de passer par un overwrite, voir s'il ne serait pas
+#               plus pertinent de passer par une section dans le fichier
+#               MEDCOUPLING.pyconf
+__overwrite__ :
+[
+   {
+     'PRODUCTS.MEDCOUPLING.default.cmake_options' : '-DMEDCOUPLING_ENABLE_PYTHON=ON -DMEDCOUPLING_ENABLE_PARTITIONER=OFF -DMEDCOUPLING_ENABLE_RENUMBER=ON -DMEDCOUPLING_PARTITIONER_METIS=OFF -DMEDCOUPLING_PARTITIONER_SCOTCH=ON -DMEDCOUPLING_PARTITIONER_PARMETIS=ON -DMEDCOUPLING_MICROMED=OFF -DMEDCOUPLING_USE_MPI=ON -DSALOME_USE_MPI=ON'
+    'PRODUCTS.MEDCOUPLING.default.depend' : 
+     [
+         "boost", "Python", "swig", "hdf5", "medfile", "scotch", "doxygen",
+         "graphviz", "metis", "docutils", "libxml2", "cppunit", "Sphinx",
+         "sphinxintl", "setuptools", "six", "pytz", "numpy", "scipy", "lapack",
+         "cmake", "markupsafe", "Pygments", "Jinja2", "CONFIGURATION"
+     ]
+   }
+]
diff --git a/applications/MEDCOUPLING-master-int64.pyconf b/applications/MEDCOUPLING-master-int64.pyconf
new file mode 100644 (file)
index 0000000..aefa8c0
--- /dev/null
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-master-int64'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'master'
+    base : 'no'
+    debug : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build :
+        {
+           CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           SALOME_USE_64BIT_IDS : '1'
+        }
+        launch :
+        {
+           PYTHONIOENCODING:"UTF_8"
+        }
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.7.0'
+        boost : '1.58.0'
+        certifi : '2018.8.24'
+        click : '6.7'
+        cmake : '3.12.1' 
+        cppunit : '1.13.2'
+        chardet : '3.0.4'
+        Cython : '0.25.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        Jinja2 : '2.7.3'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        markupsafe : '0.23'
+        medfile : {section: 'default_Autotools', tag: '4.1.0'}
+        metis : '5.1.0'
+        numpy : '1.15.1'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        Python : '3.6.5'
+        pytz : '2015.7'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        packaging : '17.1'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'MEDCOUPLING' : {tag : 'master', section: 'default_int64'}
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
diff --git a/applications/MEDCOUPLING-master-windows.pyconf b/applications/MEDCOUPLING-master-windows.pyconf
new file mode 100644 (file)
index 0000000..731f3c6
--- /dev/null
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-master'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name
+    cmake_generator : 'Visual Studio 15 2017 Win64'
+    tag : 'master'
+    debug : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+        launch : {PYTHONIOENCODING:"UTF_8"}
+        SALOME_HAS_GLOBAL_ENV: "1"
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.7.0'
+        boost : '1.67.0'
+        certifi : '2019.6.16'
+        click : '7.0'
+        cmake : '3.12.1' 
+        colorama: '0.4.1'
+        cppunit : '1.13.2'
+        chardet : '3.0.4'
+        Cython : '0.29.12'
+        docutils : '0.14'
+        doxygen : '1.8.3.1'
+        expat : '2.0.1'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        idna : '2.8'
+        imagesize : '1.1.0'
+        Jinja2 : '2.10.1'
+        lapack : '3.8.0'
+        libjpeg: '9c'
+        libpng: '1.5.10'
+        libxml2 : '2.9.1'
+        markupsafe : '1.1.1'
+        medfile : '4.1.0'
+        metis : '5.1.0'
+        msvc : '2017'
+        numpy : '1.16.4'
+        packaging : '19.0'
+        pockets : '0.7.2'
+        Pygments : '2.4.2'
+        pyparsing : '2.4.0'
+        Python : '3.6.5'
+        pytz : '2019.1'
+        requests : '2.22.0'
+        scipy : '1.4.1'
+        setuptools : '41.0.1'
+        six : '1.12.0'
+        snowballstemmer : '1.9.0'
+        Sphinx : '2.1.2'
+        sphinxcontrib_applehelp : '1.0.1'
+        sphinxcontrib_devhelp : '1.0.1'
+        sphinxcontrib_jsmath : '1.0.1'
+        sphinxcontrib_htmlhelp : '1.0.2'
+        sphinxcontrib_napoleon : '0.7'
+        sphinxcontrib_qthelp : '1.0.2'
+        sphinxcontrib_serializinghtml :'1.1.3'
+        sphinxcontrib_websupport : '1.1.2'
+        sphinxintl: '2.0.0'
+        swig : '3.0.12'
+        urllib3 : '1.25.3'
+        zlib : '1.2.5'
+
+        # SALOME MODULES :
+        'CONFIGURATION': {dev: 'yes'}
+        'MEDCOUPLING': {dev: 'yes'}
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
diff --git a/applications/MEDCOUPLING-master.pyconf b/applications/MEDCOUPLING-master.pyconf
new file mode 100644 (file)
index 0000000..9b1e944
--- /dev/null
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-master'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'master'
+    base : 'no'
+    debug : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+        launch : {PYTHONIOENCODING:"UTF_8"} 
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.7.0'
+        boost : '1.58.0'
+        certifi : '2018.8.24'
+        click : '6.7'
+        cmake : '3.12.1' 
+        cppunit : '1.13.2'
+        chardet : '3.0.4'
+        Cython : '0.25.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        Jinja2 : '2.7.3'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        markupsafe : '0.23'
+        medfile : '4.1.0'
+        metis : '5.1.0'
+        numpy : '1.15.1'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        Python : '3.6.5'
+        pytz : '2015.7'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        packaging : '17.1'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'MEDCOUPLING'
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
+__overwrite__ :
+[
+  {
+    __condition__ : "VARS.dist in ['FD32']"
+    'APPLICATION.products.scipy' : '1.5.2' # gcc https://github.com/scipy/scipy/issues/11611 - either patch numpy to include -fallow-argument-mismatch or move to that version
+  }
+]
diff --git a/applications/MEDCOUPLING-native.pyconf b/applications/MEDCOUPLING-native.pyconf
new file mode 100644 (file)
index 0000000..a916487
--- /dev/null
@@ -0,0 +1,81 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'MEDCOUPLING-native'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    # Tag set to master instead of V8_2_0
+    #tag : 'V8_2_0'
+    tag : 'master'
+    #base : 'no'
+    environ :
+    {
+    }
+    products :
+    {
+        # PREREQUISITES :
+        # OP 09/04/2018 add pytz for Babel prerequisite
+        pytz : '2015.4'
+        
+        # OP 09/04/2018 add Babel, click, six prerequisites for sphinx-intl
+        Babel : '2.0'
+        click : '6.7'
+        six : '1.10.0'
+
+               Python : 'native'
+        lapack : 'native'
+        numpy : 'native'
+        scipy : 'native'
+        boost : 'native'
+        libxml2 : 'native'
+        cmake : 'native'
+        cppunit : 'native'
+        hdf5 : '1.8.14'
+        medfile : '3.3.1'
+        metis : '5.1.0'
+        scotch : '6.0.4'
+        swig : '2.0.12'
+#
+#       for documentation
+        setuptools : 'native'
+        markupsafe : 'native'
+        graphviz : 'native'
+        doxygen : 'native'
+        Sphinx : 'native'
+
+        # TA 06-04-2018 Add sphinx-intl prerequisite
+        sphinxintl: '0.9.10'
+        Pygments : 'native'
+        Jinja2 : 'native'
+        docutils : 'native'
+#
+        # SALOME MODULES :
+        'CONFIGURATION': {dev: 'yes'}
+        'MEDCOUPLING': {dev: 'yes'}
+
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        # Go back to the SalomeV8 tag
+        #tag : "8.2.0"
+        tag : "SalomeV8"
+    }
+}
+# OP 17/07/2017 Plutot que de passer par un overwrite, voir s'il ne serait pas
+#               plus pertinent de passer par une section dans le fichier
+#               MEDCOUPLING.pyconf
+__overwrite__ :
+[
+   {
+       # OP 09/04/2018 add sphinx-intl, six prerequisites
+    'PRODUCTS.MEDCOUPLING.default.depend' : 
+     [
+         "boost", "Python", "swig", "hdf5", "medfile", "scotch", "doxygen",
+         "graphviz", "metis", "docutils", "libxml2", "cppunit", "Sphinx",
+         "sphinxintl", "setuptools", "six", "pytz", "numpy", "scipy", "lapack",
+         "cmake", "markupsafe", "Pygments", "Jinja2", "CONFIGURATION"
+     ]
+   }
+]
diff --git a/applications/Paraview-offscreen-rendering.pyconf b/applications/Paraview-offscreen-rendering.pyconf
new file mode 100644 (file)
index 0000000..49facee
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'Paraview-offscreen-rendering'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    #tag : 'V8_2_0'
+    #base : 'no'
+    environ :
+    {
+        OMNIORB_USER_PATH : '/tmp'
+        #_PATH : '/usr/sbin:/sbin'
+    }
+    products :
+    {
+        # PREREQUISITES :
+        cmake : '3.5.2'
+        Python : '2.7.10'
+# OP 18/04/2017 Artifact 8498 : Passage de la compilation de hdf5 a cmake
+#                               La section CMake devient la section par defaut
+        #hdf5 : { section : 'default_CMake', tag : '1.8.14'}
+        hdf5 : '1.8.14'
+        qt : '5.6.1-1'
+        boost : '1.58.0'
+        gl2ps : '1.3.9p1'
+        libxml2 : '2.9.0'
+        freetype : '2.4.11'
+        PyQt : '5.6'
+        numpy : '1.9.2'
+        six : '1.9.0'
+        pytz : '2014.10'
+        distribute : '0.6.28'
+        pyparsing : '1.5.6'
+        dateutil : '2.4.0'
+        setuptools : '0.6c11'
+        matplotlib : '1.4.3'
+        sip : '4.18'
+        llvm : '3.9.1'
+        mesa : '13.0.5'
+        glu : '9.0.0'
+        ParaView : {section : 'version_5_1_2plus_820_offscreen_rendering', tag : '5.1.2plus'}
+        openmpi : "1.8.5"
+
+    }
+    test_base : 
+    {
+    }
+}
+
diff --git a/applications/SALOME-6.6.0.pyconf b/applications/SALOME-6.6.0.pyconf
new file mode 100644 (file)
index 0000000..ab51a3e
--- /dev/null
@@ -0,0 +1,98 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-6.6.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V6_6_0'
+    get_method : 'git'
+    base : 'no'
+    environ :
+    {
+    }
+    products :
+    {
+      # PREREQUISITES :
+      Python: '2.6.6'
+      Hexotic: '1.0' 
+      homard_bin : {section : 'version_6_6_0_to_8_5_0', tag : '10.5'}
+      MeshGems: '1.0'  
+      setuptools: '0.6c11' 
+      Jinja2: '2.6'  
+      Pygments: '1.5'
+      docutils: '0.8.1'
+      Sphinx: '1.1.3' 
+      qt: '4.6.3' 
+      sip: '4.13.2' 
+      PyQt: '4.9.1'  
+      tcl: '8.5.9'
+      tk: '8.5.9'     
+      Togl: '1.7'    
+      boost: '1.49.0' 
+      ParaViewData: '3.14.0' 
+      cmake: '2.8.7'   
+      gl2ps: '1.3.5'
+      hdf5: '1.8.8' 
+      freeimage: '3.14.1'   
+      freetype: '2.3.7'
+      ftgl: '2.1.3-rc5'
+      CAS: '6.5.4'     
+      cppunit: '1.12.1'
+      expat: '2.0.1'
+      graphviz: '2.28.0'
+      libxml2: '2.7.8'    
+      doxygen: '1.8.0'     
+      medfile: '3.0.6'
+      swig: '2.0.4'
+      qwt: '5.2.1'
+      netgen: '4.9.13'
+      scotch: '5.1.11'
+      omniORB: '4.1.6'
+      omniORBpy: '3.6'
+      omniNotify: '2.1'
+      numpy: '1.5.1'  
+      ParaView: '3.14.0'
+ #     QScintilla: '2.6.1' 
+ #     metis: '4.0patched'
+      
+      LIBBATCH : 'V1_6_0'
+      KERNEL
+      GUI
+      MED
+      GEOM
+      SMESH
+      NETGENPLUGIN
+      BLSURFPLUGIN
+      GHS3DPLUGIN
+      YACS
+      YACSGEN
+      VISU
+
+      # Add SAMPLES module
+      SAMPLES
+    }
+    virtual_app:
+    {
+        # The name of the application (overrides $PRODUCT.name)
+        # This name will be used to generate packages.
+        name : "salome660"
+        # The name for the application directory (default is APPLI)
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV6"
+    }
+}
+APPLI:
+{
+    # The name of the application (overrides $PRODUCT.name)
+    # This name will be used to generate packages.
+    name : "salome660"
+    # The name for the application directory (default is APPLI)
+    application_name : "APPLI"
+    #module_appli: "SALOME_APPLI"
+    #module_appli_install_dir: $TOOLS.common.module_info.SALOME_APPLI.install_dir
+}
diff --git a/applications/SALOME-7.8.0.pyconf b/applications/SALOME-7.8.0.pyconf
new file mode 100644 (file)
index 0000000..832eb58
--- /dev/null
@@ -0,0 +1,119 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-7.8.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V7_8_0'
+    #base : 'no'
+    environ :
+    {
+    }
+    products :
+    {
+        # PREREQUISITES :
+        Python : '2.7.10'
+        Cython : '0.23.2'
+        numpy : '1.9.2'
+        scipy : '0.15.1'
+        lapack : '3.5.0'
+        cmake : '3.5.2'
+        pyreadline : '2.0'
+        setuptools : '0.6c11'
+        markupsafe : '0.23'
+        Jinja2 : '2.7.3'
+        six : '1.9.0'
+        distribute : '0.6.28'
+        pytz : '2014.10'
+        pyparsing : '1.5.6'
+        dateutil : '2.4.0'
+        freetype : '2.4.11'
+        matplotlib : '1.4.3'
+        cppunit : '1.12.1'
+        qt : '4.8.4'
+        PyQt : '4.9.6'
+        qwt : '6.1.0'
+        sip : '4.14.2'
+        omniORB : '4.1.6'
+        omniORBpy : '3.6'
+        boost : '1.58.0'
+        swig : '2.0.8'
+        gl2ps : '1.3.8'
+        freeimage : '3.16.0'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        libxml2 : '2.9.0'
+        CAS : {tag : '6.9.1p1', section : version_6_0_0_to_7_0_0}
+        hdf5 : '1.8.14'
+        ParaView : '5.0.1p1'
+        metis : '5.1.0'
+#        ParMetis : '3.1.1'
+        scotch : '5.1.12b'
+        medfile : '3.2.0'
+        graphviz : '2.38.0'
+        doxygen : '1.8.3.1'
+        docutils : '0.12'
+        Sphinx : '1.2.3'
+        Pygments : '2.0.2'
+        opencv : '2.4.6.1'
+        homard_bin : '11.7'
+        netgen : '4.9.13'
+        MeshGems : '2.1-11'
+        cgns : '3.1.3-4'
+        fftw : '3.3.4'
+        root : '5.34.32'
+        nlopt : '2.2.4'
+        pcl : '1.10'
+        uranie : '3.6.0'
+        lata : '1.3p2'
+        gmsh : '2.12.0'
+
+        # SALOME MODULES :
+        'SALOME_PROFILE' : "7.8.0"
+
+        'LIBBATCH' : "V2_3_0"
+        'JOBMANAGER'
+        'KERNEL'
+        'GUI'
+
+        'GEOM'
+
+        'SMESH'
+        'NETGENPLUGIN'
+        'GHS3DPLUGIN'
+        'HYBRIDPLUGIN'
+        'BLSURFPLUGIN'
+        'HexoticPLUGIN'
+        'GHS3DPRLPLUGIN' #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'MED'
+        'GMSHPLUGIN' 
+        'HOMARD'
+        'MEDCOUPLING'
+        'YACS'
+        'YACSGEN'
+        'XDATA' : "0.9.11"
+        'HXX2SALOME'
+        'PARAVIS'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+
+        'DOCUMENTATION'
+    }
+    profile :
+    {
+        product : "SALOME_PROFILE"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "7.8.0"
+    }
+}
+
diff --git a/applications/SALOME-7.8.0p2.pyconf b/applications/SALOME-7.8.0p2.pyconf
new file mode 100644 (file)
index 0000000..19f65e8
--- /dev/null
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-7.8.0p2'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V7_8_0'
+    #base : 'no'
+    environ :
+    {
+    }
+    products :
+    {
+        # PREREQUISITES :
+        Python : '2.7.10'
+        Cython : '0.23.2'
+        numpy : '1.9.2'
+        scipy : '0.15.1'
+        lapack : '3.5.0'
+        cmake : '3.5.2'
+        pyreadline : '2.0'
+        setuptools : '0.6c11'
+        markupsafe : '0.23'
+        Jinja2 : '2.7.3'
+        six : '1.9.0'
+        distribute : '0.6.28'
+        pytz : '2014.10'
+        pyparsing : '1.5.6'
+        dateutil : '2.4.0'
+        freetype : '2.4.11'
+        matplotlib : '1.4.3'
+        cppunit : '1.12.1'
+        qt : '4.8.4'
+        PyQt : '4.9.6'
+        qwt : '6.1.0'
+        sip : '4.14.2'
+        omniORB : '4.1.6'
+        omniORBpy : '3.6'
+        boost : '1.58.0'
+        swig : '2.0.8'
+        gl2ps : '1.3.8'
+        freeimage : '3.16.0'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        libxml2 : '2.9.0'
+        CAS : {tag : '6.9.1p1', section : version_6_0_0_to_7_0_0}
+        hdf5 : '1.8.14'
+        ParaView : '5.0.1p1'
+        metis : '5.1.0'
+#        ParMetis : '3.1.1'
+        scotch : '5.1.12b'
+        medfile : '3.2.0'
+
+        graphviz : '2.38.0'
+        doxygen : '1.8.3.1'
+        docutils : '0.12'
+        Sphinx : '1.2.3'
+        Pygments : '2.0.2'
+        opencv : '2.4.6.1'
+        homard_bin : '11.7'
+        netgen : '4.9.13'
+        MeshGems : '2.1-11'
+        cgns : '3.1.3-4'
+#        fftw : '3.3.4'
+#        root : '5.34.32'
+#        nlopt : '2.2.4'
+#        pcl : '1.10'
+#        uranie : '3.6.0'
+#        lata : '1.3p2'
+        gmsh : '2.12.0'
+
+        # SALOME MODULES :
+        'SALOME_PROFILE' : "7.8.0"
+
+        'LIBBATCH' : "V2_3_0"
+        'JOBMANAGER'
+        'KERNEL'
+        'GUI'
+
+        'GEOM'
+
+        'SMESH'
+        'NETGENPLUGIN'
+        'GHS3DPLUGIN'
+        'HYBRIDPLUGIN'
+        'BLSURFPLUGIN'
+        'HexoticPLUGIN'
+        'GHS3DPRLPLUGIN' #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'MED'
+        'GMSHPLUGIN' 
+        'HOMARD'
+        'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_BR'}
+        'YACS'
+        'YACSGEN' : {tag : 'V7_8_BR'}
+        'XDATA' : "0.9.11"
+        'HXX2SALOME'
+        'PARAVIS'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+
+        'DOCUMENTATION'
+    }
+    profile :
+    {
+        product : "SALOME_PROFILE"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "7.8.0"
+    }
+}
+
diff --git a/applications/SALOME-7.8.2.pyconf b/applications/SALOME-7.8.2.pyconf
new file mode 100644 (file)
index 0000000..1afc889
--- /dev/null
@@ -0,0 +1,124 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-7.8.2'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V7_8_0'
+    base : 'no'
+    environ :
+    {
+    }
+    products :
+    {
+        # PREREQUISITES :
+        Python : '2.7.10'
+        Cython : '0.23.2'
+        numpy : '1.9.2'
+        scipy : '0.15.1'
+        lapack : '3.5.0'
+        cmake : '3.5.2'
+        pyreadline : '2.0'
+        setuptools : '0.6c11'
+        markupsafe : '0.23'
+        Jinja2 : '2.7.3'
+        six : '1.9.0'
+        distribute : '0.6.28'
+        pytz : '2014.10'
+        pyparsing : '1.5.6'
+        dateutil : '2.4.0'
+        freetype : '2.4.11'
+        matplotlib : '1.4.3'
+        cppunit : '1.12.1'
+        qt : '4.8.4'
+        PyQt : '4.9.6'
+        qwt : '6.1.0'
+        sip : '4.14.2'
+        omniORB : '4.1.6'
+        omniORBpy : '3.6'
+        boost : '1.58.0'
+        swig : '2.0.8'
+        gl2ps : '1.3.8'
+        freeimage : '3.16.0'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        libxml2 : '2.9.0'
+        CAS : {tag : '6.9.1p1', section : version_6_0_0_to_7_0_0}
+        hdf5 : '1.8.14'
+        ParaView : '5.0.1p1'
+        metis : '5.1.0'
+#        ParMetis : '3.1.1'
+        scotch : '5.1.12b'
+        medfile : '3.2.0'
+        graphviz : '2.38.0'
+        doxygen : '1.8.3.1'
+        docutils : '0.12'
+        Sphinx : '1.2.3'
+        Pygments : '2.0.2'
+        opencv : '2.4.6.1'
+        homard_bin : {section : 'version_6_6_0_to_8_5_0', tag : '11.7'}
+        netgen : '4.9.13'
+        MeshGems : '2.1-11'
+        cgns : '3.1.3-4'
+#        fftw : '3.3.4'
+#        root : '5.34.32'
+#        nlopt : '2.2.4'
+#        pcl : '1.10'
+#        uranie : '3.6.0'
+#        lata : '1.3p2'
+        gmsh : '2.12.0'
+
+        # SALOME MODULES :
+        'SALOME_PROFILE' : "7.8.0"
+
+        'LIBBATCH' : "V2_3_0"
+        'JOBMANAGER'
+        'KERNEL'
+        'GUI'
+
+        'GEOM'
+
+        'SMESH'
+        'NETGENPLUGIN'
+        'GHS3DPLUGIN'
+        'HYBRIDPLUGIN'
+        'BLSURFPLUGIN'
+        'HexoticPLUGIN'
+        'GHS3DPRLPLUGIN' #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'MED'
+        'GMSHPLUGIN' 
+        'HOMARD'
+        'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_2'}
+        'YACS'
+        'YACSGEN' : {tag : 'V7_8_2'}
+        'XDATA' : "0.9.11"
+        'HXX2SALOME'
+        'PARAVIS'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+
+        'DOCUMENTATION'
+    }
+    profile :
+    {
+        product : "SALOME_PROFILE"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "7.8.0"
+    }
+}
+
diff --git a/applications/SALOME-7.8.3.pyconf b/applications/SALOME-7.8.3.pyconf
new file mode 100644 (file)
index 0000000..ee82228
--- /dev/null
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-7.8.3'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V7_8_0'
+    #base : 'no'
+    environ :
+    {
+    }
+    products :
+    {
+        # PREREQUISITES :
+        Python : '2.7.10'
+        Cython : '0.23.2'
+        numpy : '1.9.2'
+        scipy : '0.15.1'
+        lapack : '3.5.0'
+        cmake : '3.5.2'
+        pyreadline : '2.0'
+        setuptools : '0.6c11'
+        markupsafe : '0.23'
+        Jinja2 : '2.7.3'
+        six : '1.9.0'
+        distribute : '0.6.28'
+        pytz : '2014.10'
+        pyparsing : '1.5.6'
+        dateutil : '2.4.0'
+        freetype : '2.4.11'
+        matplotlib : '1.4.3'
+        cppunit : '1.12.1'
+        qt : '4.8.4'
+        PyQt : '4.9.6'
+        qwt : '6.1.0'
+        sip : '4.14.2'
+        omniORB : '4.1.6'
+        omniORBpy : '3.6'
+        boost : '1.58.0'
+        swig : '2.0.8'
+        gl2ps : '1.3.8'
+        freeimage : '3.16.0'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        libxml2 : '2.9.0'
+        CAS : {tag : '6.9.1p1', section : version_6_0_0_to_7_0_0}
+        hdf5 : '1.8.14'
+        ParaView : '5.0.1p1'
+        metis : '5.1.0'
+#        ParMetis : '3.1.1'
+        scotch : '5.1.12b'
+        medfile : '3.2.0'
+
+        graphviz : '2.38.0'
+        doxygen : '1.8.3.1'
+        docutils : '0.12'
+        Sphinx : '1.2.3'
+        Pygments : '2.0.2'
+        opencv : '2.4.6.1'
+        homard_bin : '11.7'
+        netgen : '4.9.13'
+        MeshGems : '2.1-11'
+        cgns : '3.1.3-4'
+#        fftw : '3.3.4'
+#        root : '5.34.32'
+#        nlopt : '2.2.4'
+#        pcl : '1.10'
+#        uranie : '3.6.0'
+#        lata : '1.3p2'
+        gmsh : '2.12.0'
+
+        # SALOME MODULES :
+        'SALOME_PROFILE' : "7.8.0"
+
+        'LIBBATCH' : "V2_3_0"
+        'JOBMANAGER'
+        'KERNEL' : {tag : 'V7_8_BR'}
+        'GUI'
+
+        'GEOM'
+
+        'SMESH'
+        'NETGENPLUGIN'
+        'GHS3DPLUGIN'
+        'HYBRIDPLUGIN'
+        'BLSURFPLUGIN'
+        'HexoticPLUGIN'
+        'GHS3DPRLPLUGIN' #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'MED'
+        'GMSHPLUGIN' 
+        'HOMARD'
+        'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_BR'}
+        'YACS'
+        'YACSGEN' : {tag : 'V7_8_BR'}
+        'XDATA' : "0.9.11"
+        'HXX2SALOME'
+        'PARAVIS'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+
+        'DOCUMENTATION'
+    }
+    profile :
+    {
+        product : "SALOME_PROFILE"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "7.8.0"
+    }
+}
+
diff --git a/applications/SALOME-7.8.4.pyconf b/applications/SALOME-7.8.4.pyconf
new file mode 100644 (file)
index 0000000..bf7a054
--- /dev/null
@@ -0,0 +1,129 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-7.8.4'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V7_8_0'
+    base : 'no'
+    environ :
+    {
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.6.0'
+        boost : '1.58.0'
+        CAS : {tag : '6.9.1p1', section : version_6_0_0_to_7_0_0}
+        certifi : '2018.8.24'
+        cgns : '3.1.3-4'
+        chardet : '3.0.4'
+        click : '6.7'
+        cmake : '3.5.2'
+        cppunit : '1.12.1'
+        Cython : '0.23.2'
+        dateutil : '2.4.0'
+        distribute : '0.6.28'
+        docutils : '0.12'
+        doxygen : '1.8.3.1'
+        freeimage : '3.16.0'
+        freetype : '2.4.11'
+        gl2ps : '1.3.8'
+        gmsh : '2.12.0'
+        graphviz : '2.38.0'
+        hdf5 : '1.8.14'
+        homard_bin : {section : 'version_6_6_0_to_8_5_0', tag : '11.7'}
+        idna : '2.7'
+        imagesize : '1.0.0'
+        Jinja2 : '2.7.3'
+        lapack : '3.5.0'
+        libxml2 : '2.9.0'
+        markupsafe : '0.23'
+        matplotlib : '1.4.3'
+        medfile : '3.2.0'
+        MeshGems : '2.1-11'
+        metis : '5.1.0'
+        netgen : '4.9.13'
+        numpy : '1.9.2'
+        omniORB : '4.1.6'
+        omniORBpy : '3.6'
+        opencv : '2.4.6.1'
+        packaging : '17.1'
+        ParaView : '5.0.1p1'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '1.5.6'
+        PyQt : '4.9.6'
+        pyreadline : '2.0'
+        Python : '2.7.10'
+        pytz : '2014.10'
+        qt : '4.8.4'
+        qwt : '6.1.0'
+        requests : '2.19.1'
+        scipy : '0.15.1'
+        scotch : '5.1.12b'
+        setuptools : '0.6c11'
+        sip : '4.14.2'
+        six : '1.9.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : {section: 'version_1_7_6_py2', tag:'1.7.6'}
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinxintl: '0.9.10'
+        swig : '2.0.8'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        typing : '3.6.6'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'BLSURFPLUGIN'
+        'CALCULATOR'
+        'COMPONENT'
+        'DOCUMENTATION'
+        'GEOM'
+        'GHS3DPLUGIN'
+        'GHS3DPRLPLUGIN'
+        'GMSHPLUGIN' 
+        'GUI'
+        'HELLO'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'HOMARD'
+        'HXX2SALOME'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        'JOBMANAGER'
+        'KERNEL'
+        'LIBBATCH' : "V2_3_0"
+        'MED'
+        'MEDCOUPLING' : {section: 'version_V7_8_0', tag : 'V7_8_2'}
+        'NETGENPLUGIN'
+        'PARAVIS'
+        'PYCALCULATOR'
+        'PYHELLO'
+        'SALOME_PROFILE' : "7.8.0"
+        'SAMPLES'
+        'SMESH'
+        'XDATA' : "0.9.11"
+        'YACS'
+        'YACSGEN' : {tag : 'V7_8_2'}
+    }
+    profile :
+    {
+        product : "SALOME_PROFILE"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "7.8.0"
+    }
+}
+
diff --git a/applications/SALOME-8.5.0-MPI.pyconf b/applications/SALOME-8.5.0-MPI.pyconf
new file mode 100644 (file)
index 0000000..906268d
--- /dev/null
@@ -0,0 +1,129 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-8.5.0-MPI'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V8_5_0'
+    base : 'no'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+        # Mandatory to make pidof reachable (in some case, like crontab, these paths are not in the $PATH)
+        _PATH : ['/usr/sbin', '/sbin']
+    }
+    products :
+    {
+        # PREREQUISITES :
+        Babel : '2.0'
+        boost : '1.58.0'
+        CAS : 'a4b60cc6a2986181e45acd069b69600c48daf13b' #'V7_2_0p3'
+        cgns : '3.3.1'
+        click : '6.7'
+        cmake : '3.5.2'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.23.2'
+        dateutil : '2.4.2'        # Previous : 2.4.0
+        distribute : '0.7.3'      # Previous : 0.6.28
+        docutils : '0.12'
+        doxygen : '1.8.3.1'
+        eigen : '3.2.7'
+        freeimage : '3.16.0'
+        freetype : '2.9.1'
+        functools32: '3.2.3-2'
+        gl2ps : '1.4.0_4037312'
+        gmsh : '3.0.5'
+        graphviz : '2.38.0'
+        hdf5 : '1.8.14'
+        homard_bin : '11.11'
+        Jinja2 : '2.7.3'
+        lapack : '3.7.0'
+        lata : '1.3-PV5.4.1_b5c4c89'
+        libxml2 : '2.9.0'
+        llvm : '3.9.1'
+        markupsafe : '0.23'
+        matplotlib : '2.0.2'
+        medfile : '3.3.1'
+        mesa : '13.0.6'
+        MeshGems : '2.6-4'
+        netgen : '5.3.1_with_CAS_7.2'
+        numpy : '1.12.1'
+        omniORB : '4.1.6'
+        omniORBpy : '3.6'
+        opencv : '2.4.13.5'
+        openmpi : '1.8.5'
+        ParaView : {section : 'version_5_4_1b5c4c89', tag : '5.4.1_b5c4c89'}
+        ParMetis : '3.1.1'
+        planegcs : '0.16'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'       # Previous : 1.5.6
+        PyQt : '5.9'
+        pyreadline : '2.0'
+        Python : '2.7.10'
+        pytz : '2015.4'           # Previous : 2014.10
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        scipy : '0.18.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        sip : '4.19.3'
+        six : '1.10.0'
+        Sphinx : '1.2.3'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxintl: '0.9.10'
+        subprocess32 : '3.5.0rc1'
+        swig : '2.0.12'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        
+        
+        # SALOME MODULES :
+        'CONFIGURATION' : {dev: 'yes'}
+        'SALOME' : {tag :'V8_5_0', dev: 'yes'}
+        'MEDCOUPLING'  : {dev: 'yes', section : "default_MPI"}
+        'LIBBATCH' : {tag :'V2_4_0', dev: 'yes'}
+        'KERNEL' : {dev: 'yes', section : "default_MPI"}
+        'GUI': {dev: 'yes'}
+        'GEOM' : {dev: 'yes'}
+        'SMESH' : {dev: 'yes'}
+        'NETGENPLUGIN' : {dev: 'yes'}
+        'BLSURFPLUGIN': {dev: 'yes'}
+        'GHS3DPLUGIN' : {dev: 'yes'}
+        'GHS3DPRLPLUGIN': {dev: 'yes'} #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource
+        'HYBRIDPLUGIN' : {dev: 'yes'}
+        'HexoticPLUGIN' : {dev: 'yes'}
+       'GMSHPLUGIN' : {dev: 'yes'}
+        'HEXABLOCK' : {dev: 'yes'}
+        'HEXABLOCKPLUGIN' : {dev: 'yes'}
+        'HOMARD' : {dev: 'yes'}
+        'MED' : {dev: 'yes'}
+        'PARAVIS' : {dev: 'yes', section : "version_8_5_0_MPI"}
+        'JOBMANAGER' : {dev: 'yes'}
+        'YACS' : {dev: 'yes'}
+        'YACSGEN' : {dev: 'yes'}
+        'DOCUMENTATION' : {dev: 'yes'}
+        'SAMPLES' : {dev: 'yes'}
+        'COMPONENT': {dev: 'yes'}  #ne pas livrer le plugin COMPONENT dans les versions opensource et CEA
+        'PYCALCULATOR': {dev: 'yes'} #ne pas livrer le plugin PYCALCULATOR dans les versions opensource et CEA
+        'CALCULATOR': {dev: 'yes'} #ne pas livrer le plugin CALCULATOR dans les versions opensource et CEA
+        'HELLO': {dev: 'yes'} #ne pas livrer le plugin HELLO dans les versions opensource et CEA
+        'PYHELLO': {dev: 'yes'} #ne pas livrer le plugin PYHELLO dans les versions opensource et CEA
+    }
+    profile :
+    {
+        product : "SALOME"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV8"
+    }
+}
diff --git a/applications/SALOME-8.5.0-native.pyconf b/applications/SALOME-8.5.0-native.pyconf
new file mode 100644 (file)
index 0000000..dc09f5e
--- /dev/null
@@ -0,0 +1,158 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+#
+# CNC 19/09/2017 SALOME-master-native is only used from now on FD26
+APPLICATION :
+{
+    name : 'SALOME-8.5.0-native'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V8_5_0'
+    base : 'no'
+    environ :
+    {
+        build: { CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION" }
+    }
+    products :
+    {
+        # PREREQUISITES :
+        Babel : '2.0'
+        boost : 'native'
+        CAS : 'a4b60cc6a2986181e45acd069b69600c48daf13b' #'V7_2_0p3'
+        cgns : '3.3.1'
+        click : '6.7'
+        cmake : 'native'
+
+        # a bug should be corrected in PARAVIS cmake before using native cppunit
+        cppunit : '1.13.2'
+
+        # TA 10-04-2018 Remove cycler prerequisite needed for matplotlib 2.0.2
+        #               but native version is older
+        #               (version 2.0.0 with command "rpm -qa")
+        #cycler : '0.10.0'
+        Cython : 'native'
+        dateutil : 'native'
+        distribute : 'native'
+        docutils : 'native'
+        doxygen : 'native'
+        eigen : '3.2.7'
+        freeimage : 'native'
+        freetype : 'native'
+
+        # TA 10-04-2018 Remove functools32 prerequisite needed for matplotlib
+        #               2.0.2 but native version is older
+        #               (version 2.0.0 with command "rpm -qa")
+        #functools32: '3.2.3-2'
+        
+        # TA 12-04-2018: gl2ps becomes non-native as ParaView cannot be compiled
+        #                with native version of gl2ps (1.3.9p1)
+        gl2ps : '1.4.0_4037312'
+        gmsh : '3.0.5'
+        graphviz : 'native'
+        hdf5 : '1.8.14'
+        homard_bin : '11.11'
+        Jinja2 : 'native'
+        lapack : 'native'
+        lata : '1.3-PV5.4.1_b5c4c89'
+        libxml2 : 'native'
+        llvm : '3.9.1'
+        markupsafe : 'native'
+        matplotlib : 'native'
+        medfile : '3.3.1'
+        mesa : '13.0.6'
+        MeshGems : '2.6-4'
+        metis : '5.1.0'
+        netgen : '5.3.1_with_CAS_7.2'
+        numpy : 'native'
+        omniORB : '4.1.6'
+        omniORBpy : '3.6'
+        opencv : '2.4.13.5'
+        ParaView : {section : 'version_5_4_1b5c4c89', tag : '5.4.1_b5c4c89'}
+        planegcs : '0.16'
+        pockets : '0.6.2'
+        Pygments : 'native'
+        pyparsing : 'native'
+        PyQt : '5.7.1'
+        pyreadline : 'native'
+        Python : 'native'
+        pytz : 'native'
+        qt : '5.7.1'
+        qwt : '6.1.2'
+        scipy : 'native'
+        scotch : '6.0.4'
+        setuptools : 'native'
+        sip : 'native'
+        six : 'native'
+        Sphinx : 'native'
+        sphinxcontrib : '0.6.1'
+        sphinxintl: '0.9.10'
+        
+        # TA 10-04-2018 Remove subprocess32 prerequisite needed for matplotlib
+        #               2.0.2 but native version is older
+        #               (version 2.0.0 with command "rpm -qa")
+        #subprocess32 : '3.5.0rc1'
+        swig : 'native'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        
+        
+        # SALOME MODULES :
+        'CONFIGURATION' : {dev: 'yes'}
+        'SALOME' : {tag :'V8_5_0', dev: 'yes'}
+
+        'LIBBATCH' : {tag :'V2_4_0', dev: 'yes'}
+# TA 10-04-2018: Adding a new default_SALOME section specific to SALOME to avoid
+#                impacting other applications with SALOME updates.
+        'KERNEL' : {dev: 'yes'}
+        'MEDCOUPLING': {dev: 'yes'}
+
+        'GUI': {dev: 'yes'}
+        'GEOM' : {dev: 'yes'}
+        'SMESH' : {dev: 'yes'}
+        'NETGENPLUGIN' : {dev: 'yes'}
+        'BLSURFPLUGIN': {dev: 'yes'}
+        'GHS3DPLUGIN' : {dev: 'yes'}
+
+        #ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource
+        'GHS3DPRLPLUGIN' : {dev: 'yes'}
+        
+        'HYBRIDPLUGIN' : {dev: 'yes'}
+        'HexoticPLUGIN' : {dev: 'yes'}
+       'GMSHPLUGIN' : {dev: 'yes'}
+        'HEXABLOCK' : {dev: 'yes'}
+        'HEXABLOCKPLUGIN' : {dev: 'yes'}
+        'HOMARD' : {dev: 'yes'}
+        'MED' : {dev: 'yes'}
+        'PARAVIS' : {dev: 'yes'}
+        'JOBMANAGER' : {dev: 'yes'}
+        'YACS' : {dev: 'yes'}
+        'YACSGEN' : {dev: 'yes'}
+        'DOCUMENTATION' : {dev: 'yes'}
+        'SAMPLES' : {dev: 'yes'}
+
+        #ne pas livrer le plugin COMPONENT dans les versions opensource et CEA
+        'COMPONENT' : {dev: 'yes'}
+        #ne pas livrer le plugin PYCALCULATOR dans les versions opensource et CEA
+        'PYCALCULATOR' : {dev: 'yes'}
+        #ne pas livrer le plugin CALCULATOR dans les versions opensource et CEA
+        'CALCULATOR' : {dev: 'yes'}
+        #ne pas livrer le plugin HELLO dans les versions opensource et CEA
+        'HELLO' : {dev: 'yes'}
+        #ne pas livrer le plugin PYHELLO dans les versions opensource et CEA
+        'PYHELLO' : {dev: 'yes'} 
+    }
+    profile :
+    {
+        product : "SALOME"
+    }
+    virtual_app :
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV8"
+    }
+}
+
diff --git a/applications/SALOME-8.5.0.pyconf b/applications/SALOME-8.5.0.pyconf
new file mode 100644 (file)
index 0000000..34a9408
--- /dev/null
@@ -0,0 +1,156 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-8.5.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V8_5_0'
+    base : 'no'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+    }
+    products :
+    {
+        # PREREQUISITES :         # Pas de H5py, mpi4py, nose, openmpi,
+                                  # Intel Threading Building Blocks, paco++,
+                                  # pkgconfig, tclx
+        # OP 09/04/2018 add Babel and click prerequisites for sphinx-intl
+        Babel : '2.0'
+        boost : '1.58.0'          # Nijni : 1.52.0
+        CAS : 'a4b60cc6a2986181e45acd069b69600c48daf13b' #'V7_2_0p3'
+        cgns : '3.3.1'
+        click : '6.7'
+        cmake : '3.5.2'           # Nijni : 3.3.0
+        cppunit : '1.13.2'        # Nijni : 1.12.1
+        cycler : '0.10.0'
+        Cython : '0.23.2'
+        dateutil : '2.4.2'        # Previous : 2.4.0
+        distribute : '0.7.3'      # Previous : 0.6.28
+        docutils : '0.12'
+        doxygen : '1.8.3.1'
+        eigen : '3.2.7'
+        freeimage : '3.16.0'
+        freetype : '2.9.1'
+        functools32: '3.2.3-2'
+        gl2ps : '1.4.0_4037312'  # Included in ParaView
+        gmsh : '3.0.5'
+        graphviz : '2.38.0'
+        hdf5 : '1.8.14'
+        homard_bin : {section : 'version_6_6_0_to_8_5_0', tag : '11.11'} # Nijni : 11.10
+        Jinja2 : '2.7.3'
+        lapack : '3.7.0'
+        lata : '1.3-PV5.4.1_b5c4c89'
+        libxml2 : '2.9.0'
+        llvm : '3.9.1'
+        markupsafe : '0.23'
+        matplotlib : '2.0.2'
+        medfile : '3.3.1'
+        mesa : '13.0.6'
+        MeshGems : '2.6-4'
+        metis : '5.1.0'
+        netgen : '5.3.1_with_CAS_7.2'
+        numpy : '1.12.1'
+        omniORB : '4.1.6'
+        omniORBpy : '3.6'
+        opencv : '2.4.13.5'
+        ParaView : {section : 'version_5_4_1b5c4c89', tag : '5.4.1_b5c4c89'}
+        planegcs : '0.16'
+
+        # OP 19/04/2018 add pockets prerequisites
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'       # Previous : 1.5.6
+        PyQt : '5.9'
+        pyreadline : '2.0'
+        Python : '2.7.10'
+        pytz : '2015.4'           # Previous : 2014.10
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        scipy : '0.18.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        sip : '4.19.3'
+        six : '1.10.0'            # Nijni : 1.9.0
+        Sphinx : '1.2.3'
+
+        # OP 19/04/2018 add sphinxcontrib-napoleon prerequisite
+        # OP sphinxcontrib renamed to sphinxcontrib_napoleon
+        #sphinxcontrib : '0.6.1'
+        sphinxcontrib_napoleon : '0.6.1'
+        
+        # TA 06-04-2018 Add sphinx-intl prerequisite for KERNEL and MEDCOUPLING
+        sphinxintl: '0.9.10'
+        subprocess32 : '3.5.0rc1'
+        swig : '2.0.12'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        
+        
+        # SALOME MODULES :
+        'CONFIGURATION' : {dev: 'yes'}
+        'SALOME' : {tag :'V8_5_0', dev: 'yes'}
+        'LIBBATCH' : {tag :'V2_4_0', dev: 'yes'}
+        'KERNEL' : {dev: 'yes'}
+        'MEDCOUPLING': {dev: 'yes'}
+        'GUI': {dev: 'yes'}
+
+        'GEOM' : {dev: 'yes'}
+        'SMESH' : {dev: 'yes'}
+        'NETGENPLUGIN' : {dev: 'yes'}
+        'BLSURFPLUGIN': {dev: 'yes'}
+        'GHS3DPLUGIN' : {dev: 'yes'}
+
+         # ne pas livrer le plugin GHS3DPRLPLUGIN dans les versions opensource
+        'GHS3DPRLPLUGIN' : {dev: 'yes'}
+        
+        'HYBRIDPLUGIN' : {dev: 'yes'}
+        'HexoticPLUGIN' : {dev: 'yes'}
+       'GMSHPLUGIN' : {dev: 'yes'}
+        'HEXABLOCK' : {dev: 'yes'}
+        'HEXABLOCKPLUGIN' : {dev: 'yes'}
+        'HOMARD' : {dev: 'yes'}
+        'MED' : {dev: 'yes'}
+        'PARAVIS' : {dev: 'yes'}
+        'JOBMANAGER' : {dev: 'yes'}
+        'YACS' : {dev: 'yes'}
+        'YACSGEN' : {dev: 'yes'}
+        'DOCUMENTATION' : {dev: 'yes'}
+        'SAMPLES' : {dev: 'yes'}
+
+        #ne pas livrer le plugin COMPONENT dans les versions opensource et CEA
+        'COMPONENT' : {dev: 'yes'}
+        #ne pas livrer le plugin PYCALCULATOR dans les versions opensource et CEA
+        'PYCALCULATOR' : {dev: 'yes'}
+        #ne pas livrer le plugin CALCULATOR dans les versions opensource et CEA
+        'CALCULATOR' : {dev: 'yes'}
+        #ne pas livrer le plugin HELLO dans les versions opensource et CEA
+        'HELLO' : {dev: 'yes'}
+        #ne pas livrer le plugin PYHELLO dans les versions opensource et CEA
+        'PYHELLO' : {dev: 'yes'} 
+    }
+    profile :
+    {
+        product : "SALOME"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV8"
+    }
+}
+
+
+__overwrite__ :
+[
+  {
+# waiting for vadim branch test
+     'PRODUCTS.YACS.default.nb_proc' : 1
+  }
+]
diff --git a/applications/SALOME-9.3.0.pyconf b/applications/SALOME-9.3.0.pyconf
new file mode 100644 (file)
index 0000000..3d3658f
--- /dev/null
@@ -0,0 +1,152 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-9.3.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V9_3_0'
+    debug : 'no'
+    dev : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+        #this policy is to be discussed in next cotech. alternative is to encode every accentued string with .encode('utf-8') 
+        launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:GEOM:SMESH"}
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.6.0'
+        boost : '1.58.0'
+        CAS : 'V7_3_0p3'
+        certifi : '2018.8.24'
+        cgns : '3.3.1'
+        chardet : '3.0.4'
+        click : '6.7'
+        cmake : '3.12.1'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.25.2'
+        dateutil : '2.4.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        eigen : '3.3.4'
+        freeimage : '3.16.0'
+        freetype : '2.9.1'
+        gl2ps :  {section : 'version_1_4_04037312', tag : '1.4.0_4037312'}
+        gmsh : '4.1.4'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        homard_bin : '11.12'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        Jinja2 : '2.7.3'
+        kiwisolver : '1.0.1'
+        lapack : '3.8.0'
+        lata : '1.4-PV5.6.0p1_7bafc2b'
+        libxml2 : '2.9.1'
+        llvm : '3.9.1'
+        markupsafe : '0.23'
+        matplotlib : '2.2.2'
+        medfile : '4.0.0'
+        mesa : '13.0.6'
+        MeshGems : '2.8-6'
+        metis : '5.1.0'
+        netgen : '5.3.1_with_CAS_7.2'
+        numpy : '1.15.1'
+        omniORB : '4.2.2'
+        omniORBpy : '4.2.2'
+        opencv : '2.4.13.5'
+        packaging : '17.1'
+        ParaView : {tag : '5.6.0p1_7bafc2b'}
+        planegcs : '0.18-3cb6890'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        PyQt : '5.9'
+        pyreadline : '2.0'
+        Python : '3.6.5'
+        pytz : '2015.4'
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        sip : '4.19.3'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'LIBBATCH'  : {tag:'V2_4_1'}
+        'KERNEL'
+        'MEDCOUPLING'
+        'GUI'
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'GHS3DPRLPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+       'GMSHPLUGIN'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'HOMARD'
+        'FIELDS'
+        'PARAVIS'
+        'JOBMANAGER'
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "yes"
+        repo_dev : "yes"
+    }
+}
+__overwrite__ :
+[
+  {
+  }
+]
+
+
diff --git a/applications/SALOME-9.4.0-windows.pyconf b/applications/SALOME-9.4.0-windows.pyconf
new file mode 100644 (file)
index 0000000..1b21006
--- /dev/null
@@ -0,0 +1,181 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-9.4.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name
+    cmake_generator : 'Visual Studio 15 2017 Win64'
+    tag : 'V9_4_0'
+    debug : 'no'
+    dev : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+        #this policy is to be discussed in next cotech. alternative is to encode every accentued string with .encode('utf-8') 
+        launch : {PYTHONIOENCODING:"UTF_8"}
+        SALOME_trace : "local" # local/file:.../with_logger
+        SALOME_MODULES : "SHAPER,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER"  # specify the first modules to display in gui
+        SALOME_TMP_DIR : "%appdata%"
+        SALOME_HAS_GLOBAL_ENV : "1"
+        HOME : "%userprofile%"
+        SET_usr_docs_VARS : "1" # required for PyEditor build
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.7.0'
+        boost : '1.67.0'
+        CAS : {section: 'version_V7_3_0p4_win', tag: 'V7_3_0p4'}
+        certifi : '2019.6.16'
+        cgns : '3.3.1'
+        chardet : '3.0.4'
+        click : '7.0'
+        cmake : '3.12.1'
+        colorama: '0.4.1'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.29.12'
+        dateutil : '2.8.0'
+        docutils : '0.14'
+        doxygen : '1.8.3.1'
+        eigen : '3.3.4'
+        embree : '3.5.2'
+        expat : '2.0.1'
+        f2c : '1.0.0'
+        freeimage : '3.18.0'
+        freetype : '2.9.1'
+        gl2ps : '1.4.0_4037312'
+        #gmsh : '4.1.4'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        #homard_bin : '11.12'
+        idna : '2.8'
+        imagesize : '1.1.0'
+        ispc : '1.10.0'
+        Jinja2 : '2.10.1'
+        kiwisolver : '1.1.0'
+        lapack : '3.8.0'
+        #lata : '1.4-PV5.6.0p1_7bafc2b'
+        libjpeg: '9c'
+        libpng: '1.5.10'
+        libxml2 : '2.9.1'
+        llvm : '8.0.1-clang-win'
+        markupsafe : '1.1.1'
+        matplotlib : '3.1.0'
+        medfile : '4.0.0'
+        mesa : '19.2.3'
+        MeshGems : '2.9-6'
+        metis : '5.1.0'
+        netgen : '5.3.1_with_CAS_7.2'
+        numpy : '1.16.4'
+        omniORB : '4.2.3'
+        omniORBpy : '4.2.3'
+        opencv : '3.2.0'
+        ospray : '1.8.4'
+        packaging : '19.0'
+        ParaView : '5.6.0_bfaf7b8'
+        perl : '5.28.1.1'
+        planegcs : '0.18-3cb6890'
+        pockets : '0.7.2'
+        pthreads : '2.9.1'
+        Pygments : '2.4.2'
+        pyparsing : '2.4.0'
+        PyQt : '5.9'
+        pyreadline : '2.1'
+        Python : '3.6.5'
+        pytz : '2019.1'
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        requests : '2.22.0'
+        ruby : '2.5.5-1'
+        setuptools : '41.0.1'
+        sip : '4.19.3'
+        six : '1.12.0'
+        snowballstemmer : '1.9.0'
+        Sphinx : '2.1.2'
+        sphinxcontrib_applehelp : '1.0.1'
+        sphinxcontrib_devhelp : '1.0.1'
+        sphinxcontrib_jsmath : '1.0.1'
+        sphinxcontrib_htmlhelp : '1.0.2'
+        sphinxcontrib_napoleon : '0.7'
+        sphinxcontrib_qthelp : '1.0.2'
+        sphinxcontrib_serializinghtml :'1.1.3'
+        sphinxcontrib_websupport : '1.1.2'
+        sphinxintl: '2.0.0'
+        swig : '3.0.12'
+        tbb : '2019_U8_win'
+        tcltk : '8.6.9'
+        urllib3 : '1.25.3'
+        zlib : '1.2.5'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'LIBBATCH' : {tag :'V2_4_2'}
+        'KERNEL'
+        'MEDCOUPLING'
+        'GUI'
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        #'GMSHPLUGIN'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        #'HOMARD'
+        'FIELDS'
+        'PARAVIS'
+        'JOBMANAGER'
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        #'EFICAS'
+        #'EFICAS_TOOLS'
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "no"
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
+__overwrite__ :
+[
+   {
+   __condition__ : "APPLICATION.debug=='yes'"
+      'APPLICATION.products.numpy' : '1.16.4-win-dbg'
+      'APPLICATION.products.Cython' : '0.29.12-win-dbg'
+      'PRODUCTS.PyQt.version_5_9_win.check_install' : []
+   }
+]
diff --git a/applications/SALOME-9.4.0.pyconf b/applications/SALOME-9.4.0.pyconf
new file mode 100644 (file)
index 0000000..617559a
--- /dev/null
@@ -0,0 +1,203 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-9.4.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V9_4_0'
+    debug : 'no'
+    dev : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"}
+        launch : {PYTHONIOENCODING:"UTF_8"}
+        SALOME_trace : "local" # local/file:.../with_logger
+        SALOME_MODULES : "SHAPER,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER"  # specify the first modules to display in gui
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.6.0'
+        boost : '1.58.0'
+        CAS : 'V7_3_0p4'
+        certifi : '2018.8.24'
+        cgns : '3.3.1'
+        chardet : '3.0.4'
+        click : '6.7'
+        cmake : '3.12.1'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.25.2'
+        dateutil : '2.4.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        eigen : '3.3.4'
+        embree : '3.3.0'
+        freeimage : '3.16.0'
+        freetype : '2.9.1'
+        gl2ps : '1.4.0_4037312'
+        gmsh : '4.1.4'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        homard_bin : '11.12'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        ispc : '1.9.2-src'
+        Jinja2 : '2.7.3'
+        kiwisolver : '1.0.1'
+        lapack : '3.8.0'
+        lata : '1.4-PV5.6.0p1_7bafc2b'
+        libxml2 : '2.9.1'
+        llvm : '3.9.1-clang'
+        markupsafe : '0.23'
+        matplotlib : '2.2.2'
+        medfile : '4.0.0'
+        mesa : '13.0.6'
+        MeshGems : '2.9-6'
+        metis : '5.1.0'
+        netgen : '5.3.1_with_CAS_7.2'
+        numpy : '1.15.1'
+        omniORB : '4.2.2'
+        omniORBpy : '4.2.2'
+        opencv : '3.2.0'
+        ospray : '1.7.3'
+        packaging : '17.1'
+        ParaView : '5.6.0_bfaf7b8'
+        planegcs : '0.18-3cb6890'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        PyQt : '5.9'
+        pyreadline : '2.0'
+        Python : '3.6.5'
+        pytz : '2015.4'
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        sip : '4.19.3'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        tbb : '4.4'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'LIBBATCH' : {tag :'V2_4_2'}
+        'KERNEL'
+        'MEDCOUPLING'
+        'GUI'
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'GHS3DPRLPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        'GMSHPLUGIN'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'HOMARD'
+        'FIELDS'
+        'PARAVIS'
+        'JOBMANAGER'
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        'EFICAS'
+        'EFICAS_TOOLS'
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "yes"
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
+__overwrite__ :
+[
+  {
+   # GTK  compilation issue
+    __condition__ : "VARS.dist in ['CO6']"
+    'APPLICATION.products.opencv' : '2.4.13.5'
+    'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch']
+    'PRODUCTS.ispc.version_1_9_2_src.patches' : ['ispc-1.9.2-centos6.patch']
+   }
+
+   {
+      #
+      __condition__ : "VARS.dist in ['UB16.04', 'UB18.04']"
+      'APPLICATION.products.tbb' : 'native'
+      'PRODUCTS.embree.default.depend' : ['ispc']
+   }
+
+   {
+      #
+      __condition__ : "VARS.dist in ['DB10']"
+      'APPLICATION.products.tbb' : 'native'
+      'PRODUCTS.embree.default.depend' : ['ispc']
+      'PRODUCTS.gl2ps.version_1_4_0_4037312.build_source' : 'script'
+      'PRODUCTS.gl2ps.version_1_4_0_4037312.compil_script' : 'gl2ps-1.4.0.sh'
+   }
+
+   {
+      #
+      __condition__ : "VARS.dist in ['FD26']"
+      'APPLICATION.products.llvm'   : '4.0.1-clang'
+      'APPLICATION.products.mesa'   : '17.1.3'
+      'APPLICATION.products.ispc'   : '1.10.0'
+      'APPLICATION.products.tbb'    : '2017-7'
+      'APPLICATION.products.embree' : '3.5.2'
+      'APPLICATION.products.ospray' : '1.8.4'
+   }
+
+
+    {
+      # as agreed, we don't build SALOME with OSpray support.
+      __condition__ : "VARS.dist in ['FD30']"
+      'APPLICATION.rm_products' : ['embree', 'ispc', 'ospray']
+      # Use tbb as native product since SMESH uses an option which calls the system one
+      'APPLICATION.products.tbb' : 'native'
+      'APPLICATION.products.ParaView' : '5.6.0_bfaf7b8'
+      'APPLICATION.products.llvm' : '3.9.1'
+   }
+]
diff --git a/applications/SALOME-9.5.0-MPI.pyconf b/applications/SALOME-9.5.0-MPI.pyconf
new file mode 100644 (file)
index 0000000..bf9c0b3
--- /dev/null
@@ -0,0 +1,194 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-9.5.0-MPI'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V9_5_0'
+    dev : 'no'
+    verbose :'no'
+    debug : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : 
+        {
+           CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED"
+           SALOME_USE_64BIT_IDS : '1'
+        }
+        launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"}
+        SALOME_trace : "local" # local/file:.../with_logger
+        SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER"  # specify the first modules to display in gui
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.6.0'
+        boost : '1.58.0'
+        CAS : 'V7_4_0p1'
+        certifi : '2018.8.24'
+        cgns : {tag : '3.3.1', hpc : 'yes'}
+        chardet : '3.0.4'
+        click : '6.7'
+        cmake : '3.12.1'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.25.2'
+        dateutil : '2.4.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        eigen : '3.3.4'
+        embree : '3.3.0'
+        freeimage : '3.16.0'
+        freetype : '2.9.1'
+        gmsh : '4.1.4'
+        graphviz : '2.38.0'
+        hdf5 : {tag : '1.10.3', hpc : 'yes'}
+        homard_bin : '11.12_hdf51103med410'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        ispc : '1.9.2'
+        Jinja2 : '2.7.3'
+        kiwisolver : '1.0.1'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        llvm : '8.0.1-clang'
+        markupsafe : '0.23'
+        matplotlib : '2.2.2'
+        medfile : {tag : '4.1.0', hpc : 'yes', section : 'default_Autotools' }
+        mesa : '19.0.8'
+        MeshGems : {tag : '2.10-4', hpc : 'yes'}
+        ParMetis : '3.1.1'
+        netgen : '5.3.1_with_CAS_7.2'
+        nlopt : '2.4.2'
+        numpy : '1.15.1'
+        omniORB : '4.2.2'
+        omniORBpy : '4.2.2'
+        opencv : '3.2.0'
+        openmpi : '2.1.6'
+        openssl : "native"
+        ospray : '1.8.4'
+        packaging : '17.1'
+        ParaView : {tag : '5.8.0', hpc : 'yes', section: 'version_5_8_0_MPI'}
+        Pillow : '7.1.1'
+        planegcs : '0.18-3cb6890'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        PyQt : '5.9'
+        pyreadline : '2.0'
+        Python : '3.6.5'
+        pytz : '2015.4'
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        sip : '4.19.3'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinx_rtd_theme : '0.4.3'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        tbb : 'native'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'SHAPERSTUDY'
+        'RESTRICTED'
+        'LIBBATCH' : {tag :'V2_4_3'}
+        'KERNEL' : {tag: 'V9_5_0', section : 'default_MPI', verbose : 'yes'}
+        'MEDCOUPLING' : {tag: 'V9_5_0', section : 'default_MPI', verbose : 'yes'}
+        'GUI' : {verbose : 'yes'}
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'GHS3DPRLPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        'GMSHPLUGIN'
+        'HEXABLOCK' : {tag: 'V9_5_0', section : "default_MPI", verbose: 'yes'}
+        'HEXABLOCKPLUGIN'
+        'HOMARD'
+        'FIELDS' : {tag: 'V9_5_0', section : "default_MPI", verbose: 'yes'}
+        'PARAVIS' : {tag: 'V9_5_0', section : "version_9_5_0_MPI", verbose: 'yes'}
+        'JOBMANAGER' : {tag: 'V9_5_0', section : "default_MPI", verbose: 'yes'}
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        'EFICAS'
+        'EFICAS_TOOLS'
+        'PY2CPP' : {tag: 'v2.0'}
+        'ADAO'
+        'ADAO_INTERFACE'
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "yes"
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
+__overwrite__ :
+[
+  {
+   # GTK  compilation issue
+    __condition__ : "VARS.dist in ['CO6']"
+    'APPLICATION.products.opencv' : '2.4.13.5'
+    'APPLICATION.products.tbb' : '4.4'
+    'APPLICATION.products.llvm' : '3.9.1-clang'
+    'APPLICATION.products.mesa' : '13.0.6'
+    'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch']
+   }
+
+  {
+   # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary)
+    __condition__ : "VARS.dist in ['DB08']"
+    'APPLICATION.products.tbb' : '4.4'
+  }
+
+  {
+     #
+     __condition__ : "VARS.dist in ['FD26']"
+     'APPLICATION.products.tbb'    : '2017-7'
+     'APPLICATION.products.embree' : '3.5.2'
+  }
+]
diff --git a/applications/SALOME-9.5.0-int64.pyconf b/applications/SALOME-9.5.0-int64.pyconf
new file mode 100644 (file)
index 0000000..0496a65
--- /dev/null
@@ -0,0 +1,193 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-9.5.0-int64'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V9_5_0'
+    dev : 'no'
+    verbose :'no'
+    debug : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : 
+        {
+           CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED"
+           SALOME_USE_64BIT_IDS : '1'
+        }
+        launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"}
+        SALOME_trace : "local" # local/file:.../with_logger
+        SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER"  # specify the first modules to display in gui
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.6.0'
+        boost : '1.58.0'
+        CAS : 'V7_4_0p1'
+        certifi : '2018.8.24'
+        cgns : '3.3.1'
+        chardet : '3.0.4'
+        click : '6.7'
+        cmake : '3.12.1'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.25.2'
+        dateutil : '2.4.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        eigen : '3.3.4'
+        embree : '3.3.0'
+        freeimage : '3.16.0'
+        freetype : '2.9.1'
+        gmsh : '4.1.4'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        homard_bin : '11.12_hdf51103med410'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        ispc : '1.9.2'
+        Jinja2 : '2.7.3'
+        kiwisolver : '1.0.1'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        llvm : '8.0.1-clang'
+        markupsafe : '0.23'
+        matplotlib : '2.2.2'
+        medfile : {section: 'default_Autotools', tag: '4.1.0'}
+        mesa : '19.0.8'
+        MeshGems : '2.10-4'
+        metis : '5.1.0'
+        netgen : '5.3.1_with_CAS_7.2'
+        nlopt : '2.4.2'
+        numpy : '1.15.1'
+        omniORB : '4.2.2'
+        omniORBpy : '4.2.2'
+        opencv : '3.2.0'
+        openssl : "native"
+        ospray : '1.8.4'
+        packaging : '17.1'
+        ParaView : '5.8.0'
+        Pillow : '7.1.1'
+        planegcs : '0.18-3cb6890'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        PyQt : '5.9'
+        pyreadline : '2.0'
+        Python : '3.6.5'
+        pytz : '2015.4'
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        sip : '4.19.3'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinx_rtd_theme : '0.4.3'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        tbb : 'native'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'SHAPERSTUDY'
+        'RESTRICTED'
+        'LIBBATCH' : {tag :'V2_4_3'}
+        'KERNEL'
+        'MEDCOUPLING' : {tag : 'V9_5_0', section: 'default_int64'} # this will trigger other modules as int64
+        'GUI'
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'GHS3DPRLPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        'GMSHPLUGIN'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'HOMARD'
+        'FIELDS'
+        'PARAVIS'
+        'JOBMANAGER'
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        'EFICAS'
+        'EFICAS_TOOLS'
+        'PY2CPP' : {tag: 'v2.0'}
+        'ADAO'
+        'ADAO_INTERFACE' : {tag: 'master'}
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "yes"
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
+__overwrite__ :
+[
+  {
+   # GTK  compilation issue
+    __condition__ : "VARS.dist in ['CO6']"
+    'APPLICATION.products.opencv' : '2.4.13.5'
+    'APPLICATION.products.tbb' : '4.4'
+    'APPLICATION.products.llvm' : '3.9.1-clang'
+    'APPLICATION.products.mesa' : '13.0.6'
+    'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch']
+   }
+
+  {
+   # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary)
+    __condition__ : "VARS.dist in ['DB08']"
+    'APPLICATION.products.tbb' : '4.4'
+  }
+
+  {
+     #
+     __condition__ : "VARS.dist in ['FD26']"
+     'APPLICATION.products.tbb'    : '2017-7'
+     'APPLICATION.products.embree' : '3.5.2'
+  }
+]
diff --git a/applications/SALOME-9.5.0-windows.pyconf b/applications/SALOME-9.5.0-windows.pyconf
new file mode 100644 (file)
index 0000000..cfeb8f2
--- /dev/null
@@ -0,0 +1,182 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-9.5.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name
+    cmake_generator : 'Visual Studio 15 2017 Win64'
+    tag : 'V9_5_0'
+    dev : 'no'
+    verbose :'no'
+    debug : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : 
+        {
+           CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED"
+        }
+        launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"}
+        SALOME_trace : "local" # local/file:.../with_logger
+        SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER"  # specify the first modules to display in gui
+        SALOME_TMP_DIR : "%appdata%"
+        SALOME_HAS_GLOBAL_ENV : "1"
+        HOME : "%userprofile%"
+        SET_usr_docs_VARS : "1" # required for PyEditor build
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.7.0'
+        boost : '1.67.0'
+        CAS : {section: 'version_V7_4_0p1_win', tag: 'V7_4_0p1'}
+        certifi : '2019.6.16'
+        cgns : '3.3.1'
+        chardet : '3.0.4'
+        click : '7.0'
+        cmake : '3.12.1'
+        colorama: '0.4.1'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.29.12'
+        dateutil : '2.8.0'
+        docutils : '0.14'
+        doxygen : '1.8.3.1'
+        eigen : '3.3.4'
+        embree : '3.5.2'
+        expat : '2.0.1'
+        f2c : '1.0.0'
+        freeimage : '3.18.0'
+        freetype : '2.9.1'
+        #gmsh : '4.1.4'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        #homard_bin : '11.12'
+        idna : '2.8'
+        imagesize : '1.1.0'
+        ispc : '1.10.0'
+        Jinja2 : '2.10.1'
+        kiwisolver : '1.1.0'
+        lapack : '3.8.0'
+        libjpeg: '9c'
+        libpng: '1.5.10'
+        libxml2 : '2.9.1'
+        llvm : '8.0.1-clang-win'
+        markupsafe : '1.1.1'
+        matplotlib : '3.1.0'
+        medfile : '4.1.0'
+        mesa : '19.2.3'
+        MeshGems : '2.10-4'
+        metis : '5.1.0'
+        msvc : '2017'
+        netgen : '5.3.1_with_CAS_7.2'
+        nlopt : '2.5.0'
+        numpy : '1.16.4'
+        omniORB : '4.2.3'
+        omniORBpy : '4.2.3'
+        opencv : '3.2.0'
+        ospray : '1.8.4'
+        packaging : '19.0'
+        ParaView : '5.8.0'
+        perl : '5.28.1.1'
+        Pillow : '7.1.1'
+        planegcs : '0.18-3cb6890'
+        pockets : '0.7.2'
+        pthreads : '2.9.1'
+        Pygments : '2.4.2'
+        pyparsing : '2.4.0'
+        PyQt : '5.9'
+        pyreadline : '2.1'
+        Python : '3.6.5'
+        pytz : '2019.1'
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        requests : '2.22.0'
+        ruby : '2.5.5-1'
+        scipy : '1.4.1'
+        setuptools : '41.0.1'
+        sip : '4.19.3'
+        six : '1.12.0'
+        snowballstemmer : '1.9.0'
+        Sphinx : '2.1.2'
+        sphinxcontrib_applehelp : '1.0.1'
+        sphinxcontrib_devhelp : '1.0.1'
+        sphinxcontrib_jsmath : '1.0.1'
+        sphinxcontrib_htmlhelp : '1.0.2'
+        sphinxcontrib_napoleon : '0.7'
+        sphinxcontrib_qthelp : '1.0.2'
+        sphinxcontrib_serializinghtml :'1.1.3'
+        sphinxcontrib_websupport : '1.1.2'
+        sphinx_rtd_theme : '0.4.3'
+        sphinxintl: '2.0.0'
+        swig : '3.0.12'
+        tbb : '2019_U8_win'
+        tcltk : '8.6.9'
+        urllib3 : '1.25.3'
+        zlib : '1.2.5'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'SHAPERSTUDY'
+        'RESTRICTED'
+        'LIBBATCH' : {tag :'V2_4_3'}
+        'KERNEL'
+        'MEDCOUPLING'
+        'GUI'
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        #'GMSHPLUGIN'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        #'HOMARD'
+        'FIELDS'
+        'PARAVIS'
+        'JOBMANAGER'
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        'EFICAS'
+        'EFICAS_TOOLS'
+        'ADAO'
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "no"
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "yes"
+    }
+}
diff --git a/applications/SALOME-9.5.0.pyconf b/applications/SALOME-9.5.0.pyconf
new file mode 100644 (file)
index 0000000..973dfe9
--- /dev/null
@@ -0,0 +1,192 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-9.5.0'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'V9_5_0'
+    dev : 'no'
+    verbose :'no'
+    debug : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : 
+        {
+           CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED"
+        }
+        launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"}
+        SALOME_trace : "local" # local/file:.../with_logger
+        SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER"  # specify the first modules to display in gui
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.6.0'
+        boost : '1.58.0'
+        CAS : 'V7_4_0p1'
+        certifi : '2018.8.24'
+        cgns : '3.3.1'
+        chardet : '3.0.4'
+        click : '6.7'
+        cmake : '3.12.1'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.25.2'
+        dateutil : '2.4.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        eigen : '3.3.4'
+        embree : '3.3.0'
+        freeimage : '3.16.0'
+        freetype : '2.9.1'
+        gmsh : '4.1.4'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        homard_bin : '11.12_hdf51103med410'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        ispc : '1.9.2'
+        Jinja2 : '2.7.3'
+        kiwisolver : '1.0.1'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        llvm : '8.0.1-clang'
+        markupsafe : '0.23'
+        matplotlib : '2.2.2'
+        medfile : '4.1.0'
+        mesa : '19.0.8'
+        MeshGems : '2.10-4'
+        metis : '5.1.0'
+        netgen : '5.3.1_with_CAS_7.2'
+        nlopt : '2.4.2'
+        numpy : '1.15.1'
+        omniORB : '4.2.2'
+        omniORBpy : '4.2.2'
+        opencv : '3.2.0'
+        openssl : "native"
+        ospray : '1.8.4'
+        packaging : '17.1'
+        ParaView : '5.8.0'
+        Pillow : '7.1.1'
+        planegcs : '0.18-3cb6890'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        PyQt : '5.9'
+        pyreadline : '2.0'
+        Python : '3.6.5'
+        pytz : '2015.4'
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        sip : '4.19.3'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinx_rtd_theme : '0.4.3'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        tbb : 'native'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'SHAPERSTUDY'
+        'RESTRICTED'
+        'LIBBATCH' : {tag :'V2_4_3'}
+        'KERNEL'
+        'MEDCOUPLING'
+        'GUI'
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'GHS3DPRLPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        'GMSHPLUGIN'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'HOMARD'
+        'FIELDS'
+        'PARAVIS'
+        'JOBMANAGER'
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        'EFICAS'
+        'EFICAS_TOOLS'
+        'PY2CPP' : {tag: 'v2.0'}
+        'ADAO'
+        'ADAO_INTERFACE' : {tag: 'master'}
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "yes"
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "no"
+    }
+}
+__overwrite__ :
+[
+  {
+   # GTK  compilation issue
+    __condition__ : "VARS.dist in ['CO6']"
+    'APPLICATION.products.opencv' : '2.4.13.5'
+    'APPLICATION.products.tbb' : '4.4'
+    'APPLICATION.products.llvm' : '3.9.1-clang'
+    'APPLICATION.products.mesa' : '13.0.6'
+    'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch']
+   }
+
+  {
+   # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary)
+    __condition__ : "VARS.dist in ['DB08']"
+    'APPLICATION.products.tbb' : '4.4'
+  }
+
+  {
+     #
+     __condition__ : "VARS.dist in ['FD26']"
+     'APPLICATION.products.tbb'    : '2017-7'
+     'APPLICATION.products.embree' : '3.5.2'
+  }
+]
diff --git a/applications/SALOME-master-MPI.pyconf b/applications/SALOME-master-MPI.pyconf
new file mode 100644 (file)
index 0000000..f055aac
--- /dev/null
@@ -0,0 +1,196 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-master-MPI'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'master'
+    dev : 'no'
+    verbose :'no'
+    debug : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : 
+        {
+           CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED"
+           SALOME_USE_64BIT_IDS : '1'
+        }
+        launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"}
+        SALOME_trace : "local" # local/file:.../with_logger
+        SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER"  # specify the first modules to display in gui
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.7.0'
+        boost : '1.58.0'
+        CAS : 'CR740-SALOME-PATCH'
+        certifi : '2018.8.24'
+        cgns : {tag : '3.3.1', hpc : 'yes'}
+        chardet : '3.0.4'
+        click : '6.7'
+        cmake : '3.12.1'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.25.2'
+        dateutil : '2.4.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        eigen : '3.3.4'
+        embree : '3.3.0'
+        freeimage : '3.16.0'
+        freetype : '2.9.1'
+        gmsh : '4.1.4'
+        graphviz : '2.38.0'
+        hdf5 : {tag : '1.10.3', hpc : 'yes'}
+        #hdf5 : {tag : '1.10.3', hpc : 'yes', section : 'default_Autotools'}
+        homard_bin : '11.12_hdf51103med410'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        ispc : '1.9.2'
+        Jinja2 : '2.7.3'
+        kiwisolver : '1.0.1'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        llvm : '8.0.1-clang'
+        markupsafe : '0.23'
+        matplotlib : '2.2.2'
+        medfile : {tag : '4.1.0', hpc : 'yes', section : 'default_Autotools' }
+        mesa : '19.0.8'
+        MeshGems : {tag : '2.10-4', hpc : 'yes'}
+        #metis : '5.1.0'
+        ParMetis : '3.1.1'
+        netgen : '5.3.1_with_CAS_7.2'
+        nlopt : '2.4.2'
+        numpy : '1.15.1'
+        omniORB : '4.2.2'
+        omniORBpy : '4.2.2'
+        opencv : '3.2.0'
+        openmpi : '2.1.6'
+        openssl : "native"
+        ospray : '1.8.4'
+        packaging : '17.1'
+        ParaView : {tag : '5.8.0', hpc : 'yes', section: 'version_5_8_0_MPI'}
+        Pillow : '7.1.1'
+        planegcs : '0.18-3cb6890'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        PyQt : '5.9'
+        pyreadline : '2.0'
+        Python : '3.6.5'
+        pytz : '2015.7'
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        sip : '4.19.3'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinx_rtd_theme : '0.4.3'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        tbb : 'native'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'SHAPERSTUDY'
+        'RESTRICTED'
+        'LIBBATCH' : {tag :'V2_4_3rc2'}
+        'KERNEL' : {section : 'default_MPI', verbose : 'yes'}
+        'MEDCOUPLING' : {section : 'default_MPI', verbose : 'yes'}
+        'GUI' : {verbose : 'yes'}
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'GHS3DPRLPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        'GMSHPLUGIN'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'HOMARD'
+        'FIELDS'
+        'PARAVIS'
+        'JOBMANAGER'
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        'EFICAS'
+        'EFICAS_TOOLS'
+        'PY2CPP' : {tag: 'v2.0'}
+        'ADAO'
+        'ADAO_INTERFACE'
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "yes"
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "yes"
+    }
+}
+__overwrite__ :
+[
+  {
+   # GTK  compilation issue
+    __condition__ : "VARS.dist in ['CO6']"
+    'APPLICATION.products.opencv' : '2.4.13.5'
+    'APPLICATION.products.tbb' : '4.4'
+    'APPLICATION.products.llvm' : '3.9.1-clang'
+    'APPLICATION.products.mesa' : '13.0.6'
+    'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch']
+   }
+
+  {
+   # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary)
+    __condition__ : "VARS.dist in ['DB08']"
+    'APPLICATION.products.tbb' : '4.4'
+  }
+
+  {
+    #
+    __condition__ : "VARS.dist in ['FD26']"
+    'APPLICATION.products.tbb'    : '2017-7'
+    'APPLICATION.products.embree' : '3.5.2'
+   }
+]
diff --git a/applications/SALOME-master-int64.pyconf b/applications/SALOME-master-int64.pyconf
new file mode 100644 (file)
index 0000000..62edb34
--- /dev/null
@@ -0,0 +1,193 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-master-int64'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'master'
+    dev : 'no'
+    verbose :'no'
+    debug : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : 
+        {
+           CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED"
+           SALOME_USE_64BIT_IDS : '1'
+        }
+        launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"}
+        SALOME_trace : "local" # local/file:.../with_logger
+        SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER"  # specify the first modules to display in gui
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.7.0'
+        boost : '1.58.0'
+        CAS : 'CR740-SALOME-PATCH'
+        certifi : '2018.8.24'
+        cgns : '3.3.1'
+        chardet : '3.0.4'
+        click : '6.7'
+        cmake : '3.12.1'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.25.2'
+        dateutil : '2.4.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        eigen : '3.3.4'
+        embree : '3.3.0'
+        freeimage : '3.16.0'
+        freetype : '2.9.1'
+        gmsh : '4.1.4'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        homard_bin : '11.12_hdf51103med410'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        ispc : '1.9.2'
+        Jinja2 : '2.7.3'
+        kiwisolver : '1.0.1'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        llvm : '8.0.1-clang'
+        markupsafe : '0.23'
+        matplotlib : '2.2.2'
+        medfile : {section: 'default_Autotools', tag: '4.1.0'}
+        mesa : '19.0.8'
+        MeshGems : '2.10-4'
+        metis : '5.1.0'
+        netgen : '5.3.1_with_CAS_7.2'
+        nlopt : '2.4.2'
+        numpy : '1.15.1'
+        omniORB : '4.2.2'
+        omniORBpy : '4.2.2'
+        opencv : '3.2.0'
+        openssl : "native"
+        ospray : '1.8.4'
+        packaging : '17.1'
+        ParaView : '5.8.0'
+        Pillow : '7.1.1'
+        planegcs : '0.18-3cb6890'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        PyQt : '5.9'
+        pyreadline : '2.0'
+        Python : '3.6.5'
+        pytz : '2015.7'
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        sip : '4.19.3'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinx_rtd_theme : '0.4.3'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        tbb : 'native'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'SHAPERSTUDY'
+        'RESTRICTED'
+        'LIBBATCH' : {tag :'V2_4_3rc2'}
+        'KERNEL'
+        'MEDCOUPLING' : {tag : 'master', section: 'default_int64'} # this will trigger other modules as int64
+        'GUI'
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'GHS3DPRLPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        'GMSHPLUGIN'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'HOMARD'
+        'FIELDS'
+        'PARAVIS'
+        'JOBMANAGER'
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        'EFICAS'
+        'EFICAS_TOOLS'
+        'PY2CPP' : {tag: 'v2.0'}
+        'ADAO'
+        'ADAO_INTERFACE'
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "yes"
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "yes"
+    }
+}
+__overwrite__ :
+[
+  {
+   # GTK  compilation issue
+    __condition__ : "VARS.dist in ['CO6']"
+    'APPLICATION.products.opencv' : '2.4.13.5'
+    'APPLICATION.products.tbb' : '4.4'
+    'APPLICATION.products.llvm' : '3.9.1-clang'
+    'APPLICATION.products.mesa' : '13.0.6'
+    'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch']
+   }
+
+  {
+   # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary)
+    __condition__ : "VARS.dist in ['DB08']"
+    'APPLICATION.products.tbb' : '4.4'
+  }
+
+  {
+     #
+     __condition__ : "VARS.dist in ['FD26']"
+     'APPLICATION.products.tbb'    : '2017-7'
+     'APPLICATION.products.embree' : '3.5.2'
+  }
+]
diff --git a/applications/SALOME-master-native.pyconf b/applications/SALOME-master-native.pyconf
new file mode 100644 (file)
index 0000000..858c61e
--- /dev/null
@@ -0,0 +1,207 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-master-native'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'master'
+    dev : 'no'
+    verbose :'no'
+    debug : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build :
+        {
+           CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED"
+        }
+        launch : {PYTHONIOENCODING:"UTF_8"} # alternative is to encode every accentued string with .encode('utf-8')
+        SALOME_trace : "local" # local/file:.../with_logger
+        SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER"  # specify the first modules to display in gui
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : 'native'
+        Babel : 'native'
+        # Previous master version : '1.58.0'
+        boost : 'native'
+        CAS : 'V7_4_0p1'
+        certifi : 'native'
+        # Previous master version : '3.3.1'
+        cgns : 'native'
+        chardet : 'native'
+        click : 'native'
+        # Previous master version : '3.12.1'
+        cmake : 'native'
+        # Previous master version : '1.13.2'
+        cppunit : 'native'
+        cycler : 'native'
+        Cython : 'native'
+        dateutil : 'native'
+        docutils : 'native'
+        # Previous master version : '1.8.14'
+        doxygen : 'native'
+        # Previous master version : '3.3.4'
+        eigen : 'native'
+        embree : '3.3.0'
+        # Previous master version : '3.16.0'
+        freeimage : 'native'
+        # Previous master version : '2.9.1'
+        freetype : 'native'
+        # Previous master version : '1.4.0_4037312'
+        gl2ps : 'native'
+        # 'native' too difficult here : need python-pip package (gmsh-sdk) besides system packages
+        gmsh : '4.1.4'
+        # Previous master version : '2.38.0'
+        graphviz : 'native'
+        hdf5 : '1.10.3'
+        homard_bin : '11.12_hdf51103med410'
+        idna : 'native'
+        imagesize : 'native'
+        # 'native' not exists (only available on Fedora platform)
+        ispc : '1.9.2'
+        Jinja2 : 'native'
+        kiwisolver : 'native'
+        # Previous master version : '3.8.0'
+        lapack : 'native'
+        # Previous master version : '2.9.1'
+        libxml2 : 'native'
+        # 'native' is conflicting : version 7 which needs a higher ispc version than above
+        llvm : 'native'
+        markupsafe : 'native'
+        matplotlib : 'native'
+        medfile : '4.1.0'
+        # Previous master version : '13.0.6'
+        mesa : 'native'
+        MeshGems : '2.11-5'
+        # Previous master version : '5.1.0'
+        metis : 'native'
+        netgen : '5.3.1_with_CAS_7.2'
+        nlopt : '2.4.2'
+        numpy : 'native'
+        omniORB : '4.2.2'
+        omniORBpy : '4.2.2'
+        # Previous master version : '3.2.0'
+        opencv : 'native'
+        openssl : 'native'
+        ospray : '1.8.4'
+        packaging : 'native'
+        ParaView : '5.8.0'
+        Pillow : 'native'
+        # 'native' not exists : freeCAD part but not delivered with it from package handler
+        planegcs : '0.18-3cb6890'
+        pockets : 'native'
+        Pygments : 'native'
+        pyparsing : 'native'
+        PyQt : 'native'
+        pyreadline : 'native'
+        Python : 'native'
+        pytz : 'native'
+        qt : 'native'
+        qwt : '6.1.2'
+        requests : 'native'
+        scipy : 'native'
+        # Previous master version : '6.0.4' (too old for native metis)
+        scotch : 'native'
+        setuptools : 'native'
+        sip : 'native'
+        six : 'native'
+        snowballstemmer : 'native'
+        Sphinx : 'native'
+        sphinxcontrib_napoleon : 'native'
+        sphinxcontrib_websupport : 'native'
+        sphinxintl: 'native'
+        sphinx_rtd_theme : 'native'
+        # Previous master version : '3.0.12'
+        swig : 'native'
+        # Previous master version : '4.4'
+        tbb : 'native'
+        # 'native' isn't compliant with netgen5 on Debian
+        tcl : 'native'
+        tk : 'native'
+        urllib3 : 'native'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'SHAPERSTUDY'
+        'RESTRICTED'
+        'LIBBATCH' : {tag :'V2_4_3'}
+        'KERNEL'
+        'MEDCOUPLING'
+        'GUI'
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'GHS3DPRLPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        'GMSHPLUGIN'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'HOMARD'
+        'FIELDS'
+        'PARAVIS'
+        'JOBMANAGER'
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        'EFICAS'
+        'EFICAS_TOOLS'
+       'PY2CPP' : {tag: 'v2.0'}
+       'ADAO'
+       'ADAO_INTERFACE'
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base :
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "yes"
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "yes"
+    }
+}
+__overwrite__ :
+[
+   {
+      #
+      __condition__ : "VARS.dist in ['DB10']"
+      'PRODUCTS.embree.default.depend' : ['ispc']
+   }
+
+   {
+      # as agreed, we don't build SALOME with OSpray support.
+      __condition__ : "VARS.dist in ['FD30']"
+      'APPLICATION.rm_products' : ['embree', 'ispc', 'ospray']
+      'APPLICATION.products.omniORB' : 'native'
+      'APPLICATION.products.omniORBpy' : 'native'
+   }
+]
diff --git a/applications/SALOME-master-windows.pyconf b/applications/SALOME-master-windows.pyconf
new file mode 100644 (file)
index 0000000..2fe3d99
--- /dev/null
@@ -0,0 +1,182 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-master'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name
+    cmake_generator : 'Visual Studio 15 2017 Win64'
+    tag : 'master'
+    dev : 'no'
+    verbose :'no'
+    debug : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : 
+        {
+           CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED"
+        }
+        launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"}
+        SALOME_trace : "local" # local/file:.../with_logger
+        SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER"  # specify the first modules to display in gui
+        SALOME_TMP_DIR : "%appdata%"
+        SALOME_HAS_GLOBAL_ENV : "1"
+        HOME : "%userprofile%"
+        SET_usr_docs_VARS : "1" # required for PyEditor build
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.7.0'
+        boost : '1.67.0'
+        CAS : {section: 'version_CR740_SALOME_PATCH_win', tag: 'CR740-SALOME-PATCH'}
+        certifi : '2019.6.16'
+        cgns : '3.3.1'
+        chardet : '3.0.4'
+        click : '7.0'
+        cmake : '3.12.1'
+        colorama: '0.4.1'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.29.12'
+        dateutil : '2.8.0'
+        docutils : '0.14'
+        doxygen : '1.8.3.1'
+        eigen : '3.3.4'
+        embree : '3.5.2'
+        expat : '2.0.1'
+        f2c : '1.0.0'
+        freeimage : '3.18.0'
+        freetype : '2.9.1'
+        #gmsh : '4.1.4'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        #homard_bin : '11.12'
+        idna : '2.8'
+        imagesize : '1.1.0'
+        ispc : '1.10.0'
+        Jinja2 : '2.10.1'
+        kiwisolver : '1.1.0'
+        lapack : '3.8.0'
+        libjpeg: '9c'
+        libpng: '1.5.10'
+        libxml2 : '2.9.1'
+        llvm : '8.0.1-clang-win'
+        markupsafe : '1.1.1'
+        matplotlib : '3.1.0'
+        medfile : '4.1.0'
+        mesa : '19.2.3'
+        MeshGems : '2.11-5'
+        metis : '5.1.0'
+        msvc : '2017'
+        netgen : '5.3.1_with_CAS_7.2'
+        nlopt : '2.5.0'
+        numpy : '1.16.4'
+        omniORB : '4.2.3'
+        omniORBpy : '4.2.3'
+        opencv : '3.2.0'
+        ospray : '1.8.4'
+        packaging : '19.0'
+        ParaView : '5.8.0'
+        perl : '5.28.1.1'
+        Pillow : '7.1.1'
+        planegcs : '0.18-3cb6890'
+        pockets : '0.7.2'
+        pthreads : '2.9.1'
+        Pygments : '2.4.2'
+        pyparsing : '2.4.0'
+        PyQt : '5.9'
+        pyreadline : '2.1'
+        Python : '3.6.5'
+        pytz : '2019.1'
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        requests : '2.22.0'
+        ruby : '2.5.5-1'
+        scipy : '1.4.1'
+        setuptools : '41.0.1'
+        sip : '4.19.3'
+        six : '1.12.0'
+        snowballstemmer : '1.9.0'
+        Sphinx : '2.1.2'
+        sphinxcontrib_applehelp : '1.0.1'
+        sphinxcontrib_devhelp : '1.0.1'
+        sphinxcontrib_jsmath : '1.0.1'
+        sphinxcontrib_htmlhelp : '1.0.2'
+        sphinxcontrib_napoleon : '0.7'
+        sphinxcontrib_qthelp : '1.0.2'
+        sphinxcontrib_serializinghtml :'1.1.3'
+        sphinxcontrib_websupport : '1.1.2'
+        sphinx_rtd_theme : '0.4.3'
+        sphinxintl: '2.0.0'
+        swig : '3.0.12'
+        tbb : '2019_U8_win'
+        tcltk : '8.6.9'
+        urllib3 : '1.25.3'
+        zlib : '1.2.5'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'SHAPERSTUDY'
+        'RESTRICTED'
+        'LIBBATCH' : {tag :'V2_4_3'}
+        'KERNEL'
+        'MEDCOUPLING'
+        'GUI'
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        #'GMSHPLUGIN'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        #'HOMARD'
+        'FIELDS'
+        'PARAVIS'
+        'JOBMANAGER'
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        'EFICAS'
+        'EFICAS_TOOLS'
+        'ADAO'
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "no"
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "yes"
+    }
+}
diff --git a/applications/SALOME-master.pyconf b/applications/SALOME-master.pyconf
new file mode 100644 (file)
index 0000000..d4b9567
--- /dev/null
@@ -0,0 +1,227 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'SALOME-master'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    tag : 'master'
+    dev : 'no'
+    verbose :'no'
+    debug : 'no'
+    base : 'no'
+    python3 : 'yes'
+    environ :
+    {
+        build : 
+        {
+           CONFIGURATION_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "CONFIGURATION"
+           RESTRICTED_ROOT_DIR : $workdir + $VARS.sep + "SOURCES" + $VARS.sep + "RESTRICTED"
+        }
+        launch : {PYTHONIOENCODING:"UTF_8", SALOME_MODULES_ORDER:"SHAPER:SHAPERSTUDY:GEOM:SMESH"}
+        SALOME_trace : "local" # local/file:.../with_logger
+        SALOME_MODULES : "SHAPER,SHAPERSTUDY,GEOM,SMESH,PARAVIS,YACS,JOBMANAGER"  # specify the first modules to display in gui
+    }
+    products :
+    {
+        # PREREQUISITES :
+        alabaster : '0.7.6'
+        Babel : '2.7.0'
+        boost : '1.58.0'
+        CAS : 'CR740-SALOME-PATCH'
+        certifi : '2018.8.24'
+        cgns : '3.3.1'
+        chardet : '3.0.4'
+        click : '6.7'
+        cmake : '3.12.1'
+        cppunit : '1.13.2'
+        cycler : '0.10.0'
+        Cython : '0.25.2'
+        dateutil : '2.4.2'
+        docutils : '0.12'
+        doxygen : '1.8.14'
+        eigen : '3.3.4'
+        embree : '3.3.0'
+        freeimage : '3.16.0'
+        freetype : '2.9.1'
+        gmsh : '4.1.4'
+        graphviz : '2.38.0'
+        hdf5 : '1.10.3'
+        homard_bin : '11.12_hdf51103med410'
+        idna : '2.7'
+        imagesize : '1.0.0'
+        ispc : '1.9.2'
+        Jinja2 : '2.7.3'
+        kiwisolver : '1.0.1'
+        lapack : '3.8.0'
+        libxml2 : '2.9.1'
+        llvm : '8.0.1-clang'
+        markupsafe : '0.23'
+        matplotlib : '2.2.2'
+        medfile : '4.1.0'
+        mesa : '19.0.8'
+        MeshGems : '2.11-5'
+        metis : '5.1.0'
+        netgen : '5.3.1_with_CAS_7.2'
+        nlopt : '2.4.2'
+        numpy : '1.15.1'
+        omniORB : '4.2.2'
+        omniORBpy : '4.2.2'
+        opencv : '3.2.0'
+        openssl : "native"
+        ospray : '1.8.4'
+        packaging : '17.1'
+        ParaView : '5.8.0'
+        Pillow : '7.1.1'
+        planegcs : '0.18-3cb6890'
+        pockets : '0.6.2'
+        Pygments : '2.0.2'
+        pyparsing : '2.0.3'
+        PyQt : '5.9'
+        pyreadline : '2.0'
+        Python : '3.6.5'
+        pytz : '2015.7'
+        qt : '5.9.1'
+        qwt : '6.1.2'
+        requests : '2.19.1'
+        scipy : '0.19.1'
+        scotch : '6.0.4'
+        setuptools : '38.4.0'
+        sip : '4.19.3'
+        six : '1.10.0'
+        snowballstemmer : '1.2.1'
+        Sphinx : '1.7.6'
+        sphinxcontrib_napoleon : '0.6.1'
+        sphinxcontrib_websupport : '1.1.0'
+        sphinx_rtd_theme : '0.4.3'
+        sphinxintl: '0.9.10'
+        swig : '3.0.12'
+        tbb : 'native'
+        tcl : '8.6.0'
+        tk : '8.6.0'
+        urllib3 : '1.23'
+
+        # SALOME MODULES :
+        'CONFIGURATION'
+        'SALOME'
+        'SHAPER'
+        'SHAPERSTUDY'
+        'RESTRICTED'
+        'LIBBATCH' : {tag :'V2_4_3'}
+        'KERNEL'
+        'MEDCOUPLING'
+        'GUI'
+        'GEOM'
+        'SMESH'
+        'NETGENPLUGIN'
+        'BLSURFPLUGIN'
+        'GHS3DPLUGIN'
+        'GHS3DPRLPLUGIN'
+        'HYBRIDPLUGIN'
+        'HexoticPLUGIN'
+        'GMSHPLUGIN'
+        'HEXABLOCK'
+        'HEXABLOCKPLUGIN'
+        'HOMARD'
+        'FIELDS'
+        'PARAVIS'
+        'JOBMANAGER'
+        'YACS'
+        'YACSGEN'
+        'DOCUMENTATION'
+        'SAMPLES'
+        'COMPONENT'
+        'PYCALCULATOR'
+        'CALCULATOR'
+        'HELLO'
+        'PYHELLO'
+        'EFICAS'
+        'EFICAS_TOOLS'
+        'PY2CPP' : {tag: 'v2.0'}
+        'ADAO'
+        'ADAO_INTERFACE'
+        'CEATESTBASE' : {tag: 'SalomeV9'}
+    }
+    profile :
+    {
+        launcher_name : "salome"
+    }
+    virtual_app:
+    {
+        name : "salome"
+        application_name : "APPLI"
+    }
+    test_base : 
+    {
+        name : "SALOME"
+        tag : "SalomeV9"
+    }
+    properties :
+    {
+        mesa_launcher_in_package : "yes"
+        repo_dev : "yes"
+        pip : 'yes'
+        pip_install_dir : 'python'
+        single_install_dir : "yes"
+    }
+}
+__overwrite__ :
+[
+  {
+   # GTK  compilation issue
+    __condition__ : "VARS.dist in ['CO6']"
+    'APPLICATION.products.opencv' : '2.4.13.5'
+    'APPLICATION.products.tbb' : '4.4'
+    'APPLICATION.products.llvm' : '3.9.1-clang'
+    'APPLICATION.products.mesa' : '13.0.6'
+    'PRODUCTS.embree.default.patches' : ['embree-3.5.2-centos6.patch']
+  }
+
+  {
+   # tbb as a mandatory native product since SMESH with tbb, not installed on DB8 (temporary)
+    __condition__ : "VARS.dist in ['DB08']"
+    'APPLICATION.products.tbb' : '4.4'
+  }
+
+  {
+    #
+    __condition__ : "VARS.dist in ['FD26']"
+    'APPLICATION.products.tbb'    : '2017-7'
+    'APPLICATION.products.embree' : '3.5.2'
+  }
+
+  {
+    #
+    __condition__ : "VARS.dist in ['UB20.04']"
+    'PRODUCTS.qt.version_5_9_1.patches' : ['qt-5.9.1-UB20-FD32-socketcanbackend.patch']
+  }
+
+  {
+    __condition__ : "VARS.dist in ['FD32']"
+    'APPLICATION.products.scipy' : '1.5.2' # gcc https://github.com/scipy/scipy/issues/11611 - either patch numpy to include -fallow-argument-mismatch or move to that version
+    # see https://bugs.gentoo.org/708730
+    'PRODUCTS.llvm.version_8_0_1_clang.patches' : ['llvm-8.0.1-clang-FD32.patch']
+    'PRODUCTS.qt.version_5_9_1.patches' : ['qt-5.9.1-UB20-FD32-socketcanbackend.patch', 'qt-5.9.1-mapbox-FD32.patch']
+    'PRODUCTS.mesa.version_19_0_8.patches' : ['mesa-19.0.8-debug_symbol.patch']
+    'PRODUCTS.ParaView.version_5_8_0.patches' : ['paraview.0010-ParaViewClient.patch',
+                                                 'paraview.0004-ParaView_hdf5.patch',
+                                                 'paraview.0005-ParaView_find_cgns.patch',
+                                                 'paraview.0006-ParaView_find_libxml2.patch',
+                                                 'paraview.0007-ParaView_find_freetype.patch',
+                                                 'paraview.0009-ParaView_volume_mapper.patch',
+                                                 'pv_coincident.patch'
+                                                ]
+  }
+
+  {
+    __condition__ : "VARS.dist in ['CO8']"
+    'PRODUCTS.ParaView.version_5_8_0.patches' : ['paraview.0010-ParaViewClient.patch',
+                                                 'paraview.0004-ParaView_hdf5.patch',
+                                                 'paraview.0005-ParaView_find_cgns.patch',
+                                                 'paraview.0006-ParaView_find_libxml2.patch',
+                                                 'paraview.0007-ParaView_find_freetype.patch',
+                                                 'paraview.0009-ParaView_volume_mapper.patch',
+                                                 'pv_coincident.patch'
+                                                ]
+  }
+]
diff --git a/applications/appli-test.pyconf b/applications/appli-test.pyconf
new file mode 100644 (file)
index 0000000..bdab008
--- /dev/null
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+APPLICATION :
+{
+    name : 'APPLI-TEST'
+    workdir : $LOCAL.workdir + $VARS.sep + $APPLICATION.name + '-' + $VARS.dist
+    base : 'base'
+    tag : 'master'
+    get_method : 'git'
+    environ :
+    {
+        ACCEPT_SALOME_WARNINGS : '1'
+        LC_NUMERIC : 'C'
+    }
+    products :
+    {
+        'Python' : 'native'
+        'PRODUCT_GIT'
+        'PRODUCT_ARCHIVE'
+        'PRODUCT_DIR' : '4.4.2'
+        'PRODUCT_CVS' : 'V6_7_0'
+        'PRODUCT_NATIVE' : 'native'
+        #'PRODUCT_ERROR'
+        #'PRODUCT_UNKNOWN'
+        #'PRODUCT_SVN' : {'tag' : 'master'}
+        'PRODUCT_DEV' : {'tag' : 'master' , 'dev' : 'yes'}
+        'PRODUCT_FIXED' : "/export/home/salome"
+        'NO_DEF' : "native"
+    }
+    grid_to_test : 'SALOME_V7'
+    #profile :
+    #{
+    #    product : 'SALOME_PROFILE'
+    #}
+    dev_products : ['MODULE_ARCHIVE', 'MODULE_CVS']
+    
+    #hook :
+    #{
+    #    config : '/tmp/test_hook_config.py'
+    #}
+}
+
diff --git a/jobs/TEST-820.pyconf b/jobs/TEST-820.pyconf
new file mode 100644 (file)
index 0000000..9bc3dfc
--- /dev/null
@@ -0,0 +1,350 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+MONDAY    : 0
+TUESDAY   : 1
+WEDNESDAY : 2
+THURSDAY  : 3
+FRIDAY    : 4
+SATURDAY  : 5
+SUNDAY    : 6
+
+LUNDI     : 0
+MARDI     : 1
+MERCREDI  : 2
+JEUDI     : 3
+VENDREDI  : 4
+SAMEDI    : 5
+DIMANCHE  : 6
+
+m : 60
+
+h : 60 * $m
+
+display : 'is225302.intra.cea.fr:0.0'
+
+machines:
+[
+    {
+        name : "CO7.2 info"
+        host : is231761 #is223284
+        user : salome
+        sat_path : '/volatile/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD18 physique"
+        host : is221713
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD18 virtuelle"
+        host : isv20852
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO7.2 physique"
+        host : is228818
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO7.2 virtuelle"
+        host : isv20845
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "DB08 virtuelle"
+        host : isv20848
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "UB16.04 physique" ###master Clarisse
+        host : is221556 ###anciennement is212797
+        user : salome
+        sat_path : '/volatile/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "UB14.04 virtuelle"
+        host : isv20851
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD20 physique"
+        host : is228817
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD20 virtuelle"
+        host : isv20849
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD22 physique"
+        host : is223287
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD22 virtuelle"
+        host : isv20850
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD24 virtuelle"
+        host : isv20843
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO6.4 physique"
+        host : is225299
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO6.4 physique corpus"
+        host : is221049
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO6.4 virtuelle"
+        host : isv20844 #isv20853
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "MG05 physique"
+        host : is221560
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+]
+
+jobs :
+[
+
+    ################# SALOME 8.2.0 ##############################
+    
+    {
+        name : 'SALOME 820 DB08'
+        when : [$MARDI] #[$FRIDAY]
+        application : "SALOME-8.2.0"
+        machine : "DB08 virtuelle"
+        board : "TEST_QT_SALOME_8.2.0"
+        timeout : 10 * $h
+        commands :
+        [
+            #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+            'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all'
+            'sat launcher ' + $application
+            'sat test ' + $application + ' --display ' + $display
+            #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf'
+            #'sat package ' + $application + ' --sources'
+            #'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+    {
+        name : 'SALOME 820 UB14.04'
+        when : [$MARDI] #[$FRIDAY]
+        application : "SALOME-8.2.0"
+        machine : "UB14.04 virtuelle"
+        board : "TEST_QT_SALOME_8.2.0"
+        timeout : 10 * $h
+        commands :
+        [
+            #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+
+            'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all'
+            'sat launcher ' + $application
+            'sat test ' + $application + ' --display ' + $display
+            #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf'
+            #'sat package ' + $application + ' --sources'
+            #'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+    {
+        name : 'SALOME 820 UB16.04'
+        when : [$MARDI] #[$FRIDAY]
+        application : "SALOME-8.2.0"
+        machine : "UB16.04 physique"
+        board : "TEST_QT_SALOME_8.2.0"
+        timeout : 10 * $h
+        commands :
+        [
+            #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+
+            'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all'
+            'sat launcher ' + $application
+            'sat test ' + $application + ' --display ' + $display
+            #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf'
+            #'sat package ' + $application + ' --sources'
+            #'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+    {
+        name : 'SALOME 820 CO7.2'
+        when : [$MARDI] #[$FRIDAY]
+        application : "SALOME-8.2.0"
+        machine : "CO7.2 physique"
+        board : "TEST_QT_SALOME_8.2.0"
+        timeout : 10 * $h
+        commands :
+        [
+            #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+
+            'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all'
+            'sat launcher ' + $application
+            'sat test ' + $application + ' --display ' + $display
+            #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf'
+            #'sat package ' + $application + ' --sources'
+            #'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+    {
+        name : 'SALOME 820 CO7.3'
+        when : [$MARDI, $TUESDAY, $WEDNESDAY, $THURSDAY, $FRIDAY]
+        application : "SALOME-8.2.0"
+        machine : "CO7.2 info"
+        board : "TEST_QT_SALOME_8.2.0"
+        timeout : 10 * $h
+        commands :
+        [
+            #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+
+            'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all'
+            'sat launcher ' + $application
+            'sat test ' + $application + ' --display ' + $display
+            #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf'
+            #'sat package ' + $application + ' --sources'
+            #'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+    {
+        name : 'SALOME 820 FD18'
+        when : [$MARDI] #[$FRIDAY]
+        application : "SALOME-8.2.0"
+        machine : "FD18 virtuelle"
+        board : "TEST_QT_SALOME_8.2.0"
+        timeout : 10 * $h
+        commands :
+        [
+            #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+
+            'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all'
+            'sat launcher ' + $application
+            'sat test ' + $application + ' --display ' + $display
+            #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf'
+            #'sat package ' + $application + ' --sources'
+            #'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+    {
+        name : 'SALOME 820 FD20'
+        when : [$MARDI] #[$FRIDAY]
+        application : "SALOME-8.2.0"
+        machine : "FD20 virtuelle"
+        board : "TEST_QT_SALOME_8.2.0"
+        timeout : 10 * $h
+        commands :
+        [
+            #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+
+            'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all'
+            'sat launcher ' + $application
+            'sat test ' + $application + ' --display ' + $display
+            #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf'
+            #'sat package ' + $application + ' --sources'
+            #'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+    {
+        name : 'SALOME 820 FD22'
+        when : [$MARDI] #[$FRIDAY]
+        application : "SALOME-8.2.0"
+        machine : "FD22 virtuelle"
+        board : "TEST_QT_SALOME_8.2.0"
+        timeout : 10 * $h
+        commands :
+        [
+            #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+
+            'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all'
+            'sat launcher ' + $application
+            'sat test ' + $application + ' --display ' + $display
+            #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf'
+            #'sat package ' + $application + ' --sources'
+            #'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+    {
+        name : 'SALOME 820 FD24'
+        when : [$MARDI] #[$FRIDAY]
+        application : "SALOME-8.2.0"
+        machine : "FD24 virtuelle"
+        board : "TEST_QT_SALOME_8.2.0"
+        timeout : 10 * $h
+        commands :
+        [
+            #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+
+            'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all'
+            'sat launcher ' + $application
+            'sat test ' + $application + ' --display ' + $display
+            #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf'
+            #'sat package ' + $application + ' --sources'
+            #'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+    {
+        name : 'SALOME 820 CO6.4'
+        when : [$MARDI] #[$FRIDAY]
+        application : "SALOME-8.2.0"
+        machine : "CO6.4 virtuelle"
+        board : "TEST_QT_SALOME_8.2.0"
+        timeout : 10 * $h
+        prefix : "scl enable devtoolset-2"
+        commands :
+        [
+            #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+
+            'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all'
+            'sat launcher ' + $application
+            'sat test ' + $application + ' --display ' + $display
+            #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf'
+            #'sat package ' + $application + ' --sources'
+            #'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+    {
+        name : 'SALOME 820 MG05'
+        when : [$MARDI] #[$FRIDAY]
+        application : "SALOME-8.2.0"
+        machine : "MG05 physique"
+        board : "TEST_QT_SALOME_8.2.0"
+        timeout : 10 * $h
+        commands :
+        [
+            #'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+
+            'sat compile ' + $application + ' --check -p NETGENPLUGIN --clean_all'
+            'sat launcher ' + $application
+            'sat test ' + $application + ' --display ' + $display
+            #'sat package ' + $application + ' --binaries --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.2.0/SALOME_8_2_0_Release_Notes.pdf'
+            #'sat package ' + $application + ' --sources'
+            #'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+
+    #############################################################
+
+]
+
diff --git a/jobs/clean_all.pyconf b/jobs/clean_all.pyconf
new file mode 100644 (file)
index 0000000..0730063
--- /dev/null
@@ -0,0 +1,706 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+MONDAY    : 0
+TUESDAY   : 1
+WEDNESDAY : 2
+THURSDAY  : 3
+FRIDAY    : 4
+SATURDAY  : 5
+SUNDAY    : 6
+
+LUNDI     : 0
+MARDI     : 1
+MERCREDI  : 2
+JEUDI     : 3
+VENDREDI  : 4
+SAMEDI    : 5
+DIMANCHE  : 6
+
+m : 60
+
+h : 60 * $m
+
+display : 'is225302.intra.cea.fr:0.0'
+
+machines:
+[
+    {
+        name : "CO7.2 info"
+        host : is231761 #is223284
+        user : salome
+        sat_path : '/volatile/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO7.3 physique W"
+        host : is221713
+        user : salome
+        sat_path : '/volatile/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD18 virtuelle"
+        host : isv20852
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO7.2 physique"
+        host : is228818
+        user : salome
+        sat_path : '/volatile/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO7.2 virtuelle"
+        host : isv20845
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "DB07 virtuelle"
+        host : isv20847
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "DB08 virtuelle"
+        host : isv20848
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "UB16.04 physique" ###master Clarisse
+        host : is221556 ###anciennement is212797
+        user : salome
+        sat_path : '/volatile/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "UB14.04 virtuelle"
+        host : isv20851
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD20 physique"
+        host : is228817
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD20 virtuelle"
+        host : isv20849
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD22 physique"
+        host : is223287
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD22 virtuelle"
+        host : isv20850
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "FD24 virtuelle"
+        host : isv20843
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO6.4 physique"
+        host : is225299
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO6.4 physique corpus"
+        host : is221049
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO6.4 virtuelle"
+        host : isv20844 #isv20853
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+    {
+        name : "CO7 physique"
+        host : is221560
+        user : salome
+        sat_path : '/volatile/home/salome/salomeTools-5-jobs'
+    }
+]
+
+application1  : "SALOME-master"
+application2  : "SALOME-master-native"
+application3  : "SALOME-8.3.0"
+application4  : "SALOME-8.3.0-native"
+application5  : "SALOME-8.2.0"
+application6  : "SALOME-8.2.0-MPI"
+application7  : "SALOME-6.6.0"
+application8  : "CORPUS-2.0"
+application9  : "SALOME-7.8.2"
+
+application11 : "MEDCOUPLING-7.8.2"
+application12 : "MEDCOUPLING-8.3.0"
+application13 : "MEDCOUPLING-8.2.0"
+application14 : "MEDCOUPLING"
+application15 : "MEDCOUPLING-native"
+application16 : "MEDCOUPLING-Micro"
+application17 : "MEDCOUPLING-MPI"
+application18 : "SHAPER-2.7.0-SAL820"
+application19 : "PPGP-1.2beta-7.8.0"
+
+
+jobs :
+[
+    
+    {
+        name : 'CLEAN CO7.2 info'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "CO7.2 info"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+        ]
+    }
+
+    {
+        name : 'CLEAN CO7.3 physique W'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "CO7.3 physique W"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN FD18 virtuelle'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "FD18 virtuelle"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN CO7.2 physique'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "CO7.2 physique"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN DB07 virtuelle'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "DB07 virtuelle"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN DB08 virtuelle'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "DB08 virtuelle"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN UB16.04 physique'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "UB16.04 physique"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN UB14.04 virtuelle'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "UB14.04 virtuelle"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN FD20 physique'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "FD20 physique"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN FD20 virtuelle'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "FD20 virtuelle"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN FD22 physique'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "FD22 physique"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN FD22 virtuelle'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "FD22 virtuelle"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN FD24 virtuelle'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "FD24 virtuelle"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN CO6.4 physique'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "CO6.4 physique"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN CO6.4 physique corpus'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "CO6.4 physique corpus"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN CO6.4 virtuelle'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "CO6.4 virtuelle"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+    {
+        name : 'CLEAN CO7 physique'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : "CO7 physique"
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application1  + ' --all'
+            'sat clean ' + $application2  + ' --all'
+            'sat clean ' + $application3  + ' --all'
+            'sat clean ' + $application4  + ' --all'
+            'sat clean ' + $application5  + ' --all'
+            'sat clean ' + $application6  + ' --all'
+            'sat clean ' + $application7  + ' --all'
+            'sat clean ' + $application8  + ' --all'
+            'sat clean ' + $application9  + ' --all'
+
+            'sat clean ' + $application11 + ' --all'
+            'sat clean ' + $application12 + ' --all'
+            'sat clean ' + $application13 + ' --all'
+            'sat clean ' + $application14 + ' --all'
+            'sat clean ' + $application15 + ' --all'
+            'sat clean ' + $application16 + ' --all'
+            'sat clean ' + $application17 + ' --all'
+            'sat clean ' + $application18 + ' --all'
+            'sat clean ' + $application19 + ' --all'
+
+        ]
+    }
+
+]
+
diff --git a/jobs/salome.pyconf b/jobs/salome.pyconf
new file mode 100644 (file)
index 0000000..f742b9c
--- /dev/null
@@ -0,0 +1,882 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+MONDAY    : 0
+TUESDAY   : 1
+WEDNESDAY : 2
+THURSDAY  : 3
+FRIDAY    : 4
+SATURDAY  : 5
+SUNDAY    : 6
+
+LUNDI     : 0
+MARDI     : 1
+MERCREDI  : 2
+JEUDI     : 3
+VENDREDI  : 4
+SAMEDI    : 5
+DIMANCHE  : 6
+
+m : 60
+
+h : 60 * $m
+
+# OP 30/11/2017 Machine display partie -> on bascule sur la UB16 pour test
+#               mais ce n'est pas vraiment concluant (privilegier display local)
+display : 'is232975.intra.cea.fr:0.0'
+
+
+####################################################
+# Liste des machines pour les constructions SALOME #
+####################################################
+machines:
+[
+    {
+        name : "CO6.4 virtuelle"
+        host : isv20844
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+
+    # nouveau master CENTOS6.4 LGLS situe dans le bureau de Gilles
+    {
+        name : "CO6.4 physique"
+        host : is212800
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+
+    # OP 17/07/2017 machine inutilisee pour les constructions SALOME
+    #               car packages manquants - Attente VM master CO7
+    {
+        name : "CO7.3 virtuelle"
+        host : isv20845
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+
+    # OP 17/07/2017 machine Christian
+    {
+        name : "CO7.3 Christian"
+        host : is231761
+        user : salome
+        sat_path : '/volatile/salome/salomeTools-5-jobs'
+    }
+
+    # OP 22/12/2017 machine Alexandre qui lance la crontab
+    {
+        name : "CO7.3 physique A"
+        host : is228818
+        user : salome
+        sat_path : '/volatile/salome/salomeTools-5-jobs'
+    }
+
+    # OP 04/07/2018 machine Clarisse 
+    {
+        name : "CO7.3 Clarisse"
+        host : is221560
+        user : salome
+        sat_path : '/volatile/home/salome/salomeTools-5-jobs'
+    }
+
+    {
+        name : "DB07 virtuelle"
+        host : isv20847
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+
+    {
+        name : "DB08 virtuelle"
+        host : isv20848
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+
+    # OP 22/12/2017 Utilisee pour les constructions CO7
+    #               en attendant VM infogeree
+    {
+        name : "CO7.4 physique S"
+        host : is234638
+        user : salome
+        sat_path : '/volatile/salome/salomeTools-5-jobs'
+    }
+
+# 07/03/2018 AC Suppression de la FD18 en vue de la remplacer par FD26
+#    {
+#        name : "FD18 virtuelle"
+#        host : isv20852
+#        user : salome
+#        sat_path : '/export/home/salome/salomeTools-5-jobs'
+#    }
+
+    {
+        name : "FD20 virtuelle"
+        host : isv20849
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+
+# OP 22/12/2017 Supprimee car arretee visiblement - utilisee pour packages
+#    {
+#        name : "FD20 physique"
+#        host : is228817
+#        user : salome
+#        sat_path : '/export/home/salome/salomeTools-5-jobs'
+#    }
+
+    {
+        name : "FD22 virtuelle"
+        host : isv20850
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+
+# OP 19/05/2017 Artifact 8628 : le repertoire local n'est pas bon
+#                               et le montage de /volatile/home/salome
+#                               n'est pas automatique
+#    {
+#        name : "DB08 physique"
+#        host : is223287
+#        user : salome
+#        sat_path : '/export/home/salome/salomeTools-5-jobs'
+#    }
+
+    {
+        name : "FD24 virtuelle"
+        host : isv20843
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+
+    {
+        name : "UB14.04 virtuelle"
+        host : isv20851
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+
+    # OP 22/12/2017 Utilisee en attendant VM master UB16.04
+    {
+        name : "UB16.04 physique" 
+        host : is232975
+        user : salome
+        sat_path : '/volatile/home/salome/salomeTools-5-jobs'
+    }
+
+# AC 22/03/2018 Remplacee par VM FD26
+#    {
+#        name : "FD26 physique STMF"
+#        host : is221714
+#        user : salome
+#        sat_path : '/export/home/salome/salomeTools-5-jobs'
+#    }
+
+# AC 22/03/2018 Ajout de la machine virtuelle FD26
+#               (en remplacement de celle physique)
+    {
+        name : "FD26 virtuelle"
+        host : isv20852
+        user : salome
+        sat_path : '/export/home/salome/salomeTools-5-jobs'
+    }
+]
+
+
+##########################
+# Liste des applications #
+##########################
+
+# Versions SALOME master (future V9)
+salome_master             : "SALOME-master"
+salome_master_native      : "SALOME-master-native"
+salome_master_test        : "SALOME-master_test"
+salome_master_native_test : "SALOME-master-native_test"
+
+# Versions SALOME 8.5.0
+# TA 16-04-2018 Ajout de SHAPER dans SALOME avec l'appli SALOME-S
+salome_8_5_0              : "SALOME-8.5.0"
+salome_8_5_0_shaper       : "SALOME-8.5.0-S"
+salome_8_5_0_native       : "SALOME-8.5.0-native"
+salome_8_5_0_MPI          : "SALOME-8.5.0-MPI"
+salome_8_5_0_test         : "SALOME-8.5.0_test"
+salome_8_5_0_shaper_test  : "SALOME-8.5.0-S_test"
+salome_8_5_0_native_test  : "SALOME-8.5.0-native_test"
+salome_8_5_0_MPI_test     : "SALOME-8.5.0-MPI_test"
+archives_8_5_0            : "Archives-8.5.0"
+archives_8_5_0_shaper     : "Archives-8.5.0-S"
+archives_8_5_0_native     : "Archives-8.5.0-native"
+archives_8_5_0_MPI        : "Archives-8.5.0-MPI"
+archives_8_5_0_SRC        : "Archives-8.5.0-SRC"
+archives_8_5_0_shaper_SRC : "Archives-8.5.0-S-SRC"
+archives_8_5_0_native_SRC : "Archives-8.5.0-native-SRC"
+archives_8_5_0_MPI_SRC    : "Archives-8.5.0-MPI-SRC"
+
+# Versions SALOME 8.4.0
+salome_8_4_0              : "SALOME-8.4.0"
+salome_8_4_0_native       : "SALOME-8.4.0-native"
+salome_8_4_0_MPI          : "SALOME-8.4.0-MPI"
+salome_8_4_0_test         : "SALOME-8.4.0_test"
+archives_8_4_0            : "Archives-8.4.0"
+archives_8_4_0_SRC        : "Archives-8.4.0-SRC"
+
+# Versions SALOME anciennes
+salome_7_8_2              : "SALOME-7.8.2"
+salome_6_6_0              : "SALOME-6.6.0"
+
+# Versions MEDCOUPLING master
+# OP 04/07/2018 Comme la master SALOME est relative a la V9,
+#               que fait-on pour MEDCOUPLING master ?
+medcoupling               : "MEDCOUPLING"
+medcoupling_native        : "MEDCOUPLING-native"
+medcoupling_micro         : "MEDCOUPLING-Micro"
+medcoupling_mpi           : "MEDCOUPLING-MPI"
+
+# TA 21/03/2018 Ajout MEDCOUPLING-8.5.0
+medcoupling_8_5_0         : "MEDCOUPLING-8.5.0"
+
+# OP 19/10/2017 Ajout MEDCOUPLING-8.4.0
+medcoupling_8_4_0         : "MEDCOUPLING-8.4.0"
+
+medcoupling_7_8_2         : "MEDCOUPLING-7.8.2"
+
+# Applications
+alamos_7_8_0              : "ALAMOS-7.8.0-master"  
+coreflows                 : "COREFLOWS"
+corpus_2_0                : "CORPUS-2.0"
+corpus_archives           : "CORPUS-ARCHIVES"
+formation                 : "FORMATION"
+matix                     : "MATIX"
+monte_carlo               : "MONTE-CARLO"
+oscar                     : "OSCAR"
+ppgp_1_2beta              : "PPGP-1.2beta-7.8.0"
+
+# AC 30/01/2018 Ajout de SHAPER-3.0.0 qui remplace respectivement
+#               SHAPER 2.9.1, 2.10.0 et 2.10.1
+shaper_3_00               : "SHAPER-3.0.0"
+
+# OP 31/07/2017 Ajout de SHAPER-master sur CO7 et UB16
+shaper_master             : "SHAPER-master"
+
+tutorial_coupling_782     : "TUTORIAL_COUPLING-7.8.2"
+tutorial_coupling_master  : "TUTORIAL_COUPLING-master"
+wprocess                  : "WPROCESS"
+nuresim_2_1               : "NURESIM-2.1"
+
+
+
+jobs :
+[
+    ########################################################################### 
+    ############################## CLEAN DU VENDREDI ##########################
+    ###########################################################################
+    {
+        name : 'CLEAN'
+        when : [$FRIDAY]
+        application : "CLEAN"
+        machine : ["CO6.4 virtuelle", "CO6.4 physique", "CO7.4 physique S",
+                   "DB07 virtuelle", "DB08 virtuelle", "FD20 virtuelle",
+                   "FD22 virtuelle", "FD24 virtuelle", "FD26 virtuelle",
+                   "UB14.04 virtuelle", "UB16.04 physique"]
+        board : "CLEAN ALL"
+        timeout : 10 * $h
+        commands :
+        [
+            # Versions SALOME
+            # OP 19/10/2017 Clean des archives SALOME realise autrement
+
+            'sat clean ' + $salome_master  + ' --all'
+            'sat clean ' + $salome_master_native  + ' --all'
+
+            #'sat clean ' + $salome_8_5_0  + ' --all'
+            'sat clean ' + $salome_8_5_0_shaper  + ' --all'
+            'sat clean ' + $salome_8_5_0_native  + ' --all'
+            'sat clean ' + $salome_8_5_0_MPI  + ' --all'
+
+            'sat clean ' + $salome_8_4_0  + ' --all'
+            'sat clean ' + $salome_8_4_0_native  + ' --all'
+            'sat clean ' + $salome_8_4_0_MPI  + ' --all'
+
+            #'sat clean ' + $salome_7_8_2  + ' --all'
+            #'sat clean ' + $salome_6_6_0  + ' --all'
+
+            # Versions MEDCOUPLING
+            'sat clean ' + $medcoupling + ' --all'
+            'sat clean ' + $medcoupling_native + ' --all'
+            'sat clean ' + $medcoupling_micro + ' --all'
+            'sat clean ' + $medcoupling_mpi + ' --all'
+
+# OP 04/07/2018 Ajout MEDCOUPLING 8.5.0
+            'sat clean ' + $medcoupling_8_5_0 + ' --all'
+
+# OP 19/10/2017 Ajout MEDCOUPLING 8.4.0
+            'sat clean ' + $medcoupling_8_4_0 + ' --all'
+
+            'sat clean ' + $medcoupling_7_8_2 + ' --all'
+
+            # Applications
+            # OP 03/08/2017 applications suivantes pas encore operationnelles :
+            # - COREFLOWS
+            # - FORMATION
+            # - MATIX
+            # - MONTE-CARLO
+            # - OSCAR
+            # - WPROCESS
+            'sat clean ' + $alamos_7_8_0 + ' --all'
+            #'sat clean ' + $coreflows + ' --all'
+            'sat clean ' + $corpus_2_0 + ' --all'
+            'sat clean ' + $corpus_archives + ' --all'
+            #'sat clean ' + $formation + ' --all'
+            #'sat clean ' + $matix + ' --all'
+            #'sat clean ' + $monte_carlo + ' --all'
+            #'sat clean ' + $oscar + ' --all'
+            'sat clean ' + $ppgp_1_2beta + ' --all'
+
+            'sat clean ' + $shaper_3_00 + ' --all'
+            'sat clean ' + $shaper_master + ' --all'
+
+            'sat clean ' + $tutorial_coupling_782 + ' --all'
+            'sat clean ' + $tutorial_coupling_master + ' --all'
+            #'sat clean ' + $wprocess + ' --all'
+            'sat clean ' + $nuresim_2_1 + ' --all'
+        ]
+    }
+
+
+    ##############################################################
+    ################# SALOME master ##############################
+    ##############################################################
+
+
+
+    #####################################################################
+    ################# SALOME master native ##############################
+    #####################################################################
+
+    
+
+    #############################################################
+    ################# SALOME master test ########################
+    #############################################################
+    
+
+
+    #############################################################
+    ################# SALOME master native test #################
+    #############################################################
+
+
+
+    #############################################################
+    ################# SALOME 8.5.0 ##############################
+    #############################################################
+
+
+
+    #############################################################
+    ################# SALOME Shaper 8.5.0 #######################
+    #############################################################
+
+
+
+    #####################################################################
+    ################# SALOME 8.5.0 native ###############################
+    #####################################################################
+    
+
+
+    #################################################################
+    ################# SALOME 8.5.0 MPI ##############################
+    #################################################################
+    {
+        name : 'SALOME 8.5.0 MPI CO6.4'
+        when : [$FRIDAY]
+        application : $salome_8_5_0_MPI
+        machine : "CO6.4 virtuelle"
+        board : "SALOME"
+        timeout : 12 * $h
+        prefix : "scl enable devtoolset-2"
+# OP 24/05/2017 Suite aux problemes de blocage sur les checks des modules
+#               GEOM et SMESH, on supprime les checks
+        commands :
+        [
+            # TA 19-06-2018 : On garde le clean total de la version MPI tant que
+            #  la construction ne se passe pas sans probleme
+            'sat clean ' + $application + ' --all'
+            'sat prepare ' + $application + ' --force_patch -f'
+            'sat compile ' + $application + ' --clean_build_after'
+            'sat launcher ' + $application
+            'sat launcher ' + $application + ' --use_mesa -n salome_mesa'
+            'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1'
+            'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium'
+            'sat test ' + $application + ' --display :0'
+            'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved'
+            'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved'
+            'sat package ' + $application + ' --binaries --sources --add_files /data/tmpsalome/salome/targz/SALOME-V8/SALOME-8.5.0/SALOME_8_5_0_Release_Notes.pdf,/home/salome/SPN_PRIVATE/SAT5/MAINTENANCE/dependances_salome/co6_dep_sys_rpms.txt'
+            'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+
+
+    #############################################################
+    ################# SALOME 8.5.0 test #########################
+    #############################################################
+
+
+
+    #############################################################
+    ################# SALOME 8.5.0 shaper test ##################
+    #############################################################
+
+
+
+    #############################################################
+    ################# SALOME 8.5.0 native test ##################
+    #############################################################
+
+
+
+    #############################################################
+    ################# SALOME 8.5.0 MPI test #####################
+    #############################################################
+    {
+        name : 'SALOME 8.5.0 MPI test CO6.4'
+        when : [$FRIDAY]
+        application : $salome_8_5_0_MPI_test
+        prefix : "scl enable devtoolset-2"
+        machine : ["CO6.4 virtuelle"]
+        board : "SALOME"
+        timeout : 3 * $h
+        commands :
+        [
+            'sat application ' + $salome_8_5_0_MPI
+            '/export/home/salome/SALOME-8.5.0-MPI-CO6/salome test -E "KERNEL_Launcher|MEDREADER"'
+            'export DISPLAY=:0 ; /export/home/salome/SALOME-8.5.0-MPI-CO6/salome_mesa test -R MEDREADER'
+        ]
+    }
+
+
+    ###############################################################
+    ################# ARCHIVES SALOME 8.5.0 #######################
+    ###############################################################
+
+
+
+    ###############################################################
+    ################# ARCHIVES SALOME 8.5.0 Shaper ################
+    ###############################################################
+
+
+
+    ###############################################################
+    ################# ARCHIVES SALOME 8.5.0 native ################
+    ###############################################################
+
+
+
+    ###############################################################
+    ################# ARCHIVES SALOME 8.5.0 MPI ###################
+    ###############################################################
+    {
+        name : 'ARCHIVE 8.5.0 MPI CO6.4'
+        when : [$FRIDAY]
+        application : $archives_8_5_0_MPI
+        machine : "CO6.4 virtuelle"
+        board : "SALOME"
+        timeout : 3 * $h
+        cd_wd : "cd /export/home/salome"
+        commands :
+        [
+#           OP 04-07-2018 : On garde le dossier Test_Archives pour ne pas
+#                           effacer le package du job ARCHIVE 8.5.0 CO6
+#            $cd_wd + '; if [ -d Test_Archives ];then rm -rf  Test_Archives; fi'
+            $cd_wd + '; if [ ! -d Test_Archives ];then mkdir Test_Archives; fi; cd Test_Archives; cp /export/home/salome/SALOME-8.5.0-MPI-CO6/PACKAGE/SALOME-8.5.0-MPI-CO6-SRC.tgz .'
+            $cd_wd + '/Test_Archives; if [ -d SALOME-8.5.0-MPI-CO6-SRC ];then rm -rf SALOME-8.5.0-MPI-CO6-SRC ; fi; tar xfz SALOME-8.5.0-MPI-CO6-SRC.tgz'
+            'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1'
+            'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium'
+            'sat test SALOME-8.5.0-MPI -l /export/home/salome/Test_Archives/SALOME-8.5.0-MPI-CO6-SRC/salome --display :0'
+            'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved'
+            'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved'
+        ]
+    }
+
+
+    ###############################################################
+    ######## ARCHIVES SALOME 8.5.0 : recompilation SOURCES ########
+    #   doit etre realise apres les jobs ARCHIVES SALOME 8.5.0    #
+    ###############################################################
+
+
+
+    ########################################################################
+    ######## ARCHIVES SALOME 8.5.0 Shaper : recompilation SOURCES ##########
+    ######## doit etre realise apres les jobs ARCHIVES SALOME 8.5.0 Shaper #
+    ########################################################################
+
+
+
+    ########################################################################
+    ######## ARCHIVES SALOME 8.5.0 native : recompilation SOURCES ##########
+    ######## doit etre realise apres les jobs ARCHIVES SALOME 8.5.0 native #
+    ########################################################################
+
+
+
+    #####################################################################
+    ######## ARCHIVES SALOME 8.5.0 MPI : recompilation SOURCES ##########
+    ######## doit etre realise apres les jobs ARCHIVES SALOME 8.5.0 MPI #
+    #####################################################################
+    {
+        name : 'ARCHIVE 8.5.0 MPI CO6.4 SRC'
+        when : [$FRIDAY]
+        application : $archives_8_5_0_MPI_SRC
+        prefix : "scl enable devtoolset-2"
+        machine : "CO6.4 virtuelle"
+        board : "SALOME"
+        timeout : 8 * $h
+        sat_arch : "/export/home/salome/Test_Archives/SALOME-8.5.0-MPI-CO6-SRC/salomeTools/sat "
+        sat_appli : $salome_8_5_0_MPI
+        commands :
+        [
+            $sat_arch + 'prepare ' + $sat_appli
+            $sat_arch + 'compile ' + $sat_appli + ' --check --clean_build_after'
+            $sat_arch + 'launcher ' + $sat_appli
+            'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1'
+            'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium'
+            'sat test ' + $sat_appli + ' -l /export/home/salome/Test_Archives/SALOME-8.5.0-MPI-CO6-SRC/salome --display :0'
+            'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved'
+            'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved'
+        ]
+    }
+
+
+    #############################################################
+    ################# SALOME 8.4.0 ##############################
+    #############################################################
+
+
+
+    #####################################################################
+    ################# SALOME 8.4.0 native ###############################
+    #####################################################################
+    
+
+
+    #################################################################
+    ################# SALOME 8.4.0 MPI ##############################
+    #################################################################
+
+
+    #############################################################
+    ################# SALOME 8.4.0 test #########################
+    #############################################################
+
+
+
+    ###############################################################
+    ################# ARCHIVES SALOME 8.4.0 #######################
+    ###############################################################
+
+
+
+    ###############################################################
+    ######## ARCHIVES SALOME 8.4.0 : recompilation SOURCES ########
+    #   doit etre realise apres les jobs ARCHIVES SALOME 8.4.0    #
+    ###############################################################
+
+
+
+    #############################################################
+    ################# SALOME 7.8.2 ##############################
+    #############################################################
+
+
+    
+    #############################################################
+    ################# SALOME 6.6.0 ##############################
+    #############################################################
+
+
+    
+    ###################################################################
+    ################# MEDCOUPLING master ##############################
+    ###################################################################
+
+    
+
+    ###################################################################
+    ################# MEDCOUPLING native ##############################
+    ###################################################################
+
+    
+
+    ##################################################################
+    ################# MEDCOUPLING Micro ##############################
+    ##################################################################
+
+    
+    
+    ######################################################################
+    ################# MEDCOUPLING MPI Metis ##############################
+    ######################################################################
+
+
+
+    ##################################################################
+    ################# MEDCOUPLING 8.5.0 ##############################
+    ##################################################################
+
+
+
+    ##################################################################
+    ################# MEDCOUPLING 8.4.0 ##############################
+    ##################################################################
+
+
+    
+    ##################################################################
+    ################# MEDCOUPLING 7.8.2 ##############################
+    ##################################################################
+
+
+
+    ######################################################################
+    #################  ALAMOS-7.8.0-master  ##############################
+    ######################################################################
+    {
+        name : 'ALAMOS 7.8.0 master CO6.4'
+        when : [$FRIDAY]
+        application : $alamos_7_8_0
+        prefix : "scl enable devtoolset-2"
+        machine : "CO6.4 virtuelle"
+        board : "APPLICATIONS"
+        timeout : 10 * $h
+        commands :
+        [
+            # AC 15-05-2018 Ajout de l'option -f au prepare pour forcer le patch au
+            # cas ou les sources n'ont pas ete nettoyees
+            'sat prepare ' + $application + ' --force_patch -f'
+            'sat compile ' + $application + ' --check --clean_build_after'
+            'sat launcher ' + $application
+            # OP 03/08/2017 pas de tests pour l'instant,
+            #               on fait juste un make test
+            #'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1'
+            #'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium'
+            #'sat test ' + $application + ' --display :0'
+            #'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved'
+            #'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved'
+            'sat package ' + $application + ' --binaries --sources'
+            'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+
+    {
+        name : 'ALAMOS 7.8.0 master DB08'
+        when : [$FRIDAY]
+        application : $alamos_7_8_0
+        machine : "DB08 virtuelle"
+        board : "APPLICATIONS"
+        timeout : 10 * $h
+        commands :
+        [
+            # AC 15-05-2018 Ajout de l'option -f au prepare pour forcer le patch au
+            # cas ou les sources n'ont pas ete nettoyees
+            'sat prepare ' + $application + ' --force_patch -f'
+            'sat compile ' + $application + ' --check --clean_build_after'
+            'sat launcher ' + $application
+            # OP 03/08/2017 pas de tests pour l'instant,
+            #               on fait juste un make test
+            #'sat test ' + $application + ' --display ' + $display
+            'sat package ' + $application + ' --binaries --sources'
+            'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+
+
+    ######################################################################
+    #################  Archives ALAMOS 7.8.0_V7_dev  #####################
+    ######################################################################
+
+    # OP 04/08/2017 Voir si on ajoute des tests d'archives ALAMOS ???
+    
+    
+    ############################################################
+    #################  COREFLOWS  ##############################
+    ############################################################
+
+    # OP 18/07/2017 A mettre en place :
+    #               - Pour CO6.4, prefix inutile sinon CDMATH ne compile pas
+    #               - Voir quelles sont les taches a lancer
+    #               - Attention aux manips mesa avant les tests
+#    {
+#        name : 'COREFLOWS 7.8 CO+DB08+FD18+UB14'
+#        application : $coreflows
+#        machine : [["CO6.4 virtuelle", $FRIDAY], ["CO7.4 physique S", $FRIDAY],
+#                   ["DB08 virtuelle", $WEDNESDAY],
+#                   ["FD18 virtuelle", $THURSDAY],
+#                   ["UB14.04 virtuelle", $FRIDAY]]
+#        board : "APPLICATIONS"
+#        timeout : 10 * $h
+#        commands :
+#        [
+#            'sat prepare ' + $application
+#            'sat compile ' + $application + ' --check --clean_build_after'
+#            'sat launcher ' + $application
+#            'sat test ' + $application + ' --display :0'
+#            'sat package ' + $application + ' --binaries --sources'
+#            'sat package ' + $application + ' --sources --with_vcs'
+#        ]
+#    }
+    
+    #############################################################
+    #################  CORPUS 2.0  ##############################
+    #############################################################
+    {
+        name : 'CORPUS 2.0 CO6'
+        application : $corpus_2_0
+        machine : [["CO6.4 virtuelle", $FRIDAY]]
+        board : "APPLICATIONS"
+        timeout : 8 * $h
+        commands :
+        [
+            'sat clean ' + $application + ' --install --build --properties corpus:yes'
+            'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+            'sat prepare ' + $application
+            'sat compile ' + $application
+            'sat generate ' + $application
+            'sat application ' + $application
+            'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1'
+            'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium'
+            'sat test ' + $application + ' --display :0'
+            'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved'
+            'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved'
+            'sat package ' + $application + ' --binaries --sources --with_vcs'
+        ]
+    }
+
+
+    #############################################################
+    ################ ARCHIVES CORPUS 2.0  #######################
+    #############################################################
+
+    {
+        name : 'ARCHIVE CORPUS 2.0 CO6.4'
+        when : [$FRIDAY]
+        application : $corpus_archives
+        machine : "CO6.4 physique"
+        board : "APPLICATIONS"
+        timeout : 2 * $h
+        cd_wd : "cd /export/home/salome"
+        sat_appli : $corpus_2_0
+        commands :
+        [
+            $cd_wd + '; if [ -d Test_Archives ];then rm -rf  Test_Archives ; fi'
+            $cd_wd + '; mkdir Test_Archives; cd Test_Archives; scp isv20844:/export/home/salome/CORPUS-2.0-CO6/PACKAGE/CORPUS-2.0-CO6-SRC-VCS.tgz .'
+            $cd_wd + '/Test_Archives; if [ -d CORPUS-2.0-CO6-SRC-VCS ];then rm -rf CORPUS-2.0-CO6-SRC-VCS ; fi; tar xfz CORPUS-2.0-CO6-SRC-VCS.tgz'
+            $cd_wd + '/Test_Archives/CORPUS-2.0-CO6-SRC-VCS; ./install_bin.sh'  
+            $cd_wd + '/Test_Archives/CORPUS-2.0-CO6-SRC-VCS; ./sat prepare ' + $sat_appli  
+            $cd_wd + '/Test_Archives/CORPUS-2.0-CO6-SRC-VCS; ./sat compile ' + $sat_appli + ' --clean_all -p CRONOSCPP'  
+            $cd_wd + '/Test_Archives/CORPUS-2.0-CO6-SRC-VCS; ./sat environ ' + $sat_appli  
+            $cd_wd + '/Test_Archives/CORPUS-2.0-CO6-SRC-VCS; ./sat application ' + $sat_appli  
+            # OP 22/12/2017 Tests non lances car pas de display local
+            #'mv /export/home/salome/schung/llvm-3.9.1_moved /export/home/salome/schung/llvm-3.9.1'
+            #'mv /export/home/salome/schung/mesa-13.0.6-gallium_moved /export/home/salome/schung/mesa-13.0.6-gallium'
+            #'sat test ' + $sat_appli + ' -l /export/home/salome/Test_Archives/CORPUS-2.0-CO6-SRC-VCS/APPLI/runAppli --display :0'
+            #'mv /export/home/salome/schung/mesa-13.0.6-gallium /export/home/salome/schung/mesa-13.0.6-gallium_moved'
+            #'mv /export/home/salome/schung/llvm-3.9.1 /export/home/salome/schung/llvm-3.9.1_moved'
+        ]
+    }
+
+    
+    ############################################################
+    #################  FORMATION  ##############################
+    ############################################################
+
+    # OP 18/07/2017 A mettre en place :
+    # application : $formation
+    # machine : [["FD18 virtuelle", $FRIDAY], ["FD24 virtuelle", $WEDNESDAY]]
+    
+    
+    ########################################################
+    #################  MATIX  ##############################
+    ########################################################
+
+    # OP 18/07/2017 A mettre en place :
+    # application : $matix
+    
+
+    ##############################################################
+    #################  MONTE-CARLO  ##############################
+    ##############################################################
+
+    # OP 18/07/2017 A mettre en place :
+    # application : $monte_carlo
+    # machine : [["CO6.4 virtuelle", $FRIDAY], ["CO7.4 physique S", $THURSDAY]]
+    # Pour CO6.4, voir si prefix necessaire ou pas
+    
+
+    ########################################################
+    #################  OSCAR  ##############################
+    ########################################################
+
+    # OP 18/07/2017 A mettre en place :
+    # application : $oscar
+    
+
+    #####################################################
+    ################# PPGP ##############################
+    #####################################################
+    {
+        name : 'PPGP CO6+FD20'
+        application : $ppgp_1_2beta
+        machine : [["CO6.4 virtuelle", $FRIDAY],
+                   ["FD20 virtuelle", $FRIDAY]]
+        board : "APPLICATIONS"
+        timeout : 10 * $h
+        commands :
+        [
+            'sat clean ' + $application + ' --install --build --properties is_SALOME_module:yes'
+            'sat prepare ' + $application
+            'sat compile ' + $application
+            'sat launcher ' + $application
+            'sat package ' + $application + ' --binaries --sources'
+            'sat package ' + $application + ' --sources --with_vcs'
+        ]
+    }
+
+
+    #################################################################
+    ################# SHAPER 3.0.0 ##################################
+    #################################################################
+
+
+
+    ##############################################################
+    ################# SHAPER master ##############################
+    ##############################################################
+
+
+
+    ####################################################################
+    ###########  TUTORIAL COUPLAGE 7.8.2  ##############################
+    ####################################################################
+
+
+
+    #####################################################################
+    ###########  TUTORIAL COUPLAGE master  ##############################
+    #####################################################################
+
+    
+    
+    ###########################################################
+    #################  WPROCESS  ##############################
+    ###########################################################
+
+    # OP 18/07/2017 A mettre en place :
+    # application : $wprocess
+
+]
+
diff --git a/products/ADAO.pyconf b/products/ADAO.pyconf
new file mode 100644 (file)
index 0000000..ccbb5ff
--- /dev/null
@@ -0,0 +1,41 @@
+default :
+{
+    name : "ADAO"
+    build_source : "script"
+    compil_script  : $name + $VARS.scriptExtension
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "adao.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "adao.git"
+    }
+    environ :
+    {
+      env_script : $name + ".py"
+      SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "adao"
+    }
+    depend : [
+        "docutils",
+        "Sphinx",
+        "setuptools",
+        "scipy",
+        "Python",
+        "nlopt",
+        "omniORB",
+        "omniORBpy",
+        "CONFIGURATION",
+        "KERNEL",
+        "EFICAS",
+        "EFICAS_TOOLS",
+        "YACS"
+        ]
+    build_depend : ["cmake", "swig", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests : "yes"
+    }
+}
diff --git a/products/ADAO_INTERFACE.pyconf b/products/ADAO_INTERFACE.pyconf
new file mode 100644 (file)
index 0000000..df0aba0
--- /dev/null
@@ -0,0 +1,30 @@
+default :
+{
+    name : "ADAO_INTERFACE"
+    build_source : "cmake"
+    cmake_options : "-DPY2CPP_ROOT_DIR=${PY2CPP_ROOT_DIR}"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "adao_interface.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "adao_interface.git"
+    }
+    environ :
+    {
+      env_script : $name + ".py"
+    }
+    depend : [
+        "Python",
+        "PY2CPP",
+        "CONFIGURATION",
+        "ADAO"
+       ]
+    build_depend : ["cmake", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+    }
+}
diff --git a/products/ALAMOS.pyconf b/products/ALAMOS.pyconf
new file mode 100644 (file)
index 0000000..63622a2
--- /dev/null
@@ -0,0 +1,31 @@
+default :
+{
+    name : "ALAMOS"
+    build_source : "cmake"
+    get_source : "git"
+    cmake_options : "-DSALOME_BUILD_DOC=OFF -DSALOME_GUI_BUILD_WITH_QT5=ON"
+    git_info:
+    {
+        repo : "https://codev-tuleap.intra.cea.fr/plugins/git/alamos/" + $name + ".git"
+        repo_dev : $repo
+    }
+    depend : ['Python', 'KERNEL', 'GUI', 'FIELDS']
+    environ :
+    {
+    }
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+        incremental : "yes"
+    }
+}
+
+default_win :
+{
+    cmake_options : "-DCMAKE_GENERATOR=\"Visual Studio 15 2017 Win64\" -DCMAKE_BUILD_TYPE=Release -DSALOME_BUILD_DOC=OFF -DSALOME_GUI_BUILD_WITH_QT5=ON -DPYTHON_INCLUDE_DIR:STRING=%PYTHON_ROOT_DIR:\=/%/include -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib -DCMAKE_CXX_COMPILER_ARCHITECTURE_ID=x64"
+    depend : ['Python', 'KERNEL', 'GUI', 'FIELDS', 'PyQt','ParaView', 'root']
+}
diff --git a/products/ALAMOS_PROFILE.pyconf b/products/ALAMOS_PROFILE.pyconf
new file mode 100644 (file)
index 0000000..f6ff24e
--- /dev/null
@@ -0,0 +1,31 @@
+default :
+{
+    name : "ALAMOS_PROFILE"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : "https://codev-tuleap.intra.cea.fr/plugins/git/alamos/ALAMOS-profile.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        _SalomeAppConfig : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "alamos_profile"
+    }
+    depend : ['Python', 'Sphinx', 'qt', 'KERNEL', 'GUI']
+    opt_depend : ['sphinx_rtd_theme']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        is_salome_application : "yes"
+        incremental : "yes"
+    }
+    patches : []
+}
+
+default_win :
+{
+    cmake_options : "-DCMAKE_GENERATOR=\"Visual Studio 15 2017 Win64\""
+}
diff --git a/products/BLSURFPLUGIN.pyconf b/products/BLSURFPLUGIN.pyconf
new file mode 100644 (file)
index 0000000..a03071d
--- /dev/null
@@ -0,0 +1,114 @@
+default :
+{
+    name : "BLSURFPLUGIN"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/blsurfplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "blsurfplugin.git"
+    }
+    environ :
+    {
+        _SMESH_MeshersList : "BLSURFPlugin"
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "blsurfplugin"
+    }
+    depend : [
+             "KERNEL",
+             "GEOM", 
+             "SMESH",
+             "Python", 
+             "qt", 
+             "boost", 
+             "CAS", 
+             "hdf5", 
+             "omniORB", 
+             "docutils", 
+             "ParaView",
+             "MeshGems" 
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+version_V8_4_0 :
+{
+    name : "BLSURFPLUGIN"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/blsurfplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "blsurfplugin.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+             "KERNEL",
+             "GEOM", 
+             "SMESH",
+             "Python", 
+             "qt", 
+             "boost", 
+             "CAS", 
+             "hdf5", 
+             "omniORB", 
+             "docutils", 
+             "ParaView", 
+             "MeshGems" 
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    patches : ["BLSURFPLUGIN_8_4_0.patch"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+version_V6_6_0 :
+{
+    name : "BLSURFPLUGIN"
+    build_source : "autotools"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/blsurfplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "blsurfplugin.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+             "KERNEL",
+             "MED",
+             "GEOM", 
+             "SMESH",
+             "Python", 
+             "qt", 
+             "boost", 
+             "CAS", 
+             "hdf5", 
+             "omniORB", 
+             "docutils", 
+             "ParaView", 
+             "MeshGems" 
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+} 
diff --git a/products/Babel.pyconf b/products/Babel.pyconf
new file mode 100644 (file)
index 0000000..b1b13fa
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "Babel"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-babel"]
+        rpm_dev : []
+        apt : ["python3-babel"]
+        apt_dev : []
+    }
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools', 'pytz']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension  # useful only if pip is set to "no"
+   archive_info : {archive_name : "Babel-" + $APPLICATION.products.Babel + "_windows.tar.gz"}
+}
diff --git a/products/CALCULATOR.pyconf b/products/CALCULATOR.pyconf
new file mode 100644 (file)
index 0000000..c0c103e
--- /dev/null
@@ -0,0 +1,70 @@
+default :
+{
+    name : "CALCULATOR"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/calculator.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "calculator.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "calculator"
+    }
+    depend : 
+            [
+             "KERNEL", 
+             "MEDCOUPLING", 
+             "FIELDS",
+             "Python",  
+             "qt",  
+             "boost",  
+             "CAS",  
+             "hdf5",  
+             "medfile",  
+             "omniORB"
+    ]
+    build_depend : ["cmake", "swig", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
+
+version_6_6_0_to_9_1_0 :
+{
+    name : "CALCULATOR"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/calculator.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "calculator.git"
+    }
+    environ :
+    {
+    }
+    depend : 
+            [
+             "KERNEL", 
+             "MEDCOUPLING", 
+             "MED",
+             "Python",  
+             "qt",  
+             "boost",  
+             "CAS",  
+             "hdf5",  
+             "medfile",  
+             "omniORB"
+    ]
+    build_depend : ["cmake", "swig", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
diff --git a/products/CAS.pyconf b/products/CAS.pyconf
new file mode 100755 (executable)
index 0000000..509cc05
--- /dev/null
@@ -0,0 +1,489 @@
+default :
+{
+    name : "CAS"
+    build_source : "cmake"
+    cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DUSE_GL2PS=OFF -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR"
+    get_source : "git"
+    git_info:
+    {
+        repo : "http://git.dev.opencascade.org/repos/occt.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la
+        #                               section environ pour conserver
+        #                               la generalite du script CAS.py
+        CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders"
+        CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat"
+        CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage"
+        CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage"
+        CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures"
+        MMGT_REENTRANT : "1"
+        CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+           
+        env_script : $name + ".py"
+    }
+    depend : ['freetype', 'freeimage']
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "no"
+    }
+}
+
+version_CR740_SALOME_PATCH :
+{
+    name : "CAS"
+    build_source : "cmake"
+    cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DUSE_GL2PS=OFF -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR"
+    get_source : "git"
+    git_info:
+    {
+        repo : "http://git.dev.opencascade.org/repos/occt.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la
+        #                               section environ pour conserver
+        #                               la generalite du script CAS.py
+        CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders"
+        CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat"
+        CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage"
+        CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage"
+        CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures"
+        MMGT_REENTRANT : "1"
+        CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+           
+        env_script : $name + ".py"
+    }
+    depend : ['freetype', 'freeimage']
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "no"
+    }
+}
+
+version_CR740_SALOME_PATCH_win :
+{
+    name : "CAS"
+    build_source : "script"
+    compil_script :  "CAS_7.4.bat"
+    get_source : "git"
+    git_info:
+    {
+        repo : "http://git.dev.opencascade.org/repos/occt.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        CSF_OCCTBinPath          : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "bin"
+        CSF_OCCTLibPath          : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "lib"
+        CSF_OCCTIncludePath      : $install_dir + $VARS.sep + "inc"
+        CSF_OCCTResourcePath     : $install_dir + $VARS.sep + "src"
+        CSF_OCCTDataPath         : $install_dir + $VARS.sep + "data"
+        CSF_OCCTSamplesPath      : $install_dir + $VARS.sep + "samples"
+        CSF_OCCTTestsPath        : $install_dir + $VARS.sep + "tests"
+        CSF_OCCTDocPath          : $install_dir + $VARS.sep + "doc"
+        CSF_SHMessage            : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage"
+        CSF_MDTVTexturesDirectory: $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures"
+        CSF_ShadersDirectory     : $install_dir + $VARS.sep + "src" + $VARS.sep + "Shaders"
+        CSF_XSMessage            : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage"
+        CSF_TObjMessage          : $install_dir + $VARS.sep + "src" + $VARS.sep + "TObj"
+        CSF_StandardDefaults     : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults       : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_XCAFDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_TObjDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_StandardLiteDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_IGESDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource"
+        CSF_STEPDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource"
+        CSF_XmlOcafResource      : $install_dir + $VARS.sep + "src" + $VARS.sep + "XmlOcafResource"
+        CSF_MIGRATION_TYPES      : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + $VARS.sep + "MigrationSheet.txt"
+        CSF_UnitsDefinition      : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        MMGT_CLEAR     : "1"
+        MMGT_REENTRANT : "1"
+        CSF_LANGUAGE   : "us"
+
+        env_script : "CAS.py"
+    }
+    depend : ['freetype', 'freeimage', 'tbb']
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+      incremental : "no"
+    }
+}
+
+
+version_V7_4_0p1 :
+{
+    name : "CAS"
+    build_source : "cmake"
+    cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DUSE_GL2PS=OFF -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR"
+    get_source : "git"
+    git_info:
+    {
+        repo : "http://git.dev.opencascade.org/repos/occt.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la
+        #                               section environ pour conserver
+        #                               la generalite du script CAS.py
+        CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders"
+        CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat"
+        CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage"
+        CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage"
+        CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures"
+        MMGT_REENTRANT : "1"
+        CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+           
+        env_script : $name + ".py"
+    }
+    depend : ['freetype', 'freeimage']
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "no"
+    }
+}
+
+version_V7_4_0p1_win :
+{
+    name : "CAS"
+    build_source : "script"
+    compil_script :  "CAS_7.4.bat"
+    get_source : "git"
+    git_info:
+    {
+        repo : "http://git.dev.opencascade.org/repos/occt.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        CSF_OCCTBinPath          : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "bin"
+        CSF_OCCTLibPath          : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "lib"
+        CSF_OCCTIncludePath      : $install_dir + $VARS.sep + "inc"
+        CSF_OCCTResourcePath     : $install_dir + $VARS.sep + "src"
+        CSF_OCCTDataPath         : $install_dir + $VARS.sep + "data"
+        CSF_OCCTSamplesPath      : $install_dir + $VARS.sep + "samples"
+        CSF_OCCTTestsPath        : $install_dir + $VARS.sep + "tests"
+        CSF_OCCTDocPath          : $install_dir + $VARS.sep + "doc"
+        CSF_SHMessage            : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage"
+        CSF_MDTVTexturesDirectory: $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures"
+        CSF_ShadersDirectory     : $install_dir + $VARS.sep + "src" + $VARS.sep + "Shaders"
+        CSF_XSMessage            : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage"
+        CSF_TObjMessage          : $install_dir + $VARS.sep + "src" + $VARS.sep + "TObj"
+        CSF_StandardDefaults     : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults       : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_XCAFDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_TObjDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_StandardLiteDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_IGESDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource"
+        CSF_STEPDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource"
+        CSF_XmlOcafResource      : $install_dir + $VARS.sep + "src" + $VARS.sep + "XmlOcafResource"
+        CSF_MIGRATION_TYPES      : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + $VARS.sep + "MigrationSheet.txt"
+        CSF_UnitsDefinition      : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        MMGT_CLEAR     : "1"
+        MMGT_REENTRANT : "1"
+        CSF_LANGUAGE   : "us"
+
+        env_script : "CAS.py"
+    }
+    depend : ['freetype', 'freeimage', 'tbb']
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+      incremental : "no"
+    }
+}
+
+version_V7_3_0p4 :
+{
+    name : "CAS"
+    build_source : "cmake"
+    cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DUSE_GL2PS=ON -D3RDPARTY_GL2PS_DIR=$GL2PSDIR -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR"
+    get_source : "git"
+    git_info:
+    {
+        repo : "http://git.dev.opencascade.org/repos/occt.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders"
+        CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat"
+        CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage"
+        CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage"
+        CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures"
+        MMGT_REENTRANT : "1"
+        CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+           
+        env_script : $name + ".py"
+    }
+    depend : ['freetype', 'freeimage', 'gl2ps']
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "no"
+    }
+}
+
+version_V7_3_0p4_win :
+{
+    name : "CAS"
+    build_source : "script"
+    compil_script :  "CAS_7.3.bat"
+    get_source : "git"
+    git_info:
+    {
+        repo : "http://git.dev.opencascade.org/repos/occt.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        CSF_OCCTBinPath          : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "bin"
+        CSF_OCCTLibPath          : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "lib"
+        CSF_OCCTIncludePath      : $install_dir + $VARS.sep + "inc"
+        CSF_OCCTResourcePath     : $install_dir + $VARS.sep + "src"
+        CSF_OCCTDataPath         : $install_dir + $VARS.sep + "data"
+        CSF_OCCTSamplesPath      : $install_dir + $VARS.sep + "samples"
+        CSF_OCCTTestsPath        : $install_dir + $VARS.sep + "tests"
+        CSF_OCCTDocPath          : $install_dir + $VARS.sep + "doc"
+        CSF_SHMessage            : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage"
+        CSF_MDTVTexturesDirectory: $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures"
+        CSF_ShadersDirectory     : $install_dir + $VARS.sep + "src" + $VARS.sep + "Shaders"
+        CSF_XSMessage            : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage"
+        CSF_TObjMessage          : $install_dir + $VARS.sep + "src" + $VARS.sep + "TObj"
+        CSF_StandardDefaults     : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults       : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_XCAFDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_TObjDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_StandardLiteDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_IGESDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource"
+        CSF_STEPDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource"
+        CSF_XmlOcafResource      : $install_dir + $VARS.sep + "src" + $VARS.sep + "XmlOcafResource"
+        CSF_MIGRATION_TYPES      : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + $VARS.sep + "MigrationSheet.txt"
+        CSF_UnitsDefinition      : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        MMGT_CLEAR     : "1"
+        MMGT_REENTRANT : "1"
+        CSF_LANGUAGE   : "us"
+
+        env_script : "CAS.py"
+    }
+    depend : ['freetype', 'freeimage', 'gl2ps', 'tbb']
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+      incremental : "no"
+    }
+}
+
+version_V7_3_0p3 :
+{
+    name : "CAS"
+    build_source : "cmake"
+    cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DUSE_GL2PS=ON -D3RDPARTY_GL2PS_DIR=$GL2PSDIR -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR"
+    get_source : "git"
+    git_info:
+    {
+        repo : "http://git.dev.opencascade.org/repos/occt.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders"
+        CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat"
+        CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage"
+        CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage"
+        CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures"
+        MMGT_REENTRANT : "1"
+        CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+           
+        env_script : $name + ".py"
+    }
+    depend : ['freetype', 'freeimage', 'gl2ps']
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "no"
+    }
+}
+
+version_V7_3_0p3_win :
+{
+    name : "CAS"
+    build_source : "script"
+    compil_script :  "CAS_7.3.bat"
+    get_source : "git"
+    git_info:
+    {
+        repo : "http://git.dev.opencascade.org/repos/occt.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        CSF_OCCTBinPath          : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "bin"
+        CSF_OCCTLibPath          : $install_dir + $VARS.sep + "win64" + $VARS.sep + "vc14" + $VARS.sep + "lib"
+        CSF_OCCTIncludePath      : $install_dir + $VARS.sep + "inc"
+        CSF_OCCTResourcePath     : $install_dir + $VARS.sep + "src"
+        CSF_OCCTDataPath         : $install_dir + $VARS.sep + "data"
+        CSF_OCCTSamplesPath      : $install_dir + $VARS.sep + "samples"
+        CSF_OCCTTestsPath        : $install_dir + $VARS.sep + "tests"
+        CSF_OCCTDocPath          : $install_dir + $VARS.sep + "doc"
+        CSF_SHMessage            : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage"
+        CSF_MDTVTexturesDirectory: $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures"
+        CSF_ShadersDirectory     : $install_dir + $VARS.sep + "src" + $VARS.sep + "Shaders"
+        CSF_XSMessage            : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage"
+        CSF_TObjMessage          : $install_dir + $VARS.sep + "src" + $VARS.sep + "TObj"
+        CSF_StandardDefaults     : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults       : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_XCAFDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_TObjDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_StandardLiteDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_IGESDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource"
+        CSF_STEPDefaults         : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSTEPResource"
+        CSF_XmlOcafResource      : $install_dir + $VARS.sep + "src" + $VARS.sep + "XmlOcafResource"
+        CSF_MIGRATION_TYPES      : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource" + $VARS.sep + "MigrationSheet.txt"
+        CSF_UnitsDefinition      : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        MMGT_CLEAR     : "1"
+        MMGT_REENTRANT : "1"
+        CSF_LANGUAGE   : "us"
+
+        env_script : "CAS.py"
+    }
+    depend : ['freetype', 'freeimage', 'gl2ps', 'tbb']
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+      incremental : "no"
+    }
+}
+
+
+version_6_0_0_to_7_0_0 :
+{
+    name : "CAS"
+    build_source : "autotools"
+    configure_options : "-without-tcl --without-tk --disable-draw --with-freetype=$FREETYPEDIR --enable-debug=no --enable-production=yes --with-gl2ps=$GL2PSDIR --with-freeimage=$FREEIMAGEDIR"
+    get_source : "archive"
+    environ :
+    {
+        # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la
+        #                               section environ pour conserver
+        #                               la generalite du script CAS.py
+        CSF_UnitsLexicon : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat"
+        CSF_UnitsDefinition : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        CSF_SHMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage"
+        CSF_XSMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage"
+        CSF_MDTVFontDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "FontMFT"
+        CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures"
+        MMGT_REENTRANT : "1"
+        CSF_StandardDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+
+        env_script : $name + ".py"
+    }
+    depend : ['freetype', 'freeimage', 'gl2ps', 'tcl', 'tk']
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
+
+version_6_5_4 :
+{
+    name : "CAS"
+    build_source : "autotools"
+    configure_options : "-without-tcl --without-tk --disable-draw --with-freetype=$FREETYPEDIR --with-ftgl=$FTGLDIR --enable-debug=no --enable-production=yes --with-gl2ps=$GL2PSDIR --with-freeimage=$FREEIMAGEDIR"
+    get_source : "archive"
+    environ :
+    {
+        # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la
+        #                               section environ pour conserver
+        #                               la generalite du script CAS.py
+        CSF_UnitsLexicon : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat"
+        CSF_UnitsDefinition : $install_dir + $VARS.sep + "src" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        CSF_SHMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "SHMessage"
+        CSF_XSMessage : $install_dir + $VARS.sep + "src" + $VARS.sep + "XSMessage"
+        CSF_MDTVFontDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "FontMFT"
+        CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "src" + $VARS.sep + "Textures"
+        MMGT_REENTRANT : "1"
+        CSF_StandardDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults : $install_dir + $VARS.sep + "src" + $VARS.sep + "StdResource"
+
+        env_script : $name + ".py"
+    }
+    depend : ['freetype', 'freeimage', 'gl2ps', "ftgl", "tcl", "tk"]
+    build_depend : ["cmake", "doxygen"]
+    patches : ["CAS-6.5.4.patch"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
+
+version_7_0_0 :
+{
+    name : "CAS"
+    build_source : "cmake"
+    cmake_options : "-DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF -DUSE_FREETYPE=ON -D3RDPARTY_FREETYPE_DIR=$FREETYPEDIR -DCMAKE_BUILD_TYPE=Release -DUSE_GL2PS=ON -D3RDPARTY_GL2PS_DIR=$GL2PSDIR -DUSE_FREEIMAGE=ON -D3RDPARTY_FREEIMAGE_DIR=$FREEIMAGEDIR"
+    get_source : "archive"
+    environ :
+    {
+        # OP 19/04/2017 Artifact 8482 : Ajout des variables CAS dans la
+        #                               section environ pour conserver
+        #                               la generalite du script CAS.py
+        CSF_ShadersDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Shaders"
+        CSF_UnitsLexicon : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Lexi_Expr.dat"
+        CSF_UnitsDefinition : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "UnitsAPI" + $VARS.sep + "Units.dat"
+        CSF_SHMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "SHMessage"
+        CSF_XSMessage : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "XSMessage"
+        CSF_MDTVTexturesDirectory : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "Textures"
+        MMGT_REENTRANT : "1"
+        CSF_StandardDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+        CSF_PluginDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "opencascade" + $VARS.sep + "resources" + $VARS.sep + "StdResource"
+
+        env_script : $name + ".py"
+    }
+    depend : ['freetype', 'freeimage', 'gl2ps']
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
diff --git a/products/CDMATH.pyconf b/products/CDMATH.pyconf
new file mode 100644 (file)
index 0000000..64c95eb
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "CDMATH"
+    build_source : "cmake"
+    #cmake_options : "-DCDMATH_WITH_PYTHON=ON"# -DCMAKE_BUILD_TYPE=Release
+    cmake_options : "-DCMAKE_BUILD_TYPE=Release -DCDMATH_WITH_PYTHON=ON"
+    get_source : "git"
+    git_info:
+    {
+        repo : "https://github.com/mndjinga/CDMATH.git"
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : 
+    [
+        "hdf5", 
+        "numpy", 
+        "MEDCOUPLING"
+    ]
+    build_depend : ["cmake", "swig"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    #install_dir : 'base'
+}
diff --git a/products/CEATESTBASE.pyconf b/products/CEATESTBASE.pyconf
new file mode 100644 (file)
index 0000000..d2e295d
--- /dev/null
@@ -0,0 +1,22 @@
+default :
+{
+    name : "CEATESTBASE"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : "https://codev-tuleap.cea.fr/plugins/git/spns/CEATESTBASE.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        env_script : "ceatest.py"
+    }
+    depend : ["KERNEL"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        not_in_package : "yes"
+    }
+}
diff --git a/products/COMPONENT.pyconf b/products/COMPONENT.pyconf
new file mode 100644 (file)
index 0000000..56428b4
--- /dev/null
@@ -0,0 +1,34 @@
+default :
+{
+    name : "COMPONENT"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/component.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "component.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+              "KERNEL",
+              "MEDCOUPLING",
+              "Python",
+              "qt",
+              "qwt",
+              "CAS",
+              "hdf5",
+              "medfile",
+              "ParaView",
+              "omniORB",
+             ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+       incremental : "yes"
+       is_SALOME_module : "yes"
+    }
+}
diff --git a/products/CONFIGURATION.pyconf b/products/CONFIGURATION.pyconf
new file mode 100755 (executable)
index 0000000..d19df83
--- /dev/null
@@ -0,0 +1,23 @@
+default :
+{
+    name : "CONFIGURATION"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/configuration.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "configuration.git"
+    }
+    environ :
+    {
+        build : {CONFIGURATION_ROOT_DIR : $source_dir}
+    }
+    depend : [ ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    properties :
+    {
+        compilation : "no"
+        configure_dependency : "yes"  # the source of this module is required for the configuration of salome
+        is_SALOME_module : "yes"
+    }
+    patches : []
+}
diff --git a/products/COREFLOWS.pyconf b/products/COREFLOWS.pyconf
new file mode 100644 (file)
index 0000000..2adcf93
--- /dev/null
@@ -0,0 +1,34 @@
+default :
+{
+    name : "COREFLOWS"
+    build_source : "script"
+    compil_script :  $name + ".sh"
+    get_source : "git"
+    git_info:
+    {
+        repo : "https://github.com/mndjinga/CDMATH-CoreFlows.git"
+    }
+    environ :
+    {
+       COUCOU : "$KERNEL_ROOT_DIR/bin"
+       env_script : $name + ".py"
+    }
+    depend : 
+    [   
+        'hdf5', 
+        'numpy', 
+        'KERNEL',
+        'GUI',
+        'petsc', 
+        'CDMATH'
+    ]
+    build_depend : ["cmake", "swig"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        environment : "salome"
+    }
+}
diff --git a/products/COREFLOWS_PROFILE.pyconf b/products/COREFLOWS_PROFILE.pyconf
new file mode 100644 (file)
index 0000000..33c7e5a
--- /dev/null
@@ -0,0 +1,19 @@
+default :
+{
+    name : "COREFLOWS_PROFILE"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : "/home/salome/GitRepo/" + $name + ".git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+    }
+    depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+}
+
diff --git a/products/Cython.pyconf b/products/Cython.pyconf
new file mode 100755 (executable)
index 0000000..d1abce2
--- /dev/null
@@ -0,0 +1,57 @@
+default :
+{
+    name : "Cython"
+    build_source : "script"
+    compil_script : 'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-Cython"]
+        rpm_dev : []
+        apt : ["python3-pytest-cython"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+        incremental : "yes"
+        pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "Cython-" + $APPLICATION.products.Cython + "_windows.tar.gz"}
+}
+
+version_0_29_12_win_dbg :
+{
+    name : "Cython"
+    build_source : "script"
+    compil_script : 'cython.bat'
+    get_source : "archive"
+    archive_info:
+    {
+        archive_name : "Cython-0.29.12_windows.tar.gz"
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        incremental : "yes"
+        pip : "no"
+    }
+}
diff --git a/products/DOCUMENTATION.pyconf b/products/DOCUMENTATION.pyconf
new file mode 100644 (file)
index 0000000..f92101e
--- /dev/null
@@ -0,0 +1,31 @@
+default :
+{
+    name : "DOCUMENTATION"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/documentation.git "
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "documentation.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+             "KERNEL", 
+             "Sphinx", 
+             "Python", 
+             "docutils", 
+             "setuptools", 
+             "six", 
+             "pytz", 
+             "markupsafe" 
+             ]
+    build_depend : ["cmake", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties :    
+    {
+        is_SALOME_module : "yes"
+    }
+}
diff --git a/products/EFICAS.pyconf b/products/EFICAS.pyconf
new file mode 100644 (file)
index 0000000..affd685
--- /dev/null
@@ -0,0 +1,57 @@
+default :
+{
+    name : "EFICAS"
+    build_source : "cmake"
+    
+    cmake_options : "-DSALOME_GUI_BUILD_WITH_QT5:BOOL=ON"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "eficas.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "eficas.git"
+    }
+    environ :
+    {
+      EFICAS_ROOT : $install_dir
+      SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "eficas"
+    }
+    depend : ["KERNEL","GUI","EFICAS_TOOLS"]
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests : "no"
+        incremental : 'yes'
+    }
+}
+
+default_win:
+{
+    cmake_options : " -DSALOME_GUI_BUILD_WITH_QT5:BOOL=ON  -DPYTHON_ROOT_DIR=%PYTHON_ROOT_DIR:\=/% -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/% -DPYTHON_INCLUDE_PATH:STRING=%PYTHON_ROOT_DIR:\=/%/include -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib"
+}
+
+version_7_2_0 :
+{
+    name : "EFICAS"
+    build_source : "script"
+    compil_script :  $name + ".sh"
+    get_source : "archive"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "eficas_tools.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "eficas.git"
+    }
+    environ :
+    {
+      env_script : $name + ".py"
+    }
+    depend : ['Python', 'PyQt']
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
+
diff --git a/products/EFICAS_TOOLS.pyconf b/products/EFICAS_TOOLS.pyconf
new file mode 100644 (file)
index 0000000..5e4d26f
--- /dev/null
@@ -0,0 +1,31 @@
+default :
+{
+    name : "EFICAS_TOOLS"
+    build_source : "cmake"
+    cmake_options : "-DPYTHON_EXECUTABLE=${PYTHONBIN}  -DWITH_TELEMAC_CATA=ON  -DBUILD_DOC=ON"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "eficas_tools.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "eficas_tools.git"
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['PyQt', 'Sphinx']
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+        incremental : "yes"
+    }
+}
+
+default_win :
+{
+    build_source : "cmake"
+    cmake_options : ' -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/%  -DWITH_TELEMAC_CATA=ON -DSALOME_GUI_BUILD_WITH_QT5:BOOL=ON -DBUILD_DOC=ON -DPYTHON_ROOT_DIR=%PYTHON_ROOT_DIR:\=/%   -DPYTHON_INCLUDE_PATH:STRING=%PYTHON_ROOT_DIR:\=/%/include -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib -DPYUIC5=%PYUIC5:\=/%'
+}
diff --git a/products/FIELDS.pyconf b/products/FIELDS.pyconf
new file mode 100755 (executable)
index 0000000..23cd0af
--- /dev/null
@@ -0,0 +1,62 @@
+default :
+{
+    name : "FIELDS"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/med.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "med.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "fields"
+    }
+    depend : [
+      "GUI", 
+      "KERNEL", 
+      "MEDCOUPLING"
+    ]
+    opt_depend : [
+      "Pillow"
+    ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+default_MPI :
+{
+    name : "FIELDS"
+    build_source : "cmake"
+    cmake_options : "-DSALOME_USE_MPI=ON -DMEDCOUPLING_USE_64BIT_IDS=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/med.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "med.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "fields"
+    }
+    depend : [
+      "GUI", 
+      "KERNEL", 
+      "MEDCOUPLING",
+      "openmpi"
+             ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
diff --git a/products/GEOM.pyconf b/products/GEOM.pyconf
new file mode 100644 (file)
index 0000000..40df241
--- /dev/null
@@ -0,0 +1,88 @@
+default :
+{
+    name : "GEOM"
+    build_source : "cmake"
+    #About the use of OpenCV, see spns #7996
+    cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_GEOM_USE_OPENCV=ON"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/geom.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "geom.git"
+    }
+    environ :
+    {
+        PARALLEL_VISU : "1"
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "geom"
+        GEOM_PluginsList : "BREPPlugin:STEPPlugin:IGESPlugin:STLPlugin:XAOPlugin:VTKPlugin:AdvancedGEOM"
+        CSF_ShHealingDefaults : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "geom"
+    }
+    depend : ["KERNEL",
+              "GUI",
+              "boost",
+              "CAS",
+              "Python",
+              "hdf5",
+              "omniORB",
+              "qt",
+              "ParaView",
+              "docutils",
+              "Sphinx",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "opencv",
+              "six",
+              "pytz"
+             ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        incremental : "yes"
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+
+default_win :
+{
+    cmake_options : " -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe -DSALOME_GEOM_USE_OPENCV=ON -DOPENCV_ROOT_DIR=%OPENCV_ROOT_DIR:\=/% -DOpenCV_INCLUDE_DIRS=%OpenCV_INCLUDE_DIRS:\=/% "
+}
+
+_from_8_5_0_to_9_2_1 :  # these versions requires the path geom_8.5.0_xao_data_dir.patch (for salome test)
+{
+    patches : [
+              "geom_8.5.0_xao_data_dir.patch" 
+              ]
+}
+
+version_V6_6_0 :
+{
+    build_source : "autotools"
+    cmake_options : ""
+    get_source : "git"
+    environ :
+    {
+    }
+    depend : ["KERNEL",
+              "GUI",
+              "boost",
+              "CAS",
+              "Python",
+              "hdf5",
+              "omniORB",
+              "qt",
+              "ParaView",
+              "docutils",
+              "Sphinx",
+              "Jinja2",
+              "setuptools",
+              "Pygments"
+             ]
+    nb_proc : 1
+}
diff --git a/products/GHS3DPLUGIN.pyconf b/products/GHS3DPLUGIN.pyconf
new file mode 100644 (file)
index 0000000..310d01f
--- /dev/null
@@ -0,0 +1,78 @@
+default :
+{
+    name : "GHS3DPLUGIN"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/ghs3dplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "ghs3dplugin.git"
+    }
+    environ :
+    {
+        _SMESH_MeshersList : "GHS3DPlugin"
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "ghs3dplugin"
+    }
+    depend : [
+             "KERNEL",
+             "MEDCOUPLING", 
+             "GEOM", 
+             "SMESH",
+             "Python", 
+             "qt", 
+             "boost", 
+             "CAS", 
+             "hdf5", 
+             "omniORB", 
+             "docutils", 
+             "ParaView", 
+             "MeshGems" 
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+version_V6_6_0 :
+{
+    name : "GHS3DPLUGIN"
+    build_source : "autotools"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/ghs3dplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "ghs3dplugin.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+             "KERNEL",
+             "MED", 
+             "GEOM", 
+             "SMESH",
+             "Python", 
+             "qt", 
+             "boost", 
+             "CAS", 
+             "hdf5", 
+             "omniORB", 
+             "docutils", 
+             "ParaView", 
+             "MeshGems" 
+              ]
+    build_depend : ["swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+} 
+
diff --git a/products/GHS3DPRLPLUGIN.pyconf b/products/GHS3DPRLPLUGIN.pyconf
new file mode 100644 (file)
index 0000000..af95bfa
--- /dev/null
@@ -0,0 +1,40 @@
+default :
+{
+    name : "GHS3DPRLPLUGIN"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/ghs3dprlplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "ghs3dprlplugin.git"
+    }
+    environ :
+    {
+        _SMESH_MeshersList : "GHS3DPRLPlugin"
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "ghs3dprlplugin"
+    }
+    depend : [
+             "KERNEL",
+             "MEDCOUPLING",
+             "GEOM",
+             "SMESH",
+             "Python",
+             "qt",
+             "boost",
+             "CAS",
+             "omniORB",
+             "hdf5",
+             "medfile",
+             "libxml2",
+             "docutils",
+             "ParaView"
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
diff --git a/products/GMSHPLUGIN.pyconf b/products/GMSHPLUGIN.pyconf
new file mode 100644 (file)
index 0000000..eef7865
--- /dev/null
@@ -0,0 +1,95 @@
+default :
+{
+    name : "GMSHPLUGIN"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/gmshplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gmshplugin.git"
+    }
+    environ :
+    {
+        _SMESH_MeshersList : "GMSHPlugin"
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "gmshplugin"
+    }
+    depend : [
+              "KERNEL", 
+              "GUI",  
+              "SMESH",
+              "gmsh", 
+              "boost", 
+              "Python"
+              ]
+    build_depend : ["cmake", "swig", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
+
+
+version_8_1_0_to_9_1_0 :
+{
+    name : "GMSHPLUGIN"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/gmshplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gmshplugin.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+       "KERNEL", 
+       "GUI",  
+       "SMESH",
+       "MED",
+       "gmsh", 
+       "boost", 
+       "Python"
+              ]
+    build_depend : ["cmake", "swig", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
+
+version_V7_8_0 :
+{
+    name : "GMSHPLUGIN"
+    build_source : "autotools"
+    get_source : "git"
+    nb_proc : 4
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/gmshplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gmshplugin.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+       "KERNEL", 
+       "GUI",  
+       "SMESH",
+       "MED",
+       "gmsh", 
+       "boost", 
+       "Python"
+              ]
+    build_depend : ["cmake", "swig", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
diff --git a/products/GUI.pyconf b/products/GUI.pyconf
new file mode 100644 (file)
index 0000000..a54ce60
--- /dev/null
@@ -0,0 +1,289 @@
+default :
+{
+    name : "GUI"
+    build_source : "cmake"
+    cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSIP_INCLUDE_DIR=${SIP_ROOT_DIR}"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/gui.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gui.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "gui"
+    }
+    depend : ["KERNEL",
+              "Python",
+              "qt",
+              "sip",
+              "PyQt",
+              "boost",
+              "CAS",
+              "qwt",
+              "hdf5",
+              "freetype",
+              "freeimage",
+              "ParaView",
+              "omniORB",
+              "docutils",
+              "libxml2",
+              "sphinxintl",
+              "sphinxcontrib_napoleon"
+           ]
+    opt_depend : ["sphinx_rtd_theme"]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        incremental : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+    patches : []
+}
+
+default_win :
+{
+    cmake_options : " -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe -DSALOME_BUILD_WITH_QT5:BOOL=ON "
+    depend : ["KERNEL",
+              "Python",
+              "qt",
+              "sip",
+              "PyQt",
+              "boost",
+              "CAS",
+              "qwt",
+              "hdf5",
+              "freetype",
+              "freeimage",
+              "ParaView",
+              "omniORB",
+              "docutils",
+              "libxml2",
+              "sphinxintl",
+              "sphinxcontrib_websupport",
+              "sphinxcontrib_applehelp",
+              "sphinxcontrib_serializinghtml",
+              "sphinxcontrib_napoleon"
+             ]
+    opt_depend : ["sphinx_rtd_theme"]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+
+}
+
+version_8_5_0_to_9_4_0 :
+{
+    depend : ["KERNEL",
+              "Python",
+              "qt",
+              "sip",
+              "PyQt",
+              "boost",
+              "CAS",
+              "qwt",
+              "hdf5",
+              "freetype",
+              "freeimage",
+              "gl2ps",
+              "ParaView",
+              "omniORB",
+              "docutils",
+              "libxml2",
+              "sphinxintl",
+              "sphinxcontrib_napoleon"
+           ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+}
+
+version_9_4_0_win:
+{
+    depend : ["KERNEL",
+              "Python",
+              "qt",
+              "sip",
+              "PyQt",
+              "boost",
+              "CAS",
+              "qwt",
+              "hdf5",
+              "freetype",
+              "freeimage",
+              "gl2ps",
+              "ParaView",
+              "omniORB",
+              "docutils",
+              "libxml2",
+              "sphinxintl",
+              "sphinxcontrib_websupport",
+              "sphinxcontrib_applehelp",
+              "sphinxcontrib_serializinghtml",
+              "sphinxcontrib_napoleon"
+             ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+}
+
+# OP 19/04/2018 Add section for SALOME 7.8.0 to 8.4.0 due to new dependencies in SALOME 8.5.0
+version_7_8_0_to_8_4_0 :
+{
+    name : "GUI"
+    build_source : "cmake"
+    cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/gui.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gui.git"
+    }
+    environ :
+    {
+    }
+    depend : ["KERNEL",
+              "Python",
+              "qt",
+              "sip",
+              "PyQt",
+              "boost",
+              "CAS",
+              "qwt",
+              "hdf5",
+              "freetype",
+              "freeimage",
+              "gl2ps",
+              "ParaView",
+              "omniORB",
+              "docutils",
+              "libxml2"
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+version_python_async :
+{
+    name : "GUI"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/gui.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gui.git"
+    }
+    environ :
+    {
+    }
+    depend : ["KERNEL",
+              "Python",
+              "qt",
+              "sip",
+              "PyQt",
+              "boost",
+              "CAS",
+              "qwt",
+              "hdf5",
+              "freetype",
+              "freeimage",
+              "gl2ps",
+              "ParaView",
+              "omniORB",
+              "docutils",
+              "libxml2"
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    patches : [
+               "GUI_Python_async.patch" 
+    ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+version_oscar :
+{
+    name : "GUI"
+    build_source : "cmake"
+    cmake_options : "-DSALOME_USE_VTKVIEWER=OFF -DSALOME_USE_PVVIEWER=OFF"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/gui.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gui.git"
+    }
+    environ :
+    {
+    }
+    depend : ["KERNEL",
+              "Python",
+              "qt",
+              "sip",
+              "PyQt",
+              "boost",
+              "CAS",
+              "qwt",
+              "hdf5",
+              "freetype",
+              "freeimage",
+              "gl2ps",
+              "omniORB",
+              "docutils",
+              "libxml2"
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+version_V6_6_0 :
+{
+    name : "GUI"
+    build_source : "autotools"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/gui.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "gui.git"
+    }
+    environ :
+    {
+    }
+    depend : ["KERNEL",
+              "Python",
+              "qt",
+              "sip",
+              "PyQt",
+              "boost",
+              "CAS",
+              "qwt",
+              "hdf5",
+              "freetype",
+              "freeimage",
+              "gl2ps",
+              "ParaView",
+              "omniORB",
+              "docutils",
+              "libxml2"]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
diff --git a/products/HELLO.pyconf b/products/HELLO.pyconf
new file mode 100644 (file)
index 0000000..b39d6f7
--- /dev/null
@@ -0,0 +1,32 @@
+default :
+{
+    name : "HELLO"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/hello.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hello.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "hello"
+    }
+    depend : [
+                "KERNEL",
+                "GUI", 
+                "boost", 
+                "CAS", 
+                "Python", 
+                "qt", 
+                "omniORB", 
+             ]
+    build_depend : ["cmake", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+    }
+}
diff --git a/products/HEXABLOCK.pyconf b/products/HEXABLOCK.pyconf
new file mode 100644 (file)
index 0000000..7287c29
--- /dev/null
@@ -0,0 +1,92 @@
+default :
+{
+    name : "HEXABLOCK"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/hexablock.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hexablock.git"
+    }
+    environ :
+    {
+        _SMESH_MeshersList : "HEXABLOCKPlugin"
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "hexablock"
+    }
+    depend : [
+             "KERNEL", 
+             "GUI", 
+             "GEOM",
+             "boost", 
+             "CAS", 
+             "Python", 
+             "omniORB", 
+             "qt", 
+             "ParaView", 
+             "docutils", 
+             "libxml2", 
+             "Sphinx", 
+             "Jinja2", 
+             "setuptools", 
+             "Pygments", 
+             "six", 
+             "pytz",    
+             "markupsafe" 
+              ]
+    build_depend : ["cmake", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+} 
+
+default_MPI :
+{
+    name : "HEXABLOCK"
+    build_source : "cmake"
+    cmake_options : "-DSALOME_USE_MPI=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/hexablock.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hexablock.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+             "KERNEL", 
+             "GUI", 
+             "GEOM",
+             "boost", 
+             "CAS", 
+             "Python", 
+             "omniORB", 
+             "qt", 
+             "ParaView", 
+             "docutils", 
+             "libxml2", 
+             "Sphinx", 
+             "Jinja2", 
+             "setuptools", 
+             "Pygments", 
+             "six", 
+             "pytz",    
+             "markupsafe",
+             "openmpi"
+              ]
+    build_depend : ["cmake", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+} 
+
diff --git a/products/HEXABLOCKPLUGIN.pyconf b/products/HEXABLOCKPLUGIN.pyconf
new file mode 100644 (file)
index 0000000..76c4fe5
--- /dev/null
@@ -0,0 +1,39 @@
+default :
+{
+    name : "HEXABLOCKPLUGIN"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/hexablockplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hexablockplugin.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "hexablock"
+    }
+    depend : [
+       "KERNEL", 
+       "GUI", 
+       "GEOM", 
+       "MEDCOUPLING", 
+       "SMESH", 
+       "HEXABLOCK", 
+       "Python", 
+       "qt", 
+       "boost", 
+       "CAS", 
+       "hdf5", 
+       "omniORB", 
+       "ParaView"
+              ]
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+} 
+
diff --git a/products/HOMARD.pyconf b/products/HOMARD.pyconf
new file mode 100644 (file)
index 0000000..21922eb
--- /dev/null
@@ -0,0 +1,29 @@
+default :
+{
+    name : "HOMARD"
+    build_source : "cmake"
+    cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/homard.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "homard.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "homard"
+    }
+    depend : [ 
+      "SMESH", 
+      "homard_bin" 
+              ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+} 
+
diff --git a/products/HXX2SALOME.pyconf b/products/HXX2SALOME.pyconf
new file mode 100644 (file)
index 0000000..dff9278
--- /dev/null
@@ -0,0 +1,24 @@
+default :
+{
+    name : "HXX2SALOME"
+    build_source : "autotools"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/hxx2salome.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hxx2salome.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+              "qt"
+             ]
+    build_depend : ["cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
diff --git a/products/HYBRIDPLUGIN.pyconf b/products/HYBRIDPLUGIN.pyconf
new file mode 100644 (file)
index 0000000..3db881c
--- /dev/null
@@ -0,0 +1,41 @@
+default :
+{
+    name : "HYBRIDPLUGIN"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/hybridplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hybridplugin.git"
+    }
+    environ :
+    {
+        _SMESH_MeshersList : "HYBRIDPlugin"
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "hybridplugin"
+    }
+    depend : [
+             "KERNEL",
+             "MEDCOUPLING", 
+             "GEOM", 
+             "SMESH",
+             "BLSURFPLUGIN",
+             "NETGENPLUGIN",
+             "Python",
+             "qt", 
+             "boost", 
+             "CAS",  
+             "hdf5",  
+             "omniORB",  
+             "docutils",  
+             "ParaView",  
+             "MeshGems" 
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+} 
diff --git a/products/Hexotic.pyconf b/products/Hexotic.pyconf
new file mode 100644 (file)
index 0000000..85ae8c9
--- /dev/null
@@ -0,0 +1,22 @@
+version_1_0 :
+{
+    name : "Hexotic"
+    build_source : "script"
+    compil_script : "Hexotic.sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    build_depend : ["swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : "base"
+    properties :
+    {
+        is_distene : "yes"
+        licence : "dlim8.var.py"
+    }
+} 
+
diff --git a/products/HexoticPLUGIN.pyconf b/products/HexoticPLUGIN.pyconf
new file mode 100644 (file)
index 0000000..b0c4c06
--- /dev/null
@@ -0,0 +1,39 @@
+default :
+{
+    name : "HexoticPLUGIN"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/hexoticplugin.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "hexoticplugin.git"
+    }
+    environ :
+    {
+        _SMESH_MeshersList : "HexoticPLUGIN"
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "hexoticplugin"
+    }
+    depend : [
+             "KERNEL",
+             "MEDCOUPLING", 
+             "GEOM", 
+             "SMESH",
+             "Python",  
+             "qt",  
+             "boost",  
+             "CAS",  
+             "hdf5",  
+             "omniORB",  
+             "docutils", 
+             "ParaView",  
+             "MeshGems" 
+              ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+} 
+
diff --git a/products/JOBMANAGER.pyconf b/products/JOBMANAGER.pyconf
new file mode 100644 (file)
index 0000000..2aaf802
--- /dev/null
@@ -0,0 +1,82 @@
+default :
+{
+    name : "JOBMANAGER"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/jobmanager.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "jobmanager.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "jobmanager"
+    }
+    depend : [
+             "LIBBATCH", 
+             "KERNEL", 
+             "GUI", 
+             "Python",
+             "qt", 
+             "omniORB",
+             "boost", 
+             "Sphinx", 
+             "Jinja2", 
+             "setuptools", 
+             "Pygments", 
+             "docutils", 
+             "six", 
+             "pytz", 
+             "markupsafe"
+             ]
+    build_depend : ["cmake", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+    }
+}
+
+default_MPI :
+{
+    name : "JOBMANAGER"
+    build_source : "cmake"
+    cmake_options : "-DSALOME_USE_MPI=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/jobmanager.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "jobmanager.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+             "LIBBATCH", 
+             "KERNEL", 
+             "GUI", 
+             "Python",
+             "qt", 
+             "omniORB",
+             "boost", 
+             "Sphinx", 
+             "Jinja2", 
+             "setuptools", 
+             "Pygments", 
+             "docutils", 
+             "six", 
+             "pytz", 
+             "markupsafe",
+             "openmpi"
+              ]
+    build_depend : ["cmake", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+    }
+}
diff --git a/products/Jinja2.pyconf b/products/Jinja2.pyconf
new file mode 100644 (file)
index 0000000..6a370d5
--- /dev/null
@@ -0,0 +1,38 @@
+default :
+{
+    name : "Jinja2"
+    build_source : "script"
+    compil_script :  "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-jinja2"]
+        rpm_dev : []
+        apt : ["python3-jinja2"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools', 'markupsafe']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "Jinja2-" + $APPLICATION.products.Jinja2 + "_windows.tar.gz"}
+}
+
+version_2_6 :
+{
+    depend : ['Python', 'setuptools']
+}
diff --git a/products/KERNEL.pyconf b/products/KERNEL.pyconf
new file mode 100644 (file)
index 0000000..25daa5d
--- /dev/null
@@ -0,0 +1,270 @@
+# add sphinxintl to version_7_8_0_to_8_4_0
+default :
+{
+    name : "KERNEL"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/kernel.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "kernel.git"
+    }
+    environ :
+    {          
+    }
+    depend : ["Python",
+              "boost",
+              "cppunit",
+              "numpy",
+              "lapack",
+              "hdf5",
+              "omniORB",
+              "omniORBpy",
+              "docutils",
+              "libxml2",
+              "Sphinx",
+              "sphinxintl",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "pytz",
+              "LIBBATCH"
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    cmake_options : "-DSALOME_USE_LIBBATCH=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_CMAKE_DEBUG=ON"
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+        incremental : "yes"
+    }
+}
+
+default_win :
+{
+    cmake_options : "-DSALOME_USE_LIBBATCH=ON -DCMAKE_GENERATOR=\"Visual Studio 15 2017 Win64\" -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe -DCMAKE_CXX_COMPILER_ARCHITECTURE_ID=x64 -DBOOST_ROOT=%BOOST_ROOT_DIR:\=/% -DBOOST_DEBUG=ON -DBoost_ADDITIONAL_VERSIONS=\"1.67.0\" \"1.67\" -DBOOST_INCLUDEDIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67 -DBOOST_LIBRARYDIR=%BOOST_ROOT_DIR:\=/%/lib "
+    depend : ["Python",
+              "boost",
+              "numpy",
+              "lapack",
+              "hdf5",
+              "omniORB",
+              "omniORBpy",
+              "docutils",
+              "libxml2",
+              "Sphinx",
+              "sphinxintl",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "pytz",
+              "LIBBATCH"
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+}
+
+version_7_8_0_to_8_4_0 :
+{
+    depend : ["Python",
+              "boost",
+              "numpy",
+              "lapack",
+              "hdf5",
+              "omniORB",
+              "omniORBpy",
+              "docutils",
+              "libxml2",
+              "Sphinx",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "pytz",
+              "LIBBATCH"
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    cmake_options : "-DSALOME_USE_LIBBATCH=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
+}
+
+
+# this section is equivalent with version_7_8_0_to_8_4_0, without LIBBATCH
+ALAMOS_SALOME_9 :
+{
+    name : "KERNEL"
+    build_source : "cmake"
+    cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/kernel.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "kernel.git"
+    }
+    environ :
+    {          
+    }
+    depend : ["Python",
+              "boost",
+              "cppunit",
+              "numpy",
+              "lapack",
+              "hdf5",
+              "omniORB",
+              "omniORBpy",
+              "docutils",
+              "libxml2",
+              "Sphinx",
+              "sphinxintl",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "pytz"
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+ALAMOS_SALOME_9_win :
+{
+    name : "KERNEL"
+    build_source : "cmake"
+    cmake_options : " -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe"
+    depend : ["Python",
+              "boost",
+              "numpy",
+              "lapack",
+              "hdf5",
+              "omniORB",
+              "omniORBpy",
+              "docutils",
+              "libxml2",
+              "Sphinx",
+              "sphinxintl",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "pytz",
+              "pthreads"
+            ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/kernel.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "kernel.git"
+    }
+    environ :
+    {
+    }
+}
+
+# this section is equivalent with version_7_8_0_to_8_4_0, without LIBBATCH
+ALAMOS :
+{
+    name : "KERNEL"
+    build_source : "cmake"
+    cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/kernel.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "kernel.git"
+    }
+    environ :
+    {          
+    }
+    depend : ["Python",
+              "boost",
+              "numpy",
+              "lapack",
+              "hdf5",
+              "omniORB",
+              "omniORBpy",
+              "docutils",
+              "libxml2",
+              "Sphinx",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "pytz"
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+# Default section for MPI version, for SALOME-8.5.0-MPI and later 
+# (adding sphinxintl prerequisite to previous MPI section).
+
+default_MPI :
+{
+    cmake_options : "-DSALOME_USE_MPI=ON -DSALOME_USE_LIBBATCH=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    depend : ["Python",
+              "boost",
+              "numpy",
+              "lapack",
+              "hdf5",
+              "omniORB",
+              "omniORBpy",
+              "docutils",
+              "libxml2",
+              "Sphinx",
+              "sphinxintl",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "pytz",
+              "cppunit",
+              "openmpi",
+              "LIBBATCH"
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+}
+
+version_V6_6_0 :
+{
+    name : "KERNEL"
+    build_source : "autotools"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/kernel.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "kernel.git"
+    }
+    environ :
+    {          
+    }
+    depend : ["Python",
+              "boost",
+              "numpy",
+              "hdf5",
+              "omniORB",
+              "omniORBpy",
+              "docutils",
+              "libxml2",
+              "Sphinx",
+              "Jinja2",
+              "setuptools",
+              "Pygments"
+              ]
+    opt_depend : ["LIBBATCH"]
+    build_depend : ["swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
diff --git a/products/LIBBATCH.pyconf b/products/LIBBATCH.pyconf
new file mode 100755 (executable)
index 0000000..100afe5
--- /dev/null
@@ -0,0 +1,31 @@
+default :
+{
+    name : "LIBBATCH"
+    build_source : "cmake"
+    cmake_options : "-DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/libbatch.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "libbatch.git"
+    }
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    depend : [ "Python"]
+    build_depend : ["cmake", "swig", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : "base"
+    properties:
+    {
+        incremental : "yes"
+    }
+}
+
+default_win :
+{
+    cmake_options : '-DCMAKE_GENERATOR="Visual Studio 15 2017 Win64" -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe'
+    depend : [ "Python", "pthreads" ]
+}
diff --git a/products/MED.pyconf b/products/MED.pyconf
new file mode 100755 (executable)
index 0000000..fa24faa
--- /dev/null
@@ -0,0 +1,90 @@
+default :
+{
+    name : "MED"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/med.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "med.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+      "GUI", 
+      "KERNEL", 
+      "MEDCOUPLING" 
+    ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+default_MPI :
+{
+    name : "MED"
+    build_source : "cmake"
+    cmake_options : "-DSALOME_USE_MPI=ON"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/med.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "med.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+      "GUI", 
+      "KERNEL", 
+      "MEDCOUPLING",
+      "openmpi"
+    ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+version_V6_6_0 :
+{
+    name : "MED"
+    build_source : "autotools"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/med.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "med.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+      "medfile",
+      "GUI", 
+      "KERNEL", 
+    ]
+    patches : [
+                #avoid the horrible medmem traces!
+               "med_mode_non_debug.patch" 
+    ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_salome_gui : "yes"
+        has_unit_tests
+    }
+}
+
diff --git a/products/MEDCOUPLING.pyconf b/products/MEDCOUPLING.pyconf
new file mode 100644 (file)
index 0000000..dc75b25
--- /dev/null
@@ -0,0 +1,134 @@
+default :
+{
+    name : "MEDCOUPLING"
+    build_source : "cmake"
+    cmake_options : "-DMEDCOUPLING_ENABLE_PYTHON=ON -DMEDCOUPLING_ENABLE_PARTITIONER=ON -DMEDCOUPLING_ENABLE_RENUMBER=ON -DMEDCOUPLING_PARTITIONER_METIS=ON -DMEDCOUPLING_PARTITIONER_SCOTCH=ON -DMEDCOUPLING_PARTITIONER_PARMETIS=OFF -DMEDCOUPLING_MICROMED=OFF -DMEDCOUPLING_USE_MPI=OFF"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/medcoupling.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "medcoupling.git"
+    }
+    depend : [
+              "boost",
+              "cppunit",
+              "Python",
+              "hdf5",
+              "medfile",
+              "scotch",
+              "metis",
+              "docutils",
+              "libxml2",
+              "Sphinx",
+              "sphinxintl",
+              "setuptools",
+              "six",
+              "pytz",
+              "numpy",
+              "scipy",
+              "lapack",
+              "CONFIGURATION"
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "graphviz", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_unit_tests
+        fhs : "yes"
+        incremental : "yes"
+    }
+}
+
+
+default_win :
+{
+    cmake_options : ' -DMEDCOUPLING_ENABLE_PYTHON=ON -DMEDCOUPLING_ENABLE_PARTITIONER=OFF -DMEDCOUPLING_ENABLE_RENUMBER=ON -DMEDCOUPLING_PARTITIONER_METIS=ON -DMEDCOUPLING_PARTITIONER_SCOTCH=OFF -DMEDCOUPLING_PARTITIONER_PARMETIS=OFF -DMEDCOUPLING_MICROMED=OFF -DMEDCOUPLING_USE_MPI=OFF '
+    depend : [
+              "boost",
+              "Python",
+              "hdf5",
+              "medfile",
+              "metis",
+              "docutils",
+              "libxml2",
+              "Sphinx",
+              "sphinxintl",
+              "setuptools",
+              "six",
+              "pytz",
+              "numpy",
+              "CONFIGURATION"
+              ]
+}
+
+default_int64:
+{ 
+    cmake_options : "-DMEDCOUPLING_ENABLE_PYTHON=ON -DMEDCOUPLING_ENABLE_PARTITIONER=ON -DMEDCOUPLING_ENABLE_RENUMBER=ON -DMEDCOUPLING_PARTITIONER_METIS=ON -DMEDCOUPLING_PARTITIONER_SCOTCH=ON -DMEDCOUPLING_PARTITIONER_PARMETIS=OFF -DMEDCOUPLING_MICROMED=OFF -DMEDCOUPLING_USE_MPI=OFF -DMEDCOUPLING_USE_64BIT_IDS=ON"
+
+}
+
+version_7_8_2_to_8_4_0 :
+{
+    depend : [
+              "boost",
+              "Python",
+              "hdf5",
+              "medfile",
+              "scotch",
+              "metis",
+              "docutils",
+              "libxml2",
+              "Sphinx",
+              "setuptools",
+              "numpy",
+              "scipy",
+              "lapack"
+              "CONFIGURATION"
+              ]
+}
+
+# Default section for MPI version, for SALOME-8.5.0-MPI and later
+default_MPI :
+{
+    cmake_options : "-DMEDCOUPLING_ENABLE_PYTHON=ON -DMEDCOUPLING_ENABLE_PARTITIONER=OFF -DMEDCOUPLING_ENABLE_RENUMBER=ON -DMEDCOUPLING_PARTITIONER_METIS=OFF -DMEDCOUPLING_PARTITIONER_SCOTCH=ON -DMEDCOUPLING_PARTITIONER_PARMETIS=ON -DMEDCOUPLING_MICROMED=OFF -DMEDCOUPLING_USE_MPI=ON -DSALOME_USE_MPI=ON -DMEDCOUPLING_USE_64BIT_IDS=ON -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    depend : [
+              "boost",
+              "Python",
+              "hdf5",
+              "medfile",
+              "scotch",
+              "docutils",
+              "libxml2",
+              "ParMetis",
+              "Sphinx",
+              "sphinxintl",
+              "setuptools",
+              "six",
+              "pytz",
+              "numpy",
+              "scipy",
+              "lapack",
+              "openmpi",
+              "cppunit",
+              "CONFIGURATION"
+              ]
+}
+
+version_V7_8_0 :
+{
+    cmake_options : "-DMEDCOUPLING_ENABLE_PARTITIONER=OFF -DMEDCOUPLING_PARTITIONER_METIS=OFF -DMEDCOUPLING_PARTITIONER_SCOTCH=OFF"
+    depend : [
+              "boost",
+              "Python",
+              "hdf5",
+              "medfile",
+              "libxml2",
+              "Sphinx",
+              "setuptools",
+              "numpy",
+              "scipy",
+              "lapack"
+              ]
+}
diff --git a/products/MeshGems.pyconf b/products/MeshGems.pyconf
new file mode 100644 (file)
index 0000000..dad3860
--- /dev/null
@@ -0,0 +1,45 @@
+default :
+{
+    name : "MeshGems"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    opt_depend : ['openmpi']
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      is_distene : "yes"
+      licence : "dlim8.var.py"
+      incremental : "yes"
+    }
+}
+
+
+default_win :
+{
+   archive_info : {archive_name : "MeshGems-" + $APPLICATION.products.MeshGems + "_windows.tar.gz"}
+    properties :
+    {
+      is_distene : "yes"
+      licence : "dlim8.var.py"
+      incremental : "yes"
+      single_install_dir : "yes" # aimed to solve sat #18914
+    }
+}
+
+version_2_9_6 :
+{
+}
+
+version_2_9_6_win :
+{
+   archive_info : {archive_name : "MeshGems_V2.9.6_windows.tar.gz"}
+}
\ No newline at end of file
diff --git a/products/NETGENPLUGIN.pyconf b/products/NETGENPLUGIN.pyconf
new file mode 100755 (executable)
index 0000000..1a753f6
--- /dev/null
@@ -0,0 +1,90 @@
+default :
+{
+    name : "NETGENPLUGIN"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "plugins/netgenplugin.git "
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "netgenplugin.git "
+    }
+    environ :
+    {
+        _SMESH_MeshersList : "NETGENPlugin"
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "netgenplugin"
+    }
+    depend : [
+             "KERNEL",
+             "MEDCOUPLING",
+             "GEOM",
+             "SMESH",
+             "Python",
+             "qt",
+             "boost",
+             "CAS",
+             "freeimage",
+             "hdf5",
+             "medfile",
+             "omniORB",
+             "docutils",
+             "netgen",
+             "ParaView",
+             "six",
+             "pytz"
+              ]
+    build_depend : ["swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        incremental : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+default_win :
+{
+       cmake_options : " -DZLIB_LIBRARY=%ZLIB_BIN:\=/%  -DZLIB_INCLUDE_DIR=%ZLIB_INCLUDE_DIR:\=/%  -DCMAKE_GENERATOR=\"Visual Studio 15 2017 Win64\" "
+    depend : [
+             "KERNEL",
+             "MEDCOUPLING",
+             "GEOM",
+             "SMESH",
+             "Python",
+             "qt",
+             "boost",
+             "CAS",
+             "freeimage",
+             "hdf5",
+             "medfile",
+             "omniORB",
+             "docutils",
+             "netgen",
+             "ParaView",
+             "six",
+             "pytz",
+             "zlib"
+              ]
+}
+
+version_V6_6_0 :
+{
+    build_source : "autotools"
+    depend : [
+             "KERNEL",
+             "GEOM",
+             "SMESH",
+             "Python",
+             "qt",
+             "boost",
+             "CAS",
+             "freeimage",
+             "hdf5",
+             "medfile",
+             "omniORB",
+             "docutils",
+             "netgen",
+             "ParaView"
+             ]
+}
diff --git a/products/PARAVIS.pyconf b/products/PARAVIS.pyconf
new file mode 100644 (file)
index 0000000..10bc493
--- /dev/null
@@ -0,0 +1,216 @@
+default :
+{
+    name : "PARAVIS"
+    build_source : "cmake"
+    cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=ON -DSALOME_PARAVIS_USE_SMESH_SOURCE=ON -DBUILD_TESTING=ON"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/paravis.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "paravis.git"
+    }
+    environ :
+    {
+        _PV_PLUGIN_PATH : $install_dir + $VARS.sep + "lib" + $VARS.sep + "paraview"
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "paravis"
+    }
+    depend : [
+       "KERNEL",
+       "GUI",
+       "MEDCOUPLING",
+       "FIELDS",
+       "GEOM",
+       "SMESH",
+       "Python",
+       "qt",
+       "boost",
+       "hdf5",
+       "medfile",
+       "ParaView",
+       "CAS",
+       "omniORB",
+       "docutils",
+       "libxml2",
+       "six",
+       "pytz"
+    ]
+    opt_depend : []
+    build_depend : ["cmake", "swig", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        incremental : "yes"
+    }
+}
+
+default_win:
+{
+    depend : [
+       "KERNEL",
+       "GUI",
+       "MEDCOUPLING",
+       "FIELDS",
+       "GEOM",
+       "SMESH",
+       "Python",
+       "qt",
+       "boost",
+       "hdf5",
+       "medfile",
+       "ParaView",
+       "CAS",
+       "omniORB",
+       "docutils",
+       "libxml2",
+       "six",
+       "pytz",
+    ]
+}
+
+default_MPI :
+{
+    cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=ON -DSALOME_PARAVIS_USE_SMESH_SOURCE=ON -DMEDCOUPLING_USE_MPI=ON -DSALOME_USE_MPI=ON  -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    depend : [
+       "KERNEL",
+       "GUI",
+       "MEDCOUPLING",
+       "FIELDS",
+       "GEOM",
+       "SMESH",
+       "Python",
+       "qt",
+       "boost",
+       "hdf5",
+       "medfile",
+       "ParaView",
+       "CAS",
+       "omniORB",
+       "docutils",
+       "libxml2",
+       "six",
+       "pytz",
+       "openmpi"
+    ]
+}
+
+version_7_8_0_to_9_1_0 :
+{
+    depend : [
+       "KERNEL",
+       "GUI",
+       "MEDCOUPLING",
+       "MED",
+       "GEOM",
+       "SMESH",
+       "Python",
+       "qt",
+       "boost",
+       "hdf5",
+       "medfile",
+       "ParaView",
+       "CAS",
+       "omniORB",
+       "docutils",
+       "libxml2",
+       "six",
+       "pytz"
+    ]
+}
+
+version_9_5_0_MPI :
+{
+    cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=ON -DSALOME_PARAVIS_USE_SMESH_SOURCE=ON -DMEDCOUPLING_USE_MPI=ON -DSALOME_USE_MPI=ON  -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++ DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    patches : ['PARAVIS-MEDReader-CMakeLists.patch'] # backporting bos #20031 
+    depend : [
+       "KERNEL",
+       "GUI",
+       "MEDCOUPLING",
+       "FIELDS",
+       "GEOM",
+       "SMESH",
+       "Python",
+       "qt",
+       "boost",
+       "hdf5",
+       "medfile",
+       "ParaView",
+       "CAS",
+       "omniORB",
+       "docutils",
+       "libxml2",
+       "six",
+       "pytz",
+       "openmpi"
+    ]
+}
+
+version_8_5_0_MPI :
+{
+    cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=ON -DSALOME_PARAVIS_USE_SMESH_SOURCE=ON -DMEDCOUPLING_USE_MPI=ON -DSALOME_USE_MPI=ON"
+    depend : [
+       "KERNEL",
+       "GUI",
+       "MEDCOUPLING",
+       "MED",
+       "GEOM",
+       "SMESH",
+       "Python",
+       "qt",
+       "boost",
+       "hdf5",
+       "medfile",
+       "ParaView",
+       "CAS",
+       "omniORB",
+       "docutils",
+       "libxml2",
+       "six",
+       "pytz"
+    ]
+    patches : ["paravis_8_3_mpi_medinclude.patch"]
+}
+
+version_V6_6_0 :
+{
+    cmake_options : ""
+    depend : [
+       "KERNEL",
+       "GUI",
+       "MED",
+       "Python",
+       "qt",
+       "boost",
+       "hdf5",
+       "medfile",
+       "ParaView",
+       "CAS",
+       "omniORB",
+       "docutils",
+       "libxml2"
+    ]
+}
+
+version_alamos :
+{
+    cmake_options : "-DSALOME_PARAVIS_USE_GEOM_SOURCE=OFF -DSALOME_PARAVIS_USE_SMESH_SOURCE=OFF"
+    depend : [
+       "KERNEL",
+       "GUI",
+       "MEDCOUPLING",
+       "Python",
+       "qt",
+       "boost",
+       "hdf5",
+       "medfile",
+       "ParaView",
+       "CAS",
+       "omniORB",
+       "docutils",
+       "libxml2",
+       "six",
+       "pytz"
+    ]
+}
diff --git a/products/PY2CPP.pyconf b/products/PY2CPP.pyconf
new file mode 100644 (file)
index 0000000..e586468
--- /dev/null
@@ -0,0 +1,35 @@
+default :
+{
+    name : "PY2CPP"
+    build_source : "cmake"
+
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "py2cpp.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "py2cpp.git"
+    }
+    environ :
+    {
+        PY2CPP_ROOT_DIR : $install_dir
+    }
+    depend : [
+              "CONFIGURATION",
+              "Python",
+              "KERNEL"
+             ]
+    build_depend : ["cmake", "cppunit"]
+
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+#    cmake_options : " -DPYTHON_ROOT_DIR=%PYTHON_ROOT_DIR:\=/% -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/% -DPYTHON_INCLUDE_PATH=%PYTHON_INCLUDE:\=/% -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/lib/libpython%PYTHON_VERSION%.lib"
+    cmake_options : " -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/% -DPYTHON_INCLUDE_PATH=%PYTHON_INCLUDE:\=/% -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/libs/libpython%PYTHON_VERSION%.lib"
+}
diff --git a/products/PYCALCULATOR.pyconf b/products/PYCALCULATOR.pyconf
new file mode 100644 (file)
index 0000000..4c18ce7
--- /dev/null
@@ -0,0 +1,42 @@
+default :
+{
+    name : "PYCALCULATOR"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/pycalculator.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "pycalculator.git"
+    }
+    environ :
+    {
+    }
+    depend : [
+        "KERNEL",
+        "MEDCOUPLING",
+        "FIELDS",
+        "Python",
+        "medfile",
+        "omniORB",
+    ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+       incremental : "yes"
+       is_SALOME_module : "yes"
+    }
+}
+
+version_6_6_0_to_9_1_0 :
+{
+    depend : [
+        "KERNEL",
+        "MEDCOUPLING",
+        "MED",
+        "Python",
+        "medfile",
+        "omniORB",
+    ]
+}
diff --git a/products/PYHELLO.pyconf b/products/PYHELLO.pyconf
new file mode 100644 (file)
index 0000000..2df58fd
--- /dev/null
@@ -0,0 +1,31 @@
+default :
+{
+    name : "PYHELLO"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/pyhello.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "pyhello.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "pyhello"
+    }
+    depend : [
+                "KERNEL", 
+                "GUI",  
+                "Python", 
+                "omniORB", 
+                "qt", 
+                "boost" 
+             ]
+    build_depend : ["cmake", "doxygen", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+    }
+}
diff --git a/products/ParMetis.pyconf b/products/ParMetis.pyconf
new file mode 100644 (file)
index 0000000..692de89
--- /dev/null
@@ -0,0 +1,24 @@
+default :
+{
+    name : "ParMetis"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    opt_depend : ["openmpi"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
+version_3_1_1 :
+{
+    compil_script :  "ParMetis-3.sh"
+}
diff --git a/products/ParaView.pyconf b/products/ParaView.pyconf
new file mode 100755 (executable)
index 0000000..a607f07
--- /dev/null
@@ -0,0 +1,339 @@
+default :
+{
+    name : "ParaView"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'libxml2',
+              'freetype',
+              'matplotlib',
+              'cgns',
+              'Pygments'
+              ]
+    opt_depend : ['openmpi', 'ospray','tbb']
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+    }
+}
+
+version_5_8_0 :
+{
+    archive_info : {archive_name : "ParaView-5.8.0-lata.tar.gz"}
+    # two other LATA patches already included in archive
+    patches : ['paraview.0003-ParaViewClient.patch',
+               'paraview.0004-ParaView_hdf5.patch',
+               'paraview.0005-ParaView_find_cgns.patch',
+               'paraview.0006-ParaView_find_libxml2.patch',
+               'paraview.0007-ParaView_find_freetype.patch',
+               'paraview.0009-ParaView_volume_mapper.patch',
+               'pv_coincident.patch'
+              ]
+}
+
+version_5_8_0_win :
+{
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'libxml2',
+              'freetype',
+              'matplotlib',
+              'cgns',
+              'Pygments',
+              'pthreads',
+              'zlib'
+             ]
+    patches : ['paraview.0003-ParaViewClient.patch',
+               'paraview.0004-ParaView_hdf5.patch',
+               'paraview.0005-ParaView_find_cgns.patch',
+               'paraview.0006-ParaView_find_libxml2.patch',
+               'paraview.0007-ParaView_find_freetype.patch',
+               'paraview.0008-ParaView_find_zlib.patch',
+               'paraview.0009-ParaView_volume_mapper.patch',
+               'pv_coincident.patch'
+              ]
+}
+
+version_5_8_0_MPI :
+{
+    archive_info : {archive_name : "ParaView-5.8.0-lata.tar.gz"}
+    # two other LATA patches already included in archive
+    patches : ['paraview.0003-ParaViewClient.patch',
+               'paraview.0004-ParaView_hdf5.patch',
+               'paraview.0005-ParaView_find_cgns.patch',
+               'paraview.0006-ParaView_find_libxml2.patch',
+               'paraview.0007-ParaView_find_freetype.patch',
+               'paraview.0009-ParaView_volume_mapper.patch',
+               'paraview.0010-VTKM_MPI.patch',
+               'pv_coincident.patch'
+              ]
+}
+
+version_5_6_0_bfaf7b8 :
+{
+    compil_script : "ParaView-5.6.0_bfaf7b8.sh"
+    patches :[
+              'ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch',
+              'ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch'
+             ]
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'libxml2',
+              'freetype',
+              'matplotlib',
+              'gl2ps',
+              'cgns',
+              'Pygments'
+              ]
+}
+
+version_5_6_0_bfaf7b8_win :
+{
+    compil_script : "ParaView-5.6.0_bfaf7b8.bat"
+    patches :  [
+                'ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch',
+                'ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch',
+                'ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch'
+               ]
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'libxml2',
+              'freetype',
+              'matplotlib',
+              'gl2ps',
+              'cgns',
+              'Pygments',
+              'pthreads'
+             ]
+}
+
+version_5_6_0_bfaf7b8_ospray_win :
+{
+    compil_script : "ParaView-5.6.0_bfaf7b8.bat"
+    archive_info : {archive_name : "ParaView-5.6.0_bfaf7b8.tar.gz"}
+    patches : [
+               'ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch',
+               'ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch',
+               'ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch'
+              ]
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'libxml2',
+              'freetype',
+              'matplotlib',
+              'gl2ps',
+              'cgns',
+              'Pygments',
+              'ospray',
+              'pthreads'
+             ]
+}
+
+version_5_6_0p1_7bafc2b :
+{
+    compil_script : "ParaView-5.6.0p1_7bafc2b.sh"
+    patches :  [
+               ]
+    depend : [
+              'cmake',
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'libxml2',
+              'freetype',
+              'matplotlib',
+              'gl2ps',
+              'cgns',
+              'Pygments'
+             ]
+}
+
+version_5_6_0p1_7bafc2b_win :
+{
+    compil_script : "ParaView-5.6.0p1_7bafc2b.bat"
+    patches :  [
+                'ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch',
+                'ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch',
+                'ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch'
+               ]
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'libxml2',
+              'freetype',
+              'matplotlib',
+              'gl2ps',
+              'cgns',
+              'Pygments',
+              'pthreads'
+             ]
+}
+
+version_5_4_1b5c4c89 :
+{
+    compil_script : "ParaView-5.4.1_b5c4c89.sh"
+    # TA - OP 29/05/2018 Add the 3 patches from BO
+    patches : [
+               'ParaView-5.4.0-b5c4c893-0001-Fix-prob~stallation-of-VTKTargets.cmake-fi.patch',
+               'ParaView-5.4.0-b5c4c893-vtkXOpenGLRenderWindow.cxx.patch',
+               'ParaView-5.4.0-b5c4c893_temporaty_patch.patch'
+              ]
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'libxml2',
+              'freetype',
+              'matplotlib',
+              'gl2ps',
+              'cgns',
+              'Pygments'
+             ]
+}
+
+
+version_5_1_2plus_820 :
+{
+    compil_script : "ParaView-5.1-820.sh"
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'gl2ps',
+              'libxml2',
+              'freetype',
+              'matplotlib'
+             ]
+}
+
+version_5_1_2plus_820_offscreen_rendering :
+{
+    compil_script : "ParaView-5.1-820-offscreen_rendering.sh"
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'gl2ps',
+              'libxml2',
+              'freetype',
+              'matplotlib',
+              'mesa'
+             ]
+}
+
+version_5_1_2plus_820_win :
+{
+    compil_script : "ParaView-5.1-820.bat"
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'gl2ps',
+              'libxml2',
+              'freetype',
+              'matplotlib',
+              'zlib',
+              'libpng'
+             ]
+    opt_depend : []
+    patches : [ 'ParaView-5.1.2-win.patch' ]
+}
+
+version_5_1_2plus :
+{
+    compil_script : "ParaView-5.1.sh"
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'gl2ps',
+              'libxml2',
+              'freetype',
+              'matplotlib',
+              'cgns'
+             ]
+}
+
+version_5_0_1p1 :
+{
+    name : "ParaView"
+    compil_script :  $name + "-5.0.sh"
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'gl2ps',
+              'libxml2',
+              'freetype',
+              'matplotlib'
+             ]
+}
+
+version_4_2_0 :
+{
+    compil_script :  $name + "-3.14.0.sh"
+    depend : [
+              'Python',
+              'hdf5',
+              'qt',
+              'boost',
+              'gl2ps',
+              'libxml2',
+              'freetype',
+              'matplotlib'
+             ]
+    patches : [
+                  $name + "-4.2.0.patch"
+              ]
+}
+
+version_3_14_0 :
+{
+    name : "ParaView"
+    compil_script : $name + "-3.14.0.sh"
+    depend : [
+              "Python",
+              "hdf5",
+              "qt",
+              "ParaViewData",
+              "boost",
+              "gl2ps"
+             ]
+    patches : [
+                  $name + "-3.14.0.patch"
+              ]
+}
diff --git a/products/ParaViewData.pyconf b/products/ParaViewData.pyconf
new file mode 100644 (file)
index 0000000..9abab36
--- /dev/null
@@ -0,0 +1,18 @@
+version_3_14_0 :
+{
+    name : "ParaViewData"
+    build_source : "script"
+    compil_script : $name + ".sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [
+             ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : "base"
+
+} 
+
diff --git a/products/Pillow.pyconf b/products/Pillow.pyconf
new file mode 100644 (file)
index 0000000..d6535b0
--- /dev/null
@@ -0,0 +1,28 @@
+default :
+{
+    name : "Pillow"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-pillow"]
+        rpm_dev : []
+        apt : ["python3-pil"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools', 'docutils']
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
diff --git a/products/PyHamcrest.pyconf b/products/PyHamcrest.pyconf
new file mode 100644 (file)
index 0000000..3432ed9
--- /dev/null
@@ -0,0 +1,20 @@
+default :
+{
+    name : "PyHamcrest"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
diff --git a/products/PyQt.pyconf b/products/PyQt.pyconf
new file mode 100644 (file)
index 0000000..1054ca2
--- /dev/null
@@ -0,0 +1,64 @@
+default :
+{
+    name : "PyQt"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-qt5"]
+        rpm_dev : []
+        apt : ["python3-pyqt5"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'qt', 'sip']
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "no"
+    }
+}
+
+version_5_6 :
+{
+    compil_script :  "PyQt-5.6" + $VARS.scriptExtension
+}
+
+version_5_7 :
+{
+    compil_script :  "PyQt-5.7" + $VARS.scriptExtension
+}
+
+version_5_9 :
+{
+    compil_script :  "PyQt-5.9" + $VARS.scriptExtension
+    check_install : ["lib/python[23].[0-9]/site-packages/PyQt5/QtGui.so"]
+}
+
+version_5_9_win :
+{
+    check_install : ['lib' + $VARS.sep + 'python3.6' + $VARS.sep + 'site-packages' + $VARS.sep + 'PyQt5' + $VARS.sep + 'QtGui.pyd']
+}
+
+version_5_5_1_to_5_6_0 :
+{
+    compil_script :  "PyQt_5_5_1" + $VARS.scriptExtension
+}
+
+version_4_9_6 :
+{
+    patches : ["patchPyQt496noPhonon.patch"]
+}
+
+version_4_9_1 :
+{
+    patches : ["PyQt-4.9.1.patch"]
+}
diff --git a/products/Pygments.pyconf b/products/Pygments.pyconf
new file mode 100644 (file)
index 0000000..f3a8917
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "Pygments"
+    build_source : "script"
+    compil_script :  "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-pygments"]
+        rpm_dev : []
+        apt : ["python3-pygments"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ["Python", "setuptools"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+       pip : "yes"
+       incremental : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "Pygments-" + $APPLICATION.products.Pygments + "_windows.tar.gz"}
+}
diff --git a/products/Python.pyconf b/products/Python.pyconf
new file mode 100755 (executable)
index 0000000..0812669
--- /dev/null
@@ -0,0 +1,53 @@
+default :
+{
+    name : "Python"
+    build_source : "script"
+    compil_script : $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python36"]
+        rpm_dev : []
+        apt : ["python36"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      compile_and_runtime : "yes"
+    }
+}
+
+version_2_6_6 :
+{
+    patches : ["Python_zlib_detection.patch", "Python_SSL.patch"]
+}
+
+version_2_7_10 :
+{
+    patches : [
+        #'remove-windows-python-subprojects.patch', #patch Windows non applicable sur Linux
+        #'enable-windows-plugin-compilation.patch',
+    ]
+}
+
+version_3_6_5 :
+{
+ patches : []
+}
+
+version_3_6_5_win :
+{
+    compil_script : "Python-3.6.5.bat"
+    patches : ['Python-3.6.5_windows.patch']
+}
diff --git a/products/RESTRICTED.pyconf b/products/RESTRICTED.pyconf
new file mode 100644 (file)
index 0000000..d88e859
--- /dev/null
@@ -0,0 +1,18 @@
+default :
+{
+    name : "RESTRICTED"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "restricted.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "restricted.git"
+    }
+    depend : [ ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    properties :
+    {
+        compilation : "no"
+        not_in_package : "yes"
+    }
+    patches : []
+}
diff --git a/products/SALOME.pyconf b/products/SALOME.pyconf
new file mode 100644 (file)
index 0000000..6bd59fe
--- /dev/null
@@ -0,0 +1,24 @@
+default :
+{
+    name : "SALOME"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : "https://codev-tuleap.cea.fr/plugins/git/salome/" + $name + ".git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        _SalomeAppConfig : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "salome"
+    }
+    depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        is_salome_application : "yes"
+        incremental : "yes"
+    }
+}
diff --git a/products/SALOME_FORMATION_PROFILE.pyconf b/products/SALOME_FORMATION_PROFILE.pyconf
new file mode 100644 (file)
index 0000000..9207c55
--- /dev/null
@@ -0,0 +1,25 @@
+default :
+{
+    name : "SALOME_FORMATION_PROFILE"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : "/home/salome/GitRepo/" + $name + ".git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+        launch : {
+                    "SalomeAppConfig" : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "salome_formation_profile"
+                 }
+    }
+    depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_gui : "yes"
+    }
+}
diff --git a/products/SALOME_PROFILE.pyconf b/products/SALOME_PROFILE.pyconf
new file mode 100644 (file)
index 0000000..563f9b7
--- /dev/null
@@ -0,0 +1,94 @@
+default :
+{
+    name : "SALOME_PROFILE"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : "/home/salome/GitRepo/" + $name + ".git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+    }
+    depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
+
+version_Vmaster :
+{
+    name : "SALOME_PROFILE"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : "/home/salome/GitRepo/" + $name + ".git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+    }
+    depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"]
+    patches : ["SALOME_PROFILE_NO_ENV_master_V2.patch"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
+
+version_8_0_0_to_8_1_0 :
+{
+    name : "SALOME_PROFILE"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : "/home/salome/GitRepo/" + $name + ".git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+    }
+    depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"]
+    patches : ["SALOME_PROFILE_NO_ENV_master_V2.patch"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
+
+
+
+version_6_6_0_to_7_8_0 :
+{
+    name : "SALOME_PROFILE"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : "/home/salome/GitRepo/" + $name + ".git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+    }
+    depend : ["KERNEL", "GUI", "Python", "Sphinx", "qt"]
+    patches : ["SALOME_PROFILE_NO_ENV.patch"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
+
+
diff --git a/products/SAMPLES.pyconf b/products/SAMPLES.pyconf
new file mode 100644 (file)
index 0000000..8d31398
--- /dev/null
@@ -0,0 +1,24 @@
+default :
+{
+    name : "SAMPLES"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "samples/datafiles.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "datafiles.git"
+    }
+    depend : []
+    patches : []
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    properties :    
+    {
+       incremental : "yes"
+       compilation : "no"
+       sources_in_package : "yes"
+    }
+}
+
diff --git a/products/SHAPER.pyconf b/products/SHAPER.pyconf
new file mode 100644 (file)
index 0000000..e242c65
--- /dev/null
@@ -0,0 +1,58 @@
+default :
+{
+    name : "SHAPER"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server_dev + "shaper.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "shaper.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "shaper"
+    }
+    depend : [
+              'KERNEL',
+              'GUI',
+              'boost',
+              'CAS',
+              'Python',
+              'hdf5',
+              'omniORB',
+              'qt',
+              'ParaView',
+              'docutils',
+              'Sphinx',
+              'Jinja2',
+              'setuptools',
+              'Pygments',
+              'planegcs',
+              'six',
+              'pytz',
+              'markupsafe',
+              'eigen'
+             ]
+    build_depend : ["cmake", "swig", "doxygen"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        incremental : "yes"
+        has_unit_tests : "yes"
+    }
+    cmake_options :   "-DCMAKE_CXX_FLAGS=-fpermissive -DNO_SolveSpace=TRUE -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DADD_COMPATIBILITY_TESTS=ON -DADD_MODELS_TESTS=ON -DADD_HDF_TESTS=ON"
+       patches : ['patch_shaper_cursor_cross.diff']
+}
+
+default_win :
+{
+    cmake_options :   " -DNO_SolveSpace=TRUE  -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe " 
+}
+
+version_9_3_0_to_9_4_0 :
+{
+  patches : []
+}
diff --git a/products/SHAPERSTUDY.pyconf b/products/SHAPERSTUDY.pyconf
new file mode 100644 (file)
index 0000000..3612804
--- /dev/null
@@ -0,0 +1,36 @@
+default :
+{
+    name : "SHAPERSTUDY"
+    build_source : "cmake"
+    get_source : "git"
+    git_info :
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server_dev + "shaper_study.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "shaper_study.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "shaperstudy"
+    }
+    depend :
+    [
+        'Python',
+        'omniORB',
+        'omniORBpy',
+        'qt',
+        'CONFIGURATION',
+        'KERNEL',
+        'GEOM',
+        'SHAPER',
+        'GUI'
+    ]
+    build_depend : ["cmake", "swig"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties :
+    {
+        is_SALOME_module : "yes"
+        incremental : "yes"
+        has_unit_tests : "yes"
+    }
+}
diff --git a/products/SMESH.pyconf b/products/SMESH.pyconf
new file mode 100644 (file)
index 0000000..0d95b62
--- /dev/null
@@ -0,0 +1,188 @@
+default :
+{
+    name : "SMESH"
+    build_source : "cmake"
+    # cmake option SALOME_SMESH_BUILD_FRENCH_DOC=OFF until SMESH doc has been translated
+    cmake_options : "-DSALOME_SMESH_USE_CGNS:BOOL=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_SMESH_DYNLOAD_LOCAL:BOOL=ON -DSALOME_SMESH_BUILD_FRENCH_DOC=OFF -DSALOME_SMESH_USE_TBB=ON"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/smesh.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "smesh.git"
+    }
+    environ :
+    {
+        _SMESH_MeshersList : "StdMeshers"
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "smesh"
+    }
+    depend : ["KERNEL",
+              "GUI",
+              "GEOM",
+              "MEDCOUPLING",
+              "Python",
+              "qt",
+              "PyQt",
+              "boost",
+              "CAS",
+              "hdf5",
+              "medfile",
+              "qwt",
+              "ParaView",
+              "libxml2",
+              "omniORB",
+              "docutils",
+              "Sphinx",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "cgns",
+              "six",
+              "pytz",
+              "sphinxintl",
+              "sphinxcontrib_napoleon",
+              "tbb"
+             ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+    patches : []
+    check_install : ["share/doc/salome/gui/SMESH/yams/index.html"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        incremental : "yes"
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
+
+default_win :
+{
+    cmake_options : " -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe -DSALOME_SMESH_USE_CGNS:BOOL=ON -DSALOME_SMESH_DYNLOAD_LOCAL:BOOL=ON -DSALOME_SMESH_BUILD_FRENCH_DOC=OFF -DSALOME_SMESH_USE_TBB=ON"
+    patches : []
+    depend : ["KERNEL",
+              "GUI",
+              "GEOM",
+              "MEDCOUPLING",
+              "Python",
+              "qt",
+              "PyQt",
+              "boost",
+              "CAS",
+              "hdf5",
+              "medfile",
+              "qwt",
+              "ParaView",
+              "libxml2",
+              "omniORB",
+              "docutils",
+              "Sphinx",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "cgns",
+              "six",
+              "pytz",
+              "Sphinx",
+              "sphinxintl",
+              "sphinxcontrib_napoleon",
+              "tbb"
+            ]
+}
+
+# Starting from SALOME 9.4.0, we use tbb as product and build SMESH using it to accelerate its performances
+version_8_5_0_to_9_3_0 :
+{
+    cmake_options : "-DSALOME_SMESH_USE_CGNS:BOOL=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_SMESH_DYNLOAD_LOCAL:BOOL=ON -DSALOME_SMESH_BUILD_FRENCH_DOC=OFF"
+    depend : ["KERNEL",
+              "GUI",
+              "GEOM",
+              "MEDCOUPLING",
+              "Python",
+              "qt",
+              "PyQt",
+              "boost",
+              "CAS",
+              "hdf5",
+              "medfile",
+              "qwt",
+              "ParaView",
+              "libxml2",
+              "omniORB",
+              "docutils",
+              "Sphinx",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "cgns",
+              "six",
+              "pytz",
+              "sphinxintl",
+              "sphinxcontrib_napoleon"
+             ]
+}
+
+# OP 19/04/2018 Add section for SALOME 7.8.0 to 8.4.0 due to new dependencies in SALOME 8.5.0
+version_7_8_0_to_8_4_0 :
+{
+    cmake_options : "-DSALOME_SMESH_USE_CGNS:BOOL=ON -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig -DSALOME_SMESH_DYNLOAD_LOCAL:BOOL=ON"
+    environ :
+    {
+    }
+    depend : ["KERNEL",
+              "GUI",
+              "GEOM",
+              "MEDCOUPLING",
+              "Python",
+              "qt",
+              "PyQt",
+              "boost",
+              "CAS",
+              "hdf5",
+              "medfile",
+              "qwt",
+              "ParaView",
+              "libxml2",
+              "omniORB",
+              "docutils",
+              "Sphinx",
+              "Jinja2",
+              "setuptools",
+              "Pygments",
+              "cgns",
+              "six",
+              "pytz"
+             ]
+    nb_proc : 8
+}
+
+version_V6_6_0 :
+{
+    build_source : "autotools"
+    cmake_options : "-DSALOME_SMESH_USE_CGNS:BOOL=ON"
+    environ :
+    {
+    }
+    depend : ["KERNEL",
+              "GUI",
+              "GEOM",
+              "MED",
+              "Python",
+              "qt",
+              "PyQt",
+              "boost",
+              "CAS",
+              "hdf5",
+              "medfile",
+              "qwt",
+              "ParaView",
+              "libxml2",
+              "omniORB",
+              "docutils",
+              "Sphinx",
+              "Jinja2",
+              "setuptools",
+              "Pygments"
+             ]
+    check_install : []
+}
diff --git a/products/SOLVERLAB.pyconf b/products/SOLVERLAB.pyconf
new file mode 100644 (file)
index 0000000..700f1a6
--- /dev/null
@@ -0,0 +1,31 @@
+default :
+{
+    name : "SOLVERLAB"
+    build_source : "script"
+    compil_script :  $name + ".sh"
+    get_source : "git"
+    git_info:
+    {
+        repo : "https://codev-tuleap.cea.fr/plugins/git/spns/SolverLab.git"
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : 
+    [   
+        'hdf5', 
+        'matplotlib', 
+        'medfile', 
+        'numpy', 
+        'ParaView', 
+        'petsc', 
+        'Python', 
+        'MEDCOUPLING', 
+    ]
+    build_depend : ["cmake", "swig", "doxygen", "graphviz","cppunit"]   
+    # mscgen
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    nb_proc : 1
+}
diff --git a/products/Sphinx.pyconf b/products/Sphinx.pyconf
new file mode 100644 (file)
index 0000000..9b50d20
--- /dev/null
@@ -0,0 +1,55 @@
+default :
+{
+    name : "Sphinx"
+    build_source : "script"
+    compil_script :   'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-sphinx"]
+        rpm_dev : []
+        apt : ["python3-sphinx"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ["Python", "setuptools", "six", "Pygments", "Jinja2", "docutils", "sphinxcontrib_websupport", "packaging", "requests", "imagesize", "alabaster", "Babel", "snowballstemmer"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "Sphinx-" + $APPLICATION.products.Sphinx + "_windows.tar.gz"}
+   depend : ["Python", "setuptools", "Pygments", "Jinja2", "docutils", "sphinxcontrib_applehelp", "sphinxcontrib_serializinghtml","sphinxcontrib_websupport", "sphinxcontrib_htmlhelp", "sphinxcontrib_qthelp", "sphinxcontrib_devhelp", "sphinxcontrib_jsmath", "packaging", "requests", "imagesize", "alabaster", "Babel", "snowballstemmer", "markupsafe"]
+    properties:
+    {
+      incremental : "yes"
+      pip : "no"
+    }
+}
+
+version_1_1_3_to_1_2_3 :
+{
+    name : "Sphinx"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    depend : ["Python", "setuptools", "Pygments", "Jinja2", "docutils"]
+}
+
+version_1_7_6_py2 :
+{
+    name : "Sphinx"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    depend : ["Python", "setuptools", "Pygments", "Jinja2", "docutils", "sphinxcontrib_websupport", "packaging", "requests", "imagesize", "alabaster", "Babel", "snowballstemmer", "markupsafe", "typing"]
+}
diff --git a/products/TECHOBJ_ROOT.pyconf b/products/TECHOBJ_ROOT.pyconf
new file mode 100644 (file)
index 0000000..157f3a8
--- /dev/null
@@ -0,0 +1,32 @@
+default :
+{
+    name : "TECHOBJ_ROOT"
+    build_source : "autotools"
+    get_source : "git"
+    git_info:
+    {
+        repo : "/home/salome/GitRepo/TECHOBJ_ROOT.git"
+    }
+    environ :
+    {
+        TECHOBJ_ROOT_DIR : $install_dir
+    }
+    depend : [
+              'Python',
+              'XDATA',
+              'omniORB',
+              'boost',
+              'PyQt',
+              'ParaView'
+             ]
+    opt_depend : [LIBBATCH, CALCULATOR, MED, GUI]
+    build_depend : ["swig", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+    }
+}
diff --git a/products/TRIOCFD_IHM.pyconf b/products/TRIOCFD_IHM.pyconf
new file mode 100644 (file)
index 0000000..6885889
--- /dev/null
@@ -0,0 +1,27 @@
+default :
+{
+    name : "TRIOCFD"
+    build_source : "cmake"
+    cmake_options : "-DENABLE_DOCUMENTATION:BOOL=ON -DCOMPILE_PYFILES:BOOL=ON"
+    get_source : "git"
+    git_info:
+    {
+        repo : 'https://codev-tuleap.intra.cea.fr/plugins/git/triocfd/triocfd-ihm.git'
+        repo_dev : $repo
+    }
+    environ :
+    {
+      TRIOCFD_IHM_ROOT_DIR : $install_dir
+      SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "triocfd"
+    }
+    depend :  ["MEDCOUPLING","GUI"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+    }
+    # mandatory, otherwise compilation will fail.
+    nb_proc : 1
+}
diff --git a/products/TRIOCFD_PROFILE.pyconf b/products/TRIOCFD_PROFILE.pyconf
new file mode 100644 (file)
index 0000000..9823968
--- /dev/null
@@ -0,0 +1,24 @@
+default :
+{
+    name : "TRIOCFD_PROFILE"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : "https://codev-tuleap.intra.cea.fr/plugins/git/triocfd/triocfd-ihm-profile.git"
+        repo_dev : $repo
+    }
+    environ :
+    {
+     _SalomeAppConfig : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "triocfd_profile"
+    }
+    depend : ['Python', 'Sphinx', 'qt', 'KERNEL', 'GUI']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
+
diff --git a/products/TRUST.pyconf b/products/TRUST.pyconf
new file mode 100644 (file)
index 0000000..7bfa53a
--- /dev/null
@@ -0,0 +1,18 @@
+default :
+{
+    name : "TRUST"
+    build_source : "script"
+    compil_script :  $name +  ".sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['medfile', 'hdf5']
+    opt_depend : [ ]
+    patches : [ ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    #install_dir : 'base'
+}
+
diff --git a/products/Togl.pyconf b/products/Togl.pyconf
new file mode 100644 (file)
index 0000000..6bd4d6f
--- /dev/null
@@ -0,0 +1,16 @@
+version_1_7:
+{
+    name : "Togl"
+    build_source : "script"
+    compil_script :  $name +  ".sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [tcl, tk]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
diff --git a/products/TrioCFD.pyconf b/products/TrioCFD.pyconf
new file mode 100644 (file)
index 0000000..02f2168
--- /dev/null
@@ -0,0 +1,18 @@
+default :
+{
+    name : "TrioCFD"
+    build_source : "script"
+    compil_script :  $name +  ".sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['TRUST']
+    opt_depend : [ ]
+    patches : [ ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    #install_dir : 'base'
+}
+
diff --git a/products/VISU.pyconf b/products/VISU.pyconf
new file mode 100644 (file)
index 0000000..cacfe9f
--- /dev/null
@@ -0,0 +1,36 @@
+default :
+{
+    name : "VISU"
+    build_source : "autotools"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/visu.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "visu.git"
+    }
+    environ :
+    {          
+    }
+    depend : ["Python",
+              "boost",
+              "CAS",
+              "qt",
+              "qwt",
+              "medfile",
+              "ParaView",
+              "hdf5",
+              "omniORB",
+              "docutils",
+              "KERNEL",
+              "GUI",
+              "MED"
+             ]
+    build_depend : ["swig", "cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+        has_salome_gui : "yes"
+    }
+}
diff --git a/products/XDATA.pyconf b/products/XDATA.pyconf
new file mode 100644 (file)
index 0000000..12d1fe6
--- /dev/null
@@ -0,0 +1,35 @@
+version_0_9_11 :
+{
+    name : "XDATA"
+    get_source : "archive"
+    build_source : "script"
+    compil_script : $name + ".py"
+    archive_info :
+    {
+        archive_name : "xdata-0.9.11.tar.gz"
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [
+              'Python',
+              'omniORB',
+              'boost',
+              'PyQt',
+              'KERNEL'
+             ]
+    opt_depend : [LIBBATCH, CALCULATOR, MED, GUI]
+    build_depend : ["cppunit"]
+    patches : [
+        #"xdata-0.9.9.python2.7.patch", #patch obsolete car integre aux sources en 7.8.0
+        "xdata-0.9.11.patch", 
+        "xdata_qt.patch"
+    ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        is_SALOME_module : "yes"
+    }
+}
diff --git a/products/YACS.pyconf b/products/YACS.pyconf
new file mode 100644 (file)
index 0000000..cc228aa
--- /dev/null
@@ -0,0 +1,78 @@
+default :
+{
+    name : "YACS"
+    build_source : "cmake"
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "modules/yacs.git"
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "yacs.git"
+    }
+    environ :
+    {
+        SalomeAppConfig_ : $install_dir + $VARS.sep + "share" + $VARS.sep + "salome" + $VARS.sep + "resources" + $VARS.sep + "yacs"
+    }
+    depend : [
+              "KERNEL",
+              "GUI", 
+              "Python", 
+              "qt", 
+              "boost", 
+              "omniORB", 
+              "docutils",
+              "graphviz",
+              "libxml2", 
+              "Sphinx", 
+              "Jinja2", 
+              "setuptools", 
+              "Pygments", 
+              "six", 
+              "pytz", 
+              "markupsafe"  
+              ]
+    build_depend : ["cmake", "swig", "doxygen", "cppunit"]
+
+    patches : [
+               "yacs_cea_v2.patch" 
+              ]
+
+    nb_proc : 4
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+        has_salome_gui : "yes"
+        is_SALOME_module : "yes"
+        has_unit_tests
+        incremental : "yes"
+    }
+} 
+
+# bug in cmake for multi proc compilation
+from_7_7_0_to_8_5_0 :
+{
+    nb_proc : 1
+} 
+
+# autotools are used for version 6
+# do not depend upon six, pytz, markupsafe
+version_V6_6_0 :
+{
+    build_source : "autotools"
+    depend : [
+              "KERNEL",
+              "GUI", 
+              "Python", 
+              "qt", 
+              "boost", 
+              "omniORB", 
+              "docutils", 
+              "graphviz",
+              "libxml2", 
+              "Sphinx", 
+              "Jinja2", 
+              "setuptools", 
+              "Pygments"
+              ]
+    build_depend : ["swig", "doxygen", "cppunit"]
+} 
diff --git a/products/YACSGEN.pyconf b/products/YACSGEN.pyconf
new file mode 100644 (file)
index 0000000..8415b09
--- /dev/null
@@ -0,0 +1,39 @@
+default :
+{
+    name : "YACSGEN"
+    build_source : "script"
+    compil_script : $name  + $VARS.scriptExtension
+    get_source : "git"
+    git_info:
+    {
+        repo : $PROJECTS.projects.salome.git_info.default_git_server + "tools/yacsgen.git "
+        repo_dev : $PROJECTS.projects.salome.git_info.default_git_server_dev + "yacsgen.git "
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [
+              "Python"
+              ]
+    build_depend : ["cppunit"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    patches :[]
+    properties:
+    {
+       incremental : "yes"
+    }
+} 
+version_V7_8_BR :
+{
+    compil_script : "YACSGEN.py"
+    patches : ["yacsgen_hxx.patch"]
+    properties:
+    {
+       incremental : "yes"
+       is_SALOME_module : "yes"
+    }
+} 
diff --git a/products/alabaster.pyconf b/products/alabaster.pyconf
new file mode 100644 (file)
index 0000000..dc61976
--- /dev/null
@@ -0,0 +1,36 @@
+default :
+{
+    name : "alabaster"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-sphinx-theme-alabaster"]
+        rpm_dev : []
+        apt : ["python3-alabaster"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+       incremental : "yes"
+       pip : "yes"
+    }
+}
+
+default_win :
+{
+    compil_script :  'pip_install_whl' + $VARS.scriptExtension
+    archive_info:
+    {
+        archive_name : "alabaster-" + $APPLICATION.products.alabaster + "_windows.tar.gz"
+    }
+}
diff --git a/products/boost.pyconf b/products/boost.pyconf
new file mode 100644 (file)
index 0000000..84c4535
--- /dev/null
@@ -0,0 +1,52 @@
+default :
+{
+    name : "boost"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["boost"]
+        rpm_dev : ["boost-devel"]
+        apt : ["libboost-regexr", "libboost-thread" , "libboost-serialization",
+               "libboost-chrono", "libboost-filesystem", "libboost-system", 
+               "libboost-date-time"]
+        apt_dev : ["libboost-regexr-dev", "libboost-thread-dev", "libboost-serialization-dev",
+                   "libboost-chrono-dev", "libboost-filesystem-dev", "libboost-system-dev", 
+                   "libboost-date-time-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python' ]
+    patches : [ ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+        incremental : "yes"
+        single_install_dir : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  "boost_V" + $APPLICATION.products.boost + ".bat"
+   archive_info : {archive_name : "boost-" + $APPLICATION.products.boost + "_windows.tar.gz"}
+}
+
+version_1_52_0 :
+{
+    patches : 
+    [
+      'boost-1.52.0-cstdint_missing_include.patch',
+      'boost-1.52.0_recent_glibc_versions.patch'
+    ]
+}
+
+version_1_49_0:
+{
+    patches : [ "boost-1.49.0.patch" ]
+}
diff --git a/products/bsd_xdr.pyconf b/products/bsd_xdr.pyconf
new file mode 100755 (executable)
index 0000000..2ee35f8
--- /dev/null
@@ -0,0 +1,21 @@
+default :
+{
+    name : "bsd_xdr"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+        incremental : "yes"
+        single_install_dir : "yes"
+    }
+}
diff --git a/products/certifi.pyconf b/products/certifi.pyconf
new file mode 100755 (executable)
index 0000000..3ce065e
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "certifi"
+    build_source : "script"
+    compil_script : 'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-certifi"]
+        rpm_dev : []
+        apt : ["python3-certifi"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+        incremental : "yes"
+        pip : "yes"
+    }
+}
+
+default_win :
+{
+   archive_info : {archive_name : "certifi-" + $APPLICATION.products.certifi + "_windows.tar.gz"}
+   depend : ['Python','urllib3']
+}
diff --git a/products/cgns.pyconf b/products/cgns.pyconf
new file mode 100644 (file)
index 0000000..1cc0112
--- /dev/null
@@ -0,0 +1,29 @@
+default :
+{
+    name : "cgns"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["cgnslib"]
+        rpm_dev : ["cgnslib-devel"]
+        apt : ["libcgns3"]
+        apt_dev : ["libcgns-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ["hdf5"]
+    opt_depend : ["openmpi"]
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
diff --git a/products/chardet.pyconf b/products/chardet.pyconf
new file mode 100755 (executable)
index 0000000..69c88e9
--- /dev/null
@@ -0,0 +1,34 @@
+default :
+{
+    name : "chardet"
+    build_source : "script"
+    compil_script : 'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-chardet"]
+        rpm_dev : []
+        apt : ["python3-chardet"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+        incremental : "yes"
+        pip : "yes"
+    }
+}
+
+default_win :
+{
+    compil_script :  'pip_install_whl' + $VARS.scriptExtension
+    archive_info : {archive_name : "chardet-" + $APPLICATION.products.chardet + "_windows.tar.gz"}
+
+}
diff --git a/products/click.pyconf b/products/click.pyconf
new file mode 100644 (file)
index 0000000..3fc92ef
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "click"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-click"]
+        rpm_dev : []
+        apt : ["python3-click"]
+        apt_dev : []
+    }
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "click-" + $APPLICATION.products.click + "_windows.tar.gz"}
+}
diff --git a/products/cmake.pyconf b/products/cmake.pyconf
new file mode 100644 (file)
index 0000000..898e608
--- /dev/null
@@ -0,0 +1,27 @@
+default :
+{
+    name : "cmake"
+    build_source : "script"
+    compil_script : $name  + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : []
+        rpm_dev : ["cmake"]
+        apt : ["cmake"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      compile_time : "yes"
+    }
+}
diff --git a/products/colorama.pyconf b/products/colorama.pyconf
new file mode 100755 (executable)
index 0000000..5e946e1
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "colorama"
+    build_source : "script"
+    compil_script :   "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "colorama-" + $APPLICATION.products.colorama + "_windows.tar.gz"}
+}
diff --git a/products/compil_scripts/ADAO.bat b/products/compil_scripts/ADAO.bat
new file mode 100644 (file)
index 0000000..c21b76b
--- /dev/null
@@ -0,0 +1,121 @@
+@echo off
+
+echo ##########################################################################
+echo ADAO %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+echo ##########################################################################
+echo Compile ADAO TOOL
+echo ##########################################################################
+
+set CURRENT_SOFTWARE_INSTALL_DIR=%PRODUCT_INSTALL:\=/%
+set PYTHONPATH=%SOURCE_DIR%/bin;%PYTHONPATH%
+set PYTHONPATH=%PRODUCT_INSTALL%/lib/python%PYTHON_VERSION%/site-packages;%PYTHONPATH%
+
+cd %BUILD_DIR%
+set CMAKE_OPTIONS=
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=Release
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64"
+
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo *********************************************************************
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS%
+echo *********************************************************************
+echo.
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo *********************************************************************
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj"
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation...
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+echo ##########################################################################
+echo Compile ADAO MODULE
+echo ##########################################################################
+set ADAO_PYTHON_ROOT_DIR=%CURRENT_SOFTWARE_INSTALL_DIR%
+set ADAO_ENGINE_ROOT_DIR=%CURRENT_SOFTWARE_INSTALL_DIR%
+set CMAKE_OPTIONS=
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=Release
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DADAO_PYTHON_MODULE:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE=%PYTHONBIN:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DKERNEL_ROOT_DIR=%KERNEL_ROOT_DIR:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DADAO_PYTHON_ROOT_DIR=%ADAO_PYTHON_ROOT_DIR:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DEFICAS_ROOT_DIR=%EFICAS_TOOLS_ROOT_DIR:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64"
+
+echo.
+echo *********************************************************************
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS%
+echo *********************************************************************
+echo.
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+REM set CL=/D__WIN32__ /DSIZEOF_INT=4 /DSIZEOF_LONG=4 %CL%
+
+echo.
+echo *********************************************************************
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj"
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation...
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+set MSBUILDDISABLENODEREUSE=1
+
+
diff --git a/products/compil_scripts/ADAO.sh b/products/compil_scripts/ADAO.sh
new file mode 100755 (executable)
index 0000000..85c1454
--- /dev/null
@@ -0,0 +1,89 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ADAO/ADAO_TOOL" $VERSION
+echo "##########################################################################"
+
+
+PYTHON_VERSION_MAJ=${PYTHON_VERSION:0:1}
+
+echo "##########################################################################"
+echo "Compile ADAO TOOL"
+echo "##########################################################################"
+
+export CURRENT_SOFTWARE_INSTALL_DIR=${PRODUCT_INSTALL}
+
+CMAKE_OPTIONS=""
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE=${PYTHONBIN}"
+
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo "##########################################################################"
+echo "Compile ADAO MODULE"
+echo "##########################################################################"
+export ADAO_PYTHON_ROOT_DIR=${CURRENT_SOFTWARE_INSTALL_DIR}
+export ADAO_ENGINE_ROOT_DIR==${CURRENT_SOFTWARE_INSTALL_DIR}
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+
+CMAKE_OPTIONS=""
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DADAO_PYTHON_MODULE=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE=${PYTHONBIN}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DKERNEL_ROOT_DIR=${KERNEL_ROOT_DIR}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DADAO_PYTHON_ROOT_DIR=${ADAO_PYTHON_ROOT_DIR}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DEFICAS_ROOT_DIR=${EFICAS_TOOLS_ROOT_DIR}"
+
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+
+
diff --git a/products/compil_scripts/Babel.bat b/products/compil_scripts/Babel.bat
new file mode 100644 (file)
index 0000000..31ac4ca
--- /dev/null
@@ -0,0 +1,44 @@
+@echo off
+
+echo ##########################################################################
+echo Babel %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages
+if NOT exist "%dir_lib%" mkdir %dir_lib%
+
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** Launching "python.exe setup.py build"
+echo --------------------------------------------------------------------------
+
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on setup.py build
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** Launching "python.exe setup.py install"
+echo --------------------------------------------------------------------------
+
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% 
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on setup.py install
+    exit 3
+)
+
+echo.
+echo ########## END
+
diff --git a/products/compil_scripts/Babel.sh b/products/compil_scripts/Babel.sh
new file mode 100755 (executable)
index 0000000..9053e1a
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Babel" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/CAS_6.7.sh b/products/compil_scripts/CAS_6.7.sh
new file mode 100755 (executable)
index 0000000..eb3bf96
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+echo "###############################################"
+echo "CASCADE" $VERSION
+echo "###############################################"
+
+
+
+echo
+echo "*** build_configure"
+./build_configure
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build_configure"
+    exit 1
+fi
+
+echo
+echo "*** configure"
+./configure \
+    --without-tcl --without-tk --disable-draw \
+    --with-freetype=$FREETYPEDIR \
+    --enable-debug=no --enable-production=yes \
+    --with-gl2ps=$GL2PSDIR \
+    --with-freeimage=$FREEIMAGEDIR \
+    --prefix=$PRODUCT_INSTALL
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/CAS_7.0.sh b/products/compil_scripts/CAS_7.0.sh
new file mode 100755 (executable)
index 0000000..7cf3358
--- /dev/null
@@ -0,0 +1 @@
+# Utile pour SAT5
\ No newline at end of file
diff --git a/products/compil_scripts/CAS_7.3.bat b/products/compil_scripts/CAS_7.3.bat
new file mode 100644 (file)
index 0000000..4621b92
--- /dev/null
@@ -0,0 +1,95 @@
+@echo off
+
+echo ##########################################################################
+echo CAS %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+if %SAT_DEBUG% == 1 (
+  set PRODUCT_BUILD_TYPE=Debug
+)
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %BUILD_DIR%
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64"
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+
+REM TBB
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_TBB:BOOL=ON -D3RDPARTY_TBB_DIR:STRING=%TBB_DIR:\=/%
+REM FREETYPE
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_FREETYPE:BOOL=ON -D3RDPARTY_FREETYPE_DIR:STRING=%FREETYPEDIR:\=/%
+REM FREEIMAGE
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_FREEIMAGE:BOOL=ON -D3RDPARTY_FREEIMAGE_DIR:STRING=%FREEIMAGEDIR:\=/%
+
+REM GL2PS
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_GL2PS:BOOL=ON -D3RDPARTY_GL2PS_DIR:STRING=%GL2PSDIR:\=/%
+
+REM no TCL/TK
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF
+
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo *********************************************************************
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS%
+echo *********************************************************************
+echo.
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo *********************************************************************
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj"
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation...
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+echo.
+echo *********************************************************************
+echo *** installation (data)...
+echo *********************************************************************
+echo.
+robocopy %SOURCE_DIR%\data %PRODUCT_INSTALL%\data /E /NP /NFL /NDL /NS /NC
+if NOT %ERRORLEVEL% == 1 (
+    echo ERROR when copying %SOURCE_DIR%\data
+    exit 1
+)
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
+
diff --git a/products/compil_scripts/CAS_7.4.bat b/products/compil_scripts/CAS_7.4.bat
new file mode 100644 (file)
index 0000000..71f0597
--- /dev/null
@@ -0,0 +1,95 @@
+@echo off
+
+echo ##########################################################################
+echo CAS %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+if %SAT_DEBUG% == 1 (
+  set PRODUCT_BUILD_TYPE=Debug
+)
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %BUILD_DIR%
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64"
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+
+REM TBB
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_TBB:BOOL=ON -D3RDPARTY_TBB_DIR:STRING=%TBB_DIR:\=/%
+REM FREETYPE
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_FREETYPE:BOOL=ON -D3RDPARTY_FREETYPE_DIR:STRING=%FREETYPEDIR:\=/%
+REM FREEIMAGE
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_FREEIMAGE:BOOL=ON -D3RDPARTY_FREEIMAGE_DIR:STRING=%FREEIMAGEDIR:\=/%
+
+REM no GL2PS
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_GL2PS:BOOL=OFF
+
+REM no TCL/TK
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_TCL=OFF -DBUILD_MODULE_Draw=OFF
+
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo *********************************************************************
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS%
+echo *********************************************************************
+echo.
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo *********************************************************************
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj"
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation...
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+echo.
+echo *********************************************************************
+echo *** installation (data)...
+echo *********************************************************************
+echo.
+robocopy %SOURCE_DIR%\data %PRODUCT_INSTALL%\data /E /NP /NFL /NDL /NS /NC
+if NOT %ERRORLEVEL% == 1 (
+    echo ERROR when copying %SOURCE_DIR%\data
+    exit 1
+)
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
+
diff --git a/products/compil_scripts/COREFLOWS.sh b/products/compil_scripts/COREFLOWS.sh
new file mode 100755 (executable)
index 0000000..5bd68ab
--- /dev/null
@@ -0,0 +1,74 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "CoreFlows" $VERSION
+echo "##########################################################################"
+
+
+mkdir -p $PRODUCT_INSTALL
+
+#==============
+#rm -rf $CoreFlows_build $CoreFlows_INSTALL
+#mkdir -p $CoreFlows_build
+#mkdir -p $CoreFlows_INSTALL
+#==============
+
+#cd $BUILD_DIR
+
+#================ A MODIFIER =============================
+# CDMATH_DIR, PETSC_DIR, PETSC_ARCH, CoreFlows_ROOT : Paths to be set by the user 
+export CDMATH_DIR=${CDMATH_ROOT_DIR}
+export PETSC_DIR=${PETSC_ROOT_DIR}
+export PETSC_ARCH=arch-linux2-c-debug # usually for fedora: arch-linux2-c-opt or arch-linux2-c-debug, for ubuntu: linux-gnu-c-opt or linux-gnu-c-debug
+export CoreFlows_ROOT=$SOURCE_DIR
+export CoreFlows_INSTALL=$PRODUCT_INSTALL
+
+#Compilation options (PYTHON, Doc, GUI) to be set by the user
+export CoreFlows_PYTHON='ON'   # To generate the SWIG module "Python = ON or OFF "
+export CoreFlows_DOC='ON'      # To generate the Documentation  "Doc = ON or OFF "
+export CoreFlows_GUI='ON'      # To generate the Graphic user interface  "GUI = ON or OFF "
+
+#------------------------------------------------------------------------------------------------------------------- 
+export CoreFlows=$CoreFlows_INSTALL/bin/Executable/CoreFlowsMainExe
+export LD_LIBRARY_PATH=$CDMATH_DIR/lib/:$PETSC_DIR/$PETSC_ARCH/lib:$CoreFlows_INSTALL/lib:${LD_LIBRARY_PATH}
+export PYTHONPATH=$CoreFlows_INSTALL/lib:$CoreFlows_INSTALL/lib/CoreFlows_Python:$CoreFlows_INSTALL/bin/CoreFlows_Python:$CoreFlows_INSTALL/lib/python2.7/site-packages/salome:$CDMATH_DIR/lib/:$CDMATH_DIR/lib/cdmath:$CDMATH_DIR/bin/cdmath:${PYTHONPATH}
+export CoreFlowsGUI=$CoreFlows_INSTALL/bin/salome/CoreFlows_Standalone.py
+export COREFLOWS_ROOT_DIR=$CoreFlows_INSTALL
+#=========================================================
+
+#CMAKE_OPTIONS="$CoreFlows_ROOT/CoreFlows_src -DCMAKE_INSTALL_PREFIX=$CoreFlows_INSTALL -DCMAKE_BUILD_TYPE=Debug -G"Eclipse CDT4 - Unix Makefiles" -D_ECLIPSE_VERSION=4.3 -DCOREFLOWS_WITH_DOCUMENTATION=$CoreFlows_DOC -DCOREFLOWS_WITH_PYTHON=$CoreFlows_PYTHON -DCOREFLOWS_WITH_GUI=$CoreFlows_GUI -DCOREFLOWS_WITH_PACKAGE=OFF"
+CMAKE_OPTIONS="-DCMAKE_INSTALL_PREFIX=$CoreFlows_INSTALL -DCMAKE_BUILD_TYPE=Debug -DCOREFLOWS_WITH_DOCUMENTATION=$CoreFlows_DOC -DCOREFLOWS_WITH_PYTHON=$CoreFlows_PYTHON -DCOREFLOWS_WITH_GUI=$CoreFlows_GUI -DCOREFLOWS_WITH_PACKAGE=OFF"
+
+echo
+echo "*** cmake" $CMAKE_OPTIONS
+cmake $SOURCE_DIR/CoreFlows_src $CMAKE_OPTIONS 
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on CMake"
+    exit 1
+fi
+
+echo
+echo "*** make"
+make
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+cd ..
+chmod -R 755 $CoreFlows_INSTALL/bin/CoreFlows_Python/* $CoreFlows_INSTALL/share/examples/Python/*
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/Hexotic.sh b/products/compil_scripts/Hexotic.sh
new file mode 100755 (executable)
index 0000000..493cc23
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Hexotic" $VERSION
+echo "##########################################################################"
+
+echo
+echo "*** mkdir" $PRODUCT_INSTALL
+mkdir -p $PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on mkdir"
+    exit 1
+fi
+
+echo
+echo "*** cp -r * " $PRODUCT_INSTALL
+cp -r $SOURCE_DIR/* $PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 2
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/Homard-SALOME9.sh b/products/compil_scripts/Homard-SALOME9.sh
new file mode 100755 (executable)
index 0000000..9e95327
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Homard" $VERSION
+echo "##########################################################################"
+
+echo
+echo "*** mkdir" $PRODUCT_INSTALL
+mkdir -p $PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on mkdir"
+    exit 1
+fi
+
+echo
+echo "*** cp -r "$SOURCE_DIR"/* " $PRODUCT_INSTALL"/homard"
+cp -r $SOURCE_DIR/* $PRODUCT_INSTALL/
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 2
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/Homard.sh b/products/compil_scripts/Homard.sh
new file mode 100755 (executable)
index 0000000..3ef29b9
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Homard" $VERSION
+echo "##########################################################################"
+
+echo
+echo "*** mkdir" $PRODUCT_INSTALL
+mkdir -p $PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on mkdir"
+    exit 1
+fi
+
+echo
+echo "*** cp -r "$SOURCE_DIR"/* " $PRODUCT_INSTALL"/homard"
+cp -r $SOURCE_DIR/* $PRODUCT_INSTALL/homard
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 2
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/Jinja2.bat b/products/compil_scripts/Jinja2.bat
new file mode 100755 (executable)
index 0000000..a5184cf
--- /dev/null
@@ -0,0 +1,41 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Jinja2 %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages\r
+mkdir %dir_lib%\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/Jinja2.sh b/products/compil_scripts/Jinja2.sh
new file mode 100755 (executable)
index 0000000..15ac1b8
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Jinja2" $VERSION
+echo "##########################################################################"
+
+
+mkdir -p $PRODUCT_INSTALL
+
+cd $SOURCE_DIR
+
+mkdir -p ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH}
+
+## unset PYTHONDONTWRITEBYTECODE set by default on MD10
+#PYTHONDONTWRITEBYTECODE=
+
+echo
+echo "*** setup.py"
+python setup.py install --prefix=${PRODUCT_INSTALL} --install-lib ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/MeshGems.bat b/products/compil_scripts/MeshGems.bat
new file mode 100755 (executable)
index 0000000..5d76b6f
--- /dev/null
@@ -0,0 +1,51 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo MeshGems $VERSION\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin\r
+if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib\r
+if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set SRC_FOLDER=Win7_64_VC14\r
+\r
+cd DISTENE\MeshGems-*\Products\r
+\r
+echo SRC_FOLDER = %SRC_FOLDER%\r
+echo PRODUCT_INSTALL = %PRODUCT_INSTALL%\r
+\r
+rem ## Includes\r
+xcopy include\* %PRODUCT_INSTALL%\include /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on copying include\r
+    exit 1\r
+)\r
+\r
+rem ## Lib\r
+echo. \r
+echo running command: xcopy lib\%SRC_FOLDER%\* %PRODUCT_INSTALL%\lib /E /I /Q\r
+xcopy lib\%SRC_FOLDER%\* %PRODUCT_INSTALL%\lib /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on copying lib\r
+    exit 2\r
+)\r
+\r
+rem ## Bin\r
+echo. \r
+echo running command: bin\%SRC_FOLDER%\* %PRODUCT_INSTALL%\bin /E /I /Q\r
+xcopy bin\%SRC_FOLDER%\* %PRODUCT_INSTALL%\bin /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on copying bin\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/MeshGems.sh b/products/compil_scripts/MeshGems.sh
new file mode 100755 (executable)
index 0000000..5113afd
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "MeshGems" $VERSION
+echo "##########################################################################"
+
+echo
+echo "*** mkdir" $PRODUCT_INSTALL
+mkdir -p $PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on mkdir"
+    exit 1
+fi
+
+echo
+echo "*** cp -r "$SOURCE_DIR"/* " $PRODUCT_INSTALL
+cp -r $SOURCE_DIR/* $PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 2
+fi
+
+if [ -n "$SAT_HPC" ]
+then
+    echo "WARNING: adding  MG-Tetra_HPC ..."
+    cd $PRODUCT_INSTALL/stubs
+    mpicc meshgems_mpi.c -DMESHGEMS_LINUX_BUILD -I ../include -shared -fPIC -o ../lib/Linux_64/libmeshgems_mpi.so
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParMetis-3.sh b/products/compil_scripts/ParMetis-3.sh
new file mode 100755 (executable)
index 0000000..26faaf5
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParMetis" $VERSION
+echo "##########################################################################"
+
+
+
+cp -r $SOURCE_DIR/* .
+
+echo
+echo "*** apply sed for 64bits platforms"
+sed -e 's/CC = mpicc/CC = mpicc -fPIC/g' Makefile.in > Makefile.in_new
+cp Makefile.in_new Makefile.in
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+# install
+echo "** install"
+mkdir -p $PRODUCT_INSTALL
+mkdir -p $PRODUCT_INSTALL"/METISLib"
+mkdir -p $PRODUCT_INSTALL"/ParMETISLib"
+
+cp libparmetis.a $PRODUCT_INSTALL
+cp libmetis.a $PRODUCT_INSTALL
+cp parmetis.h $PRODUCT_INSTALL
+cp Graphs/ptest Graphs/mtest Graphs/parmetis Graphs/pometis $PRODUCT_INSTALL
+
+cp METISLib/*.h $PRODUCT_INSTALL"/METISLib"
+cp ParMETISLib/*.h $PRODUCT_INSTALL"/ParMETISLib"
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-3.14.0.sh b/products/compil_scripts/ParaView-3.14.0.sh
new file mode 100755 (executable)
index 0000000..f971d01
--- /dev/null
@@ -0,0 +1,143 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+
+
+
+echo "Resize image in plugin SurfaceLIC doc"
+BUILD_DIR=`pwd`
+cd $SOURCE_DIR/Plugins/SurfaceLIC/doc/
+convert surface_lic.png -resize 400 surface_lic2.png
+if [ $? -ne 0 ]
+then
+    echo "convert command failed"
+    exit 1
+fi
+mv surface_lic2.png surface_lic.png
+cd $BUILD_DIR
+
+
+python_name=python$PYTHON_VERSION
+
+CMAKE_OPTIONS=""
+
+### common settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+### compiler settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_HAVE_GETSOCKNAME_WITH_SOCKLEN_T=1"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+if [[ $BITS == "64" ]]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+fi
+
+### Paraview general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_OGGTHEORA_ENCODER:BOOL=ON"
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON"
+
+### VTK general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_HYBRID:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_PARALLEL:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_PATENTED:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_RENDERING:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF"
+
+### Qt settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_QT_USE_WEBKIT:BOOL=ON"
+
+### Python settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_PYTHON:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_PATH:STRING=${PYTHON_ROOT_DIR}/include/${python_name}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so"
+
+### No tcl tk wrap
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_TK:BOOL=OFF"
+
+### HDF5 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_SYSTEM_HDF5:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_INCLUDE_DIR:STRING=${HDF5HOME}/include"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_LIBRARY:STRING=${HDF5HOME}/lib/libhdf5.so"
+
+### VisIt Database bridge settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOSTDIR}"
+
+### gl2ps settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_GL2PS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PSDIR}/include"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PSDIR}/lib/libgl2ps.so"
+
+### Extra options (switch off non-used Paraview plug-ins)
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessing:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Prism:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF"
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_VisTrailsPlugin:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_pvblot:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF"
+
+### Extra options (switch on required Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON"
+
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 2
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 3
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 4
+fi
+
+echo
+echo "Copy some missing files"
+PVCMAKEDIR=$PRODUCT_INSTALL/lib/paraview-3.14/CMake
+cp ../CMake/generate_proxydocumentation.cmake $PVCMAKEDIR
+cp ../CMake/smxml_to_xml.xsl $PVCMAKEDIR
+cp ../CMake/xml_to_html.xsl $PVCMAKEDIR
+cp ../CMake/xml_to_wiki.xsl.in $PVCMAKEDIR
+cp ../CMake/generate_qhp.cmake $PVCMAKEDIR
+
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-4.2.0.sh b/products/compil_scripts/ParaView-4.2.0.sh
new file mode 100755 (executable)
index 0000000..72a5cb1
--- /dev/null
@@ -0,0 +1,144 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+
+
+PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+export python_name=python$PYTHON_VERSION
+
+CMAKE_OPTIONS=""
+
+### verbose log
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON"
+
+### common settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+
+### compiler settings
+if [[ $BITS == "64" ]]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+fi
+
+### Paraview general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+fi
+
+### VTK general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF"  # Make sure Python is thread-safe in ParaView
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
+
+### Qt settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON"
+
+### Python settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so"
+
+### No tcl tk wrap
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF"
+
+### HDF5 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
+
+
+### VisIt Database bridge settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+
+### Boost settings (needed when activating VisIt bridge)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}"
+
+### gl2ps settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so"
+
+### libxml2 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
+
+### freetype settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
+
+
+### Extra options (switch off non-used Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF"
+
+### Extra options (switch on required Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON"
+
+mkdir -p BUILD
+cd BUILD
+
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} ..
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-5.0.sh b/products/compil_scripts/ParaView-5.0.sh
new file mode 100755 (executable)
index 0000000..002932c
--- /dev/null
@@ -0,0 +1,187 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+
+
+PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+export python_name=python$PYTHON_VERSION
+
+CMAKE_OPTIONS=""
+
+### verbose log
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON"
+
+### common settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+
+### compiler settings
+if [[ $BITS == "64" ]]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+fi
+
+### Paraview general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+fi
+
+### VTK general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF"       # issue 1779
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF"  # Make sure Python is thread-safe in ParaView
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON"
+### OpenGL2 backend for performance improvment
+# https://blog.kitware.com/new-opengl-rendering-in-vtk/ 
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND=OpenGL2"     
+### OpenMP to speed computation of some filters
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+# https://blog.kitware.com/accelerated-filters-in-paraview-5/
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" 
+
+### Qt settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON"
+if [ -n "$QT5_ROOT_DIR" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5"
+fi
+
+### Python settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON"
+if [ -n "$PYTHONHOME" ] 
+then
+  # with a native python, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so"
+fi
+
+### No tcl tk wrap
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF"
+
+### HDF5 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
+
+
+### VisIt Database bridge settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+
+### Boost settings (needed when activating VisIt bridge)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}"
+
+### gl2ps settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON"
+if [ -n "$GL2PS_ROOT_DIR" ] 
+then
+  # with a native gl2ps, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so"
+fi
+
+### libxml2 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON"
+if [ -n "$LIBXML2_ROOT_DIR" ] 
+then
+  # with a native libxml2, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
+fi
+
+### freetype settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON"
+if [ -n "$FREETYPE_ROOT_DIR" ] 
+then
+  # with a native freetype, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
+fi
+
+### Extra options since OCC presta to improve Paraview for Salome
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_3DGLYPH:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_EXTENDED_OPENFILEDIALOG:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_TIMECONTROL_SLIDER:BOOL=ON"
+
+### Extra options (switch off non-used Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF"
+
+### Extra options (switch on required Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON"
+
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-5.0/ && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 4
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-5.1-820-offscreen_rendering.sh b/products/compil_scripts/ParaView-5.1-820-offscreen_rendering.sh
new file mode 100755 (executable)
index 0000000..dcb956f
--- /dev/null
@@ -0,0 +1,194 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+
+
+PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+export python_name=python$PYTHON_VERSION
+
+CMAKE_OPTIONS=""
+
+### verbose log
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON"
+
+### common settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+
+### compiler settings
+if [[ $BITS == "64" ]]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+fi
+
+### Paraview general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+fi
+
+### VTK general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF"       # issue 1779
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF"  # Make sure Python is thread-safe in ParaView
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON"
+### OpenGL2 backend for performance improvment
+# https://blog.kitware.com/new-opengl-rendering-in-vtk/ 
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND=OpenGL2"     
+### OpenMP to speed computation of some filters
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+# https://blog.kitware.com/accelerated-filters-in-paraview-5/
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" 
+
+### Qt settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON"
+
+### Python settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON"
+if [ -n "$PYTHONHOME" ] 
+then
+  # with a native python, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so"
+fi
+
+### No tcl tk wrap
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF"
+
+### HDF5 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
+
+
+### VisIt Database bridge settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+
+### Boost settings (needed when activating VisIt bridge)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}"
+
+### gl2ps settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON"
+if [ -n "$GL2PS_ROOT_DIR" ] 
+then
+  # with a native gl2ps, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so"
+fi
+
+### libxml2 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON"
+if [ -n "$LIBXML2_ROOT_DIR" ] 
+then
+  # with a native libxml2, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
+fi
+
+### freetype settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON"
+if [ -n "$FREETYPE_ROOT_DIR" ] 
+then
+  # with a native freetype, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
+fi
+
+### Extra options since OCC presta to improve Paraview for Salome
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_3DGLYPH:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_EXTENDED_OPENFILEDIALOG:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_TIMECONTROL_SLIDER:BOOL=ON"
+
+### Extra options (switch off non-used Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF"
+
+### Extra options (switch on required Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON"
+
+# Offscreen-rendering
+CMAKE_OPTIONS=$CMAKE_OPTIONS"   -DVTK_USE_X=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS"   -DOPENGL_INCLUDE_DIR=IGNORE" #wiki paraview #${MESA_ROOT_DIR}/include"
+CMAKE_OPTIONS=$CMAKE_OPTIONS"   -DOPENGL_xmesa_INCLUDE_DIR=IGNORE" #wiki paraview
+CMAKE_OPTIONS=$CMAKE_OPTIONS"   -DOPENGL_gl_LIBRARY=IGNORE" #wiki paraview #${MESA_ROOT_DIR}/lib/libOSMesa.so
+#CMAKE_OPTIONS=$CMAKE_OPTIONS"   -DOPENGL_glu_LIBRARY=${GLU_ROOT_DIR}/lib/libGLU.so" #devrait etre -DOPENGL_glu_LIBRARY=${MESA_ROOT_DIR}/lib/libGLU.so mais libGLU.so est manquant dans l'install de mesa
+CMAKE_OPTIONS=$CMAKE_OPTIONS"   -DVTK_OPENGL_HAS_OSMESA=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS"   -DVTK_USE_OFFSCREEN=OFF" #wiki paraview
+CMAKE_OPTIONS=$CMAKE_OPTIONS"   -DOSMESA_INCLUDE_DIR=${MESA_ROOT_DIR}/include"
+CMAKE_OPTIONS=$CMAKE_OPTIONS"   -DOSMESA_LIBRARY=${MESA_ROOT_DIR}/lib/libOSMesa.so"
+
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-5.1/ && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 4
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-5.1-820.sh b/products/compil_scripts/ParaView-5.1-820.sh
new file mode 100755 (executable)
index 0000000..14fe9a9
--- /dev/null
@@ -0,0 +1,189 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+
+
+PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+export python_name=python$PYTHON_VERSION
+
+CMAKE_OPTIONS=""
+
+### verbose log
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON"
+
+### common settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+
+### compiler settings
+if [[ $BITS == "64" ]]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+fi
+
+### Paraview general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF"
+fi
+
+### VTK general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF"       # issue 1779
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF"  # Make sure Python is thread-safe in ParaView
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON"
+### OpenGL2 backend for performance improvment
+# https://blog.kitware.com/new-opengl-rendering-in-vtk/ 
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND=OpenGL2"     
+### OpenMP to speed computation of some filters
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+# https://blog.kitware.com/accelerated-filters-in-paraview-5/
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" 
+
+### Qt settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON"
+if [ -n "$QT5_ROOT_DIR" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5"
+fi
+
+### Python settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON"
+if [ -n "$PYTHONHOME" ] 
+then
+  # with a native python, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so"
+fi
+
+### No tcl tk wrap
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF"
+
+### HDF5 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
+
+
+### VisIt Database bridge settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+
+### Boost settings (needed when activating VisIt bridge)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}"
+
+### gl2ps settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON"
+if [ -n "$GL2PS_ROOT_DIR" ] 
+then
+  # with a native gl2ps, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so"
+fi
+
+### libxml2 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON"
+if [ -n "$LIBXML2_ROOT_DIR" ] 
+then
+  # with a native libxml2, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
+fi
+
+### freetype settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON"
+if [ -n "$FREETYPE_ROOT_DIR" ] 
+then
+  # with a native freetype, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
+fi
+
+### Extra options since OCC presta to improve Paraview for Salome
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_3DGLYPH:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_EXTENDED_OPENFILEDIALOG:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_TIMECONTROL_SLIDER:BOOL=ON"
+
+### Extra options (switch off non-used Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF"
+
+### Extra options (switch on required Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON"
+
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-5.1/ && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 4
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-5.1.sh b/products/compil_scripts/ParaView-5.1.sh
new file mode 100755 (executable)
index 0000000..8f8473b
--- /dev/null
@@ -0,0 +1,190 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+
+
+PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+export python_name=python$PYTHON_VERSION
+
+CMAKE_OPTIONS=""
+
+### verbose log
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON"
+
+### common settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+### for import/export in CGNS format
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CGNS=ON"
+
+
+### compiler settings
+if [[ $BITS == "64" ]]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+fi
+
+### Paraview general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+fi
+
+### VTK general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF"       # issue 1779
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF"  # Make sure Python is thread-safe in ParaView
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON"
+### OpenGL2 backend for performance improvment
+# https://blog.kitware.com/new-opengl-rendering-in-vtk/ 
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND=OpenGL2"     
+### OpenMP to speed computation of some filters
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+# https://blog.kitware.com/accelerated-filters-in-paraview-5/
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" 
+
+### Qt settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON"
+if [ -n "$QT5_ROOT_DIR" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5"
+fi
+
+### Python settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON"
+if [ -n "$PYTHONHOME" ] 
+then
+  # with a native python, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so"
+fi
+
+### No tcl tk wrap
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF"
+
+### HDF5 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
+
+
+### VisIt Database bridge settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+
+### Boost settings (needed when activating VisIt bridge)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}"
+
+### gl2ps settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON"
+if [ -n "$GL2PS_ROOT_DIR" ] 
+then
+  # with a native gl2ps, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so"
+fi
+
+### libxml2 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON"
+if [ -n "$LIBXML2_ROOT_DIR" ] 
+then
+  # with a native libxml2, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
+fi
+
+### freetype settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON"
+if [ -n "$FREETYPE_ROOT_DIR" ] 
+then
+  # with a native freetype, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
+fi
+
+### Extra options since OCC presta to improve Paraview for Salome
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_3DGLYPH:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_EXTENDED_OPENFILEDIALOG:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_TIMECONTROL_SLIDER:BOOL=ON"
+
+### Extra options (switch off non-used Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF"
+
+### Extra options (switch on required Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON"
+
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-5.1/ && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 4
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-5.4-b5c4c89.sh b/products/compil_scripts/ParaView-5.4-b5c4c89.sh
new file mode 100755 (executable)
index 0000000..0df376f
--- /dev/null
@@ -0,0 +1,215 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+
+
+PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+export python_name=python$PYTHON_VERSION
+
+CMAKE_OPTIONS=""
+
+### verbose log
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON"
+
+### common settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+
+### compiler settings
+if [[ $BITS == "64" ]]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+fi
+
+### Paraview general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF"
+fi
+
+### VTK general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF"       # issue 1779
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF"  # Make sure Python is thread-safe in ParaView
+#TA 09/01/18 Modification due to latest version of ParaView-b5c4c893
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_LIBRARY_DIR="lib/paraview-5.4""
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_SITE_PACKAGES_SUFFIX="site-packages""
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON"
+
+### OpenGL2 backend for performance improvment
+# https://blog.kitware.com/new-opengl-rendering-in-vtk/ 
+# OpenGl2 mandatory in this version of paraview
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND:STRING=OpenGL2"
+### OpenMP to speed computation of some filters
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+# https://blog.kitware.com/accelerated-filters-in-paraview-5/
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" 
+
+### Qt settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON"
+if [ -n "$QT5_ROOT_DIR" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5"
+fi
+
+### Python settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON"
+if [ -n "$PYTHONHOME" ] 
+then
+  # with a native python, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}"
+  if [ ${PYTHON_VERSION%%.*} == 3 ]
+  then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config-${PYTHON_VERSION}/lib${python_name}.so"
+  else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so"
+  fi
+fi
+
+### No tcl tk wrap
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF"
+
+### HDF5 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
+
+### VisIt Database bridge settings
+if [ $DIST == "FD26" ]
+then
+    echo  we are on fedora 26, we don t compile VISITBRIDGE
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=OFF"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+    ### Boost settings (needed when activating VisIt bridge)
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}"
+fi
+
+### gl2ps settings
+# VTK and system gl2ps conflict resolution
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+if [ -n "$GL2PS_ROOT_DIR" ] 
+then
+  # with a native gl2ps, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so"
+fi
+
+### libxml2 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON"
+if [ -n "$LIBXML2_ROOT_DIR" ] 
+then
+  # with a native libxml2, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
+fi
+
+### freetype settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON"
+if [ -n "$FREETYPE_ROOT_DIR" ] 
+then
+  # with a native freetype, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
+fi
+
+### Extra options since OCC presta to improve Paraview for Salome
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_3DGLYPH:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_EXTENDED_OPENFILEDIALOG:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_TIMECONTROL_SLIDER:BOOL=ON"
+
+### Extra options (switch off non-used Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF"
+
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_WEB=OFF"
+
+### Extra options (switch on required Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON"
+
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+if [ ${PYTHON_VERSION%%.*} == 3 ]
+then
+    BUILD_DIR=`pwd`
+    cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.opt-1.pyc ${BUILD_DIR}/lib/site-packages/six.pyo
+    cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.pyc ${BUILD_DIR}/lib/site-packages/six.pyc
+fi
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-${PVLIBVERSION}/ && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+mv ${PRODUCT_INSTALL}/lib/libvtkm_cont-pv5.4.so* ${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/
+
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 4
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-5.4.1_b5c4c89.sh b/products/compil_scripts/ParaView-5.4.1_b5c4c89.sh
new file mode 100755 (executable)
index 0000000..1bcde0d
--- /dev/null
@@ -0,0 +1,250 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+
+
+PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+export python_name=python$PYTHON_VERSION
+
+CMAKE_OPTIONS=""
+
+### verbose log
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON"
+
+### common settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+
+### compiler settings
+# OP TEST
+#if [[ $BITS == "64" ]]
+#then
+#    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+#    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+#fi
+# OP 29/05/2018 Add 2 options used by BO
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+
+### Paraview general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON"
+    # OP 11/04/2018 Option not used
+    #    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON"
+    # OP 29/05/2018 Option not used
+    #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=ON"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=ON"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF"
+    # OP 11/04/2018 Option not used
+    #    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF"
+    # OP 29/05/2018 Option not used
+    #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=OFF"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF"
+fi
+
+### VTK general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF"       # issue 1779
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF"  # Make sure Python is thread-safe in ParaView
+
+# OP inhibit embedded Pygments and use the system (or SALOME) one
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON"
+
+# TA - OP 17/01/2018 Add options for ParaView libraries installation
+#         due to latest version of ParaView-b5c4c893
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-${PVLIBVERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-${PVLIBVERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-${PVLIBVERSION}/plugins"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTKm_INSTALL_LIB_DIR=lib/paraview-${PVLIBVERSION}"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
+
+### OpenGL2 backend for performance improvment
+# https://blog.kitware.com/new-opengl-rendering-in-vtk/ 
+# OpenGl2 mandatory in this version of paraview
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND:STRING=OpenGL2"
+### OpenMP to speed computation of some filters
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+# https://blog.kitware.com/accelerated-filters-in-paraview-5/
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" 
+
+### Qt settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON"
+if [ -n "$QT5_ROOT_DIR" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DQT_HELP_GENERATOR:STRING=${QT5_ROOT_DIR}/bin/qhelpgenerator"
+fi
+# OP 29/05/2018 Add option used by BO
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF"
+
+### Python settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON"
+
+# OP 29/05/2018 Add option used by BO
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_PYTHON:BOOL=ON"
+
+if [ -n "$PYTHONHOME" ] 
+then
+  # with a native python, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}"
+  if [ ${PYTHON_VERSION%%.*} == 3 ]
+  then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config-${PYTHON_VERSION}/lib${python_name}.so"
+  else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so"
+  fi
+fi
+
+### No tcl tk wrap
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF"
+
+### HDF5 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON"
+# OP 11/04/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON"
+
+### VisIt Database bridge settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+
+### Boost settings (needed when activating VisIt bridge)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}"
+
+### gl2ps settings
+# VTK and system gl2ps conflict resolution
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON"
+if [ -n "$GL2PS_ROOT_DIR" ] 
+then
+  # with a native gl2ps, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so"
+fi
+
+### libxml2 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON"
+if [ -n "$LIBXML2_ROOT_DIR" ] 
+then
+  # with a native libxml2, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
+fi
+
+### freetype settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON"
+
+if [ -n "$FREETYPE_ROOT_DIR" ] 
+then
+  # with a native freetype, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
+fi
+
+### Extra options (switch off non-used Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF"
+
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_WEB=OFF"
+
+### Extra options (switch on required Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON"
+
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON"
+
+# OP 10/04/2018 Add cgns prerequisite for import/export in CGNS format
+# OP 10/04/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CGNS=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_FIND_REQUIRED:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_INCLUDE_DIR:STRING=${CGNS_ROOT_DIR}/include"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_LIBRARY:STRING=${CGNS_ROOT_DIR}/lib/libcgns.so"
+# OP TEST
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_CGNS:BOOL=ON"
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+if [ ${PYTHON_VERSION%%.*} == 3 ]
+then
+    BUILD_DIR=`pwd`
+    cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.opt-1.pyc ${BUILD_DIR}/lib/site-packages/six.pyo
+    cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.pyc ${BUILD_DIR}/lib/site-packages/six.pyc
+fi
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-${PVLIBVERSION}/ && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%\${OUTPUT_DIR}/\${module_name}Hierarchy.txt%%" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/vtkWrapHierarchy.cmake
+
+# OP 26/03/2018 Add post-install suggested by Anthony (EDF) above
+
+
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 4
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-5.5.2p2_7591431.sh b/products/compil_scripts/ParaView-5.5.2p2_7591431.sh
new file mode 100755 (executable)
index 0000000..2b690c2
--- /dev/null
@@ -0,0 +1,252 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+
+
+PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+export python_name=python$PYTHON_VERSION
+
+CMAKE_OPTIONS=""
+
+### verbose log
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON"
+
+### common settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+
+### compiler settings
+# OP TEST
+#if [[ $BITS == "64" ]]
+#then
+#    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+#    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+#fi
+# OP 29/05/2018 Add 2 options used by BO
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+
+### Paraview general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON"
+    # OP 11/04/2018 Option not used
+    #    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON"
+    # OP 29/05/2018 Option not used
+    #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=ON"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=ON"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF"
+    # OP 11/04/2018 Option not used
+    #    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF"
+    # OP 29/05/2018 Option not used
+    #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=OFF"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF"
+fi
+
+### VTK general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF"       # issue 1779
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF"  # Make sure Python is thread-safe in ParaView
+
+# OP inhibit embedded Pygments and use the system (or SALOME) one
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON"
+
+# TA - OP 17/01/2018 Add options for ParaView libraries installation
+#         due to latest version of ParaView-b5c4c893
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-${PVLIBVERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-${PVLIBVERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-${PVLIBVERSION}/plugins"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTKm_INSTALL_LIB_DIR=lib/paraview-${PVLIBVERSION}"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
+
+### OpenGL2 backend for performance improvment
+# https://blog.kitware.com/new-opengl-rendering-in-vtk/ 
+# OpenGl2 mandatory in this version of paraview
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND:STRING=OpenGL2"
+### OpenMP to speed computation of some filters
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+# https://blog.kitware.com/accelerated-filters-in-paraview-5/
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" 
+
+### Qt settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON"
+if [ -n "$QT5_ROOT_DIR" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DQT_HELP_GENERATOR:STRING=${QT5_ROOT_DIR}/bin/qhelpgenerator"
+fi
+# OP 29/05/2018 Add option used by BO
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF"
+
+### Python settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON"
+
+# OP 29/05/2018 Add option used by BO
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_PYTHON:BOOL=ON"
+
+if [ -n "$PYTHONHOME" ] 
+then
+  # with a native python, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}"
+  if [ ${PYTHON_VERSION%%.*} == 3 ]
+  then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config-${PYTHON_VERSION}/lib${python_name}.so"
+  else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so"
+  fi
+fi
+
+### No tcl tk wrap
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF"
+
+### HDF5 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON"
+# OP 11/04/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON"
+
+### VisIt Database bridge settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+
+### Boost settings (needed when activating VisIt bridge)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}"
+
+### gl2ps settings
+# VTK and system gl2ps conflict resolution
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON"
+if [ -n "$GL2PS_ROOT_DIR" ] 
+then
+  # with a native gl2ps, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so"
+fi
+
+### libxml2 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON"
+if [ -n "$LIBXML2_ROOT_DIR" ] 
+then
+  # with a native libxml2, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
+fi
+
+### freetype settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON"
+
+if [ -n "$FREETYPE_ROOT_DIR" ] 
+then
+  # with a native freetype, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
+fi
+
+### Extra options (switch off non-used Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF"
+
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_WEB=OFF"
+
+### Extra options (switch on required Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON"
+
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON"
+
+# OP 10/04/2018 Add cgns prerequisite for import/export in CGNS format
+# OP 10/04/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CGNS=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_FIND_REQUIRED:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_INCLUDE_DIR:STRING=${CGNS_ROOT_DIR}/include"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_LIBRARY:STRING=${CGNS_ROOT_DIR}/lib/libcgns.so"
+# OP TEST
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_CGNS:BOOL=ON"
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+if [ ${PYTHON_VERSION%%.*} == 3 ]
+then
+    BUILD_DIR=`pwd`
+    cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.opt-1.pyc ${BUILD_DIR}/lib/site-packages/six.pyo
+    cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.pyc ${BUILD_DIR}/lib/site-packages/six.pyc
+fi
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-${PVLIBVERSION}/ && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake
+
+# && sed -i "s%\${OUTPUT_DIR}/\${module_name}Hierarchy.txt%%" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/vtkWrapHierarchy.cmake
+
+# OP 17/07/2018 post-install suppressed for SALOME master test
+# OP 26/03/2018 Add post-install suggested by Anthony (EDF) above
+
+
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 4
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-5.6.0_bfaf7b8.bat b/products/compil_scripts/ParaView-5.6.0_bfaf7b8.bat
new file mode 100644 (file)
index 0000000..0c6f911
--- /dev/null
@@ -0,0 +1,209 @@
+@echo off
+
+echo ##########################################################################
+echo ParaView %VERSION% %PYTHON_VERSION% %PYTHON_VERSION:.=%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+set CMAKE_OPTIONS=
+
+set PVLIBVERSION=5.6
+
+set python_name=python%PYTHON_VERSION%
+
+REM verbose log
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_VERBOSE_MAKEFILE=ON
+
+REM common settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_TESTING:BOOL=OFF
+
+REM Paraview general settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_MPI:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF
+
+
+REM VTK general settings
+REM # issue 1779
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_64BIT_IDS:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_FULL_THREADSAFE=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_NO_PYTHON_THREADS:BOOL=OFF  
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-%PVLIBVERSION%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-%PVLIBVERSION%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-%PVLIBVERSION%/plugins
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTKm_INSTALL_LIB_DIR=lib/paraview-%PVLIBVERSION%
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF
+
+REM OpenGL2 backend for performance improvment
+REM https://blog.kitware.com/new-opengl-rendering-in-vtk/ 
+REM OpenGl2 mandatory in this version of paraview
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_RENDERING_BACKEND:STRING=OpenGL2
+
+REM OpenMP to speed computation of some filters
+REM https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+REM https://blog.kitware.com/accelerated-filters-in-paraview-5/
+REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP
+
+REM Qt settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_QT_GUI:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_QT_VERSION=5
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_HELP_GENERATOR:STRING=%QT5_ROOT_DIR:\=/%/bin/qhelpgenerator.exe
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF
+REM # additionaly for windows
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_QMAKE_EXECUTABLE:STRING=%QT5_ROOT_DIR:\=/%/bin/qmake.exe
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_BINARY_DIR:STRING=%QT5_ROOT_DIR:\=/%/bin/
+
+REM # Python settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_PYTHON:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_PYTHON:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE:STRING=%PYTHON_ROOT_DIR:\=/%/python.exe
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_INCLUDE_DIR:STRING=%PYTHON_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_LIBRARY:STRING=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WINDOWS_PYTHON_DEBUGGABLE:BOOL=OFF
+REM No tcl tk wrap
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_JAVA:BOOL=OFF
+
+REM HDF5 settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_HDF5:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_INCLUDE_DIRS:STRING=%HDF5_ROOT_DIR:\=/%/include
+
+set LIST_HDF5_LIBRARIES=%HDF5_ROOT_DIR:\=/%/lib/hdf5_cpp.lib
+set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5_hl_cpp.lib
+set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5.lib
+set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5_hl.lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_LIBRARIES:STRING=%LIST_HDF5_LIBRARIES%
+
+REM VisIt Database bridge settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_VISITBRIDGE=ON
+
+REM Boost settings (needed when activating VisIt bridge)
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT=%BOOST_ROOT_DIR:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT:PATH=%BOOST_ROOT_DIR:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_ADDITIONAL_VERSIONS="1.67.0 1.67"
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_INCLUDEDIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_INCLUDE_DIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67
+REM gl2ps settings
+REM VTK and system gl2ps conflict resolution
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_GL2PS:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DGL2PS_INCLUDE_DIR:STRING=%GL2PS_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DGL2PS_LIBRARY:STRING=%GL2PS_ROOT_DIR:\=/%/lib/gl2ps.lib
+
+REM # libxml2 settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_INCLUDE_DIR:STRING=%LIBXML2_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_LIBRARIES:STRING=%LIBXML2_ROOT_DIR:\=/%/lib/libxml2.lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_XMLLINT_EXECUTABLE=%LIBXML2_ROOT_DIR:\=/%/bin/xmllint.exe
+
+REM # freetype settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_INCLUDE_DIR_freetype2:STRING=%FREETYPE_ROOT_DIR:\=/%/include/freetype2
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_LIBRARY:STRING=%FREETYPE_ROOT_DIR:\=/%/lib/freetype.lib
+
+REM Extra options (switch off non-used Paraview plug-ins)
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_VTKmFilters:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_CATALYST_ADAPTORS:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_WEB=OFF
+
+REM Extra options (switch on required Paraview plug-ins)
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_FIND_REQUIRED:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_INCLUDE_DIR:STRING=%CGNS_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_LIBRARY:STRING=%CGNS_ROOT_DIR:\=/%/lib/cgns.lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_CGNS:BOOL=ON
+
+if defined OSPRAY_ROOT_DIR (
+   set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_OSPRAY:BOOL=ON -DOSPRAY_INSTALL_DIR:STRING=%OSPRAY_ROOT_DIR:\=/%
+)
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+
+cd %BUILD_DIR%
+echo.
+echo INFO: running command: %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+echo --------------------------------------------------------------------------
+
+msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+echo --------------------------------------------------------------------------
+
+msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+if defined OSPRAY_ROOT_DIR (
+    sed -i "s/;ospray::ospray//g" %PRODUCT_INSTALL:\=/%/lib/cmake/paraview-%PVLIBVERSION%/ParaViewTargets.cmake
+    sed -i "s/;ospray::ospray//g" %PRODUCT_INSTALL:\=/%/lib/cmake/qttesting/ParaViewTargets.cmake
+)
+
+REM in order to fullfill some prerequistes by GUI!
+cd %PRODUCT_INSTALL%\bin
+mkdir Lib
+MOVE /Y site-packages Lib\site-packages
+
+REM move 
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** Post processing
+echo --------------------------------------------------------------------------
+echo.
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-5.6.0_bfaf7b8.sh b/products/compil_scripts/ParaView-5.6.0_bfaf7b8.sh
new file mode 100755 (executable)
index 0000000..c962bd4
--- /dev/null
@@ -0,0 +1,271 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+
+
+PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+export python_name=python$PYTHON_VERSION
+
+CMAKE_OPTIONS=""
+
+### verbose log
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON"
+
+### common settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+
+### compiler settings
+# OP TEST
+#if [[ $BITS == "64" ]]
+#then
+#    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+#    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+#fi
+# OP 29/05/2018 Add 2 options used by BO
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+
+### Paraview general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON"
+    # OP 11/04/2018 Option not used
+    #    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON"
+    # OP 29/05/2018 Option not used
+    #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=ON"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=ON"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF"
+    # OP 11/04/2018 Option not used
+    #    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF"
+    # OP 29/05/2018 Option not used
+    #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=OFF"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF"
+fi
+
+### VTK general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF"       # issue 1779
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF"  # Make sure Python is thread-safe in ParaView
+
+# OP inhibit embedded Pygments and use the system (or SALOME) one
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON"
+
+# TA - OP 17/01/2018 Add options for ParaView libraries installation
+#         due to latest version of ParaView-b5c4c893
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-${PVLIBVERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-${PVLIBVERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-${PVLIBVERSION}/plugins"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTKm_INSTALL_LIB_DIR=lib/paraview-${PVLIBVERSION}"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
+
+### OpenGL2 backend for performance improvment
+# https://blog.kitware.com/new-opengl-rendering-in-vtk/ 
+# OpenGl2 mandatory in this version of paraview
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND:STRING=OpenGL2"
+### OpenMP to speed computation of some filters
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+# https://blog.kitware.com/accelerated-filters-in-paraview-5/
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" 
+
+### Qt settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON"
+if [ -n "$QT5_ROOT_DIR" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DQT_HELP_GENERATOR:STRING=${QT5_ROOT_DIR}/bin/qhelpgenerator"
+fi
+# OP 29/05/2018 Add option used by BO
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF"
+
+### Python settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON"
+
+# OP 29/05/2018 Add option used by BO
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_PYTHON:BOOL=ON"
+
+if [ -n "$PYTHONHOME" ] 
+then
+  # with a native python, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}"
+  if [ ${PYTHON_VERSION%%.*} == 3 ]
+  then
+    # OP TEST
+    #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config-${PYTHON_VERSION}/lib${python_name}.so"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/lib${python_name}.so"
+  else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so"
+  fi
+fi
+
+### No tcl tk wrap
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF"
+
+### HDF5 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON"
+# OP 11/04/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON"
+
+### VisIt Database bridge settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+
+### Boost settings (needed when activating VisIt bridge)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}"
+
+### gl2ps settings
+# VTK and system gl2ps conflict resolution
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON"
+if [ -n "$GL2PS_ROOT_DIR" ] 
+then
+  # with a native gl2ps, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so"
+fi
+
+### libxml2 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON"
+if [ -n "$LIBXML2_ROOT_DIR" ] 
+then
+  # with a native libxml2, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
+fi
+
+### freetype settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON"
+
+if [ -n "$FREETYPE_ROOT_DIR" ] 
+then
+  # with a native freetype, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
+fi
+
+### Extra options (switch off non-used Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF"
+
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_WEB=OFF"
+
+### Extra options (switch on required Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON"
+
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_CGNS:BOOL=ON"
+if [ -n "$CGNS_ROOT_DIR" ] 
+then
+  # with a native cgns, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_FIND_REQUIRED:BOOL=ON"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_INCLUDE_DIR:STRING=${CGNS_ROOT_DIR}/include"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_LIBRARY:STRING=${CGNS_ROOT_DIR}/lib/libcgns.so"
+fi
+
+
+# Check whether OSPRAY needs to be switched on
+if [ -n "$OSPRAY_ROOT_DIR" ] 
+then
+    echo "WARNING: OSPRAY plugin requested..."
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_OSPRAY=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DOSPRAY_INSTALL_DIR=$OSPRAY_ROOT_DIR"
+fi
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+if [ ${PYTHON_VERSION%%.*} == 3 ]
+then
+    BUILD_DIR=`pwd`
+    cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.opt-1.pyc ${BUILD_DIR}/lib/site-packages/six.pyo
+    cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.pyc ${BUILD_DIR}/lib/site-packages/six.pyc
+fi
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-${PVLIBVERSION}/ && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake
+
+# weird behavior - bug in Paraview OSpray generation. LATA will fail to link otherwise on Fedora 26
+if [ -n "$OSPRAY_ROOT_DIR" ]
+then
+    sed -i 's/;ospray::ospray//g' ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake
+    sed -i 's/;ospray::ospray//g' ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/ParaViewTargets.cmake
+    sed -i 's/;ospray::ospray//g' ${PRODUCT_INSTALL}/lib/cmake/qttesting/ParaViewTargets.cmake
+fi
+
+# && sed -i "s%\${OUTPUT_DIR}/\${module_name}Hierarchy.txt%%" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/vtkWrapHierarchy.cmake
+
+# OP 17/07/2018 post-install suppressed for SALOME master test
+# OP 26/03/2018 Add post-install suggested by Anthony (EDF) above
+
+
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 4
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-5.6.0p1_7bafc2b.bat b/products/compil_scripts/ParaView-5.6.0p1_7bafc2b.bat
new file mode 100644 (file)
index 0000000..f5a523e
--- /dev/null
@@ -0,0 +1,201 @@
+@echo off
+
+echo ##########################################################################
+echo ParaView %VERSION% %PYTHON_VERSION% %PYTHON_VERSION:.=%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+set CMAKE_OPTIONS=
+
+set PVLIBVERSION=5.6
+
+set python_name=python%PYTHON_VERSION%
+
+REM verbose log
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_VERBOSE_MAKEFILE=ON
+
+REM common settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_TESTING:BOOL=OFF
+
+REM Paraview general settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_MPI:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF
+
+
+REM VTK general settings
+REM # issue 1779
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_64BIT_IDS:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_FULL_THREADSAFE=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_NO_PYTHON_THREADS:BOOL=OFF  
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-%PVLIBVERSION%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-%PVLIBVERSION%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-%PVLIBVERSION%/plugins
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTKm_INSTALL_LIB_DIR=lib/paraview-%PVLIBVERSION%
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF
+
+REM OpenGL2 backend for performance improvment
+REM https://blog.kitware.com/new-opengl-rendering-in-vtk/ 
+REM OpenGl2 mandatory in this version of paraview
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_RENDERING_BACKEND:STRING=OpenGL2
+
+REM OpenMP to speed computation of some filters
+REM https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+REM https://blog.kitware.com/accelerated-filters-in-paraview-5/
+REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP
+
+REM Qt settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_QT_GUI:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_QT_VERSION=5
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_HELP_GENERATOR:STRING=%QT5_ROOT_DIR:\=/%/bin/qhelpgenerator.exe
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF
+REM # additionaly for windows
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_QMAKE_EXECUTABLE:STRING=%QT5_ROOT_DIR:\=/%/bin/qmake.exe
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DQT_BINARY_DIR:STRING=%QT5_ROOT_DIR:\=/%/bin/
+
+REM # Python settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_PYTHON:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_PYTHON:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE:STRING=%PYTHON_ROOT_DIR:\=/%/python.exe
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_INCLUDE_DIR:STRING=%PYTHON_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_LIBRARY:STRING=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WINDOWS_PYTHON_DEBUGGABLE:BOOL=OFF
+REM No tcl tk wrap
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_JAVA:BOOL=OFF
+
+REM HDF5 settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_HDF5:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_INCLUDE_DIRS:STRING=%HDF5_ROOT_DIR:\=/%/include
+
+set LIST_HDF5_LIBRARIES=%HDF5_ROOT_DIR:\=/%/lib/hdf5_cpp.lib
+set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5_hl_cpp.lib
+set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5.lib
+set LIST_HDF5_LIBRARIES=%LIST_HDF5_LIBRARIES%;%HDF5_ROOT_DIR:\=/%/lib/hdf5_hl.lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_LIBRARIES:STRING=%LIST_HDF5_LIBRARIES%
+
+REM VisIt Database bridge settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_VISITBRIDGE=ON
+
+REM Boost settings (needed when activating VisIt bridge)
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT=%BOOST_ROOT_DIR:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT:PATH=%BOOST_ROOT_DIR:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_ADDITIONAL_VERSIONS="1.67.0 1.67"
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_INCLUDEDIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_INCLUDE_DIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67
+REM gl2ps settings
+REM VTK and system gl2ps conflict resolution
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_GL2PS:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DGL2PS_INCLUDE_DIR:STRING=%GL2PS_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DGL2PS_LIBRARY:STRING=%GL2PS_ROOT_DIR:\=/%/lib/gl2ps.lib
+
+REM # libxml2 settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_INCLUDE_DIR:STRING=%LIBXML2_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_LIBRARIES:STRING=%LIBXML2_ROOT_DIR:\=/%/lib/libxml2.lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_XMLLINT_EXECUTABLE=%LIBXML2_ROOT_DIR:\=/%/bin/xmllint.exe
+
+REM # freetype settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_INCLUDE_DIR_freetype2:STRING=%FREETYPE_ROOT_DIR:\=/%/include/freetype2
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_LIBRARY:STRING=%FREETYPE_ROOT_DIR:\=/%/lib/freetype.lib
+
+REM Extra options (switch off non-used Paraview plug-ins)
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_MobileRemoteControl:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_VTKmFilters:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_CATALYST_ADAPTORS:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_WEB=OFF
+
+REM Extra options (switch on required Paraview plug-ins)
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_PointSprite:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_FIND_REQUIRED:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_INCLUDE_DIR:STRING=%CGNS_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_LIBRARY:STRING=%CGNS_ROOT_DIR:\=/%/lib/cgns.lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_SYSTEM_CGNS:BOOL=ON
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+
+cd %BUILD_DIR%
+echo.
+echo INFO: running command: %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+echo --------------------------------------------------------------------------
+
+msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+echo --------------------------------------------------------------------------
+
+msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+
+REM in order to fullfill some prerequistes by GUI!
+cd %PRODUCT_INSTALL%\bin
+mkdir Lib
+MOVE /Y site-packages Lib\site-packages
+
+REM move 
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** Post processing
+echo --------------------------------------------------------------------------
+echo.
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView-5.6.0p1_7bafc2b.sh b/products/compil_scripts/ParaView-5.6.0p1_7bafc2b.sh
new file mode 100755 (executable)
index 0000000..b3c6dc8
--- /dev/null
@@ -0,0 +1,254 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+rm -Rf $PRODUCT_INSTALL
+
+PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+export python_name=python$PYTHON_VERSION
+
+CMAKE_OPTIONS=""
+
+### verbose log
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE=ON"
+
+### common settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_TESTING:BOOL=OFF"
+
+
+### compiler settings
+# OP TEST
+#if [[ $BITS == "64" ]]
+#then
+#    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+#    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+#fi
+# OP 29/05/2018 Add 2 options used by BO
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS:STRING=-m64"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS:STRING=-m64"
+
+### Paraview general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=ON"
+    # OP 11/04/2018 Option not used
+    #    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=ON"
+    # OP 29/05/2018 Option not used
+    #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=ON"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=ON"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_MPI:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CATALYST:BOOL=OFF"
+    # OP 11/04/2018 Option not used
+    #    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator:BOOL=OFF"
+    # OP 29/05/2018 Option not used
+    #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_CatalystScriptGenerator:BOOL=OFF"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_COPROCESSING:BOOL=OFF"
+fi
+
+### VTK general settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_64BIT_IDS:BOOL=OFF"       # issue 1779
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_FULL_THREADSAFE=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_NO_PYTHON_THREADS:BOOL=OFF"  # Make sure Python is thread-safe in ParaView
+
+# OP inhibit embedded Pygments and use the system (or SALOME) one
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_PYGMENTS:BOOL=ON"
+
+# TA - OP 17/01/2018 Add options for ParaView libraries installation
+#         due to latest version of ParaView-b5c4c893
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-${PVLIBVERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-${PVLIBVERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_INSTALL_PLUGINS_DIR=lib/paraview-${PVLIBVERSION}/plugins"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTKm_INSTALL_LIB_DIR=lib/paraview-${PVLIBVERSION}"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
+
+### OpenGL2 backend for performance improvment
+# https://blog.kitware.com/new-opengl-rendering-in-vtk/ 
+# OpenGl2 mandatory in this version of paraview
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_RENDERING_BACKEND:STRING=OpenGL2"
+### OpenMP to speed computation of some filters
+# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
+# https://blog.kitware.com/accelerated-filters-in-paraview-5/
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP" 
+
+### Qt settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_QT_GUI:BOOL=ON"
+if [ -n "$QT5_ROOT_DIR" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_QT_VERSION=5"
+    # OP 29/05/2018 Add option used by BO
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DQT_HELP_GENERATOR:STRING=${QT5_ROOT_DIR}/bin/qhelpgenerator"
+fi
+# OP 29/05/2018 Add option used by BO
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF"
+
+### Python settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_PYTHON:BOOL=ON"
+
+# OP 29/05/2018 Add option used by BO
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_PYTHON:BOOL=ON"
+
+if [ -n "$PYTHONHOME" ] 
+then
+  # with a native python, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHON_ROOT_DIR}/bin/${python_name}"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/${python_name}"
+  if [ ${PYTHON_VERSION%%.*} == 3 ]
+  then
+    # OP TEST
+    #CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config-${PYTHON_VERSION}/lib${python_name}.so"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/lib${python_name}.so"
+  else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/${python_name}/config/lib${python_name}.so"
+  fi
+fi
+
+### No tcl tk wrap
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_WRAP_JAVA:BOOL=OFF"
+
+### HDF5 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_HDF5:BOOL=ON"
+# OP 11/04/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_H5PartReader:BOOL=ON"
+
+### VisIt Database bridge settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_USE_VISITBRIDGE=ON"
+
+### Boost settings (needed when activating VisIt bridge)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBOOST_ROOT=${BOOST_ROOT_DIR}"
+
+### gl2ps settings
+# VTK and system gl2ps conflict resolution
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_GL2PS:BOOL=ON"
+if [ -n "$GL2PS_ROOT_DIR" ] 
+then
+  # with a native gl2ps, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_INCLUDE_DIR:STRING=${GL2PS_ROOT_DIR}/include"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DGL2PS_LIBRARY:STRING=${GL2PS_ROOT_DIR}/lib/libgl2ps.so"
+fi
+
+### libxml2 settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_LIBXML2:BOOL=ON"
+if [ -n "$LIBXML2_ROOT_DIR" ] 
+then
+  # with a native libxml2, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
+fi
+
+### freetype settings
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_FREETYPE:BOOL=ON"
+
+if [ -n "$FREETYPE_ROOT_DIR" ] 
+then
+  # with a native freetype, do not use these options
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
+  CMAKE_OPTIONS=$CMAKE_OPTIONS" -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
+fi
+
+### Extra options (switch off non-used Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_Moments:BOOL=OFF"
+
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PrismPlugin:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SierraPlotTools:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_PacMan:BOOL=OFF"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_WEB=OFF"
+
+### Extra options (switch on required Paraview plug-ins)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_EyeDomeLighting:BOOL=ON"
+
+# OP 29/05/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_ForceTime:BOOL=ON"
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_BUILD_PLUGIN_SurfaceLIC:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_MATPLOTLIB:BOOL=ON"
+
+# OP 10/04/2018 Add cgns prerequisite for import/export in CGNS format
+# OP 10/04/2018 Option not used
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_ENABLE_CGNS=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_FIND_REQUIRED:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_INCLUDE_DIR:STRING=${CGNS_ROOT_DIR}/include"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_LIBRARY:STRING=${CGNS_ROOT_DIR}/lib/libcgns.so"
+# OP TEST
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DVTK_USE_SYSTEM_CGNS:BOOL=ON"
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+MAKE_OPTIONS="VERBOSE=1 "$MAKE_OPTIONS
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+if [ ${PYTHON_VERSION%%.*} == 3 ]
+then
+    BUILD_DIR=`pwd`
+    cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.opt-1.pyc ${BUILD_DIR}/lib/site-packages/six.pyo
+    cp ${BUILD_DIR}/lib/site-packages/__pycache__/six.cpython-35.pyc ${BUILD_DIR}/lib/site-packages/six.pyc
+fi
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+cp -f ./VTK/VTKTargets.cmake $PRODUCT_INSTALL/lib/cmake/paraview-${PVLIBVERSION}/ && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/lib/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/lib/paraview-${PVLIBVERSION}/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%\(IMPORTED_LOCATION_RELEASE.*\"\).*/bin/\([^/]\+\"\)%\1${PRODUCT_INSTALL}/bin/\2%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/qt-[0-9\.]\+/lib/\([^;]\+\)%${QTDIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/Python-[0-9\.]\+/lib/\([^;]\+\)%${PYTHON_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/hdf5-[0-9\.]\+/lib/\([^;]\+\)%${HDF5_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake && \
+sed -i "s%[^;\"]\+/gl2ps-[0-9\.]\+/lib/\([^;]\+\)%${GL2PS_ROOT_DIR}/lib/\1%g" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/VTKTargets.cmake
+
+# && sed -i "s%\${OUTPUT_DIR}/\${module_name}Hierarchy.txt%%" ${PRODUCT_INSTALL}/lib/cmake/paraview-${PVLIBVERSION}/vtkWrapHierarchy.cmake
+
+# OP 17/07/2018 post-install suppressed for SALOME master test
+# OP 26/03/2018 Add post-install suggested by Anthony (EDF) above
+
+
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 4
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView.bat b/products/compil_scripts/ParaView.bat
new file mode 100644 (file)
index 0000000..1efac77
--- /dev/null
@@ -0,0 +1,194 @@
+@echo off
+
+echo ##########################################################################
+echo ParaView %VERSION% %PYTHON_VERSION% %PYTHON_VERSION:.=%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+set CMAKE_OPTIONS=
+
+set PVLIBVERSION=5.8
+
+set python_name=python%PYTHON_VERSION%
+
+REM common compiler and install settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_VERBOSE_MAKEFILE=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%
+
+REM common ParaView settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_BUILD_SHARED_LIBS:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_LIBDIR:STRING=lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_TESTING:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON
+
+REM OpenGL settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DOpenGL_GL_PREFERENCE:STRING=LEGACY
+
+REM Ray-tracing settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_ENABLE_RAYTRACING:BOOL=ON 
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_ENABLE_OSPRAY:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -Dospray_DIR:PATH=%OSPRAY_ROOT_DIR:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -Dembree_DIR:PATH=%EMBREE_ROOT_DIR:\=/%
+
+REM Paraview general settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_FULL_THREADSAFE:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_VERSION:STRING=3
+
+REM VTK general settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_USE_64BIT_IDS:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-%PVLIBVERSION%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-%PVLIBVERSION%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTKm_INSTALL_LIB_DIR=lib/paraview-%PVLIBVERSION%
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_RenderingLOD:INTERNAL=YES
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_FiltersCore:INTERNAL=YES
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_CommonCore:INTERNAL=YES
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_IOCore:INTERNAL=YES
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_IOEnSight:INTERNAL=YES
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_VTK_IOInfovis:INTERNAL=YES
+
+REM TBB settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DTBB_ROOT:PATH=%TBB_ROOT_DIR:\=/%
+
+REM Qt settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_QT:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF
+
+REM Python settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_PYTHON:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_PYTHON:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPython3_INCLUDE_DIR:STRING=%PYTHON_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPython3_LIBRARY:STRING=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_FULL_THREADSAFE:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_NO_PYTHON_THREADS:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_PYTHON_VERSION:STRING=3
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WINDOWS_PYTHON_DEBUGGABLE:BOOL=OFF
+
+REM Java settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_WRAP_JAVA:BOOL=OFF
+
+REM MPI settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_USE_MPI:BOOL=OFF
+
+REM HDF5 settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_VTK_hdf5:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_DIR:PATH=%HDF5_ROOT_DIR:\=/%/cmake/hdf5
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_INCLUDE_DIRS:PATH=%HDF5_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_USE_STATIC_LIBRARIES:BOOL=OFF
+
+REM CGNS
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_ParaView_cgns:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_INCLUDE_DIR:PATH=%CGNS_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_LIBRARY:STRING=%CGNS_ROOT_DIR:\=/%/lib/cgnsdll.lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_ParaView_cgns:INTERNAL=YES
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_ParaView_VTKExtensionsCGNSReader:INTERNAL=YES
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_ENABLE_ParaView_VTKExtensionsCGNSWriter:INTERNAL=YES
+
+REM VisIt Database bridge settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS%  -DPARAVIEW_ENABLE_VISITBRIDGE:BOOL=ON
+
+REM Boost settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT:PATH=%BOOST_ROOT_DIR:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_ADDITIONAL_VERSIONS="1.67.0 1.67"
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_INCLUDEDIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_INCLUDE_DIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_NO_BOOST_CMAKE:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_NO_SYSTEM_PATHS:BOOL=ON
+
+REM libxml2 settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_VTK_libxml2:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_INCLUDE_DIR:STRING=%LIBXML2_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_LIBRARIES:STRING=%LIBXML2_ROOT_DIR:\=/%/lib/libxml2.lib
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLIBXML2_XMLLINT_EXECUTABLE=%LIBXML2_ROOT_DIR:\=/%/bin/xmllint.exe
+
+REM gl2ps settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF
+
+REM freetype settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_VTK_freetype:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_INCLUDE_DIRS:PATH=%FREETYPE_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_INCLUDE_DIR_freetype2:PATH=%FREETYPE_ROOT_DIR:\=/%/include/freetype2
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DFREETYPE_LIBRARY:STRING=%FREETYPE_ROOT_DIR:\=/%/lib/freetype.lib
+
+REM ZLIB settings
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVTK_MODULE_USE_EXTERNAL_VTK_zlib:BOOL=ON 
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DZLIB_INCLUDE_DIR:STRING=%ZLIB_ROOT_DIR:\=/%/include
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DZLIB_LIBRARY:STRING=%ZLIB_ROOT_DIR:\=/%/bin/zlib1.lib 
+
+REM Extra options (switch off non-used Paraview plug-ins)
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGINS_DEFAULT:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGIN_ENABLE_Moments:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGIN_ENABLE_SLACTools:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGIN_ENABLE_SierraPlotTools:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGIN_ENABLE_PacMan:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPARAVIEW_PLUGIN_ENABLE_pvblot:BOOL=OFF
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+
+cd %BUILD_DIR%
+echo.
+echo INFO: running command: %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+echo --------------------------------------------------------------------------
+
+msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+echo --------------------------------------------------------------------------
+
+msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+REM in order to fullfill some prerequistes by GUI!
+cd %PRODUCT_INSTALL%\bin
+mkdir Lib
+MOVE /Y site-packages Lib\site-packages
+
+REM move 
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** Post processing
+echo --------------------------------------------------------------------------
+echo.
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaView.sh b/products/compil_scripts/ParaView.sh
new file mode 100755 (executable)
index 0000000..7816c57
--- /dev/null
@@ -0,0 +1,206 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaView" $VERSION
+echo "##########################################################################"
+
+
+PVLIBVERSION=`echo ${VERSION} | awk -F. '{printf("%d.%d",$1,$2)}'`
+
+CMAKE_OPTIONS=""
+
+### common compiler and install settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_CXX_FLAGS:STRING=-m64"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_C_FLAGS:STRING=-m64"
+
+### common ParaView settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_BUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_LIBDIR:STRING=lib"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DBUILD_TESTING:BOOL=OFF"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_INSTALL_DEVELOPMENT_FILES:BOOL=ON"
+
+### OpenGL settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DOpenGL_GL_PREFERENCE:STRING=LEGACY"
+
+### Ray-tracing settings
+if [ -n "$OSPRAY_ROOT_DIR" ] 
+then
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_ENABLE_RAYTRACING:BOOL=ON"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_ENABLE_OSPRAY:BOOL=ON"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -Dospray_DIR:PATH=${OSPRAY_ROOT_DIR}/lib/cmake/ospray-${OSPRAY_VERSION}"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -Dembree_DIR:PATH=${EMBREE_ROOT_DIR}/lib/cmake/embree-${EMBREE_VERSION}"
+else
+    echo "WARNING: Paraview will be built without OSPRAY support!"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_ENABLE_RAYTRACING:BOOL=OFF"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_ENABLE_OSPRAY:BOOL=OFF"
+fi
+
+### VTK general settings
+if [ -n "$SALOME_USE_64BIT_IDS" ]
+then
+    echo "WARNING: user requested VTK 64 bits encoding..."
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_USE_64BIT_IDS:BOOL=ON"
+else
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_USE_64BIT_IDS:BOOL=OFF"
+fi
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_INSTALL_LIBRARY_DIR=lib/paraview-${PVLIBVERSION}"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_INSTALL_ARCHIVE_DIR=lib/paraview-${PVLIBVERSION}"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_PYTHON_SITE_PACKAGES_SUFFIX=site-packages"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTKm_INSTALL_LIB_DIR=lib/paraview-${PVLIBVERSION}"
+
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_REPORT_OPENGL_ERRORS:BOOL=OFF"
+
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_RenderingLOD:INTERNAL=YES"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_FiltersCore:INTERNAL=YES"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_CommonCore:INTERNAL=YES"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_IOCore:INTERNAL=YES"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_IOEnSight:INTERNAL=YES"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_VTK_IOInfovis:INTERNAL=YES"
+
+### TBB settings (in case of a system installation, TBB will be detected automatically)
+if [ -n "$TBB_ROOT_DIR" ]
+then
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DTBB_ROOT:PATH=${TBB_ROOT_DIR}"
+fi
+
+### Qt settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_USE_QT:BOOL=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_BUILD_QT_DESIGNER_PLUGIN:BOOL=OFF"
+
+### Python settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_USE_PYTHON:BOOL=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_PYTHON:BOOL=ON"
+if [ "${PYTHON_ROOT_DIR}" == "/usr" ]
+then
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPython3_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}m"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPython3_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib64/libpython${PYTHON_VERSION}m.so"
+else
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPython3_INCLUDE_DIR:STRING=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPython3_LIBRARY:STRING=${PYTHON_ROOT_DIR}/lib/libpython${PYTHON_VERSION}.so"
+fi
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_PYTHON_FULL_THREADSAFE:BOOL=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_NO_PYTHON_THREADS:BOOL=OFF"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_PYTHON_VERSION:STRING=3"
+
+### Java settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_WRAP_JAVA:BOOL=OFF"
+
+### MPI settings
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_USE_MPI:BOOL=ON"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP -DVTKm_ENABLE_OPENMP=ON"
+else
+    echo "WARNING: MPI will not be supported!"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_USE_MPI:BOOL=OFF"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_C_COMPILER:STRING=`which gcc`"
+fi
+
+### HDF5 settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_USE_EXTERNAL_VTK_hdf5:BOOL=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DHDF5_DIR:PATH=${HDF5_ROOT_DIR}/share/cmake/hdf5"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DHDF5_USE_STATIC_LIBRARIES:BOOL=OFF"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DHDF5_ROOT:PATH=${HDF5_ROOT_DIR}"
+
+### CGNS
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_USE_EXTERNAL_ParaView_cgns:BOOL=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCGNS_INCLUDE_DIR:PATH=${CGNS_ROOT_DIR}/include"
+if [ "$CGNS_ROOT_DIR" == "/usr" ]
+then
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCGNS_LIBRARY:PATH=${CGNS_ROOT_DIR}/lib64/libcgns.so"
+else
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCGNS_LIBRARY:PATH=${CGNS_ROOT_DIR}/lib/libcgns.so"
+fi
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_ParaView_cgns:INTERNAL=YES"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_ParaView_VTKExtensionsCGNSReader:INTERNAL=YES"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_ENABLE_ParaView_VTKExtensionsCGNSWriter:INTERNAL=YES"
+
+### VisIt Database bridge settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_ENABLE_VISITBRIDGE:BOOL=ON"
+
+### Boost settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DBOOST_ROOT:PATH=${BOOST_ROOT_DIR}"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DBoost_NO_BOOST_CMAKE:BOOL=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DBoost_NO_SYSTEM_PATHS:BOOL=ON"
+
+### gl2ps settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_USE_EXTERNAL_VTK_gl2ps:BOOL=OFF"
+
+### libxml2 settings
+if [ -n "$LIBXML2_ROOT_DIR" ] 
+then
+    # with a native libxml2, do not use these options
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_USE_EXTERNAL_VTK_libxml2:BOOL=ON"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DLIBXML2_INCLUDE_DIR:STRING=${LIBXML2_ROOT_DIR}/include/libxml2"
+    if [ "${LIBXML2_ROOT_DIR}" == "/usr" ]
+    then
+        CMAKE_OPTIONS="${CMAKE_OPTIONS} -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib64/libxml2.so"
+    else
+        CMAKE_OPTIONS="${CMAKE_OPTIONS} -DLIBXML2_LIBRARIES:STRING=${LIBXML2_ROOT_DIR}/lib/libxml2.so"
+    fi
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DLIBXML2_XMLLINT_EXECUTABLE=${LIBXML2_ROOT_DIR}/bin/xmllint"
+fi
+
+### freetype settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DVTK_MODULE_USE_EXTERNAL_VTK_freetype:BOOL=ON"
+if [ -n "$FREETYPE_ROOT_DIR" ] 
+then
+    # with a native freetype, do not use these options
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DFREETYPE_INCLUDE_DIRS:STRING=${FREETYPE_ROOT_DIR}/include/freetype2"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DFREETYPE_LIBRARY:STRING=${FREETYPE_ROOT_DIR}/lib/libfreetype.so"
+fi
+
+### Extra options
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGINS_DEFAULT:BOOL=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGIN_ENABLE_Moments:BOOL=OFF"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGIN_ENABLE_SLACTools:BOOL=OFF"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGIN_ENABLE_SierraPlotTools:BOOL=OFF"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGIN_ENABLE_PacMan:BOOL=OFF"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DPARAVIEW_PLUGIN_ENABLE_pvblot:BOOL=OFF"
+
+echo
+echo "*** cmake" ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+# SPN #18779
+MEMTOTAL=$(cat /proc/meminfo | grep MemTotal | awk ' {print $2}')
+MEMTHRESHOLD=15000000
+if [ "$MEMTOTAL" -lt "$MEMTHRESHOLD" ] || [ -n "$SAT_PARAVIEW_FORCE_MAKE_J1" ]; then
+    echo "WARNING: ParaView build requires large memory for VTKm compilation step..."
+    echo "WARNING: ParaView build requires large memory for VTKm compilation step..."
+    echo "WARNING: Available RAM is smaller than 16GB... using -j 1"
+    MAKE_OPTIONS="-j 1 "
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ParaViewData.sh b/products/compil_scripts/ParaViewData.sh
new file mode 100755 (executable)
index 0000000..eaa7255
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "ParaViewData" $VERSION
+echo "##########################################################################"
+
+
+
+mkdir -p $PRODUCT_INSTALL
+cp -a $SOURCE_DIR/* $PRODUCT_INSTALL
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/PyQt-5.6.bat b/products/compil_scripts/PyQt-5.6.bat
new file mode 100644 (file)
index 0000000..89db176
--- /dev/null
@@ -0,0 +1,64 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo PyQt %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\Python"\r
+set python_exe=%RETVAL%\python.exe\r
+set python_name=python%PYTHON_VERSION%\r
+\r
+call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\sip"\r
+set sip_incdir=%RETVAL%\include\%python_name%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** python configure.py\r
+echo --------------------------------------------------------------------------\r
+\r
+python configure.py --confirm-license --no-designer-plugin --bindir=%PRODUCT_INSTALL%\bin --destdir=%PRODUCT_INSTALL%\lib\%python_name%\site-packages --sipdir=%PRODUCT_INSTALL%\sip --spec=win32-msvc --sip-incdir=%sip_incdir% --pyuic5-interpreter=%python_exe% --disable QtNfc 2>&1\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on python configure.py\r
+    exit 1\r
+)\r
+\r
+REM Compilation\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** nmake\r
+echo --------------------------------------------------------------------------\r
+\r
+nmake VERBOSE=1\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on nmake\r
+    exit 2\r
+)\r
+\r
+REM Installation\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** nmake install\r
+echo --------------------------------------------------------------------------\r
+\r
+nmake install\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on nmake install"\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
+\r
+:: ========== FUNCTIONS ==========\r
+EXIT /B\r
+\r
+:NORMALIZEPATH\r
+  SET RETVAL=%~dpfn1\r
+  EXIT /B
\ No newline at end of file
diff --git a/products/compil_scripts/PyQt-5.6.sh b/products/compil_scripts/PyQt-5.6.sh
new file mode 100755 (executable)
index 0000000..35584a2
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "PyQt" $VERSION
+echo "##########################################################################"
+
+
+
+python_name=python$PYTHON_VERSION
+
+echo `env`
+
+echo
+echo "*** configure"
+python $SOURCE_DIR/configure.py --confirm-license --no-designer-plugin \
+    --bindir=${PRODUCT_INSTALL}/bin \
+    --destdir=${PRODUCT_INSTALL}/lib/$python_name/site-packages \
+    --sipdir=${PRODUCT_INSTALL}/sip 2>&1
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/PyQt-5.9.bat b/products/compil_scripts/PyQt-5.9.bat
new file mode 100644 (file)
index 0000000..ebd688f
--- /dev/null
@@ -0,0 +1,64 @@
+@echo off
+
+echo ##########################################################################
+echo PyQt %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\Python"
+set python_exe=%RETVAL%\python.exe
+set python_name=python%PYTHON_VERSION%
+
+call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\sip"
+set sip_incdir=%RETVAL%\include\%python_name%
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** python configure.py
+echo --------------------------------------------------------------------------
+
+python configure.py --confirm-license --no-designer-plugin --bindir=%PRODUCT_INSTALL%\bin --destdir=%PRODUCT_INSTALL%\lib\%python_name%\site-packages --sipdir=%PRODUCT_INSTALL%\sip --spec=win32-msvc --sip-incdir=%sip_incdir% --pyuic5-interpreter=%python_exe% --disable QtNfc --disable=QtNetwork --disable=QtWebSockets 2>&1
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on python configure.py
+    exit 1
+)
+
+REM Compilation
+echo.
+echo --------------------------------------------------------------------------
+echo *** nmake
+echo --------------------------------------------------------------------------
+
+nmake VERBOSE=1
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on nmake
+    exit 2
+)
+
+REM Installation
+echo.
+echo --------------------------------------------------------------------------
+echo *** nmake install
+echo --------------------------------------------------------------------------
+
+nmake install
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on nmake install"
+    exit 3
+)
+
+echo.
+echo ########## END
+
+:: ========== FUNCTIONS ==========
+EXIT /B
+
+:NORMALIZEPATH
+  SET RETVAL=%~dpfn1
+  EXIT /B
\ No newline at end of file
diff --git a/products/compil_scripts/PyQt-5.9.sh b/products/compil_scripts/PyQt-5.9.sh
new file mode 100755 (executable)
index 0000000..c44adf1
--- /dev/null
@@ -0,0 +1,83 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "PyQt" $VERSION
+echo "##########################################################################"
+
+
+
+python_name=python$PYTHON_VERSION
+
+# OP 01/08/2017 Artifact 8859 : test compilation PyQt 5.9
+#                               On fait tout dans les sources
+#CURRENT_DIR=`pwd`
+cd $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on $SOURCE_DIR access"
+    exit 1
+fi
+
+
+echo
+echo "*** configure.py --confirm-license --no-designer-plugin --verbose --bindir=${PRODUCT_INSTALL}/bin --destdir=${PRODUCT_INSTALL}/lib/$python_name/site-packages --sipdir=${PRODUCT_INSTALL}/sip --disable=QtNetwork --disable=QtWebSockets"
+$PYTHONBIN ./configure.py --confirm-license --no-designer-plugin --verbose \
+    --bindir=${PRODUCT_INSTALL}/bin \
+    --destdir=${PRODUCT_INSTALL}/lib/$python_name/site-packages \
+    --sipdir=${PRODUCT_INSTALL}/sip \
+    --disable=QtNetwork --disable=QtWebSockets 2>&1
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+# OP 01/08/2017 Artifact 8859 : test compilation PyQt 5.9
+#                               On fait tout dans les sources
+#    exit 1
+#    cd $CURRENT_DIR
+    exit 2
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+# OP 01/08/2017 Artifact 8859 : test compilation PyQt 5.9
+#                               On fait tout dans les sources
+#    exit 2
+#    cd $CURRENT_DIR
+    exit 3
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+# OP 01/08/2017 Artifact 8859 : test compilation PyQt 5.9
+#                               On fait tout dans les sources
+#    exit 3
+#    cd $CURRENT_DIR
+    exit 4
+fi
+
+# OP 01/08/2017 Artifact 8859 : test compilation PyQt 5.9
+#                               Ajout du make clean
+echo
+echo "*** make clean"
+make clean
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make clean"
+#    cd $CURRENT_DIR
+    exit 5
+fi
+
+
+echo
+echo "########## END"
+
+exit 0
+
diff --git a/products/compil_scripts/PyQt.sh b/products/compil_scripts/PyQt.sh
new file mode 100755 (executable)
index 0000000..2756619
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "PyQt" $VERSION
+echo "##########################################################################"
+
+
+
+python_name=python$PYTHON_VERSION
+
+echo `env`
+
+echo
+echo "*** configure"
+python $SOURCE_DIR/configure.py --confirm-license --no-designer-plugin --verbose \
+    --bindir=${PRODUCT_INSTALL}/bin \
+    --destdir=${PRODUCT_INSTALL}/lib/$python_name/site-packages \
+    --sipdir=${PRODUCT_INSTALL}/sip 2>&1
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/PyQt_5_5_1.bat b/products/compil_scripts/PyQt_5_5_1.bat
new file mode 100755 (executable)
index 0000000..f29ab2d
--- /dev/null
@@ -0,0 +1,64 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo PyQt 5.6 %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\Python"\r
+set python_exe=%RETVAL%\python.exe\r
+set python_name=python%PYTHON_VERSION%\r
+\r
+call :NORMALIZEPATH "%PRODUCT_INSTALL%\..\sip"\r
+set sip_incdir=%RETVAL%\include\%python_name%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** python configure.py\r
+echo --------------------------------------------------------------------------\r
+\r
+python configure.py --confirm-license --no-designer-plugin --bindir=%PRODUCT_INSTALL%\bin --destdir=%PRODUCT_INSTALL%\lib\%python_name%\site-packages --sipdir=%PRODUCT_INSTALL%\sip --spec=win32-msvc2010 --sip-incdir=%sip_incdir% --pyuic5-interpreter=%python_exe% --disable QtNfc 2>&1\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on python configure.py\r
+    exit 1\r
+)\r
+\r
+REM Compilation\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** nmake\r
+echo --------------------------------------------------------------------------\r
+\r
+nmake VERBOSE=1\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on nmake\r
+    exit 2\r
+)\r
+\r
+REM Installation\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** nmake install\r
+echo --------------------------------------------------------------------------\r
+\r
+nmake install\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on nmake install"\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
+\r
+:: ========== FUNCTIONS ==========\r
+EXIT /B\r
+\r
+:NORMALIZEPATH\r
+  SET RETVAL=%~dpfn1\r
+  EXIT /B
\ No newline at end of file
diff --git a/products/compil_scripts/PyQt_5_5_1.sh b/products/compil_scripts/PyQt_5_5_1.sh
new file mode 100755 (executable)
index 0000000..35584a2
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "PyQt" $VERSION
+echo "##########################################################################"
+
+
+
+python_name=python$PYTHON_VERSION
+
+echo `env`
+
+echo
+echo "*** configure"
+python $SOURCE_DIR/configure.py --confirm-license --no-designer-plugin \
+    --bindir=${PRODUCT_INSTALL}/bin \
+    --destdir=${PRODUCT_INSTALL}/lib/$python_name/site-packages \
+    --sipdir=${PRODUCT_INSTALL}/sip 2>&1
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/Pygments.bat b/products/compil_scripts/Pygments.bat
new file mode 100755 (executable)
index 0000000..03ee1e3
--- /dev/null
@@ -0,0 +1,41 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Pygments %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages"\r
+if NOT exist "%dir_lib%" mkdir %dir_lib%\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 2\r
+)\r
+\r
+echo\r
+echo "########## END"\r
diff --git a/products/compil_scripts/Pygments.sh b/products/compil_scripts/Pygments.sh
new file mode 100755 (executable)
index 0000000..0648b58
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Pygments" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+mkdir -p ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH}
+
+## unset PYTHONDONTWRITEBYTECODE set by default on MD10
+#PYTHONDONTWRITEBYTECODE=
+
+echo
+echo "*** setup.py"
+python setup.py install --prefix=${PRODUCT_INSTALL} --install-lib ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/Python-3.6.5.bat b/products/compil_scripts/Python-3.6.5.bat
new file mode 100644 (file)
index 0000000..8112a59
--- /dev/null
@@ -0,0 +1,166 @@
+@echo off
+
+echo ##########################################################################
+echo Python %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+if %SAT_DEBUG% == 1 (
+  set PRODUCT_BUILD_TYPE=Debug
+)
+
+SET LIB_TAG=
+if %SAT_DEBUG% == 1 (
+  set LIB_TAG=_d
+)
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+if NOT exist "%PRODUCT_INSTALL%\libs" mkdir %PRODUCT_INSTALL%\libs
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+SET MSBUILDDISABLENODEREUSE=1
+
+cd %SOURCE_DIR%\PCbuild
+
+REM Upgrade to current version of MSVC
+echo.
+echo *** devenv pcbuild.sln /upgrade
+devenv pcbuild.sln /upgrade
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on devenv
+    exit 1
+)
+
+
+echo.
+REM echo Extracting nasm...
+if exist "%SOURCE_DIR%\externals\cpython-bin-deps-nasm-2.11.06" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-bin-deps-nasm-2.11.06"
+if exist "%SOURCE_DIR%\externals\nasm-2.11.06" rmdir /Q /S "%SOURCE_DIR%\externals\nasm-2.11.06"
+7z x -y %SOURCE_DIR%\externals\zips\nasm-2.11.06.zip -o%SOURCE_DIR%\externals
+mv %SOURCE_DIR%\externals\cpython-bin-deps-nasm-2.11.06 %SOURCE_DIR%\externals\nasm-2.11.06
+
+REM echo Extracting openssl...
+if exist "%SOURCE_DIR%\externals\cpython-source-deps-openssl-1.0.2k" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-openssl-1.0.2k"
+if exist "%SOURCE_DIR%\externals\openssl-1.0.2k" rmdir /Q /S "%SOURCE_DIR%\externals\openssl-1.0.2k"
+7z x -y %SOURCE_DIR%\externals\zips\openssl-1.0.2k.zip -o%SOURCE_DIR%\externals
+mv %SOURCE_DIR%\externals\cpython-source-deps-openssl-1.0.2k %SOURCE_DIR%\externals\openssl-1.0.2k
+
+REM echo Extracting sqlite...
+if exist "%SOURCE_DIR%\externals\cpython-source-deps-sqlite-3.21.0.0" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-sqlite-3.21.0.0"
+if exist "%SOURCE_DIR%\externals\sqlite-3.21.0.0" rmdir /Q /S "%SOURCE_DIR%\externals\sqlite-3.21.0.0"
+7z x -y %SOURCE_DIR%\externals\zips\sqlite-3.21.0.0.zip -o%SOURCE_DIR%\externals
+mv %SOURCE_DIR%\externals\cpython-source-deps-sqlite-3.21.0.0 %SOURCE_DIR%\externals\sqlite-3.21.0.0
+
+REM echo Extracting xz...
+if exist "%SOURCE_DIR%\externals\cpython-source-deps-xz-5.2.2" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-xz-5.2.2"
+if exist "%SOURCE_DIR%\externals\xz-5.2.2" rmdir /Q /S "%SOURCE_DIR%\externals\xz-5.2.2"
+7z x -y %SOURCE_DIR%\externals\zips\xz-5.2.2.zip -o%SOURCE_DIR%\externals
+mv %SOURCE_DIR%\externals\cpython-source-deps-xz-5.2.2 %SOURCE_DIR%\externals\xz-5.2.2
+
+REM echo Extracting xz...
+if exist "%SOURCE_DIR%\externals\cpython-source-deps-bzip2-1.0.6" rmdir /Q /S "%SOURCE_DIR%\externals\cpython-source-deps-bzip2-1.0.6"
+if exist "%SOURCE_DIR%\externals\bzip2-1.0.6" rmdir /Q /S "%SOURCE_DIR%\externals\bzip2-1.0.6"
+7z x -y %SOURCE_DIR%\externals\zips\bzip2-1.0.6.zip -o%SOURCE_DIR%\externals
+mv %SOURCE_DIR%\externals\cpython-source-deps-bzip2-1.0.6 %SOURCE_DIR%\externals\bzip2-1.0.6
+
+REM echo Extracting pip...
+if exist "%SOURCE_DIR%\externals\pip-19.1.1" rmdir /Q /S "%SOURCE_DIR%\externals\pip-19.1.1"
+7z x -y %SOURCE_DIR%\externals\zips\pip-19.1.1.zip -o%SOURCE_DIR%\externals
+
+REM Compilation
+
+cd %SOURCE_DIR%
+echo.
+echo *** msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln /t:Build /m /nologo /v:m /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 /p:BuildProjectReferences=false /p:OutDir=%PRODUCT_INSTALL%\
+msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln  /t:Build /m /nologo /v:m /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 /p:OutDir=%PRODUCT_INSTALL%\
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild
+    exit 2
+)
+
+REM Installation of additional files
+echo.
+echo *** Installation of additional files
+cd ..
+xcopy /Y /I /E %SOURCE_DIR%\include %PRODUCT_INSTALL%\include
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy include
+    exit 3
+)
+
+copy /Y %SOURCE_DIR%\PC\pyconfig.h %PRODUCT_INSTALL%\include
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on copy PC\pyconfig.h
+    exit 4
+)
+
+xcopy /Y /I /E %SOURCE_DIR%\lib %PRODUCT_INSTALL%\lib
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy lib
+    exit 5
+)
+
+REM some prequistes if compiled in Debug mode require the lib to be in folder libs
+REM other ones require these static lib to be in the root directory
+REM on purpose we don't use mklink, since this requires the user to have his node set in developer mode.
+xcopy  /Y %PRODUCT_INSTALL%\*.lib %PRODUCT_INSTALL%\libs\
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR could not copy static libraries
+    exit 6
+)
+
+REM on purpose, we don't use mklink
+copy /Y /B %PRODUCT_INSTALL%\python%LIB_TAG%.exe %PRODUCT_INSTALL%\python3.exe
+
+REM some prequistes the DLL to be renamed
+REM on purpose we don't use mklink, since this requires the user to have his node set in developer mode.
+cd %PRODUCT_INSTALL%\
+if %SAT_DEBUG% == 1 (
+  FOR %%G IN (python3 python python36 sqlite3 pyshellext) DO copy /Y /B %PRODUCT_INSTALL%\%%G%LIB_TAG%.dll %PRODUCT_INSTALL%\%%G.dll
+)
+
+REM some of the products expect .lib instead of _d.lib...
+REM on purpose we don't use mklink, since this requires the user to have his node set in developer mode.
+cd %PRODUCT_INSTALL%\libs\
+if %SAT_DEBUG% == 1 (
+  SETLOCAL ENABLEDELAYEDEXPANSION
+  FOR %%f IN (*_d.lib) do (
+     set X=%%f
+     copy /Y /B %PRODUCT_INSTALL%\libs\%%f %PRODUCT_INSTALL%\libs\!X:_d.lib=.lib!
+     copy /Y /B %PRODUCT_INSTALL%\%%f %PRODUCT_INSTALL%\!X:_d.lib=.lib!
+  )
+  ENDLOCAL
+)
+
+cd %PRODUCT_INSTALL%\
+powershell -Command "Get-ChildItem *_d.exe| Rename-Item -newname { $_.name -replace '_d.exe','.exe' }"
+REM powershell -Command "Get-ChildItem *_d.dll| Rename-Item -newname { $_.name -replace '_d.dll','.dll' }"
+REM powershell -Command "Get-ChildItem *_d.pdb| Rename-Item -newname { $_.name -replace '_d.pdb','.pdb' }"
+REM powershell -Command "Get-ChildItem *_d.pyd| Rename-Item -newname { $_.name -replace '_d.pyd','.pyd' }"
+REM powershell -Command "Get-ChildItem *_d.exp| Rename-Item -newname { $_.name -replace '_d.exp','.exp' }"
+REM powershell -Command "Get-ChildItem *_d.ilk| Rename-Item -newname { $_.name -replace '_d.ilk','.ilk' }"
+
+REM Add PIP support
+set PYTHONHOME=%PRODUCT_INSTALL%
+set PYTHON_ROOT_DIR=%PRODUCT_INSTALL%
+set PYTHON_VERSION=3.6
+set PATH=%PRODUCT_INSTALL%;%PATH%
+set PATH=%PRODUCT_INSTALL%\lib;%PATH%
+set PYTHON_INCLUDE=%PRODUCT_INSTALL%\include
+set PYTHONPATH=%PRODUCT_INSTALL%\lib;%PYTHONPATH%
+set PYTHONPATH=%PRODUCT_INSTALL%\lib\site-packages;%PYTHONPATH%
+set PYTHONBIN=%PRODUCT_INSTALL%\python.exe
+set PATH=%PRODUCT_INSTALL%\Scripts;%PATH%
+
+%PRODUCT_INSTALL%\python.exe %SOURCE_DIR%\externals\pip-19.1.1\get-pip.py --force-reinstall --no-setuptools --no-wheel  --no-index --find-links=%SOURCE_DIR%\externals\pip-19.1.1
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/Python.bat b/products/compil_scripts/Python.bat
new file mode 100755 (executable)
index 0000000..29a10fa
--- /dev/null
@@ -0,0 +1,106 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Python %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+if NOT exist "%PRODUCT_INSTALL%\libs" mkdir %PRODUCT_INSTALL%\libs\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+set buildConfiguration=Debug\r
+\r
+SET MSBUILDDISABLENODEREUSE=1\r
+\r
+SET TargetPlatformVersion=10.0.17134.0\r
+cd %SOURCE_DIR%\PCbuild\r
+\r
+REM Upgrade to current version of MSVC\r
+echo.\r
+echo *** devenv pcbuild.sln /upgrade\r
+devenv pcbuild.sln /upgrade\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on devenv\r
+    exit 1\r
+)\r
+\r
+cd %BUILD_DIR%\r
+\r
+echo.\r
+REM echo Extracting nasm...\r
+7z x -y %SOURCE_DIR%\externals\zips\nasm-2.11.06.zip -o%SOURCE_DIR%\externals\r
+mv %SOURCE_DIR%\externals\cpython-bin-deps-nasm-2.11.06 %SOURCE_DIR%\externals\nasm-2.11.06\r
+\r
+REM echo Extracting openssl...\r
+7z x -y %SOURCE_DIR%\externals\zips\openssl-1.0.2k.zip -o%SOURCE_DIR%\externals\r
+mv %SOURCE_DIR%\externals\cpython-source-deps-openssl-1.0.2k %SOURCE_DIR%\externals\openssl-1.0.2k\r
+\r
+REM echo Extracting sqlite...\r
+7z x -y %SOURCE_DIR%\externals\zips\sqlite-3.14.2.0.zip -o%SOURCE_DIR%\externals\r
+mv %SOURCE_DIR%\externals\cpython-source-deps-sqlite-3.14.2.0 %SOURCE_DIR%\externals\sqlite-3.14.2.0\r
+\r
+REM echo Extracting xz...\r
+7z x -y %SOURCE_DIR%\externals\zips\xz-5.2.2.zip -o%SOURCE_DIR%\externals\r
+mv %SOURCE_DIR%\externals\cpython-source-deps-xz-5.2.2 %SOURCE_DIR%\externals\xz-5.2.2\r
+\r
+REM Compilation\r
+\r
+echo.\r
+echo *** msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln /t:Build /m /nologo /v:m /p:Configuration=%buildConfiguration% /p:Platform=x64 /p:TargetPlatformVersion=%TargetPlatformVersion% /p:BuildProjectReferences=false\r
+msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln  /t:Build /m /nologo /v:m /p:Configuration=%buildConfiguration% /p:Platform=x64 /p:TargetPlatformVersion=%TargetPlatformVersion%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild\r
+    exit 2\r
+)\r
+\r
+REM Installation\r
+echo.\r
+echo *** msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln %MAKE_OPTIONS% %MAKE_OPTIONS% %LIST_OF_PROJECTS% /p:Configuration=%buildConfiguration% /p:Platform=x64 /p:TargetPlatformVersion=%TargetPlatformVersion% /p:BuildProjectReferences=false /p:OutDir=%PRODUCT_INSTALL%\ \r
+msbuild %SOURCE_DIR%\PCBuild\pcbuild.sln %MAKE_OPTIONS% /p:Configuration=%buildConfiguration% /p:Platform=x64 /p:TargetPlatformVersion=%TargetPlatformVersion% /p:OutDir=%PRODUCT_INSTALL%\\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild\r
+    exit 3\r
+)\r
+\r
+REM Installation of additional files\r
+echo.\r
+echo *** Installation of additional files\r
+cd ..\r
+xcopy /i %SOURCE_DIR%\include %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy include\r
+    exit 4\r
+)\r
+\r
+copy %SOURCE_DIR%\PC\pyconfig.h %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on copy PC\pyconfig.h\r
+    exit 5\r
+)\r
+\r
+xcopy /i /e %SOURCE_DIR%\lib %PRODUCT_INSTALL%\lib\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy lib\r
+    exit 6\r
+)\r
+\r
+xcopy /i %PRODUCT_INSTALL%\python3.lib %PRODUCT_INSTALL%\libs\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy python3.lib\r
+    exit 7\r
+)\r
+\r
+xcopy /i %PRODUCT_INSTALL%\python36.lib %PRODUCT_INSTALL%\libs\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy python36.lib\r
+    exit 8\r
+)\r
+\r
+robocopy %PRODUCT_INSTALL%\python.exe %PRODUCT_INSTALL%\python3.exe  /Y\r
+\r
+taskkill /F /IM "mspdbsrv.exe"\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/Python.sh b/products/compil_scripts/Python.sh
new file mode 100755 (executable)
index 0000000..4f5be6a
--- /dev/null
@@ -0,0 +1,94 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Python" $VERSION
+echo "##########################################################################"
+
+if [ ${#VERSION} -lt 5 ]
+then
+    echo "ERROR : VERSION argument of Python compilation script has not the expected x.y.z format"
+    exit 1
+fi
+PYTHON_VERSION="${VERSION:0:3}"
+PYTHON_VERSION_MAJ=${PYTHON_VERSION:0:1}
+
+
+function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
+if version_ge $VERSION "3.6"; then
+    echo "*** Python version is newer than version 3.6 ..."
+    # --enable-shared   : enable building shared python library
+    # --with-threads    : enable thread support
+    # --without-pymalloc: disable specialized mallocs
+    # --with-ensurepip  : installation using bundled pip
+    # --enable-optimizations:  recommandé et utilisé par Nijni -> mais trop long!
+    CONFIGURE_ARGUMENTS="--enable-shared --with-threads --without-pymalloc --with-ensurepip=install"
+else
+    echo "*** Python version is older than version 3.6 ..."
+    CONFIGURE_ARGUMENTS="--enable-shared --with-threads --without-pymalloc --enable-unicode=ucs4"
+fi
+
+echo
+echo   "*** configure --prefix=$PRODUCT_INSTALL $CONFIGURE_ARGUMENTS"
+$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL $CONFIGURE_ARGUMENTS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+if [ ${PYTHON_VERSION_MAJ} == 3 ]
+then
+    # OP trick for Python 3.6.1
+    #cd ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}
+    cd ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}*
+else
+    cd ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/config
+fi
+
+if [ ! -e libpython${PYTHON_VERSION}.so ]
+then
+    echo
+    echo "*** create missing link"
+    ln -sf ../../libpython${PYTHON_VERSION}.so .
+    if [ $? -ne 0 ]
+    then
+        echo "ERROR when creating missing link"
+        # no error here
+    fi
+fi
+if [ ${PYTHON_VERSION_MAJ} == 3 ]
+then
+    cd ${PRODUCT_INSTALL}/bin
+    ln -s python3 python
+fi
+
+# fix the path... 
+if version_ge $VERSION "3.6"; then
+    L="2to3  2to3-3.6 easy_install-3.6 idle3 idle3.6 pip3 pip3.6 pydoc3 pydoc3.6 pyvenv pyvenv-3.6"
+    cd ${PRODUCT_INSTALL}/bin
+    for f in  $L; do
+       awk '$0 = NR==1 ? replace : $0' replace="#!/usr/bin/env python3" $f > $f.t && mv $f.t $f && chmod 755 $f
+    done
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/SOLVERLAB.sh b/products/compil_scripts/SOLVERLAB.sh
new file mode 100755 (executable)
index 0000000..1689cfc
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "SOLVERLAB" $VERSION
+echo "##########################################################################"
+
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DSWIG_EXECUTABLE=${SWIG_ROOT_DIR}/bin/swig"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DDOXYGEN_EXECUTABLE=${DOXYGEN_ROOT_DIR}/bin/doxygen"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCPPUNIT_ROOT_USER=${CPPUNIT_ROOT_DIR}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ROOT=${HDF5_ROOT_DIR}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDFILE_ROOT_DIR=${MEDFILE_ROOT_DIR}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPETSC_DIR=${PETSC_ROOT_DIR}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDCOUPLING_ROOT_DIR=${MEDCOUPLING_ROOT_DIR}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPARAVIEW_VERSION=5.8"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCDMATH_WITH_PYTHON=OFF"
+
+echo
+echo "*** cmake "$CMAKE_OPTIONS
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make doc install"
+make docCDMATH docCoreFlows install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/Sphinx.bat b/products/compil_scripts/Sphinx.bat
new file mode 100755 (executable)
index 0000000..52cc63f
--- /dev/null
@@ -0,0 +1,59 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Sphinx %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages\r
+if NOT exist "%dir_lib%" mkdir %dir_lib%\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo "*** rename dir Scripts into bin"\r
+echo --------------------------------------------------------------------------\r
+\r
+set cur_dir=%CD%\r
+echo we are in directory %cur_dir%\r
+cd %PRODUCT_INSTALL%\r
+echo we are in directory %CD%\r
+echo do the copy\r
+xcopy /i Scripts bin\r
+echo delete dir Scripts\r
+rd /Q /S Scripts\r
+echo go back home\r
+cd %cur_dir%\r
+\r
+echo.\r
+echo ########## END\r
+\r
diff --git a/products/compil_scripts/Sphinx.sh b/products/compil_scripts/Sphinx.sh
new file mode 100755 (executable)
index 0000000..b2d11da
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Sphinx" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/TRUST.sh b/products/compil_scripts/TRUST.sh
new file mode 100755 (executable)
index 0000000..b03feae
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "trust" $VERSION
+echo "##########################################################################"
+
+
+
+echo "Install directory :"
+echo $PRODUCT_INSTALL
+echo "Build directory :"
+echo $BUILD_DIR
+echo "Source directory :"
+echo $SOURCE_DIR
+
+mkdir -p ${PRODUCT_INSTALL}
+
+#cp -rf $BUILD_DIR/TRUST_$VERSION/* $PRODUCT_INSTALL
+cp -rf $SOURCE_DIR/* $PRODUCT_INSTALL
+
+#ORG=$PRODUCT_INSTALL"/TRUST_"$VERSION
+#cd $ORG
+cd $PRODUCT_INSTALL
+
+export LANG=C
+
+#TRUST_VERSION=1.7.3
+TRUST_VERSION=$VERSION
+export TRUST_VERSION
+
+OPTIONS="-disable-gnuplot -disable-valgrind -without-visit -disable-gmsh -disable-plot2d -disable-checks -disable-check_sources"
+#OPTIONS="-disable-optionals"
+#OPTIONS="-for_appli_salome"
+
+echo
+echo "*** configure"
+./configure $OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+source $PRODUCT_INSTALL/env/env_TRUST.sh
+
+MAKE_OPTIONS="optim"
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/Togl.sh b/products/compil_scripts/Togl.sh
new file mode 100755 (executable)
index 0000000..2140c74
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Togl" $VERSION
+echo "##########################################################################"
+
+
+
+cp -r $SOURCE_DIR/* . 
+echo
+echo "*** configure"
+./configure --prefix=${TCLHOME} --with-tcl=${TCLHOME}/lib \
+    --with-tk=${TCLHOME}/lib --with-tclinclude=${TCLHOME}/include --with-tkinclude=${TCLHOME}/include
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make"
+make
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+mkdir -p $PRODUCT_INSTALL
+echo "Togl is installed into tcl dir $TCLHOME" > $PRODUCT_INSTALL/README
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/TrioCFD.sh b/products/compil_scripts/TrioCFD.sh
new file mode 100755 (executable)
index 0000000..280a3fe
--- /dev/null
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "triocfd" $VERSION
+echo "##########################################################################"
+
+
+
+echo "Install directory :"
+echo $PRODUCT_INSTALL
+echo "Build directory :"
+echo $BUILD_DIR
+echo "Source directory :"
+echo $SOURCE_DIR
+echo "TRUST directory :"
+echo $TRUST_ROOT_DIR
+
+mkdir -p ${PRODUCT_INSTALL}
+
+#cp -rf $BUILD_DIR/TrioCFD/* $PRODUCT_INSTALL
+cp -rf $SOURCE_DIR/* $PRODUCT_INSTALL
+
+TRUST_ROOT=$TRUST_ROOT_DIR
+
+#ORG=$PRODUCT_INSTALL"/TrioCFD"
+#cd $ORG
+cd $PRODUCT_INSTALL
+
+export LANG=C
+
+#TRUST_VERSION=1.7.2
+TRUST_VERSION=$VERSION
+export TRUST_VERSION
+
+source $TRUST_ROOT_DIR/env/env_TRUST.sh
+
+OPTIONS=""
+
+echo
+echo "*** configure"
+baltik_build_configure
+./configure  $OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+MAKE_OPTIONS="optim debug"
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/XDATA.py b/products/compil_scripts/XDATA.py
new file mode 100755 (executable)
index 0000000..c7b88be
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+
+def compil(config, builder, logger):
+
+    res_prepare = builder.prepare()
+
+    if platform.system() == "Windows" :
+        res_configure = builder.cmake()
+        res_make = builder.wmake()
+    else:
+        res_configure = builder.configure()
+        res_make = builder.make(builder.nb_proc)
+
+    res_install = builder.install()
+
+    res = res_prepare + res_configure + res_install
+    if res != 0:
+        res = 1
+
+    return res
diff --git a/products/compil_scripts/YACS.sh b/products/compil_scripts/YACS.sh
new file mode 100755 (executable)
index 0000000..4b2e57f
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "YACS" $VERSION
+echo "##########################################################################"
+
+
+
+echo
+echo "*** cmake"
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+#MAKE_OPTIONS=$MAKE_OPTIONS" -j1"
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/YACS.sh1 b/products/compil_scripts/YACS.sh1
new file mode 100644 (file)
index 0000000..4b2e57f
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "YACS" $VERSION
+echo "##########################################################################"
+
+
+
+echo
+echo "*** cmake"
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+#MAKE_OPTIONS=$MAKE_OPTIONS" -j1"
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/YACSGEN.bat b/products/compil_scripts/YACSGEN.bat
new file mode 100644 (file)
index 0000000..cf85d5f
--- /dev/null
@@ -0,0 +1,39 @@
+@echo off
+
+echo ##########################################################################
+echo YACSGEN %VERSION%
+echo ##########################################################################
+
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+echo  *** build in SOURCE directory
+cd %SOURCE_DIR%
+
+
+REM we don't install in python directory -> modify environment as described in INSTALL file
+mkdir %PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%
+set INSTALL_LIB=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages
+if NOT exist "%INSTALL_LIB%" mkdir %INSTALL_LIB%
+set PYTHONPATH=%INSTALL_LIB%;%PYTHONPATH%
+
+set PYTHONPATH=%PYTHONPATH%;%PYTHON_ROOT_DIR%
+echo.
+echo --------------------------------------------------------------------------
+echo Launching "python.exe setup.py install"
+echo --------------------------------------------------------------------------
+
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%INSTALL_LIB% 
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%INSTALL_LIB% 
+    exit 1
+)
+
+echo.
+echo YACSGEN installed in %PYTHON_ROOT_DIR% > %PRODUCT_INSTALL%\README.txt
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/YACSGEN.py b/products/compil_scripts/YACSGEN.py
new file mode 100755 (executable)
index 0000000..643d3cc
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+import subprocess
+
+def compil(config, builder, logger):
+    builder.prepare()
+    if not builder.install_dir.exists():
+        builder.install_dir.make()
+    
+    command = "python setup.py install --prefix=" + str(builder.install_dir)
+    res = subprocess.call(command,
+                          shell=True,
+                          #cwd=str(helper.build_dir),
+                          cwd=str(builder.source_dir),
+                          env=builder.build_environ.environ.environ,
+                          stdout=logger.logTxtFile,
+                          stderr=subprocess.STDOUT)
+    if res != 0:
+        res = 1
+    return res
diff --git a/products/compil_scripts/YACSGEN.sh b/products/compil_scripts/YACSGEN.sh
new file mode 100755 (executable)
index 0000000..2c672e8
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "YACSGEN" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/alabaster.bat b/products/compil_scripts/alabaster.bat
new file mode 100755 (executable)
index 0000000..f8e2f66
--- /dev/null
@@ -0,0 +1,41 @@
+@echo off
+
+echo ##########################################################################
+echo alabaster %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages
+if NOT exist "%dir_lib%" mkdir %dir_lib%
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** Launching "python.exe setup.py build"
+echo --------------------------------------------------------------------------
+
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on setup.py build
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** Launching "python.exe setup.py install"
+echo --------------------------------------------------------------------------
+
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% 
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on setup.py install
+    exit 3
+)
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/alabaster.sh b/products/compil_scripts/alabaster.sh
new file mode 100755 (executable)
index 0000000..69cb615
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "alabaster" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/boost.bat b/products/compil_scripts/boost.bat
new file mode 100755 (executable)
index 0000000..1eac466
--- /dev/null
@@ -0,0 +1,80 @@
+@echo off
+
+echo ##########################################################################
+echo BOOST %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** Extracting distribution
+echo --------------------------------------------------------------------------
+
+call :NORMALIZEPATH "boost*exe"
+set installer=%RETVAL%
+if not exist "%installer%" (
+    echo "ERROR no installer found."
+    exit 1
+)
+
+echo Installer : %installer%
+
+call %installer% /SILENT /SP- /NOICONS /NOCANCEL /NORESTART /DIR="%BUILD_DIR%" /LOG="%BUILD_DIR%\boost_install.log"
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on extraction."
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** Installation
+echo --------------------------------------------------------------------------
+
+cd "%BUILD_DIR%"
+
+echo *** Includes...
+
+set target_inc=%PRODUCT_INSTALL%\include\boost-1_58\boost
+mkdir %target_inc%
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR when creating include directory : %target_inc%
+    exit 30
+)
+
+robocopy %BUILD_DIR%\boost %target_inc% /E /NP /NFL /NDL /NS /NC
+if NOT %ERRORLEVEL% == 1 (
+    echo ERROR when copying include
+    exit 31
+)
+
+echo *** Libs...
+
+set target_lib=%PRODUCT_INSTALL%\lib
+mkdir %target_lib%
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR when creating lib directory : %target_lib%
+    exit 32
+)
+
+rem Visual studio 2010 specific
+robocopy %BUILD_DIR%\lib64-msvc-10.0  %target_lib% /E /NP /NFL /NDL /NS /NC
+if NOT %ERRORLEVEL% == 1 (
+    echo ERROR when copying lib
+    exit 33
+)
+
+echo.
+echo ########## END
+
+:: ========== FUNCTIONS ==========
+EXIT /B
+
+:NORMALIZEPATH
+  SET RETVAL=%~dpfn1
+  EXIT /B
\ No newline at end of file
diff --git a/products/compil_scripts/boost.sh b/products/compil_scripts/boost.sh
new file mode 100755 (executable)
index 0000000..c005b88
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "BOOST" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+echo
+echo "*** bootstrap.sh"
+./bootstrap.sh --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on bootstrap"
+    exit 1
+fi
+
+echo "*** bjam install"
+
+./bjam install
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on bjam install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/boost_V1.67.0.bat b/products/compil_scripts/boost_V1.67.0.bat
new file mode 100644 (file)
index 0000000..ff595b3
--- /dev/null
@@ -0,0 +1,44 @@
+@echo off
+
+echo ##########################################################################
+echo BOOST %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=release
+
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=debug
+REM )
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+call bootstrap.bat
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** Compilation
+echo --------------------------------------------------------------------------
+.\bjam --toolset=msvc --prefix=%PRODUCT_INSTALL% address-model=64  --build-type=complete stage variant=%PRODUCT_BUILD_TYPE% threading=multi link=shared runtime-link=shared install
+
+cd "%BUILD_DIR%"
+
+MOVE /Y %PRODUCT_INSTALL%\include\boost\boost-1_67 %PRODUCT_INSTALL%\include\boost
+if NOT %ERRORLEVEL% == 1 (
+    echo ERROR when copying include
+    exit 31
+)
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/bsd_xdr.bat b/products/compil_scripts/bsd_xdr.bat
new file mode 100755 (executable)
index 0000000..b81918a
--- /dev/null
@@ -0,0 +1,54 @@
+@echo off
+
+echo ##########################################################################
+echo bsd-xdr $VERSION
+echo ##########################################################################
+
+if exist "%PRODUCT_INSTALL%" rmdir /Q /S "%PRODUCT_INSTALL%"
+mkdir %PRODUCT_INSTALL%
+
+set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+if defined CMAKE_GENERATOR (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%
+) else (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 10 2010 Win64"
+)
+
+set MSBUILDDISABLENODEREUSE=1
+
+cd %SOURCE_DIR%
+
+sed -i "s|# Where netcdf will be installed:||g" cmake\ConfigUser.cmake
+sed -i "s|set (CMAKE_INSTALL_PREFIX z:/software)||g" cmake\ConfigUser.cmake
+sed -i "s|typedef __int8            int8_t;|// typedef __int8            int8_t;|g" rpc\types.h
+
+cd %BUILD_DIR%
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+echo --------------------------------------------------------------------------
+echo.
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** %CMAKE_ROOT%\bin\cmake --build . --config Release --target INSTALL
+echo --------------------------------------------------------------------------
+echo.
+
+%CMAKE_ROOT%\bin\cmake --build . --config Release --target INSTALL
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake build"
+    exit 2
+)
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/bsd_xdr.sh b/products/compil_scripts/bsd_xdr.sh
new file mode 100755 (executable)
index 0000000..7cf3358
--- /dev/null
@@ -0,0 +1 @@
+# Utile pour SAT5
\ No newline at end of file
diff --git a/products/compil_scripts/certifi.sh b/products/compil_scripts/certifi.sh
new file mode 100755 (executable)
index 0000000..d478e2b
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "certifi" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/cgns.bat b/products/compil_scripts/cgns.bat
new file mode 100755 (executable)
index 0000000..20d9497
--- /dev/null
@@ -0,0 +1,80 @@
+@echo off
+
+echo ##########################################################################
+echo cgnslib %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+SET CMAKE_OPTIONS=
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_C_FLAGS=-DH5_BUILT_AS_DYNAMIC_LIB=1
+REM add hdf5 support (tuleap spns #8161)
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCGNS_ENABLE_HDF5:BOOL=ON
+if DEFINED SAT_HPC (
+    SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_USE_MPI:BOOL=ON
+) else (
+       SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_USE_MPI:BOOL=OFF
+)
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+
+
+cd %BUILD_DIR%
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+echo --------------------------------------------------------------------------
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on cgnslib
+    exit 1
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release ALL_BUILD.vcxproj
+echo --------------------------------------------------------------------------
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+copy src\%PRODUCT_BUILD_TYPE%\cgnsdll.dll src\cgnsdll.dll
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on copying cgnsdll.dll
+    exit 21
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj
+echo --------------------------------------------------------------------------
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/cgns.sh b/products/compil_scripts/cgns.sh
new file mode 100755 (executable)
index 0000000..bcb2da7
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/bash
+echo "##########################################################################"
+echo "cgnslib" $VERSION
+echo "##########################################################################"
+
+
+
+# compilation
+echo "cgnslib compilation"
+
+CMAKE_OPTIONS=""
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+
+#add hdf5 support (tuleap spns #8161)
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCGNS_ENABLE_HDF5:BOOL=ON"
+
+if [ -n "$SAT_HPC" ]
+then
+    echo "HPC mode, activate -DHDF5_NEEDS_MPI:BOOL=ON option"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_NEEDS_MPI:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+fi
+
+echo
+echo "*** cmake" $CMAKE_OPTIONS
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/chardet.sh b/products/compil_scripts/chardet.sh
new file mode 100755 (executable)
index 0000000..1ba9f9c
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "chardet" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/click.sh b/products/compil_scripts/click.sh
new file mode 100755 (executable)
index 0000000..4489eb0
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "click" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/cmake.bat b/products/compil_scripts/cmake.bat
new file mode 100644 (file)
index 0000000..aa6fd1a
--- /dev/null
@@ -0,0 +1,59 @@
+@echo off
+
+echo ##########################################################################
+echo cmake %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+rem # Configuration
+rem # According to cmake README, cmake is mandatory for compiling cmake on windows
+set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=Release
+if defined CMAKE_GENERATOR (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%
+) else (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+)
+
+set MSBUILDDISABLENODEREUSE=1
+
+cd %BUILD_DIR%
+
+echo.
+echo --------------------------------------------------------------------------
+echo cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+echo --------------------------------------------------------------------------
+cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo msbuild %MAKE_OPTIONS% /p:Configuration=Release ALL_BUILD.vcxproj
+echo --------------------------------------------------------------------------
+msbuild %MAKE_OPTIONS% /p:Configuration=Release ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo msbuild %MAKE_OPTIONS% /p:Configuration=Release INSTALL.vcxproj
+echo --------------------------------------------------------------------------
+msbuild %MAKE_OPTIONS% /p:Configuration=Release INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/cmake.sh b/products/compil_scripts/cmake.sh
new file mode 100755 (executable)
index 0000000..d0aacdc
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "cmake" $VERSION
+echo "##########################################################################"
+
+
+
+echo
+echo "*** bootstrap"
+$SOURCE_DIR/bootstrap --prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on bootstrap"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/colorama.bat b/products/compil_scripts/colorama.bat
new file mode 100755 (executable)
index 0000000..5331420
--- /dev/null
@@ -0,0 +1,42 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo colorama %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\site-packages\r
+if NOT exist mkdir %dir_lib%\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/colorama.sh b/products/compil_scripts/colorama.sh
new file mode 100755 (executable)
index 0000000..4a2834f
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "colorama" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+python_name=python$PYTHON_VERSION
+
+echo
+echo "*** configure"
+python ./configure.py -b ${PRODUCT_INSTALL}/bin \
+    -d ${PRODUCT_INSTALL}/lib/${python_name}/site-packages \
+    -e ${PRODUCT_INSTALL}/include/${python_name} \
+    -v ${PRODUCT_INSTALL}/colorama
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/cppunit.bat b/products/compil_scripts/cppunit.bat
new file mode 100755 (executable)
index 0000000..6327308
--- /dev/null
@@ -0,0 +1,94 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo cppunit %VERSION%\r
+echo ##########################################################################\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+SET PRODUCT_BUILD_TYPE=Release\r
+REM TODO: NGH: not Tested yet\r
+REM if %SAT_DEBUG% == 1 (\r
+REM   set PRODUCT_BUILD_TYPE=Debug\r
+REM )\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Sources copy into build directory... \r
+echo --------------------------------------------------------------------------\r
+\r
+robocopy %SOURCE_DIR% %BUILD_DIR% /E /NP /NFL /NDL /NS /NC /NJH /NJS\r
+if NOT %ERRORLEVEL% == 1 (\r
+    echo ERROR %ERRORLEVEL% on robocopy\r
+    exit 1\r
+)\r
+\r
+REM Upgrade to current version of MSVC\r
+echo.\r
+echo *** devenv %BUILD_DIR%\src\cppunit\cppunit.vcxproj /upgrade\r
+devenv %BUILD_DIR%\src\cppunit\cppunit.vcxproj /upgrade\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on devenv\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo -------------------------------------------------------------------------------\r
+echo msbuild cppunit.vcxproj %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64\r
+echo -------------------------------------------------------------------------------\r
+\r
+cd %BUILD_DIR%\src\cppunit\r
+\r
+msbuild cppunit.vcxproj %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild\r
+    exit 21\r
+)\r
+\r
+msbuild cppunit.vcxproj %MAKE_OPTIONS% /p:Configuration=Debug /p:TargetName=cppunitd \r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild\r
+    exit 22\r
+)\r
+\r
+msbuild cppunit_dll.vcxproj %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild\r
+    exit 23\r
+)\r
+\r
+msbuild cppunit_dll.vcxproj %MAKE_OPTIONS% /p:Configuration=Debug /p:TargetName=cppunitd_dll /p:Platform=x64\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild\r
+    exit 24\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Installation\r
+echo --------------------------------------------------------------------------\r
+\r
+xcopy /i /e %BUILD_DIR%\include %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on 'include' copy\r
+    exit 31\r
+)\r
+\r
+xcopy /i /e %BUILD_DIR%\lib %PRODUCT_INSTALL%\lib\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on 'lib' copy\r
+    exit 32\r
+) \r
+\r
+taskkill /F /IM "mspdbsrv.exe"\r
+\r
+echo.\r
+echo ########## END
\ No newline at end of file
diff --git a/products/compil_scripts/cppunit.sh b/products/compil_scripts/cppunit.sh
new file mode 100755 (executable)
index 0000000..531c41b
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "cppunit" $VERSION
+echo "##########################################################################"
+
+
+
+# compilation
+echo "cppunit compilation"
+
+echo
+echo '*** configure --enable-static LDFLAGS="-ldl"'
+$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL --enable-static LDFLAGS="-ldl"
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/cycler.sh b/products/compil_scripts/cycler.sh
new file mode 100755 (executable)
index 0000000..b648f67
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "cycler" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+echo
+echo "*** build"
+python setup.py build
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build"
+    exit 2
+fi
+
+CYCLER_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+mkdir -p ${CYCLER_INSTALL}
+export PYTHONPATH=${CYCLER_INSTALL}:${PYTHONPATH}
+echo
+echo "*** install"
+python setup.py install --prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/cython.bat b/products/compil_scripts/cython.bat
new file mode 100755 (executable)
index 0000000..3715a7b
--- /dev/null
@@ -0,0 +1,53 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Cython %VERSION%\r
+echo ##########################################################################\r
+\r
+REM install in python directly\r
+SET INSTALL_CENTRALLY=1\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+set BUILD_OPT=\r
+if %SAT_DEBUG% == 1 (\r
+   set BUILD_OPT=--debug\r
+)\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build %BUILD_OPT%\r
+\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+if %INSTALL_CENTRALLY% == 1 (\r
+    %PYTHON_ROOT_DIR%\python.exe setup.py install \r
+) else (\r
+    %PYTHON_ROOT_DIR%\python setup.py install  --single-version-externally-managed --root=/ --prefix=%PRODUCT_INSTALL% --install-lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages\r
+)\r
+if NOT %ERRORLEVEL% == 0  (\r
+    echo "ERROR on setup install"\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo Product %PRODUCT_NAME% version: %VERSION%> %PRODUCT_INSTALL%\README.txt\r
+echo Installation folder: %PYTHON_ROOT_DIR%>> %PRODUCT_INSTALL%\README.txt\r
+\r
+echo.\r
+echo ########## END
\ No newline at end of file
diff --git a/products/compil_scripts/cython.sh b/products/compil_scripts/cython.sh
new file mode 100755 (executable)
index 0000000..ab54eda
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "cython" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/dateutil.bat b/products/compil_scripts/dateutil.bat
new file mode 100755 (executable)
index 0000000..8a8bbeb
--- /dev/null
@@ -0,0 +1,41 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo python-dateutil %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\site-packages\r
+if NOT exist "%dir_lib%" mkdir "%dir_lib%"\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/dateutil.sh b/products/compil_scripts/dateutil.sh
new file mode 100755 (executable)
index 0000000..b0c65f6
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "python-dateutil" $VERSION
+echo "##########################################################################"
+
+rm -rf $PRODUCT_INSTALL
+mkdir -p $PRODUCT_INSTALL
+echo
+
+cd $SOURCE_DIR
+
+# Making a directory that will be used in install
+BUILD_DIR=`pwd`
+cd $PRODUCT_INSTALL
+mkdir -p lib/python${PYTHON_VERSION}/site-packages
+cd $BUILD_DIR
+# Hack PYTHONPATH in order to make 'setup.py install' believe that PRODUCT_INSTALL is in PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH
+
+echo "*** setup.py BUILD"
+python setup.py build
+
+
+echo "*** setup.py INSATALL"
+python setup.py install --prefix=${PRODUCT_INSTALL}
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup"
+    exit 3
+fi
+
+
+echo
+echo "########## END"
+
+
diff --git a/products/compil_scripts/distribute.bat b/products/compil_scripts/distribute.bat
new file mode 100755 (executable)
index 0000000..e51031d
--- /dev/null
@@ -0,0 +1,43 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo distribute %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\site-packages\r
+if NOT exist "%dir_lib%" mkdir "%dir_lib%"\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+echo.\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+echo.\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/distribute.sh b/products/compil_scripts/distribute.sh
new file mode 100755 (executable)
index 0000000..8087c11
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "distribute" $VERSION
+echo "##########################################################################"
+
+
+mkdir -p $PRODUCT_INSTALL
+echo
+
+cd $SOURCE_DIR
+
+# Making a directory that will be used in install
+mkdir -p ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH
+
+echo "*** setup.py BUILD"
+python $SOURCE_DIR/setup.py build
+echo
+
+echo "*** setup.py INSTALL"
+python $SOURCE_DIR/setup.py install --prefix=${PRODUCT_INSTALL}
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/docutils.bat b/products/compil_scripts/docutils.bat
new file mode 100755 (executable)
index 0000000..c536b36
--- /dev/null
@@ -0,0 +1,42 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo docutils %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages\r
+if NOT exist "%dir_lib%" mkdir "%dir_lib%"\r
+\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/docutils.sh b/products/compil_scripts/docutils.sh
new file mode 100755 (executable)
index 0000000..19ed2c7
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "docutil" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+#mkdir -p ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+#PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH}
+
+echo
+echo "setup.py"
+python setup.py install --prefix ${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/doxygen.bat b/products/compil_scripts/doxygen.bat
new file mode 100755 (executable)
index 0000000..1dc5415
--- /dev/null
@@ -0,0 +1,23 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Doxygen %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+xcopy bin\* %PRODUCT_INSTALL%\bin /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/doxygen.sh b/products/compil_scripts/doxygen.sh
new file mode 100755 (executable)
index 0000000..766a72f
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "doxygen" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+echo "doxygen compilation"
+
+echo
+echo "*** configure"
+./configure --prefix $PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/eficas.sh b/products/compil_scripts/eficas.sh
new file mode 100755 (executable)
index 0000000..3a90eca
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "eficas" $VERSION
+echo "##########################################################################"
+
+
+
+CMAKE_OPTIONS=""
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DIN_SALOME_CONTEXT:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_ALL_PACKAGES:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python${PYTHON_VERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_PATH=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY=${PYTHON_ROOT_DIR}/lib/libpython${PYTHON_VERSION}.so"
+
+mkdir -p $BUILD_DIR
+cd $BUILD_DIR
+
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on CMake"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/eigen-3.2.7.sh b/products/compil_scripts/eigen-3.2.7.sh
new file mode 100755 (executable)
index 0000000..a506e2b
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "EIGEN" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+echo
+echo "*** mkdir" $PRODUCT_INSTALL
+mkdir -p $PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on mkdir"
+    exit 1
+fi
+
+echo
+echo "*** cp -r * " $PRODUCT_INSTALL
+cp -r * $PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp"
+    exit 2
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/eigen.bat b/products/compil_scripts/eigen.bat
new file mode 100644 (file)
index 0000000..dee85e0
--- /dev/null
@@ -0,0 +1,68 @@
+@echo off
+
+echo ##########################################################################
+echo Eigen %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %BUILD_DIR%
+
+REM Install dir
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+
+
+echo.
+echo *********************************************************************
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS%
+echo *********************************************************************
+echo.
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo *********************************************************************
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj"
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation...
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
+
diff --git a/products/compil_scripts/eigen.sh b/products/compil_scripts/eigen.sh
new file mode 100755 (executable)
index 0000000..840e8e9
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "eigen" $VERSION
+echo "##########################################################################"
+
+
+
+#cd $SOURCE_DIR
+
+# Install dir
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX=$PRODUCT_INSTALL"
+
+echo
+echo "*** cmake ${CMAKE_OPTIONS}"
+cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+
+#echo
+#echo "*** make" $MAKE_OPTIONS
+#make $MAKE_OPTIONS
+#if [ $? -ne 0 ]
+#then
+#    echo "ERROR on make"
+#    exit 2
+#fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/expat.bat b/products/compil_scripts/expat.bat
new file mode 100644 (file)
index 0000000..7322b70
--- /dev/null
@@ -0,0 +1,30 @@
+@echo off
+
+echo ##########################################################################
+echo Expat %VERSION%
+echo ##########################################################################
+
+REM currently this external library is built by OpenCascade
+REM As soon as we upgrade to graphviz 2.42, one needs to move to graphviz.bat
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+xcopy bin %PRODUCT_INSTALL%\bin /E /I /Q
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy bin
+    exit 1
+)
+
+xcopy include %PRODUCT_INSTALL%\include /E /I /Q
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy include
+    exit 2
+)
+
+echo.
+echo ########## END
+
diff --git a/products/compil_scripts/expat.sh b/products/compil_scripts/expat.sh
new file mode 100755 (executable)
index 0000000..3958026
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "expat" $VERSION
+echo "##########################################################################"
+
+cp -r $SOURCE_DIR/* . 
+
+
+
+echo
+echo "*** configure"
+./configure --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/f2c.bat b/products/compil_scripts/f2c.bat
new file mode 100644 (file)
index 0000000..1efb35b
--- /dev/null
@@ -0,0 +1,94 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo F2C %VERSION%\r
+echo ##########################################################################\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+SET PRODUCT_BUILD_TYPE=Release\r
+REM TODO: NGH: not Tested yet\r
+REM if %SAT_DEBUG% == 1 (\r
+REM   set PRODUCT_BUILD_TYPE=Debug\r
+REM )\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+SET MSBUILDDISABLENODEREUSE=1\r
+cd %BUILD_DIR%\r
+robocopy %SOURCE_DIR% %BUILD_DIR% /E /NP /NFL /NDL /NS /NC\r
+if NOT %ERRORLEVEL% == 1 (\r
+    echo ERROR when copying archive\r
+    exit 1\r
+)\r
+\r
+REM Upgrade to current version of MSVC\r
+echo.\r
+echo *** devenv %BUILD_DIR%\f2cAll.sln /upgrade\r
+devenv %BUILD_DIR%\f2cAll.sln /upgrade\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on devenv\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo *** %BUILD_DIR%\LIBF77\Libf77.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64\r
+msbuild %BUILD_DIR%\LIBF77\Libf77.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild. Cannot build Libf77\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo *** %BUILD_DIR%\LIBI77\Libi77.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 \r
+msbuild %BUILD_DIR%\LIBI77\Libi77.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild. Cannot build Libi77\r
+    exit 2\r
+)\r
+\r
+REM the binary should be compiled in 32 bits mode, otherwise c generated files from fortran are empty...\r
+REM see BOS #16524\r
+echo.\r
+echo *** %BUILD_DIR%\SRC\f2c.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x86 \r
+msbuild %BUILD_DIR%\SRC\f2c.vcxproj /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x86\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild. Cannot build f2c.exe\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo *** COPY generated binary and libraries to %PRODUCT_INSTALL%\r
+copy  %BUILD_DIR%\SRC\WinRel\f2c.exe %PRODUCT_INSTALL%\f2c.exe\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR could not copy %BUILD_DIR%\SRC\WinRel\f2c.exe\r
+    exit 2\r
+)\r
+\r
+copy %BUILD_DIR%\LIBF77\WinRel\Libf77.lib %PRODUCT_INSTALL%\Libf77.lib\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR when copying %BUILD_DIR%\LIBF77\WinRel\Libf77.lib\r
+    exit 2\r
+)\r
+\r
+copy %BUILD_DIR%\LIBI77\WinRel\Libi77.lib %PRODUCT_INSTALL%\Libi77.lib\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR when copying %BUILD_DIR%\LIBF77\WinRel\Libi77.lib\r
+    exit 2\r
+)\r
+\r
+copy %BUILD_DIR%\F2C.H %PRODUCT_INSTALL%\F2C.H\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR when copying %BUILD_DIR%\F2C.H\r
+    exit 2\r
+)\r
+\r
+taskkill /F /IM "mspdbsrv.exe"\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/freeimage-3.16.0.sh b/products/compil_scripts/freeimage-3.16.0.sh
new file mode 100755 (executable)
index 0000000..32949c5
--- /dev/null
@@ -0,0 +1,83 @@
+#!/bin/bash
+
+echo "###############################################"
+echo "freeimage" $VERSION
+echo "###############################################"
+
+cp -r $SOURCE_DIR/* .
+
+# hack pour CO5.5
+if [[ $DIST_NAME == "CO" && $DIST_VERSION == "5.5" ]] 
+then
+       export CC=/usr/bin/gcc44
+fi
+
+
+
+echo -n ".. Patching freeimage sources: fix build procedure..." && \
+               sed -i "s%DESTDIR ?= /%DESTDIR ?= /usr%g;s%INCDIR ?= \$(DESTDIR)/usr/include%INCDIR ?= \$(DESTDIR)/include%g;s%INSTALLDIR ?= \$(DESTDIR)/usr/lib%INSTALLDIR ?= \$(DESTDIR)/lib%g;s%-o root -g root %%g" Makefile.gnu >& /dev/null && \
+               sed -i "s%DESTDIR ?= /%DESTDIR ?= /usr%g;s%INCDIR ?= \$(DESTDIR)/usr/include%INCDIR ?= \$(DESTDIR)/include%g;s%INSTALLDIR ?= \$(DESTDIR)/usr/lib%INSTALLDIR ?= \$(DESTDIR)/lib%g;s%-o root -g root %%g" Makefile.fip >& /dev/null
+           if [ "$?" != "0" ] ; then
+               echo
+               echo "Error: problem patching freeimage sources"
+               echo
+               return 1
+           fi
+           echo "OK"
+
+           echo -n ".. Patching freeimage sources: gcc 4.7 compatibility..." && \
+               sed -i 's%\(#include "OpenEXRConfig.h"\)%\1\n#include <string.h>%g' Source/OpenEXR/IlmImf/ImfAutoArray.h
+           if [ "$?" != "0" ] ; then
+               echo
+               echo "Error: problem patching freeimage sources"
+               echo
+           fi
+           echo "OK"
+
+echo
+echo "*** FreeImage: make" $MAKE_OPTIONS
+make -f Makefile.gnu
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** FreeImage: make install"
+make -f Makefile.gnu DESTDIR=$PRODUCT_INSTALL install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "*** FreeImage: make clean"
+make -f Makefile.gnu clean
+
+echo
+echo "*** FreeImagePlus: make" $MAKE_OPTIONS
+make -f Makefile.fip
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** FreeImagePlus: make install"
+make -f Makefile.fip DESTDIR=$PRODUCT_INSTALL install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "*** FreeImagePlus: make clean"
+make -f Makefile.fip clean
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/freeimage.bat b/products/compil_scripts/freeimage.bat
new file mode 100644 (file)
index 0000000..05ee31d
--- /dev/null
@@ -0,0 +1,67 @@
+@echo off
+
+echo ##########################################################################
+echo FreeImage %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include
+if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+SET MSBUILDDISABLENODEREUSE=1
+cd %SOURCE_DIR%
+xcopy * %BUILD_DIR% /E /I /Q
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy
+    exit 1
+)
+
+cd %BUILD_DIR%
+REM Upgrade to current version of MSVC
+echo.
+echo *** devenv %BUILD_DIR%\FreeImage.2017.sln /upgrade
+devenv %BUILD_DIR%\FreeImage.2017.sln /upgrade
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on devenv
+    exit 1
+)
+
+REM Compilation
+echo.
+echo *** %BUILD_DIR%\FreeImage.2017.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 
+msbuild %BUILD_DIR%\FreeImage.2017.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild
+    exit 2
+)
+
+
+echo.
+echo *** COPY FreeImage DLL to %PRODUCT_INSTALL%
+
+copy /Y %BUILD_DIR%\Dist\x64\FreeImage.dll %PRODUCT_INSTALL%\bin\FreeImage.dll
+copy /Y %BUILD_DIR%\Dist\x64\FreeImage.lib %PRODUCT_INSTALL%\lib\FreeImage.lib
+copy /Y %BUILD_DIR%\Dist\x64\FreeImage.h %PRODUCT_INSTALL%\include\FreeImage.h
+copy /Y %BUILD_DIR%\Wrapper\FreeImagePlus\dist\x64\FreeImagePlus.dll %PRODUCT_INSTALL%\bin\FreeImagePlus.dll
+copy /Y %BUILD_DIR%\Wrapper\FreeImagePlus\dist\x64\FreeImagePlus.lib %PRODUCT_INSTALL%\lib\FreeImagePlus.lib
+copy /Y %BUILD_DIR%\Wrapper\FreeImagePlus\dist\x64\FreeImagePlus.h %PRODUCT_INSTALL%\include\FreeImagePlus.h
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/freeimage.sh b/products/compil_scripts/freeimage.sh
new file mode 100755 (executable)
index 0000000..7dac1fb
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+echo "###############################################"
+echo "freeimage" $VERSION
+echo "###############################################"
+cp -r $SOURCE_DIR/* .
+
+
+
+echo
+echo "*** FreeImage: make" $MAKE_OPTIONS
+make -f Makefile.gnu
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** FreeImage: make install"
+make -f Makefile.gnu DESTDIR=$PRODUCT_INSTALL install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "*** FreeImage: make clean"
+make -f Makefile.gnu clean
+
+echo
+echo "*** FreeImagePlus: make" $MAKE_OPTIONS
+make -f Makefile.fip
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** FreeImagePlus: make install"
+make -f Makefile.fip DESTDIR=$PRODUCT_INSTALL install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "*** FreeImagePlus: make clean"
+make -f Makefile.fip clean
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/freetype-2.3.sh b/products/compil_scripts/freetype-2.3.sh
new file mode 100755 (executable)
index 0000000..9378bc9
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+echo "###############################################"
+echo "freetype" $VERSION
+echo "###############################################"
+
+
+
+echo
+echo "*** configure"
+if [[ $BITS == "64" ]]
+then
+    $SOURCE_DIR/configure CFLAGS="-fPIC -m64" --prefix=$PRODUCT_INSTALL --with-harfbuzz=no
+else
+    $SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL
+fi
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+cp $PRODUCT_INSTALL/include/ft2build.h $PRODUCT_INSTALL/include/freetype2 #Fix for ParaView detection of ft2build.h
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/freetype.bat b/products/compil_scripts/freetype.bat
new file mode 100755 (executable)
index 0000000..f36414f
--- /dev/null
@@ -0,0 +1,91 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo FreeType %VERSION%\r
+echo ##########################################################################\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+SET PRODUCT_BUILD_TYPE=Release\r
+REM TODO: NGH: not Tested yet\r
+REM if %SAT_DEBUG% == 1 (\r
+REM   set PRODUCT_BUILD_TYPE=Debug\r
+REM )\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir  %PRODUCT_INSTALL%\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %BUILD_DIR%\r
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL%\r
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=%PRODUCT_BUILD_TYPE%\r
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS=ON\r
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz=TRUE\r
+if defined CMAKE_GENERATOR (\r
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%\r
+) else (\r
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"\r
+)\r
+set MSBUILDDISABLENODEREUSE=1\r
+\r
+echo.\r
+echo *********************************************************************\r
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+echo *********************************************************************\r
+echo.\r
+\r
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on cmake"\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo *********************************************************************\r
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% ALL_BUILD.vcxproj"\r
+echo *********************************************************************\r
+echo.\r
+\r
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% ALL_BUILD.vcxproj\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild ALL_BUILD.vcxproj\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo *********************************************************************\r
+echo *** installation... msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% INSTALL.vcxproj\r
+echo *********************************************************************\r
+echo.\r
+\r
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% INSTALL.vcxproj\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild INSTALL.vcxproj\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo *********************************************************************\r
+echo *** COPY Freetype DLL file from %BUILD_DIR% to %PRODUCT_INSTALL%\r
+echo *********************************************************************\r
+echo.\r
+if NOT exist "%PRODUCT_INSTALL%\bin"     mkdir  %PRODUCT_INSTALL%\bin\r
+copy /Y  %BUILD_DIR%\%PRODUCT_BUILD_TYPE%\Freetype.dll %PRODUCT_INSTALL%\bin\Freetype.dll \r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR when copying Freetype DLL\r
+    exit 2\r
+)\r
+\r
+\r
+REM needed by ParaView\r
+copy /Y %PRODUCT_INSTALL%\include\freetype2\ft2build.h %PRODUCT_INSTALL%\include\freetype2\freetype\ft2build.h\r
+copy /Y %SOURCE_DIR%\include\freetype\config\ftconfig.h %PRODUCT_INSTALL%\include\freetype2\freetype\config\ftconfig.h\r
+\r
+taskkill /F /IM "mspdbsrv.exe"\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/freetype.sh b/products/compil_scripts/freetype.sh
new file mode 100755 (executable)
index 0000000..3d7b73c
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+echo "###############################################"
+echo "freetype" $VERSION
+echo "###############################################"
+
+echo
+echo "*** configure"
+
+$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL --with-harfbuzz=no
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/ftgl_2.1.3.sh b/products/compil_scripts/ftgl_2.1.3.sh
new file mode 100755 (executable)
index 0000000..926dac9
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+echo "###############################################"
+echo "ftgl" $VERSION
+echo "###############################################"
+
+
+cp -r $SOURCE_DIR/* .
+
+
+
+./autogen.sh
+
+echo
+echo "*** configure"
+./configure --prefix=$PRODUCT_INSTALL --enable-shared=yes \
+    --with-ft-prefix=$FREETYPEDIR \
+    --with-gl-inc="-lm" 
+#    --disable-doc
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+export ECHO=echo
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    rm -Rf $PRODUCT_INSTALL
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/functools32.sh b/products/compil_scripts/functools32.sh
new file mode 100755 (executable)
index 0000000..1a7ed53
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "functools32" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+echo
+echo "*** build"
+python setup.py build
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build"
+    exit 2
+fi
+
+FUNCTOOLS_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+mkdir -p ${FUNCTOOLS_INSTALL}
+export PYTHONPATH=${FUNCTOOLS_INSTALL}:${PYTHONPATH}
+echo
+echo "*** install"
+python setup.py install --prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/gcc-6.3.0.sh b/products/compil_scripts/gcc-6.3.0.sh
new file mode 100755 (executable)
index 0000000..1eb552c
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "gcc" $VERSION
+echo "##########################################################################"
+
+CONFIGURE_FLAGS=''
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-languages=c,c++,fortran"
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-checking=release"
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --disable-multilib"
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-shared=yes"
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-threads=posix"
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-plugins"
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-ld"
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-bootstrap"
+
+echo "*** configure --prefix=${PRODUCT_INSTALL} ${CONFIGURE_FLAGS}"
+$SOURCE_DIR/configure --prefix=${PRODUCT_INSTALL} ${CONFIGURE_FLAGS}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/gl2ps-1.4.0.sh b/products/compil_scripts/gl2ps-1.4.0.sh
new file mode 100755 (executable)
index 0000000..c4f410c
--- /dev/null
@@ -0,0 +1,60 @@
+#!/bin/bash
+echo "##########################################################################"
+echo "ispc" $VERSION
+echo "##########################################################################"
+if [[ $DIST_NAME == "DB" && $DIST_VERSION == "10" ]]
+then
+    # seems like SAT does not create BUILD_DIR ( ask for patch integration)
+    mkdir -p $INSTALL_DIR && mkdir -p $BUILD_DIR && cd $BUILD_DIR
+    # check wether a folder named
+    FMT_EXISTS=0
+    if [[ -e "$HOME/.texlive2018/texmf-var/web2c/pdftex/pdflatex.fmt" ]]
+    then
+        FMT_EXISTS=1
+        mv $HOME/.texlive2018/texmf-var/web2c/pdftex/pdflatex.fmt $HOME/.texlive2018/texmf-var/web2c/pdftex/pdflatex.fmt.old
+    fi
+
+    CMAKE_OPTIONS=""
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_PNG=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_ZLIB=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_GLUT=OFF"
+    echo
+    echo "*** cmake" ${CMAKE_OPTIONS}
+    cmake ${CMAKE_OPTIONS} $SOURCE_DIR
+    if [ $? -ne 0 ]
+    then
+        echo "ERROR on cmake"
+        exit 1
+    fi
+    
+    echo
+    echo "*** make"
+    make
+    if [ $? -ne 0 ]
+    then
+        echo "ERROR on make"
+        exit 2
+    fi
+    
+    echo
+    echo "*** make"
+    make install
+    if [ $? -ne 0 ]
+    then
+        echo "ERROR on make install"
+        exit 3
+    fi
+    
+    #
+    if [[ $FMT_EXISTS -eq 1 ]]
+       then
+        mv $HOME/.texlive2018/texmf-var/web2c/pdftex/pdflatex.fmt.old $HOME/.texlive2018/texmf-var/web2c/pdftex/pdflatex.fmt
+    fi   
+    echo
+    echo "########## END"
+else
+    echo "ERROR distribution: issue with: $DIST_NAME $DIST_VERSION - please fix gl2ps.sh script..."
+    exit 1
+fi
diff --git a/products/compil_scripts/gl2ps.bat b/products/compil_scripts/gl2ps.bat
new file mode 100755 (executable)
index 0000000..c4cbe56
--- /dev/null
@@ -0,0 +1,90 @@
+@echo off
+
+echo ##########################################################################
+echo gl2ps %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL:\=/%
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_GLUT=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_PNG=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_ZLIB=ON
+
+if defined CMAKE_GENERATOR (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%
+) else (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+)
+
+set MSBUILDDISABLENODEREUSE=1
+
+cd %BUILD_DIR%
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+echo --------------------------------------------------------------------------
+echo.
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on CMake
+    exit 1
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild ALL_BUILD.vcxproj
+echo --------------------------------------------------------------------------
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild INSTALL.vcxproj
+echo --------------------------------------------------------------------------
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** Custom installation
+echo --------------------------------------------------------------------------
+echo.
+
+move /Y %PRODUCT_INSTALL%\lib\gl2ps.dll %PRODUCT_INSTALL%\bin\gl2ps.dll
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on moving gl2ps.dll into %PRODUCT_INSTALL%\bin
+    exit 4
+)
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/gl2ps.sh b/products/compil_scripts/gl2ps.sh
new file mode 100755 (executable)
index 0000000..7cf3358
--- /dev/null
@@ -0,0 +1 @@
+# Utile pour SAT5
\ No newline at end of file
diff --git a/products/compil_scripts/glu.sh b/products/compil_scripts/glu.sh
new file mode 100755 (executable)
index 0000000..b8d2ab3
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "glu" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+echo
+echo "*** configure"
+./configure --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make -j8 $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/gmsh-2.12.0.sh b/products/compil_scripts/gmsh-2.12.0.sh
new file mode 100755 (executable)
index 0000000..09c26fe
--- /dev/null
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "gmsh" $VERSION
+echo "##########################################################################"
+
+
+
+CMAKE_OPTIONS=""
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_ACIS=0"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_BUILD_SHARED=1"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_FLTK=0"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_MED=0"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_ONELAB_METAMODEL=0"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_PARSER=0"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_SALOME=0"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_PETSC:BOOL=OFF" #pour éviter de tirer sur MPI
+
+
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on CMake"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "*** copy all .h in sources to install"
+cp -f --backup=numbered `find $SOURCE_DIR -name "*.h"` $PRODUCT_INSTALL/include/ && mv $PRODUCT_INSTALL/include/gmsh/* $PRODUCT_INSTALL/include/ && rmdir $PRODUCT_INSTALL/include/gmsh/
+if [ $? -ne 0 ]
+then
+    echo "ERROR on copy"
+    exit 3
+fi
+
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/gmsh.bat b/products/compil_scripts/gmsh.bat
new file mode 100644 (file)
index 0000000..e47cb4b
--- /dev/null
@@ -0,0 +1,101 @@
+@echo off
+
+echo ##########################################################################
+echo gmsh %VERSION%
+echo ##########################################################################
+
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+SET BLAS_LAPACK_LIBRARIES="%LAPACK_ROOT_DIR%\lib\libblas.dll.a;%LAPACK_ROOT_DIR%\lib\libcblas.dll.a;%LAPACK_ROOT_DIR%\lib\liblapack.dll.a;%LAPACK_ROOT_DIR%\lib\liblapacke.dll.a"
+cd %BUILD_DIR%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=Release
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_LIB=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_ACIS=OFF 
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_FLTK=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_ONELAB_METAMODEL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_PARSER=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_PETSC=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_PRIVATE_API=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_CGNS=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DENABLE_HXT=OFF 
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64"
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBLAS_LAPACK_LIBRARIES:STRING=%BLAS_LAPACK_LIBRARIES%
+
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo *********************************************************************
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS%
+echo *********************************************************************
+echo.
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo *********************************************************************
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj"
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild gmsh.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation...
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+echo.
+echo *********************************************************************
+echo *** installation Headers...
+echo *********************************************************************
+echo.
+msbuild  /p:Configuration=Release /p:Platform=x64  /p:BuildProjectReferences=false get_headers.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild get_headers.vcxproj
+    exit 4
+)
+
+copy /Y /B %BUILD_DIR%\Release\gmsh.lib %PRODUCT_INSTALL%\bin\gmsh.lib
+copy /Y /B %BUILD_DIR%\Release\gmsh.exp %PRODUCT_INSTALL%\bin\gmsh.exp
+
+SETLOCAL ENABLEDELAYEDEXPANSION
+FOR %%f IN (gmsh.h gmsh.h_cwrap gmshc.h) do (
+   set X=%%f
+   copy /Y %SOURCE_DIR%\api\%%f %PRODUCT_INSTALL%\include\%X%
+)
+ENDLOCAL
+
+cd %BUILD_DIR%\Headers\gmsh
+SETLOCAL ENABLEDELAYEDEXPANSION
+FOR %%f IN (*.h) do (
+   set X=%%f
+   copy /Y %SOURCE_DIR%\api\%%f %PRODUCT_INSTALL%\include\%X%
+)
+ENDLOCAL
+
+echo.
+echo ########## END
\ No newline at end of file
diff --git a/products/compil_scripts/gmsh.sh b/products/compil_scripts/gmsh.sh
new file mode 100755 (executable)
index 0000000..4f86412
--- /dev/null
@@ -0,0 +1,85 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "gmsh" $VERSION
+echo "##########################################################################"
+
+
+
+CMAKE_OPTIONS=""
+# common settings
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_VERBOSE_MAKEFILE=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_BUILD_TYPE=Release"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_BUILD_SHARED=ON"
+
+# build options
+function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
+if version_ge $VERSION "4."; then
+    echo "*** GMSH version $VERSION >= 4."
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_ACIS=OFF"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_FLTK=OFF"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_MED=OFF"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_ONELAB_METAMODEL=OFF"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_PARSER=ON"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_PETSC=OFF"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_PRIVATE_API=ON"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_CGNS=OFF" # default value is set to ON in release 4.1.4
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_LIBDIR=${PRODUCT_INSTALL}/lib" # strangely on Ubuntu GMSH installs the .so in lib instead of lib/lib64 - so force to lib64
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_PREFIX_PATH=${LAPACK_ROOT_DIR}" # set path of third libraries to our associated internal products
+    if [[ $DIST_NAME == "FD" && $DIST_VERSION == "32" ]]
+    then
+        CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_MMG3D=OFF" # removed anyhow in GMS 4.6
+    fi
+else
+    echo "*** GMSH version $VERSION < 4."
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_ACIS=OFF"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_FLTK=OFF"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_MED=OFF"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_ONELAB_METAMODEL=OFF"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_PARSER=ON"
+    CMAKE_OPTIONS="${CMAKE_OPTIONS} -DENABLE_PETSC=OFF"
+fi
+
+echo "*** cmake" $CMAKE_OPTIONS
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on CMake"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "*** copy all .h in sources to install"
+cp -f --backup=numbered `find $SOURCE_DIR -name "*.h"` $PRODUCT_INSTALL/include/ && \
+    mv $PRODUCT_INSTALL/include/gmsh/* $PRODUCT_INSTALL/include/ && \
+    rmdir $PRODUCT_INSTALL/include/gmsh/
+if [ $? -ne 0 ]
+then
+    echo "ERROR on copy"
+    exit 4
+fi
+
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/graphviz-2.38.0.bat b/products/compil_scripts/graphviz-2.38.0.bat
new file mode 100755 (executable)
index 0000000..e2dfa33
--- /dev/null
@@ -0,0 +1,30 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Graphviz %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+REM currently this external library is built by OpenCascade\r
+REM As soon as we upgrade to 2.42, one needs to move to graphviz.bat\r
+cd %SOURCE_DIR%\r
+\r
+xcopy bin %PRODUCT_INSTALL%\bin /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy bin\r
+    exit 1\r
+)\r
+\r
+xcopy include %PRODUCT_INSTALL%\include /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy include\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo ########## END\r
+\r
diff --git a/products/compil_scripts/graphviz-2.38.0.sh b/products/compil_scripts/graphviz-2.38.0.sh
new file mode 100755 (executable)
index 0000000..291a688
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "graphviz" $VERSION
+echo "##########################################################################"
+
+
+
+cp -r $SOURCE_DIR/* . 
+
+echo "graphviz compilation"
+
+echo
+#echo "*** ./configure --prefix=${PRODUCT_INSTALL} --with-tcl=${TCLHOME}/lib --with-expat=no --with-qt=no --with-cgraph=no  --enable-perl=no"
+#./configure --prefix=${PRODUCT_INSTALL} --with-tcl=${TCLHOME}/lib --with-expat=no --with-qt=no --with-cgraph=no --enable-perl=no
+echo "*** ./configure --prefix=${PRODUCT_INSTALL}  --enable-tcl=no --with-expat=no --with-qt=no  --enable-perl=no --enable-ocaml=no"
+./configure --prefix=${PRODUCT_INSTALL} --enable-tcl=no --with-expat=no --with-qt=no  --enable-perl=no --enable-ocaml=no --with-ghostscript=no --enable-python=no --enable-java=no
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" ${MAKE_OPTIONS}
+make ${MAKE_OPTIONS}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/graphviz-2.44.1.bat b/products/compil_scripts/graphviz-2.44.1.bat
new file mode 100644 (file)
index 0000000..2562abd
--- /dev/null
@@ -0,0 +1,74 @@
+@echo off
+
+echo ##########################################################################
+echo graphviz %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %BUILD_DIR%
+set PATH=%PATH%;%BUILD_DIR%\windows\dependencies\graphviz-build-utilities
+set PATH=%PATH%;%WINFLEX_ROOT_DIR%
+set CMAKE_OPTIONS=%SOURCE_DIR%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=%PRODUCT_BUILD_TYPE%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo *********************************************************************
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+echo *********************************************************************
+echo.
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo *********************************************************************
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj"
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation...
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/graphviz.bat b/products/compil_scripts/graphviz.bat
new file mode 100644 (file)
index 0000000..9140cfa
--- /dev/null
@@ -0,0 +1,26 @@
+@echo off
+
+echo ##########################################################################
+echo Graphviz %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %BUILD_DIR%
+cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE% %SOURCE_DIR%
+msbuild ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE%
+msbuild INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE%
+echo.
+echo ########## END
+
diff --git a/products/compil_scripts/graphviz.sh b/products/compil_scripts/graphviz.sh
new file mode 100755 (executable)
index 0000000..805214d
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "graphviz" $VERSION
+echo "##########################################################################"
+
+
+
+cp -r $SOURCE_DIR/* .
+
+echo "graphviz compilation"
+# tcl natif
+if [ ${#TCLHOME} -eq 0 ]
+then
+    TCLHOME="/usr"
+fi
+
+echo
+echo "*** configure"
+if [ "`lsb_release -si``lsb_release -sr`"=="Fedora17" ]&&[ $VERSION=="2.28.0" ]
+then
+       # Fix compilation error graphviz 2.28.0 for Fedora17 (EXTERN.h not found)
+    ./configure --prefix=${PRODUCT_INSTALL} --with-tcl=${TCLHOME}/lib --disable-rpath --with-expat=no --with-qt=no --with-cgraph=no --enable-python=no CPPFLAGS="-I/usr/lib64/perl5/CORE"
+else
+    ./configure --prefix=${PRODUCT_INSTALL} --with-tcl=${TCLHOME}/lib --disable-rpath --with-expat=no --with-qt=no --with-cgraph=no --enable-python=no # 13 mars 2013 ajout de "--with-cgraph=no" a cause d'un conflit avec YACS
+fi
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" ${MAKE_OPTIONS}
+make ${MAKE_OPTIONS}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/hdf5-1.10.3.sh b/products/compil_scripts/hdf5-1.10.3.sh
new file mode 100755 (executable)
index 0000000..3b311b5
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "hdf5" $VERSION
+echo "##########################################################################"
+
+
+
+CMAKE_OPTIONS=""
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_USE_16_API_DEFAULT:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ALLOW_EXTERNAL_SUPPORT:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_HL_LIB:BOOL=ON"
+
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ENABLE_PARALLEL:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_CPP_LIB:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_TOOLS:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpic++"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=${MPI_ROOT_DIR}/bin/mpicc"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ENABLE_PARALLEL:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_CPP_LIB:BOOL=ON"
+fi
+
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ENABLE_THREADSAFE:BOOL=ON"
+# OP Set to permit HDF5_BUILD_HL_LIB and HDF5_BUILD_CPP_LIB options to ON
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DALLOW_UNSUPPORTED:BOOL=ON"
+
+echo
+echo "*** cmake" $CMAKE_OPTIONS
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on CMake"
+    exit 1
+fi
+
+if [ -n "$SAT_HPC" ]
+then
+    sed -e 's/;//' -i src/CMakeFiles/H5make_libsettings.dir/link.txt
+    sed -e 's/;//' -i src/CMakeFiles/H5detect.dir/link.txt
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/hdf5Autotools.sh b/products/compil_scripts/hdf5Autotools.sh
new file mode 100755 (executable)
index 0000000..d699c3f
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "hdf5" $VERSION
+echo "##########################################################################"
+
+
+echo LD_LIBRARY_PATH = $LD_LIBRARY_PATH
+
+CONFIGURE_FLAGS=''
+# --enable-shared is set by default 
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-unsupported"
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-hl"
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-build-mode=production"
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --disable-silent-rules"
+
+if [ -n "$SAT_HPC" ]
+then
+    CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-parallel"
+#    export FC=mpif90
+#    export CXX=mpicxx
+#    export CC=${MPI_ROOT_DIR}/bin/mpiCC
+else
+    CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-threadsafe"
+    CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-cxx"  # not compatible with --enable-parallel
+fi
+
+echo "*** configure --prefix=${PRODUCT_INSTALL} ${CONFIGURE_FLAGS}"
+$SOURCE_DIR/configure --prefix=${PRODUCT_INSTALL} ${CONFIGURE_FLAGS}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/hdf5CMake.bat b/products/compil_scripts/hdf5CMake.bat
new file mode 100755 (executable)
index 0000000..e7c9c39
--- /dev/null
@@ -0,0 +1,109 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo hdf5 %VERSION%\r
+echo ##########################################################################\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+SET PRODUCT_BUILD_TYPE=Release\r
+REM TODO: NGH: not Tested yet\r
+REM if %SAT_DEBUG% == 1 (\r
+REM   set PRODUCT_BUILD_TYPE=Debug\r
+REM )\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+SET CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_ENABLE_THREADSAFE:BOOL=ON \r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_ALLOW_EXTERNAL_SUPPORT:BOOL=ON\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DALLOW_UNSUPPORTED:BOOL=ON\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_BUILD_TOOLS:BOOL=ON  \r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_BUILD_HL_LIB:BOOL=ON\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_BUILD_CPP_LIB:BOOL=ON\r
+\r
+if DEFINED SAT_HPC (\r
+    SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_ENABLE_PARALLEL:BOOL=ON\r
+    SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMPI_LINK_FLAGS:STRING=-Wl\r
+) else (\r
+    SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_ENABLE_PARALLEL:BOOL=OFF\r
+)\r
+if defined CMAKE_GENERATOR (\r
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%\r
+) else (\r
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"\r
+)\r
+\r
+set MSBUILDDISABLENODEREUSE=1\r
+\r
+cd %BUILD_DIR%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+echo --------------------------------------------------------------------------\r
+\r
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on CMake\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64\r
+echo --------------------------------------------------------------------------\r
+\r
+msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild ALL_BUILD.vcxproj\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64\r
+echo --------------------------------------------------------------------------\r
+\r
+msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild INSTALL.vcxproj\r
+    exit 3\r
+)\r
+\r
+REM some of the products like GUI expect .lib instead of _D.lib...\r
+cd %PRODUCT_INSTALL%\lib\\r
+if %SAT_DEBUG% == 1 (\r
+  SETLOCAL ENABLEDELAYEDEXPANSION\r
+  FOR %%f IN (*_D.lib) do (\r
+     set X=%%f\r
+     copy /Y /B %PRODUCT_INSTALL%\lib\%%f %PRODUCT_INSTALL%\lib\!X:_D.lib=.lib!\r
+  )\r
+  ENDLOCAL\r
+)\r
+\r
+REM Symbolic links require being in developer mode\r
+cd %PRODUCT_INSTALL%\bin\\r
+if %SAT_DEBUG% == 1 (\r
+  SETLOCAL ENABLEDELAYEDEXPANSION\r
+  FOR %%f IN (*_D.dll) do (\r
+     set X=%%f\r
+     copy /Y /B %PRODUCT_INSTALL%\bin\%%f %PRODUCT_INSTALL%\bin\!X:_D.dll=.dll!\r
+  )\r
+  ENDLOCAL\r
+)\r
+\r
+taskkill /F /IM "mspdbsrv.exe"\r
+\r
+\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/hdf5CMake.sh b/products/compil_scripts/hdf5CMake.sh
new file mode 100755 (executable)
index 0000000..9c57462
--- /dev/null
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "hdf5" $VERSION
+echo "##########################################################################"
+
+
+
+CMAKE_OPTIONS=""
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+#CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_USE_16_API_DEFAULT:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ALLOW_EXTERNAL_SUPPORT:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_HL_LIB:BOOL=ON"
+
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ENABLE_PARALLEL:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_CPP_LIB:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_TOOLS:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ENABLE_PARALLEL:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_BUILD_CPP_LIB:BOOL=ON"
+fi
+
+echo
+echo "*** cmake" $CMAKE_OPTIONS
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on CMake"
+    exit 1
+fi
+
+if [ -n "$SAT_HPC" ]
+then
+    sed -e 's/;//' -i src/CMakeFiles/H5make_libsettings.dir/link.txt
+    sed -e 's/;//' -i src/CMakeFiles/H5detect.dir/link.txt
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/hdf5_cxx.sh b/products/compil_scripts/hdf5_cxx.sh
new file mode 100755 (executable)
index 0000000..99f853e
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "hdf5" $VERSION
+echo "##########################################################################"
+
+
+
+#if [[ $BITS == "64" ]]
+#then
+#   CONFIGURE_FLAGS="-m64 CXXFLAGS=-m64"
+#fi
+
+CONFIGURE_FLAGS=''
+
+if [ -n "$SAT_HPC" ]
+then
+    CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-parallel --enable-shared"
+else
+    CONFIGURE_FLAGS=$CONFIGURE_FLAGS" --enable-threadsafe"
+fi
+
+echo "*** configure"
+$SOURCE_DIR/configure --prefix=${PRODUCT_INSTALL} --disable-debug \
+    --enable-production --enable-cxx --enable-unsupported \
+    --with-pthread=/usr/include,/usr/lib \
+    --with-default-api-version=v16 ${CONFIGURE_FLAGS}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/idna.sh b/products/compil_scripts/idna.sh
new file mode 100755 (executable)
index 0000000..2b0950d
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "idna" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/imagesize.sh b/products/compil_scripts/imagesize.sh
new file mode 100755 (executable)
index 0000000..aa08acc
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "imagesize" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/ispc-1.9.2.sh b/products/compil_scripts/ispc-1.9.2.sh
new file mode 100755 (executable)
index 0000000..c8e3f76
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/bash                                                                                                                                                                              
+
+echo "##########################################################################"
+echo "ispc" $VERSION
+echo "##########################################################################"
+
+if [ -f "$SOURCE_DIR/bin/ispc" ]
+then
+    echo "INFO: about to copy the ispc binary utility to the installation folder: $PRODUCT_INSTALL/bin"
+    mkdir -p $PRODUCT_INSTALL/bin
+    cp  $SOURCE_DIR/bin/ispc $PRODUCT_INSTALL/bin
+    chmod +x $PRODUCT_INSTALL/bin/ispc
+else
+    echo "INFO: compiling ispc..."
+    cd $SOURCE_DIR
+    TARGET_MAKE=gcc
+    # issue with the current version of CLANG libraries
+    if [[ $DIST_NAME == "UB" && $DIST_VERSION == "18.04" ]]
+    then
+       TARGET_MAKE=clang
+    fi
+    
+    # CentOS 6
+    if [[ $DIST_NAME == "CO" && $DIST_VERSION == "6" ]]
+    then
+       TARGET_MAKE=clang
+    fi
+    
+    echo "*** make" $MAKE_OPTIONS $TARGET_MAKE
+    make $MAKE_OPTIONS $TARGET_MAKE
+    if [ $? -ne 0 ]
+    then
+       echo "ERROR on make"
+       exit 2
+    fi
+    
+    echo "INFO: about to copy the ispc binary utility to the installation folder: $PRODUCT_INSTALL/bin"
+    mkdir -p $PRODUCT_INSTALL/bin
+    cp $SOURCE_DIR/ispc $PRODUCT_INSTALL/bin
+    chmod +x $PRODUCT_INSTALL/bin/ispc
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/ispc.bat b/products/compil_scripts/ispc.bat
new file mode 100644 (file)
index 0000000..fbf0bfe
--- /dev/null
@@ -0,0 +1,75 @@
+@echo off
+
+echo ##########################################################################
+echo ISPC %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+if NOT defined CYGWIN_ROOT_DIR (
+  echo ERROR: Please set the environment variable: CYGWIN_ROOT_DIR
+  exit 1
+) else (
+  echo INFO: Cygwin suite environment variable is set to: %CYGWIN_ROOT_DIR%
+)
+
+set PATH=%PATH%;%CYGWIN_ROOT_DIR%\bin
+
+SET CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE=%PYTHON_ROOT_DIR:\=/%/python.exe
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+
+cd %BUILD_DIR%
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+echo --------------------------------------------------------------------------
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on CMake
+    exit 1
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE%  /p:Platform=x64
+echo --------------------------------------------------------------------------
+
+msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE%  /p:Platform=x64
+echo --------------------------------------------------------------------------
+
+msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE%  /p:Platform=x64
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
\ No newline at end of file
diff --git a/products/compil_scripts/kiwisolver.sh b/products/compil_scripts/kiwisolver.sh
new file mode 100755 (executable)
index 0000000..ae94a28
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "kiwisolver" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/lapack.bat b/products/compil_scripts/lapack.bat
new file mode 100644 (file)
index 0000000..02a8e8c
--- /dev/null
@@ -0,0 +1,79 @@
+@echo off
+
+echo ##########################################################################
+echo Installing Lapack %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+set GFORTRAN_EXE=%MINGW_ROOT_DIR%\bin\gfortran.exe
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+echo.
+echo ************************************************
+echo *** Setting local path to %MINGW_ROOT_DIR%\bin
+echo ************************************************
+set path=%MINGW_ROOT_DIR%\bin;%path%
+set CMAKE_OPTIONS=%SOURCE_DIR%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=%PRODUCT_BUILD_TYPE%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_CXX_FLAGS=-fPIC
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_C_FLAGS=-fPIC
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_OPTIMIZED_BLAS=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCBLAS=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLAPACKE=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_SIZEOF_VOID_P=8
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_Fortran_COMPILER=%MINGW_ROOT_DIR:\=/%/bin/gfortran.exe
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_EXE_LINKER_FLAGS="-Wl,--allow-multiple-definition"
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_SH="CMAKE_SH-NOTFOUND"
+if defined CMAKE_GENERATOR (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%
+) else (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="MinGW Makefiles"
+)
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo *** cmake %CMAKE_OPTIONS}%
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+echo.
+echo *********************************************************************
+echo *** mingw32-make"
+echo *********************************************************************
+echo.
+
+mingw32-make
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation...
+echo *********************************************************************
+echo.
+mingw32-make install
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+
diff --git a/products/compil_scripts/lapack.sh b/products/compil_scripts/lapack.sh
new file mode 100755 (executable)
index 0000000..6815e65
--- /dev/null
@@ -0,0 +1,102 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "lapack" $VERSION
+echo "##########################################################################"
+
+
+
+#echo "copy file"
+#cp make.inc.example make.inc
+
+#mkdir -p $PRODUCT_INSTALL
+#cp -rp $SOURCE_DIR/* $PRODUCT_INSTALL/
+
+
+CMAKE_OPTIONS="$SOURCE_DIR"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_PREFIX=$PRODUCT_INSTALL"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_BUILD_TYPE=Release" 
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_INSTALL_LIBDIR:STRING=lib"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_CXX_FLAGS=-fPIC"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCMAKE_C_FLAGS=-fPIC"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DUSE_OPTIMIZED_BLAS=OFF"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DCBLAS=ON"
+CMAKE_OPTIONS="${CMAKE_OPTIONS} -DLAPACKE=ON"
+
+echo
+echo "*** cmake ${CMAKE_OPTIONS}"
+cmake ${CMAKE_OPTIONS}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+echo
+echo "*** make"
+make
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+
+make install
+
+#cp lib/libblas.so $PRODUCT_INSTALL/lib/
+#cp lib/liblapack.so $PRODUCT_INSTALL/lib/
+#cp lib/libtmglib.so $PRODUCT_INSTALL/lib/
+
+#ln -s $PRODUCT_INSTALL/lib/blas_LINUX.so $PRODUCT_INSTALL/lib/libblas.so
+#ln -s $PRODUCT_INSTALL/lib/lapack_LINUX.so $PRODUCT_INSTALL/lib/liblapack.so
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+# Ce lien est nécéssaire pour numpy, qui ne veut entendre parler que du fichier liblapack.so.3
+# Nous n'avons pas trouvé de moyen d'obtenir ce fichier autrement
+# Voir https://codev-tuleap.cea.fr/plugins/tracker/?aid=8084
+# Mise en commentaire car plus necessaire (CLACLA)
+#VERSION_MAJOR=${VERSION:0:1}
+#cd $PRODUCT_INSTALL/lib && ln -s liblapack.so liblapack.so.$VERSION_MAJOR && ln -s libblas.so libblas.so.$VERSION_MAJOR
+
+#if [ $? -ne 0 ]
+#then
+#    echo "ERROR on symbolic link"
+#    exit 4
+#fi
+
+#echo
+#echo "*** make"
+#make blaslib
+#if [ $? -ne 0 ]
+#then
+#    echo "ERROR on make"
+#    exit 2
+#fi
+
+#make lapacklib
+#if [ $? -ne 0 ]
+#then
+#    echo "ERROR on make"
+#    exit 2
+#fi
+##ln -s blas_LINUX.a libblas.a
+##ln -s lapack_LINUX.a liblapack.a
+
+#ln -s librefblas.a libblas.a
+
+# En attendant de comprendre pourquoi numpy cherche des .h dans lib au lieu d'include
+# j'ajoute les .h dans lib a la main
+cp $PRODUCT_INSTALL/include/*.h $PRODUCT_INSTALL/lib/.
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/lata.bat b/products/compil_scripts/lata.bat
new file mode 100644 (file)
index 0000000..fb232af
--- /dev/null
@@ -0,0 +1,93 @@
+@echo off
+
+echo ##########################################################################
+echo Installing LATA %VERSION%
+echo ##########################################################################
+
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+robocopy %SOURCE_DIR% %BUILD_DIR% /E /NP /NFL /NDL /NS /NC
+if NOT %ERRORLEVEL% == 1 (
+    echo ERROR when copying archive
+    exit 1
+)
+
+REM LATA source directory
+set LATA_SRC_DIR=%BUILD_DIR%\src
+
+REM LATA binary directory
+set LATA_BIN_DIR=%BUILD_DIR%\bin
+
+REM build folder
+mkdir %BUILD_DIR%\plugin_visit\build_paraview
+
+REM copy the patched CMake file... caution, the patch is provided with the archive
+copy %BUILD_DIR%\plugin_visit\CMakeLists.txt.para %BUILD_DIR%\plugin_visit\build_paraview\CMakeLists.txt
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR when copying CMakeLists.txt
+    exit 2
+)
+
+cd %BUILD_DIR%\plugin_visit\build_paraview
+
+REM add required symbolic links
+cp %BUILD_DIR%\plugin_visit\src\avtlataFileFormat.h avtlataFileFormat.h
+cp %BUILD_DIR%\plugin_visit\src\avtlataFileFormat.C avtlataFileFormat.C 
+for /r "%LATA_SRC_DIR%/commun_triou" %%G in (*.cpp) do COPY %%~G *.C
+for /r "%LATA_SRC_DIR%/commun_triou" %%G in (*.h) do COPY %%~G *.h
+for /r "%LATA_SRC_DIR%/triou_compat" %%G in (*.h) do COPY %%~G *.h
+for /r "%LATA_SRC_DIR%/triou_compat" %%G in (*.cpp) do COPY %%~G *.C
+
+REM define the VISITLIBPATH variable
+set VISITLIBPATH=%BUILD_DIR%\VisItLib
+
+echo.
+echo INFO: running cmake -DVisItBridgePlugin_SOURCE_DIR=%BUILD_DIR%\VisItLib
+
+cd %BUILD_DIR%\build_paraview
+
+SET CMAKE_OPTIONS=-DCMAKE_BUILD_TYPE:STRING=Release
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DVisItBridgePlugin_SOURCE_DIR=%BUILD_DIR:\=/%/VisItLib 
+cmake %CMAKE_OPTIONS%
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR: failed to run command: cmake %CMAKE_OPTIONS%
+    exit 1
+)
+
+echo.
+echo INFO: fix file: vtkVisItReaderlataSM.xml
+REM copy the patched CMake file... caution, the patch is provided with the archive
+rm -f vtkVisItReaderlataSM.xml
+
+cp %BUILD_DIR%\plugin_visit\vtkVisItReaderlataSM.xml.para vtkVisItReaderlataSM.xml
+
+REM create a doc folder
+mkdir %BUILD_DIR%\doc
+
+echo.
+echo "INFO: running command: make..."
+msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=Release /p:Platform=x64
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo INFO: copy the shared objects library to the installation folder.
+copy %BUILD_DIR%\libVisItReaderlata.dll %PRODUCT_INSTALL%\lib\libVisItReaderlata.dll
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR when copying libVisItReaderlata.dll
+    exit 2
+)
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
\ No newline at end of file
diff --git a/products/compil_scripts/lata.sh b/products/compil_scripts/lata.sh
new file mode 100755 (executable)
index 0000000..cdfbda3
--- /dev/null
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "lata" $VERSION
+echo "##########################################################################"
+
+# create the build directory
+rm -rf $BUILD_DIR && mkdir -p $BUILD_DIR
+cd $BUILD_DIR
+# copy everything from the source
+cp -r $SOURCE_DIR/* .
+
+# LATA source directory
+LATA_SRC_DIR=$BUILD_DIR/src
+
+# LATA binary directory
+LATA_BIN_DIR=$BUILD_DIR/bin
+
+# build folder
+mkdir -p $BUILD_DIR/plugin_visit/build_paraview
+
+# copy the patched CMake file... caution, the patch is provided with the archive
+cp $BUILD_DIR/plugin_visit/CMakeLists.txt.para $BUILD_DIR/plugin_visit/build_paraview/CMakeLists.txt
+
+cd $BUILD_DIR/plugin_visit/build_paraview
+
+# add required symbolic links
+ln -s $BUILD_DIR/plugin_visit/src/avtlataFileFormat.* .
+
+for i in $LATA_SRC_DIR/commun_triou/*.cpp $LATA_SRC_DIR/triou_compat/*.cpp
+do
+    ln -s $i `basename $i .cpp`.C
+done
+
+for i in $LATA_SRC_DIR/commun_triou/*.h $LATA_SRC_DIR/triou_compat/*.h
+do
+    ln -s $i `basename $i`
+done
+
+# define the VISITLIBPATH variable
+VISITLIBPATH=$BUILD_DIR/VisItLib
+
+echo 
+echo "INFO: running cmake -DVisItBridgePlugin_SOURCE_DIR=$BUILD_DIR/VisItLib"
+
+cd $BUILD_DIR/build_paraview
+cmake -DVisItBridgePlugin_SOURCE_DIR=$BUILD_DIR/VisItLib 
+if [ $? -ne 0 ]
+then
+    echo "ERROR: failed to run command: cmake -DVisItBridgePlugin_SOURCE_DIR=$BUILD_DIR/VisItLib"
+    exit 1
+fi
+
+echo
+echo "INFO: fix vtkVisItReaderlataSM.xml"
+sed '5a\     <Hints>\n        <ReaderFactory extensions="lata"\n            file_description="LATA Files">\n        </ReaderFactory>\n     </Hints> ' vtkVisItReaderlataSM.xml > tmp.txt
+mv tmp.txt vtkVisItReaderlataSM.xml
+
+# create a doc folder
+mkdir -p doc
+
+echo
+echo "INFO: running command: make..."
+make
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "INFO: copy the shared objects library to the installation folder"
+mkdir -p ${PRODUCT_INSTALL}/lib
+cp libVisItReaderlata.so ${PRODUCT_INSTALL}/lib
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/libjpeg.bat b/products/compil_scripts/libjpeg.bat
new file mode 100644 (file)
index 0000000..cf51cf9
--- /dev/null
@@ -0,0 +1,67 @@
+@echo off
+
+echo ##########################################################################
+echo libjpeg %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+SET MSBUILDDISABLENODEREUSE=1
+cd %BUILD_DIR%
+robocopy %SOURCE_DIR% %BUILD_DIR% /E /NP /NFL /NDL /NS /NC
+if NOT %ERRORLEVEL% == 1 (
+    echo ERROR when copying source files
+    exit 1
+)
+
+REM Upgrade to current version of MSVC
+echo.
+echo *** devenv %BUILD_DIR%\jpeg.sln /upgrade
+devenv %BUILD_DIR%\jpeg.sln /upgrade
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on devenv
+    exit 1
+)
+
+REM Build LIB
+echo.
+echo *** msbuild %BUILD_DIR%\jpeg.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 
+msbuild %BUILD_DIR%\jpeg.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64 
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild
+    exit 2
+)
+
+REM Build DLL
+echo.
+echo *** msbuild %BUILD_DIR%\jpeg.sln /t:build /p:Configuration=DLL;Platform=x64 
+msbuild %BUILD_DIR%\jpeg.sln /t:build /p:Configuration=DLL;Platform=x64 
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild
+    exit 2
+)
+
+echo.
+echo *** COPY jpeg LIB to %PRODUCT_INSTALL%
+cp %BUILD_DIR%\x64\%PRODUCT_BUILD_TYPE%\jpeg.lib %PRODUCT_INSTALL%\bin\jpeg.lib 
+cp %BUILD_DIR%\x64\DLL\jpeg.dll %PRODUCT_INSTALL%\bin\jpeg.dll 
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/libpng.bat b/products/compil_scripts/libpng.bat
new file mode 100755 (executable)
index 0000000..2d254ee
--- /dev/null
@@ -0,0 +1,84 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo libpng %VERSION%\r
+echo ##########################################################################\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+REM current built by Opencascade. move to the commented section below once agreed.\r
+SET PRODUCT_BUILD_TYPE=Release\r
+REM TODO: NGH: not Tested yet\r
+REM if %SAT_DEBUG% == 1 (\r
+REM   set PRODUCT_BUILD_TYPE=Debug\r
+REM )\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+xcopy include %PRODUCT_INSTALL%\include /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy include\r
+    exit 1\r
+)\r
+\r
+xcopy bin %PRODUCT_INSTALL%\bin /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy bin\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo ########## END\r
+\r
+REM if exist "%PRODUCT_INSTALL%" rmdir /Q /S "%PRODUCT_INSTALL%"\r
+REM mkdir %PRODUCT_INSTALL%\r
+\r
+REM set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%\r
+REM if defined CMAKE_GENERATOR (\r
+    REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%\r
+REM ) else (\r
+    REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"\r
+REM )\r
+\r
+REM set MSBUILDDISABLENODEREUSE=1\r
+\r
+REM cd %BUILD_DIR%\r
+\r
+REM echo.\r
+REM echo --------------------------------------------------------------------------\r
+REM echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS%\r
+REM echo --------------------------------------------------------------------------\r
+\r
+REM %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+REM if NOT %ERRORLEVEL% == 0 (\r
+    REM echo "ERROR on cmake"\r
+    REM exit 1\r
+REM )\r
+\r
+REM echo.\r
+REM echo --------------------------------------------------------------------------\r
+REM echo *** cmake --build . --config Release --target INSTALL\r
+REM echo --------------------------------------------------------------------------\r
+\r
+REM %CMAKE_ROOT%\bin\cmake --build . --config Release --target INSTALL\r
+REM if NOT %ERRORLEVEL% == 0 (\r
+    REM echo "ERROR on cmake build"\r
+    REM exit 2\r
+REM )\r
+\r
+REM cp %PRODUCT_INSTALL%\lib\libpng15.lib %PRODUCT_INSTALL%\lib\libpng.lib\r
+REM if NOT %ERRORLEVEL% == 0 (\r
+    REM echo "ERROR on copy libpng15.lib"\r
+    REM exit 3\r
+REM )\r
+\r
+REM taskkill /F /IM "mspdbsrv.exe"\r
+\r
+REM echo.\r
+REM echo ########## END\r
diff --git a/products/compil_scripts/libpng.sh b/products/compil_scripts/libpng.sh
new file mode 100755 (executable)
index 0000000..7cf3358
--- /dev/null
@@ -0,0 +1 @@
+# Utile pour SAT5
\ No newline at end of file
diff --git a/products/compil_scripts/libxml2.bat b/products/compil_scripts/libxml2.bat
new file mode 100755 (executable)
index 0000000..75dab19
--- /dev/null
@@ -0,0 +1,61 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo libxml2 %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+if NOT exist "%PRODUCT_INSTALL%"\include mkdir %PRODUCT_INSTALL%\include\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+SET ROOT_DIR=%CD%\r
+\r
+cd %ROOT_DIR%\win32\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** cscript configure.js compiler=msvc prefix=%PRODUCT_INSTALL% iconv=no\r
+echo --------------------------------------------------------------------------\r
+\r
+cscript configure.js compiler=msvc prefix=%PRODUCT_INSTALL% iconv=no\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on configure\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** nmake /f Makefile.msvc\r
+echo --------------------------------------------------------------------------\r
+\r
+nmake /f Makefile.msvc\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on nmake\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** nmake install /f Makefile.msvc\r
+echo --------------------------------------------------------------------------\r
+\r
+nmake install /f Makefile.msvc\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on nmake install\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** Post-installation\r
+echo --------------------------------------------------------------------------\r
+\r
+move %PRODUCT_INSTALL%\include\libxml2\libxml %PRODUCT_INSTALL%\include\libxml\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/libxml2.sh b/products/compil_scripts/libxml2.sh
new file mode 100755 (executable)
index 0000000..0d4e98f
--- /dev/null
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "libxml2" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+echo
+echo "*** configure"
+#$SOURCE_DIR/configure --with-python=${PYTHON_ROOT_DIR} --prefix=$PRODUCT_INSTALL
+./configure --with-python=${PYTHON_ROOT_DIR} --prefix=$PRODUCT_INSTALL LDFLAGS=-L${PYTHON_ROOT_DIR}/lib
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+echo ${LD_LIBRARY_PATH}
+make -d $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+#CNC 08/06/18 : this part of script is maybe obsolete?
+# OP 04/04/2018 Not useful
+#cd python
+#echo
+#echo "*** build python"
+#CFLAGS=-I${PWD}/include ${PYTHON_ROOT_DIR}/bin/python ./setup.py build
+#if [ $? -ne 0 ]
+#then
+#    echo "ERROR on python build"
+#    exit 4
+#fi
+#
+#echo
+#echo "*** install python"
+#CFLAGS=-I${PWD}/include ${PYTHON_ROOT_DIR}/bin/python ./setup.py install
+#if [ $? -ne 0 ]
+#then
+#    echo "ERROR on python install"
+#    exit 5
+#fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/libxml2_2_9_2.sh b/products/compil_scripts/libxml2_2_9_2.sh
new file mode 100755 (executable)
index 0000000..0be8024
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "libxml2" $VERSION
+echo "##########################################################################"
+
+
+
+export LDFLAGS=-L$PYTHON_ROOT_DIR/lib
+
+echo
+echo "*** autogen"
+$SOURCE_DIR/autogen.sh
+
+echo
+echo "*** configure"
+$SOURCE_DIR/configure --with-python=${PYTHON_ROOT_DIR} --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+#if [[ $DIST_NAME == "MG" ]]
+#then
+#    export PYTHON_LIBS="-L${PYTHON_ROOT_DIR}/lib"
+#fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make -d $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "*** install python"
+PWD = `pwd`
+cd python
+CFLAGS=-I${PWD}/include ${PYTHON_ROOT_DIR}/bin/python setup.py build
+CFLAGS=-I${PWD}/include ${PYTHON_ROOT_DIR}/bin/python setup.py install
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/llvm.sh b/products/compil_scripts/llvm.sh
new file mode 100755 (executable)
index 0000000..59c8ddd
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "llvm" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+echo
+echo "*** configure"
+./configure --enable-shared --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make -j8 $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/markupsafe.bat b/products/compil_scripts/markupsafe.bat
new file mode 100755 (executable)
index 0000000..93b0c91
--- /dev/null
@@ -0,0 +1,43 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo markupsafe %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\site-packages\r
+if NOT exist "%dir_lib%" mkdir %dir_lib%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/markupsafe.sh b/products/compil_scripts/markupsafe.sh
new file mode 100755 (executable)
index 0000000..964589f
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "markupsafe" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/matplotlib-2.0.2.sh b/products/compil_scripts/matplotlib-2.0.2.sh
new file mode 100755 (executable)
index 0000000..4f4a307
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "matplotlib" $VERSION
+echo "##########################################################################"
+
+rm -rf $PRODUCT_INSTALL
+mkdir -p $PRODUCT_INSTALL
+echo
+echo "*** setup.py"
+
+cp -r $SOURCE_DIR/* .
+
+# Making a directory that will be used in install
+BUILD_DIR=`pwd`
+cd $PRODUCT_INSTALL
+mkdir -p lib/python${PYTHON_VERSION}/site-packages
+cd $BUILD_DIR
+# Hack PYTHONPATH in order to make 'setup.py install' believe that PRODUCT_INSTALL is in PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:$PYTHONPATH
+
+
+echo "*** setup.py BUILD"
+
+python setup.py build
+
+echo "*** setup.py INSTALL"
+
+python setup.py install --prefix=${PRODUCT_INSTALL}
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/matplotlib.bat b/products/compil_scripts/matplotlib.bat
new file mode 100755 (executable)
index 0000000..030534a
--- /dev/null
@@ -0,0 +1,44 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo matplotlib %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages\r
+if NOT exist "%dir_lib%" mkdir %dir_lib%\r
+\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo PYTHONPATH=%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/matplotlib.sh b/products/compil_scripts/matplotlib.sh
new file mode 100755 (executable)
index 0000000..3b7720c
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "matplotlib" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/med.sh b/products/compil_scripts/med.sh
new file mode 100755 (executable)
index 0000000..0481354
--- /dev/null
@@ -0,0 +1,71 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "med" $VERSION
+echo "##########################################################################"
+
+
+
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS'CFLAGS=-m64 CXXFLAGS=-m64' 
+# OP 06/02/2017
+# Putting option enable-python=no 
+# Reason : compilation failure of python interface modules on FD24 (generated by swig in medfile)
+# CEA decision 13/02/2017 : deactivation of the compilation of python interface modules because no need python interface
+CONFIGURE_FLAGS=$CONFIGURE_FLAGS' --enable-python=no'
+
+if [ -n "$SAT_HPC" ]
+then
+    CONFIGURE_FLAGS=$CONFIGURE_FLAGS' --enable-parallel'
+else
+    # CNC 24/01/2017
+    # the line "export F77=gfortran" is commented, as we think it is not useful.
+    # at least it should'n.
+    # If it happens to be necessary, we will correct automake procedure.
+    #
+    # SRE 27/01/2017
+    # In fact this line is necessary because when the g77 compiler exists on the machine,
+    # it is found before gfortran and it makes the compilation fail.
+    # A mail has been sent to Eric Fayolle to fix this bug.
+    # En attendant, on remet la ligne.
+    export F77=gfortran
+fi
+
+if [ -n "$SALOME_USE_64BIT_IDS" ]
+then
+    echo "WARNING: user requested 64 bits encoding for integers..."
+    export FFLAGS=-fdefault-integer-8
+    export FFLAGS=$FFLAGS' -g -O2 -ffixed-line-length-none'
+    CONFIGURE_FLAGS=$CONFIGURE_FLAGS' --with-med_int=long'
+else
+    FFLAGS="-g -O2 -ffixed-line-length-none"
+fi
+
+echo
+echo "*** configure"
+$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL FFLAGS="${FFLAGS}" $CONFIGURE_FLAGS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/medCMake.bat b/products/compil_scripts/medCMake.bat
new file mode 100755 (executable)
index 0000000..4338f96
--- /dev/null
@@ -0,0 +1,79 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo med %VERSION%\r
+echo ##########################################################################\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+SET PRODUCT_BUILD_TYPE=Release\r
+REM TODO: NGH: not Tested yet\r
+REM if %SAT_DEBUG% == 1 (\r
+REM   set PRODUCT_BUILD_TYPE=Debug\r
+REM )\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+SET CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_BUILD_STATIC_LIBS:BOOL=OFF\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_BUILD_SHARED_LIBS:BOOL=ON\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DHDF5_ROOT_DIR:STRING=%HDF5_ROOT_DIR%\r
+\r
+if DEFINED SAT_HPC (\r
+    SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_USE_MPI:BOOL=ON\r
+) else (\r
+       SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DMEDFILE_USE_MPI:BOOL=OFF\r
+)\r
+\r
+if defined CMAKE_GENERATOR (\r
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%\r
+) else (\r
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"\r
+)\r
+\r
+cd %BUILD_DIR%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+echo --------------------------------------------------------------------------\r
+\r
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on CMake\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj\r
+echo --------------------------------------------------------------------------\r
+\r
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE%  /p:Platform=x64 ALL_BUILD.vcxproj\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild ALL_BUILD.vcxproj\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj\r
+echo --------------------------------------------------------------------------\r
+\r
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild INSTALL.vcxproj\r
+    exit 3\r
+)\r
+\r
+taskkill /F /IM "mspdbsrv.exe"\r
+\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/medCMake.sh b/products/compil_scripts/medCMake.sh
new file mode 100755 (executable)
index 0000000..b682bf8
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "med" $VERSION
+echo "##########################################################################"
+
+
+
+CMAKE_OPTIONS=""
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDFILE_BUILD_STATIC_LIBS:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDFILE_BUILD_SHARED_LIBS:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DHDF5_ROOT_DIR:STRING=${HDF5_ROOT_DIR}"
+
+if [ -n "$SAT_HPC" ]
+then
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDFILE_USE_MPI:BOOL=ON"
+else
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DMEDFILE_USE_MPI:BOOL=OFF"
+fi
+
+# OP 20/04/2017 TEST pour overwrite compilateur Fortran sur CO6 avec cmake
+preCMake=""
+lsb_release -a > /dev/null
+if [ $? -eq 0 ]
+then
+# commande connue donc on peut l'utiliser pour recuperer l'OS
+    OSDesc=`lsb_release -a | grep -i description`
+    COFound=`echo $OSDesc | grep CentOS`
+    R6Found=`echo $OSDesc | grep '6\.'`
+    if [ -n "$COFound" -a -n "$R6Found" ]
+    then
+        #echo "Compilation on CentOS 6 !!!"
+        preCMake="FC=`which gfortran` F77=`which gfortran`"
+    fi
+fi
+
+echo "*** cmake" $CMAKE_OPTIONS
+#cmake $CMAKE_OPTIONS $SOURCE_DIR
+#echo "$preCMake cmake $CMAKE_OPTIONS $SOURCE_DIR"
+eval $preCMake cmake $CMAKE_OPTIONS $SOURCE_DIR
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on CMake"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/mesa.bat b/products/compil_scripts/mesa.bat
new file mode 100644 (file)
index 0000000..436339d
--- /dev/null
@@ -0,0 +1,21 @@
+@echo off
+
+echo ##########################################################################
+echo Mesa %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+xcopy * %PRODUCT_INSTALL% /E /I /Q
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy
+    exit 1
+)
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/mesa.sh b/products/compil_scripts/mesa.sh
new file mode 100755 (executable)
index 0000000..a5668d6
--- /dev/null
@@ -0,0 +1,93 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "mesa" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+autoreconf -fi
+
+cd $BUILD_DIR
+
+echo
+echo "*** configure"
+
+function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
+
+if version_ge $VERSION "19"; then
+    $SOURCE_DIR/configure                 \
+    --prefix=$PRODUCT_INSTALL             \
+    --enable-opengl --disable-gles1 --disable-gles2 \
+    --disable-va --disable-xvmc --disable-vdpau \
+    --enable-shared-glapi \
+    --disable-texture-float \
+    --enable-llvm --disable-llvm-shared-libs \
+    --with-llvm-prefix=$LLVM_ROOT_DIR                 \
+    --with-gallium-drivers=swrast \
+    --disable-dri --with-dri-drivers= \
+    --disable-egl --with-platforms=x11 --disable-gbm \
+    --enable-glx=gallium-xlib \
+    --disable-osmesa --enable-gallium-osmesa \
+    --enable-autotools
+elif version_ge $VERSION "17"; then
+    $SOURCE_DIR/configure                 \
+    --prefix=$PRODUCT_INSTALL             \
+    --enable-opengl --disable-gles1 --disable-gles2 \
+    --disable-va --disable-xvmc --disable-vdpau \
+    --enable-shared-glapi \
+    --disable-texture-float \
+    --enable-gallium-llvm --enable-llvm-shared-libs \
+    --with-llvm-prefix=$LLVM_ROOT_DIR                 \
+    --with-gallium-drivers=swrast \
+    --disable-dri --with-dri-drivers= \
+    --disable-egl --with-platforms=x11 --disable-gbm \
+    --enable-glx=gallium-xlib \
+    --disable-osmesa --enable-gallium-osmesa
+
+else
+    $SOURCE_DIR/configure CXXFLAGS="-O2 -g -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \
+                          CFLAGS="-O2 -g -DDEFAULT_SOFTWARE_DEPTH_BITS=31" \
+                          --prefix=$PRODUCT_INSTALL             \
+                          --enable-opengl --disable-gles1 --disable-gles2   \
+                          --disable-va --disable-xvmc --disable-vdpau       \
+                          --enable-shared-glapi                             \
+                          --disable-texture-float                           \
+                          --enable-gallium-llvm --enable-llvm-shared-libs   \
+                          --with-llvm-prefix=$LLVM_ROOT_DIR                 \
+                          --with-gallium-drivers=swrast,swr                 \
+                          --disable-dri --with-dri-drivers=                 \
+                          --disable-egl --with-egl-platforms= --disable-gbm \
+                          --enable-glx=gallium-xlib                         \
+                          --disable-osmesa --enable-gallium-osmesa \
+                          PYTHON2=${PYTHON_ROOT_DIR}/bin/python
+fi
+    
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make -j8 $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/metis-5.1.0.bat b/products/compil_scripts/metis-5.1.0.bat
new file mode 100755 (executable)
index 0000000..aef0223
--- /dev/null
@@ -0,0 +1,92 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Metis %VERSION%\r
+echo ##########################################################################\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+SET PRODUCT_BUILD_TYPE=Release\r
+REM TODO: NGH: not Tested yet\r
+REM if %SAT_DEBUG% == 1 (\r
+REM   set PRODUCT_BUILD_TYPE=Debug\r
+REM )\r
+\r
+REM ensure that the installation directory does exist\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin\r
+if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib\r
+if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+cd %BUILD_DIR%\r
+\r
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"\r
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%\r
+\r
+set MSBUILDDISABLENODEREUSE=1\r
+\r
+echo.\r
+echo *********************************************************************\r
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+echo *********************************************************************\r
+echo.\r
+\r
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on cmake"\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo *********************************************************************\r
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj\r
+echo *********************************************************************\r
+echo.\r
+\r
+\r
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild ALL_BUILD.vcxproj\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo *********************************************************************\r
+echo *** installation...\r
+echo *********************************************************************\r
+echo.\r
+\r
+xcopy /y /e /q programs\%PRODUCT_BUILD_TYPE% %PRODUCT_INSTALL%\bin\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR when copying binaries\r
+    exit 3\r
+)\r
+\r
+xcopy /y /e /q libmetis\%PRODUCT_BUILD_TYPE% %PRODUCT_INSTALL%\lib\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR when copying lib\r
+    exit 4\r
+)\r
+\r
+xcopy /y /e /q include %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR when copying include\r
+    exit 5\r
+)\r
+\r
+copy %SOURCE_DIR%\include\metis.h %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR when copying include\r
+    exit 6\r
+)\r
+\r
+taskkill /F /IM "mspdbsrv.exe"\r
+\r
+echo.\r
+echo ########## END\r
+\r
diff --git a/products/compil_scripts/metis-5.1.0.sh b/products/compil_scripts/metis-5.1.0.sh
new file mode 100755 (executable)
index 0000000..9c28087
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Metis" $VERSION
+echo "##########################################################################"
+
+
+mkdir -p $PRODUCT_INSTALL
+
+cd $SOURCE_DIR
+
+echo
+echo "*** make config"
+make config prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make config"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/metis.sh b/products/compil_scripts/metis.sh
new file mode 100755 (executable)
index 0000000..ec86720
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Metis" $VERSION
+echo "##########################################################################"
+
+
+mkdir -p $PRODUCT_INSTALL
+
+cp -r $SOURCE_DIR/* .
+
+echo
+echo "*** apply sed for 64bits platforms"
+sed -e 's|COPTIONS =|& -fPIC|g' Makefile.in > Makefile.in_new
+cp Makefile.in_new Makefile.in
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** copy build to install"
+cp -ar * ${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on install"
+    exit 3
+fi
+
+echo
+echo "*** Modification of access rights"
+chmod -R g+rwX,o+rX ${PRODUCT_INSTALL}
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/metis_5_0_2.sh b/products/compil_scripts/metis_5_0_2.sh
new file mode 100755 (executable)
index 0000000..9c28087
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Metis" $VERSION
+echo "##########################################################################"
+
+
+mkdir -p $PRODUCT_INSTALL
+
+cd $SOURCE_DIR
+
+echo
+echo "*** make config"
+make config prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make config"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/msvc.bat b/products/compil_scripts/msvc.bat
new file mode 100644 (file)
index 0000000..35a08f9
--- /dev/null
@@ -0,0 +1,21 @@
+@echo off
+
+echo ##########################################################################
+echo msvc %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+xcopy *.dll %PRODUCT_INSTALL%\bin /E /I /Q /Y
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy
+    exit 1
+)
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/netgen.bat b/products/compil_scripts/netgen.bat
new file mode 100644 (file)
index 0000000..b022dba
--- /dev/null
@@ -0,0 +1,73 @@
+@echo off
+
+echo ##########################################################################
+echo NETGEN %VERSION%
+echo ##########################################################################
+
+dos2unix -q %SOURCE_DIR%/libsrc/occ/*
+dos2unix -q %SOURCE_DIR%/libsrc/nglib/*
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+if defined CMAKE_GENERATOR (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%
+) else (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+)
+set MSBUILDDISABLENODEREUSE=1
+
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DZLIB_ROOT_DIR=%ZLIB_DIR%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCASROOT=%CASROOT%
+
+cd %BUILD_DIR%
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+echo --------------------------------------------------------------------------
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on cmake
+    exit 1
+)
+
+echo.
+echo *********************************************************************
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release ALL_BUILD.vcxproj"
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation... msbuild %MAKE_OPTIONS% /p:Configuration=Release INSTALL.vcxproj
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+REM move DLL to bin, in order to reduce the PATH length..
+MOVE /Y %PRODUCT_INSTALL%\lib\nglib.dll  %PRODUCT_INSTALL%\bin\nglib.dll
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR could not move DLL to BIN directory...
+    exit 4
+)
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/netgen.sh b/products/compil_scripts/netgen.sh
new file mode 100755 (executable)
index 0000000..f2ab5d9
--- /dev/null
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "netgen" $VERSION
+echo "##########################################################################"
+
+
+
+cp -r $SOURCE_DIR/* .
+
+echo
+echo "*** configure"
+BFLAG="-m64"
+OLEVEL="-O2"
+echo ./configure --prefix=${PRODUCT_INSTALL} \
+    --with-occ=${CASROOT} \
+    --with-tcl=${TCLHOME}/lib \
+    --with-tk=${TCLHOME}/lib \
+    --with-togl=${TCLHOME}/lib \
+    LDFLAGS="-L${TCLHOME}/lib" \
+    CPPFLAGS="-I${TCLHOME}/include" \
+    CXXFLAGS="${OLEVEL} ${BFLAG}"
+./configure --prefix=${PRODUCT_INSTALL} \
+    --with-occ=${CASROOT} \
+    --with-tcl=${TCLHOME}/lib \
+    --with-tk=${TCLHOME}/lib \
+    --with-togl=${TCLHOME} \
+    LDFLAGS="-L${TCLHOME}/lib" \
+    CPPFLAGS="-I${TCLHOME}/include" \
+    CXXFLAGS="${OLEVEL} ${BFLAG}"
+if [ $? -ne 0 ]
+then
+    echo "error on configure"
+    exit 1
+fi
+
+echo
+echo "*** compile"
+make
+if [ $? -ne 0 ]
+then
+    echo "error on make"
+    exit 2
+fi
+
+echo
+echo "*** install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "error on make install"
+    exit 3
+fi
+
+echo
+echo "*** copy headers"
+for directory in general gprim linalg meshing ; do
+    cp -vf ${PRODUCT_BUILD}/libsrc/${directory}/*.hpp ${PRODUCT_INSTALL}/include
+done
+cp -vf ${PRODUCT_BUILD}/libsrc/include/mystdlib.h ${PRODUCT_BUILD}/libsrc/include/mydefs.hpp ${PRODUCT_INSTALL}/include
+cp -vf ${PRODUCT_BUILD}/libsrc/occ/occ*.hpp ${PRODUCT_INSTALL}/include
+
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/netgen_5_3_1.bat b/products/compil_scripts/netgen_5_3_1.bat
new file mode 100755 (executable)
index 0000000..818c73e
--- /dev/null
@@ -0,0 +1,157 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo NETGEN %VERSION%\r
+echo ##########################################################################\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+SET PRODUCT_BUILD_TYPE=Release\r
+REM TODO: NGH: not Tested yet\r
+REM if %SAT_DEBUG% == 1 (\r
+REM   set PRODUCT_BUILD_TYPE=Debug\r
+REM )\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin\r
+if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib\r
+if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include\r
+if NOT exist "%PRODUCT_INSTALL%\cmake" mkdir %PRODUCT_INSTALL%\cmake\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+dos2unix -q %SOURCE_DIR%/libsrc/occ/*\r
+dos2unix -q %SOURCE_DIR%/libsrc/occ/*\r
+dos2unix -q %SOURCE_DIR%/libsrc/nglib/*\r
+\r
+set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%\r
+if defined CMAKE_GENERATOR (\r
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%\r
+) else (\r
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"\r
+)\r
+set MSBUILDDISABLENODEREUSE=1\r
+\r
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DZLIB_ROOT_DIR=%ZLIB_DIR%\r
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCASROOT=%CASROOT%\r
+\r
+cd %BUILD_DIR%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+echo --------------------------------------------------------------------------\r
+\r
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on cmake\r
+    exit 1\r
+)\r
+\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** %CMAKE_ROOT%\bin\cmake --build . --config %PRODUCT_BUILD_TYPE%\r
+echo --------------------------------------------------------------------------\r
+\r
+%CMAKE_ROOT%\bin\cmake --build . --config %PRODUCT_BUILD_TYPE%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on cmake build\r
+    exit 2\r
+)\r
+\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** Installation into %PRODUCT_INSTALL%\r
+echo --------------------------------------------------------------------------\r
+\r
+robocopy nglib\%PRODUCT_BUILD_TYPE% %PRODUCT_INSTALL%\bin "*.exe" /E /NP /NFL /NDL /NS /NC\r
+if NOT %ERRORLEVEL% == 1 (\r
+    echo ERROR on install executables\r
+    exit 3\r
+)\r
+\r
+robocopy nglib\%PRODUCT_BUILD_TYPE% %PRODUCT_INSTALL%\lib "*.lib" "*.dll" /E /NP /NFL /NDL /NS /NC\r
+if NOT %ERRORLEVEL% == 1 (\r
+    echo ERROR on install libraries\r
+    exit 4\r
+)\r
+\r
+xcopy /q /r /Y %SOURCE_DIR%\libsrc\meshing\*.h* %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on install meshing includes\r
+    exit 5\r
+)\r
+\r
+xcopy /q /r /Y %SOURCE_DIR%\libsrc\gprim\*.h* %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on install gprim includes\r
+    exit 6\r
+)\r
+\r
+xcopy /q /r /Y %SOURCE_DIR%\libsrc\general\*.h* %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on install general includes\r
+    exit 7\r
+)\r
+\r
+xcopy /q /r /Y %SOURCE_DIR%\libsrc\linalg\*.h* %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on install linalg includes\r
+    exit 8\r
+)\r
+\r
+xcopy /q /r /Y %SOURCE_DIR%\libsrc\occ\*.h* %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on install occ includes\r
+    exit 9\r
+)\r
+\r
+xcopy /q /r /Y %SOURCE_DIR%\libsrc\include\mydefs.hpp %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on install mydefs.hpp\r
+    exit 10\r
+)\r
+xcopy /q /r /Y %SOURCE_DIR%\libsrc\include\mystdlib.h %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on install mystdlib.h\r
+    exit 11\r
+)\r
+xcopy /q /r /Y %SOURCE_DIR%\libsrc\include\nginterface.h %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on install nginterface.h\r
+    exit 12\r
+)\r
+xcopy /q /r /Y %SOURCE_DIR%\libsrc\include\nginterface_V2.hpp %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on install nginterface_V2.hpp\r
+    exit 13\r
+)\r
+\r
+xcopy /q /r /Y %SOURCE_DIR%\nglib\nglib.h %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on install nglib.h\r
+    exit 14\r
+)\r
+\r
+xcopy /q /r /Y %SOURCE_DIR%\libsrc\include\stlgeom.hpp %PRODUCT_INSTALL%\include\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on install stlgeom\r
+    exit 15\r
+)\r
+\r
+robocopy %SOURCE_DIR%\cmake %PRODUCT_INSTALL%\cmake "*.cmake" /E /NP /NFL /NDL /NS /NC\r
+if NOT %ERRORLEVEL% == 1 (\r
+    echo ERROR on install cmake files\r
+    exit 16\r
+)\r
+taskkill /F /IM "mspdbsrv.exe"\r
+\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/netgen_5_3_1.sh b/products/compil_scripts/netgen_5_3_1.sh
new file mode 100755 (executable)
index 0000000..d2cc4d8
--- /dev/null
@@ -0,0 +1,119 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "netgen" $VERSION
+echo "##########################################################################"
+
+
+
+cp -r $SOURCE_DIR/* .
+
+echo
+echo "*** manual call of the aclocal, libtoolize, autoconf and automake in order to re-generate configure script and Makefiles"
+aclocal -I m4 
+if [ $? -ne 0 ]
+then
+    echo "error on manual call to aclocal"
+    exit 1
+fi
+libtoolize --force --copy --automake
+if [ $? -ne 0 ]
+then
+    echo "error on manual call to libtoolize"
+    exit 1
+fi
+autoconf
+if [ $? -ne 0 ]
+then
+    echo "error on manual call to autoconf"
+    exit 1
+fi
+automake --copy --gnu --add-missing
+if [ $? -ne 0 ]
+then
+    echo "error on manual call to automake"
+    exit 1
+fi
+
+# Variable for Multithreading
+export DISABLE_FPE=1
+export MMGT_REENTRANT=1
+export PATH=$CASROOT/inc:$CASROOT/include:$CASROOT/include/opencascade:${PATH}
+export LD_LIBRARY_PATH=$CASROOT/lib:$CASROOT/lin64/gcc/lib:${LD_LIBRARY_PATH}
+# Variable for 3D viewer
+export CSF_ShadersDirectory=$CASROOT/share/opencascade/resources/Shaders/
+# Variable for Foundation Classes :
+export CSF_UnitsLexicon=$CASROOT/share/opencascade/resources/UnitsAPI/Lexi_Expr.dat
+export CSF_UnitsDefinition=$CASROOT/share/opencascade/resources/UnitsAPI/Units.dat
+# Variable for DataExchange :
+export CSF_SHMessage=$CASROOT/share/opencascade/resources/SHMessage
+export CSF_XSMessage=$CASROOT/share/opencascade/resources/XSMessage
+# Variable for Font :
+#export CSF_MDTVFontDirectory=$CASROOT/src/FontMFT
+export CSF_MDTVTexturesDirectory=$CASROOT/share/opencascade/resources/Textures
+# library tcl/tk et tix
+export TCL_LIBRARY=${TCLHOME}
+export TK_LIBRARY=${TCLHOME}
+export TIX_LIBRARY=${TCLHOME}
+
+echo
+echo "*** configure"
+BFLAG="-m64"
+OLEVEL="-O2"
+
+if [ "${TCLHOME}" == '/usr' ]
+then
+    TCL_LIB_DIR=${TCLHOME}/lib64
+else
+    TCL_LIB_DIR=${TCLHOME}/lib
+fi
+echo ./configure --prefix=${PRODUCT_INSTALL} \
+    --with-occ=${CASROOT} \
+    --with-tcl=${TCL_LIB_DIR} \
+    --with-tk=${TCL_LIB_DIR} \
+    --disable-openmp \
+    --with-tclinclude=${TCLHOME}/include \
+    CXXFLAGS="-I${CASROOT}/include/opencascade ${OLEVEL} ${BFLAG} -std=c++0x"
+./configure --prefix=${PRODUCT_INSTALL} \
+    --with-occ=${CASROOT} \
+    --with-tcl=${TCL_LIB_DIR} \
+    --with-tk=${TCL_LIB_DIR} \
+    --disable-openmp \
+    --with-tclinclude=${TCLHOME}/include \
+    CXXFLAGS="-I${CASROOT}/include/opencascade ${OLEVEL} ${BFLAG} -std=c++0x" #-std=gnu++11" #-std=c++11 -std=c++0x"
+    
+if [ $? -ne 0 ]
+then
+    echo "error on configure"
+    exit 1
+fi
+
+echo
+echo "*** compile"
+make
+if [ $? -ne 0 ]
+then
+    echo "error on make"
+    exit 2
+fi
+
+echo
+echo "*** install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "error on make install"
+    exit 3
+fi
+
+echo
+echo "*** copy headers"
+for directory in general gprim linalg meshing ; do
+    cp -vf ${PRODUCT_BUILD}/libsrc/${directory}/*.h* ${PRODUCT_INSTALL}/include
+done
+cp -vf ${PRODUCT_BUILD}/libsrc/include/mystdlib.h ${PRODUCT_BUILD}/libsrc/include/mydefs.hpp ${PRODUCT_INSTALL}/include
+cp -vf ${PRODUCT_BUILD}/libsrc/occ/occgeom.hpp ${PRODUCT_BUILD}/libsrc/occ/occmeshsurf.hpp ${PRODUCT_INSTALL}/include
+cp -vf ${PRODUCT_BUILD}/libsrc/stlgeom/*.hpp ${PRODUCT_INSTALL}/include
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/netgen_CAS7.sh b/products/compil_scripts/netgen_CAS7.sh
new file mode 100755 (executable)
index 0000000..d960ddc
--- /dev/null
@@ -0,0 +1,97 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "netgen" $VERSION
+echo "##########################################################################"
+
+
+
+cp -r $SOURCE_DIR/* .
+
+# Variable for Multithreading
+export DISABLE_FPE=1
+export MMGT_REENTRANT=1
+export PATH=$CASROOT/inc:$CASROOT/include:$CASROOT/include/opencascade:${PATH}
+export LD_LIBRARY_PATH=$CASROOT/lib:$CASROOT/lin64/gcc/lib:${LD_LIBRARY_PATH}
+# Variable for 3D viewer
+export CSF_ShadersDirectory=$CASROOT/share/opencascade/resources/Shaders/
+# Variable for Foundation Classes :
+export CSF_UnitsLexicon=$CASROOT/share/opencascade/resources/UnitsAPI/Lexi_Expr.dat
+export CSF_UnitsDefinition=$CASROOT/share/opencascade/resources/UnitsAPI/Units.dat
+# Variable for DataExchange :
+export CSF_SHMessage=$CASROOT/share/opencascade/resources/SHMessage
+export CSF_XSMessage=$CASROOT/share/opencascade/resources/XSMessage
+# Variable for Font :
+#export CSF_MDTVFontDirectory=$CASROOT/src/FontMFT
+export CSF_MDTVTexturesDirectory=$CASROOT/share/opencascade/resources/Textures
+# library tcl/tk et tix
+export TCL_LIBRARY=${TCLHOME}
+export TK_LIBRARY=${TCLHOME}
+export TIX_LIBRARY=${TCLHOME}
+
+echo
+echo "*** configure"
+BFLAG="-m64"
+
+
+echo ./configure --prefix=${PRODUCT_INSTALL} \
+    --with-occ=${CASROOT} \
+    --with-tcl=${TCLHOME}/lib \
+    --with-tk=${TCLHOME}/lib \
+    --with-tclinclude=${TCLHOME}/include \
+    #--with-togl=${TCLHOME}/lib \
+    #LDFLAGS="-L${TCLHOME}/lib" \
+    #CPPFLAGS="-I${TCLHOME}/include" \
+    CXXFLAGS="${OLEVEL} ${BFLAG}"
+./configure --prefix=${PRODUCT_INSTALL} \
+    --with-occ=${CASROOT} \
+    --with-tcl=${TCLHOME}/lib \
+    --with-tk=${TCLHOME}/lib \
+    --with-tclinclude=${TCLHOME}/include \
+    CXXFLAGS="${OLEVEL} ${BFLAG} -std=c++11 -std=c++0x" #-std=gnu++11" #-std=c++11 -std=c++0x"
+    #--with-togl=${TCLHOME} \
+    #LDFLAGS="-L${TCLHOME}/lib" \
+    #CPPFLAGS="-I${TCLHOME}/include" \
+    
+if [ $? -ne 0 ]
+then
+    echo "error on configure"
+    exit 1
+fi
+
+sed -i -e "s/\/inc -D_OCC64/\/include\/opencascade -D_OCC64/g" ${PRODUCT_BUILD}/libsrc/occ/Makefile
+sed -i -e "s/\/inc -D_OCC64/\/include\/opencascade -D_OCC64/g" ${PRODUCT_BUILD}/libsrc/visualization/Makefile
+
+
+echo
+echo "*** compile"
+make
+if [ $? -ne 0 ]
+then
+    echo "error on make"
+    exit 2
+fi
+
+echo
+echo "*** install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "error on make install"
+    exit 3
+fi
+
+echo
+echo "*** copy headers"
+for directory in general gprim linalg meshing ; do
+    cp -vf ${PRODUCT_BUILD}/libsrc/${directory}/*.hpp ${PRODUCT_INSTALL}/include
+done
+cp -vf ${PRODUCT_BUILD}/libsrc/include/mystdlib.h ${PRODUCT_BUILD}/libsrc/include/mydefs.hpp ${PRODUCT_INSTALL}/include
+cp -vf ${PRODUCT_BUILD}/libsrc/occ/occ*.hpp ${PRODUCT_INSTALL}/include
+
+if [ -f ${PRODUCT_BUILD}/config.h ] ; then
+    cp -f ${PRODUCT_BUILD}/config.h ${PRODUCT_BUILD}/libsrc/occ/occmeshsurf.hpp ${PRODUCT_INSTALL}/include
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/nlopt.bat b/products/compil_scripts/nlopt.bat
new file mode 100644 (file)
index 0000000..927a421
--- /dev/null
@@ -0,0 +1,64 @@
+@echo off
+
+echo ##########################################################################
+echo nlopt %VERSION%
+echo ##########################################################################
+
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %BUILD_DIR%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=Release
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DNLOPT_MATLAB:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DNLOPT_OCTAVE:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DNLOPT_GUILE:BOOL=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DSWIG_EXECUTABLE=%SWIG_ROOT_DIR:\=/%/bin/swig.exe
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR:STRING="Visual Studio 15 2017 Win64"
+
+
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo *********************************************************************
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS%
+echo *********************************************************************
+echo.
+
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo *********************************************************************
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj"
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild gmsh.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation...
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=Release /p:Platform=x64 INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+
+echo.
+echo ########## END
\ No newline at end of file
diff --git a/products/compil_scripts/nlopt.sh b/products/compil_scripts/nlopt.sh
new file mode 100755 (executable)
index 0000000..955eb6e
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "nlopt" $VERSION
+echo "##########################################################################"
+
+
+#
+function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
+
+if version_ge $VERSION "2.4.2"; then
+    $SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL --enable-shared --with-python PYTHON=$(which python3) PYTHON_CONFIG=$(which python3-config) CFLAGS='-m64 -fPIC' CPPFLAGS='-m64 -fPIC'
+else
+    $SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL --enable-shared --without-octave
+fi
+echo   "*** configure --prefix=$PRODUCT_INSTALL $CONFIGURE_ARGUMENTS"
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/numpy-1.12.1.sh b/products/compil_scripts/numpy-1.12.1.sh
new file mode 100755 (executable)
index 0000000..c37277d
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "numpy" $VERSION
+echo "##########################################################################"
+
+
+mkdir -p $PRODUCT_INSTALL
+
+cd $SOURCE_DIR
+
+## editer customize.py Pour LApack : using Atlas, Pour Blas : Using gsl
+# OP 29/03/2018 We create a build configuration file to set
+#               information about lapack preprequisite
+echo "#" > site.cfg
+echo "# Build configuration for numpy" >> site.cfg
+echo "#" >> site.cfg
+echo >> site.cfg
+echo "# Section ALL to set global information for lapack dependency" >> site.cfg
+echo "[ALL]" >> site.cfg
+echo "libraries = lapack,blas,cblas,lapacke,tmglib" >> site.cfg
+echo "library_dirs = \$\{LAPACKHOME\}/lib" >> site.cfg
+echo "include_dirs = \$\{LAPACKHOME\}/include" >> site.cfg
+echo >> site.cfg
+
+echo
+echo "*** setup.py build"
+python setup.py build
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup build"
+    rm -f site.cfg
+    exit 1
+fi
+
+NUMPY_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+mkdir -p ${NUMPY_INSTALL}
+PYTHONPATH=${NUMPY_INSTALL}:${PYTHONPATH}
+
+echo
+echo "*** setup.py install"
+python setup.py install --prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup install"
+    rm -f site.cfg
+    exit 2
+fi
+
+rm -f site.cfg
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/numpy-1.15.1.sh b/products/compil_scripts/numpy-1.15.1.sh
new file mode 100755 (executable)
index 0000000..f70e0b0
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "numpy" $VERSION
+echo "##########################################################################"
+
+
+mkdir -p $PRODUCT_INSTALL
+
+cd $SOURCE_DIR
+
+## editer customize.py Pour LApack : using Atlas, Pour Blas : Using gsl
+# OP 29/03/2018 We create a build configuration file to set
+#               information about lapack preprequisite
+echo "#" > site.cfg
+echo "# Build configuration for numpy" >> site.cfg
+echo "#" >> site.cfg
+echo >> site.cfg
+echo "# Section ALL to set global information for lapack dependency" >> site.cfg
+echo "[ALL]" >> site.cfg
+echo "libraries = lapack,blas,cblas,lapacke,tmglib" >> site.cfg
+echo "library_dirs = \$\{LAPACKHOME\}/lib" >> site.cfg
+#echo "runtime_library_dirs = ${LAPACKHOME}/lib" >> site.cfg
+echo "include_dirs = \$\{LAPACKHOME\}/include" >> site.cfg
+#echo "extra_link_args = -lcblas" >> site.cfg
+echo >> site.cfg
+
+
+NUMPY_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+mkdir -p ${NUMPY_INSTALL}
+PYTHONPATH=${NUMPY_INSTALL}:${PYTHONPATH}
+
+echo
+echo "*** setup.py install"
+python setup.py install --prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup install"
+    rm -f site.cfg
+    exit 2
+fi
+
+rm -f site.cfg
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/numpy.bat b/products/compil_scripts/numpy.bat
new file mode 100755 (executable)
index 0000000..5dc527e
--- /dev/null
@@ -0,0 +1,59 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo numpy %VERSION%\r
+echo ##########################################################################\r
+\r
+REM install in python directly\r
+SET INSTALL_CENTRALLY=1\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set BLAS=None\r
+set ATLAS=None\r
+set LAPACK=None\r
+\r
+cd %SOURCE_DIR%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+set BUILD_OPT=\r
+if %SAT_DEBUG% == 1 (\r
+   set BUILD_OPT=--debug\r
+)\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build %BUILD_OPT%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+if %INSTALL_CENTRALLY% == 1 (\r
+    %PYTHON_ROOT_DIR%\python.exe setup.py install \r
+) else (\r
+    %PYTHON_ROOT_DIR%\python.exe setup.py install  --single-version-externally-managed --root=/ --prefix=%PRODUCT_INSTALL% --install-lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages\r
+)\r
+\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install \r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo Product %PRODUCT_NAME% version: %VERSION%> %PRODUCT_INSTALL%\README.txt\r
+echo Installation folder: %PYTHON_ROOT_DIR%>> %PRODUCT_INSTALL%\README.txt\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/numpy.sh b/products/compil_scripts/numpy.sh
new file mode 100755 (executable)
index 0000000..eb93088
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "numpy" $VERSION
+echo "##########################################################################"
+
+
+mkdir -p $PRODUCT_INSTALL
+
+cd $SOURCE_DIR
+
+## editer customize.py Pour LApack : using Atlas, Pour Blas : Using gsl
+# OP 29/03/2018 We create a build configuration file to set
+#               information about lapack preprequisite
+echo "#" > site.cfg
+echo "# Build configuration for numpy" >> site.cfg
+echo "#" >> site.cfg
+echo >> site.cfg
+echo "# Section ALL to set global information for lapack dependency" >> site.cfg
+echo "[ALL]" >> site.cfg
+echo "libraries = lapack,blas,cblas,lapacke,tmglib" >> site.cfg
+echo "library_dirs = \$\{LAPACKHOME\}/lib" >> site.cfg
+#echo "runtime_library_dirs = ${LAPACKHOME}/lib" >> site.cfg
+echo "include_dirs = \$\{LAPACKHOME\}/include" >> site.cfg
+#echo "extra_link_args = -lcblas" >> site.cfg
+echo >> site.cfg
+
+#echo
+#echo "*** setup.py build"
+#python setup.py build
+#if [ $? -ne 0 ]
+#then
+#    echo "ERROR on setup build"
+#    rm -f site.cfg
+#    exit 1
+#fi
+
+NUMPY_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+mkdir -p ${NUMPY_INSTALL}
+PYTHONPATH=${NUMPY_INSTALL}:${PYTHONPATH}
+
+echo
+echo "*** setup.py install"
+# OP TEST
+#python setup.py install --prefix=${PRODUCT_INSTALL}
+$PYTHONBIN setup.py install --prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup install"
+    rm -f site.cfg
+    exit 2
+fi
+
+rm -f site.cfg
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/omniNotify.sh b/products/compil_scripts/omniNotify.sh
new file mode 100755 (executable)
index 0000000..e8351af
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "omniNotify" $VERSION
+echo "##########################################################################"
+
+
+
+cp -r $SOURCE_DIR/* . 
+
+echo
+echo "*** configure"
+./configure --prefix=${OMNIORB_ROOT_DIR} PYTHON=${PYTHON_ROOT_DIR}/bin/python
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 3
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+mkdir -p $PRODUCT_INSTALL
+echo "omniNotify is installed into omni dir ${OMNIORB_ROOT_DIR}" > $PRODUCT_INSTALL/README
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/omniORB.bat b/products/compil_scripts/omniORB.bat
new file mode 100755 (executable)
index 0000000..8579b1c
--- /dev/null
@@ -0,0 +1,74 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo omniORB %VERSION%\r
+echo ##########################################################################\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+if NOT defined CYGWIN_ROOT_DIR (\r
+  echo ERROR: Please set the environment variable: CYGWIN_ROOT_DIR\r
+  exit 1\r
+) else (\r
+  echo INFO: Cygwin suite environment variable is set to: %CYGWIN_ROOT_DIR%\r
+)\r
+\r
+if exist "%BUILD_DIR%" rmdir /Q /S "%BUILD_DIR%"\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+xcopy * %BUILD_DIR% /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+  echo ERROR on xcopy\r
+  exit 2\r
+)\r
+\r
+REM select the correct platform\r
+set CONFIG_MK=%BUILD_DIR%\config\config.mk\r
+set CONFIG_REF=%BUILD_DIR%\config\config.mk.ref\r
+set CONFIG_DBG=%BUILD_DIR%\config\config.mk.dbg\r
+copy %CONFIG_MK% %CONFIG_REF%\r
+echo INFO: activating platform target: x86_win32_vs_15\r
+sed "s/#platform = x86_win32_vs_15/platform = x86_win32_vs_15/g" < %CONFIG_REF% >  %CONFIG_MK%\r
+if %SAT_DEBUG% == 1 (\r
+  copy %CONFIG_MK% %CONFIG_DBG%\r
+)\r
+if %SAT_DEBUG% == 1 (\r
+  sed "s/#BuildDebugBinary = 1/BuildDebugBinary = 1/g" < %CONFIG_DBG% >  %CONFIG_MK% \r
+)\r
+\r
+REM target our Python in the configuration file\r
+set PLATFORM_MK=%BUILD_DIR%\mk\platforms\x86_win32_vs_15.mk\r
+set PLATFORM_REF=%BUILD_DIR%\mk\platforms\x86_win32_vs_15.mk.ref\r
+copy %PLATFORM_MK% %PLATFORM_REF%\r
+\r
+set CYGWIN_PYTHON_ROOT_DIR=%PYTHON_ROOT_DIR:\=\/%\r
+set CYGWIN_PYTHON_ROOT_DIR=%CYGWIN_PYTHON_ROOT_DIR::=%\r
+echo Setting path to Python binary...\r
+sed "s/#PYTHON = \/cygdrive\/c\/Python36\/python/PYTHON = \/cygdrive\/%CYGWIN_PYTHON_ROOT_DIR%\/python/g" < %PLATFORM_REF% >  %PLATFORM_MK%\r
+\r
+cd %BUILD_DIR%\src\r
+echo INFO: compilation starts now...\r
+set PATH=%PATH%;%CYGWIN_ROOT_DIR%\bin;%PYTHON_ROOT_DIR%\r
+make export\r
+if NOT %ERRORLEVEL% == 0 (\r
+   echo ERROR on make export\r
+   exit 3\r
+)\r
+\r
+cd %BUILD_DIR%\r
+xcopy * %INSTALL_DIR% /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+   echo ERROR on xcopy\r
+   exit 4\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/omniORB.sh b/products/compil_scripts/omniORB.sh
new file mode 100755 (executable)
index 0000000..a9d941f
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "omniORB" $VERSION
+echo "##########################################################################"
+
+
+
+PYTHON_HOME=$PYTHONHOME
+
+echo
+echo "*** configure --disable-ipv6"
+$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL --disable-ipv6 
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+if [[ $VERSION == "4.1.6" ]]
+then
+    # fix headers
+    echo
+    echo "*** fix headers"
+    cd $PRODUCT_INSTALL/bin
+    sed -e "s%#\!.*python%#\!/usr/bin/env python%" omniidl > _omniidl
+    mv -f _omniidl omniidl
+    chmod a+x omniidl
+    sed -e "s%#\!.*python%#\!/usr/bin/env python%" omniidlrun.py > _omniidlrun.py
+    mv -f _omniidlrun.py omniidlrun.py
+    chmod a+x omniidlrun.py
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/omniORBpy.bat b/products/compil_scripts/omniORBpy.bat
new file mode 100755 (executable)
index 0000000..ab87ed1
--- /dev/null
@@ -0,0 +1,40 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo omniORBpy %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT defined CYGWIN_ROOT_DIR (\r
+  echo ERROR: Please set the environment variable: CYGWIN_ROOT_DIR\r
+  exit 2\r
+) else (\r
+  echo INFO: Cygwin suite environment variable is set to: %CYGWIN_ROOT_DIR%\r
+)\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+set OMNIORBPY_WORK_DIR=%OMNIORB_ROOT_DIR%\src\lib\omniORBpy\r
+cd %SOURCE_DIR%\r
+if exist "%OMNIORBPY_WORK_DIR%" rmdir /Q /S "%OMNIORBPY_WORK_DIR%"\r
+mkdir %OMNIORBPY_WORK_DIR%\r
+\r
+xcopy * %OMNIORBPY_WORK_DIR% /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+  echo ERROR on xcopy\r
+  exit 1\r
+)\r
+\r
+cd %OMNIORBPY_WORK_DIR%\r
+echo INFO: compilation starts now...\r
+set PATH=%PATH%;%CYGWIN_ROOT_DIR%\bin;%PYTHON_ROOT_DIR%\r
+make export\r
+if NOT %ERRORLEVEL% == 0 (\r
+   echo ERROR on make export\r
+   exit 2\r
+)\r
+\r
+echo.\r
+echo ########## END
\ No newline at end of file
diff --git a/products/compil_scripts/omniORBpy.sh b/products/compil_scripts/omniORBpy.sh
new file mode 100755 (executable)
index 0000000..be12bdc
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "omniORBpy" $VERSION
+echo "##########################################################################"
+
+echo
+echo "*** configure"
+$SOURCE_DIR/configure --prefix=${OMNIORB_ROOT_DIR}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+mkdir -p $PRODUCT_INSTALL
+echo "omniORBpy is installed into omni dir ${OMNIORB_ROOT_DIR}" > $PRODUCT_INSTALL/README
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/openblas.bat b/products/compil_scripts/openblas.bat
new file mode 100644 (file)
index 0000000..c3d92e4
--- /dev/null
@@ -0,0 +1,79 @@
+@echo off
+
+echo ##########################################################################
+echo Installing OpenBLAS %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+set GFORTRAN_EXE=%MINGW_ROOT_DIR%\bin\gfortran.exe
+
+echo.
+echo ************************************************
+echo *** Setting local path to %MINGW_ROOT_DIR%\bin
+echo ************************************************
+set path=%MINGW_ROOT_DIR%\bin;%path%
+set CMAKE_OPTIONS=%SOURCE_DIR%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE=%PRODUCT_BUILD_TYPE%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_SHARED_LIBS:BOOL=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_CXX_FLAGS=-fPIC
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_C_FLAGS=-fPIC
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DUSE_OPTIMIZED_BLAS=OFF
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCBLAS=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DLAPACKE=ON
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_SIZEOF_VOID_P=8
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_Fortran_COMPILER=%MINGW_ROOT_DIR:\=/%/bin/gfortran.exe
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_EXE_LINKER_FLAGS="-Wl,--allow-multiple-definition"
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_SH="CMAKE_SH-NOTFOUND"
+if defined CMAKE_GENERATOR (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%
+) else (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="MinGW Makefiles"
+)
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo *** cmake %CMAKE_OPTIONS}%
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+echo.
+echo *********************************************************************
+echo *** mingw32-make"
+echo *********************************************************************
+echo.
+
+mingw32-make
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation...
+echo *********************************************************************
+echo.
+mingw32-make install
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+
diff --git a/products/compil_scripts/opencv-3.2.0-with-ffmpeg.sh b/products/compil_scripts/opencv-3.2.0-with-ffmpeg.sh
new file mode 100755 (executable)
index 0000000..4e357ea
--- /dev/null
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "opencv" $VERSION
+echo "##########################################################################"
+
+CMAKE_OPTIONS=""
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_NEW_PYTHON_SUPPORT=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_EXAMPLES:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON3_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON3_NUMPY_INCLUDE_DIRS=${NUMPY_INCLUDE_DIR};${NUMPY_INCLUDE_DIR2}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_IPP:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_opencv_java:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR2=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_FFMPEG:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_LAPACK:BOOL=ON"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_CUDA:BOOL=OFF"
+# bos 19730
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_VTK:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_PRECOMPILED_HEADERS:BOOL=OFF"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS=-fPIC"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS=-fPIC"
+
+
+rm -rf $BUILD_DIR
+mkdir -p $BUILD_DIR
+cd $BUILD_DIR
+
+echo "*** cmake" $CMAKE_OPTIONS
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on CMake"
+    exit 2
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 3
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 4
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/opencv.bat b/products/compil_scripts/opencv.bat
new file mode 100755 (executable)
index 0000000..2559c0b
--- /dev/null
@@ -0,0 +1,71 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo opencv %VERSION%\r
+echo ##########################################################################\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+SET PRODUCT_BUILD_TYPE=Release\r
+REM TODO: NGH: not Tested yet\r
+REM if %SAT_DEBUG% == 1 (\r
+REM   set PRODUCT_BUILD_TYPE=Debug\r
+REM )\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+SET CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DWITH_CUDA:BOOL=OFF\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DWITH_EIGEN:BOOL=OFF\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DSTATIC_LIBRARY_FLAGS:STRING="/machine:x64"\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_EXECUTABLE=%PYTHON_ROOT_DIR:\=/%/python.exe\r
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_INCLUDE_DIR:STRING=%PYTHON_ROOT_DIR:\=/%/include\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DPYTHON_LIBRARY=%PYTHON_ROOT_DIR:\=/%/libs/python%PYTHON_VERSION:.=%.lib\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBUILD_opencv_java:STRING=OFF\r
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"\r
+\r
+cd %BUILD_DIR%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+echo --------------------------------------------------------------------------\r
+\r
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on CMake\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE%  /p:Platform=x64\r
+echo --------------------------------------------------------------------------\r
+\r
+msbuild %MAKE_OPTIONS% ALL_BUILD.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild ALL_BUILD.vcxproj\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE%  /p:Platform=x64\r
+echo --------------------------------------------------------------------------\r
+\r
+msbuild %MAKE_OPTIONS% INSTALL.vcxproj /p:Configuration=%PRODUCT_BUILD_TYPE%  /p:Platform=x64\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild INSTALL.vcxproj\r
+    exit 3\r
+)\r
+\r
+taskkill /F /IM "mspdbsrv.exe"\r
+\r
+echo.\r
+echo ########## END
\ No newline at end of file
diff --git a/products/compil_scripts/opencv.sh b/products/compil_scripts/opencv.sh
new file mode 100755 (executable)
index 0000000..3118d7a
--- /dev/null
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "opencv" $VERSION
+echo "##########################################################################"
+
+function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
+
+CMAKE_OPTIONS=""
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+
+if version_ge $VERSION "3."; then
+    echo "*** openCV version $VERSION >= 3."
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_NEW_PYTHON_SUPPORT=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_EXAMPLES:BOOL=ON"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON3_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON3_NUMPY_INCLUDE_DIRS=${NUMPY_INCLUDE_DIR};${NUMPY_INCLUDE_DIR2}"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_IPP:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_opencv_java:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIR2=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_FFMPEG:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_LAPACK:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_CUDA:BOOL=OFF"
+    # bos 19730
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_VTK:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DENABLE_PRECOMPILED_HEADERS:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_CXX_FLAGS=-fPIC"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_C_FLAGS=-fPIC"
+
+    # 
+else
+    echo "*** openCV version $VERSION < 3."
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_CUDA:BOOL=OFF"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DWITH_FFMPEG:BOOL=OFF"
+    # OP opencv on Ubuntu
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_INCLUDE_DIRS=${PYTHON_ROOT_DIR}/include/python${PYTHON_VERSION}"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DPYTHON_LIBRARY=${PYTHON_ROOT_DIR}/lib/libpython${PYTHON_VERSION}.so"
+    CMAKE_OPTIONS=$CMAKE_OPTIONS" -DBUILD_opencv_java=OFF"
+fi
+
+
+rm -rf $BUILD_DIR
+mkdir -p $BUILD_DIR
+cd $BUILD_DIR
+
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on CMake"
+    exit 2
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 3
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 4
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/openmpi.sh b/products/compil_scripts/openmpi.sh
new file mode 100755 (executable)
index 0000000..73fd89b
--- /dev/null
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "OpenMPI" $VERSION
+echo "##########################################################################"
+
+
+
+# Attention la variable $PYTHOSTARTUP pose problem -> unset.
+# Si erreur au make install -> environement "pollué"
+
+echo
+echo "*** configure"
+$SOURCE_DIR/configure --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/packaging.sh b/products/compil_scripts/packaging.sh
new file mode 100755 (executable)
index 0000000..0140262
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "packaging" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/perl.bat b/products/compil_scripts/perl.bat
new file mode 100644 (file)
index 0000000..67d84ca
--- /dev/null
@@ -0,0 +1,21 @@
+@echo off
+
+echo ##########################################################################
+echo Perl %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+xcopy * %PRODUCT_INSTALL% /E /I /Q
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy
+    exit 1
+)
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/petsc.sh b/products/compil_scripts/petsc.sh
new file mode 100755 (executable)
index 0000000..ccf99fe
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Petsc" $VERSION
+echo "##########################################################################"
+
+
+
+cp -r $SOURCE_DIR/* .
+
+echo
+echo "*** configure"
+./configure --prefix=$PRODUCT_INSTALL --with-mpi=0 --download-f2cblaslapack=https://www.mcs.anl.gov/petsc/mirror/externalpackages/f2cblaslapack-3.4.2.q4.tar.gz --download-slepc=https://slepc.upv.es/download/distrib/slepc-3.13.4.tar.gz
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+MAKE_OPTIONS="PETSC_DIR=${BUILD_DIR}"
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+MAKE_OPTIONS=$MAKE_OPTIONS" PETSC_ARCH=arch-linux-c-debug"
+
+echo
+echo "*** make install"
+make $MAKE_OPTIONS install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/pip.bat b/products/compil_scripts/pip.bat
new file mode 100644 (file)
index 0000000..01391a0
--- /dev/null
@@ -0,0 +1,20 @@
+@echo off
+
+echo ##########################################################################
+echo pip %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+
+cd %SOURCE_DIR%
+
+REM 
+python --version
+echo python get-pip.py --force-reinstall --no-setuptools --no-wheel  --no-index --find-links=%SOURCE_DIR%
+python get-pip.py --force-reinstall --no-setuptools --no-wheel  --no-index --find-links=%SOURCE_DIR%
+echo.
+echo ########## END
diff --git a/products/compil_scripts/pip_install.bat b/products/compil_scripts/pip_install.bat
new file mode 100644 (file)
index 0000000..07b06d3
--- /dev/null
@@ -0,0 +1,55 @@
+@echo off
+
+SET INSTALL_CENTRALLY=1
+REM retrieve the PRODUCT name...
+for %%i in (%PRODUCT_INSTALL%) do set "PRODUCT_NAME=%%~nxi"
+echo ##########################################################################
+echo *** Installing %PRODUCT_NAME% version: %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+set INSTALL_LIB=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages
+if NOT exist "%INSTALL_LIB%" mkdir %INSTALL_LIB%
+set PYTHONPATH=%INSTALL_LIB%;%PYTHONPATH%
+
+echo.
+echo ##########################################################################
+echo *** Launching "python.exe setup.py build"
+echo ##########################################################################
+
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on setup.py build
+    exit 1
+)
+
+echo.
+echo ##########################################################################
+echo *** Launching "python.exe setup.py install"
+echo ##########################################################################
+
+if %INSTALL_CENTRALLY% == 1 (
+    %PYTHON_ROOT_DIR%\python.exe setup.py install
+) else (
+    %PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%INSTALL_LIB% 
+)
+
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on setup.py install
+    exit 2
+)
+if %INSTALL_CENTRALLY% == 1 (
+    @echo off
+    @echo Product %PRODUCT_NAME% version: %VERSION%> %PRODUCT_INSTALL%\README.txt
+    @echo Installation folder: %PYTHON_ROOT_DIR%>> %PRODUCT_INSTALL%\README.txt
+)
+
+echo.
+echo ########## END
+
diff --git a/products/compil_scripts/pip_install.sh b/products/compil_scripts/pip_install.sh
new file mode 100755 (executable)
index 0000000..f0caa45
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+echo "##########################################################################"
+#echo "alabaster" $VERSION
+prdtName=`basename $PRODUCT_INSTALL`
+echo $prdtName $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build with $PYTHONBIN"
+$PYTHONBIN setup.py build
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build"
+    exit 2
+fi
+
+echo
+echo "*** install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/pip_install_whl.bat b/products/compil_scripts/pip_install_whl.bat
new file mode 100644 (file)
index 0000000..00bd85f
--- /dev/null
@@ -0,0 +1,42 @@
+@echo off
+
+set INSTALL_CENTRALLY=1
+for %%i in (%PRODUCT_INSTALL%) do set "PRODUCT_NAME=%%~nxi"
+
+echo ##########################################################################
+echo *** Installing %PRODUCT_NAME% version: %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+echo.
+set PRODUCT_WHL=
+FOR /F "delims=" %%i IN ('dir /s /b') DO (set PRODUCT_WHL=%%~ni%%~xi)
+
+echo.
+echo INFO: found file: %PRODUCT_WHL%
+
+if %INSTALL_CENTRALLY% == 1 (
+    echo INFO: running command: %PYTHON_ROOT_DIR%\python.exe -m pip  install --no-dependencies  %PRODUCT_WHL%
+    @echo off
+    @echo Product %PRODUCT_NAME% version: %VERSION%> %PRODUCT_INSTALL%\README.txt
+    @echo Installation folder: %PYTHON_ROOT_DIR%>> %PRODUCT_INSTALL%\README.txt
+    %PYTHON_ROOT_DIR%\python.exe -m pip install --no-dependencies  %PRODUCT_WHL%
+) else (
+    echo INFO: running command: %PYTHON_ROOT_DIR%\python.exe -m pip install  %PRODUCT_WHL% --prefix=%PRODUCT_INSTALL%
+    %PYTHON_ROOT_DIR%\python.exe -m pip install  --no-dependencies %PRODUCT_WHL% --prefix=%PRODUCT_INSTALL%
+)
+
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR pip install
+    exit 1
+)
+
+echo.
+echo ########## END
+
diff --git a/products/compil_scripts/planegcs.bat b/products/compil_scripts/planegcs.bat
new file mode 100644 (file)
index 0000000..4441e59
--- /dev/null
@@ -0,0 +1,82 @@
+@echo off
+
+echo ##########################################################################
+echo PLANEGCS %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=Release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=Debug
+REM )
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+set CMAKE_OPTIONS=
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_BUILD_TYPE:STRING=%PRODUCT_BUILD_TYPE%
+SET CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_INSTALL_PREFIX=%PRODUCT_INSTALL:\=/%
+
+REM Boost settings 
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT=%BOOST_ROOT_DIR:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_ROOT:PATH=%BOOST_ROOT_DIR:\=/%
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_ADDITIONAL_VERSIONS="1.67.0" "1.67"
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBOOST_INCLUDEDIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67
+set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DBoost_INCLUDE_DIR=%BOOST_ROOT_DIR:\=/%/include/boost-1_67
+
+if defined CMAKE_GENERATOR (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%
+) else (
+    set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"
+)
+
+set MSBUILDDISABLENODEREUSE=1
+
+echo.
+echo *********************************************************************
+echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS%
+echo *********************************************************************
+echo.
+
+cd %BUILD_DIR%
+%CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on cmake"
+    exit 1
+)
+
+echo.
+echo *********************************************************************
+echo *** msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj"
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 ALL_BUILD.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild ALL_BUILD.vcxproj
+    exit 2
+)
+
+echo.
+echo *********************************************************************
+echo *** installation...
+echo *********************************************************************
+echo.
+
+msbuild %MAKE_OPTIONS% /p:Configuration=%PRODUCT_BUILD_TYPE% /p:Platform=x64 INSTALL.vcxproj
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on msbuild INSTALL.vcxproj
+    exit 3
+)
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
+
diff --git a/products/compil_scripts/planegcs.sh b/products/compil_scripts/planegcs.sh
new file mode 100755 (executable)
index 0000000..58cc667
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "PLANEGCS" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+# Install dir
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX=$PRODUCT_INSTALL"
+
+echo
+echo "*** cmake " ${CMAKE_OPTIONS}
+cmake ${CMAKE_OPTIONS}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/pockets.sh b/products/compil_scripts/pockets.sh
new file mode 100755 (executable)
index 0000000..e16de65
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "pockets" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/pthreads.bat b/products/compil_scripts/pthreads.bat
new file mode 100755 (executable)
index 0000000..2cb43af
--- /dev/null
@@ -0,0 +1,89 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo PThreads %VERSION%\r
+echo ##########################################################################\r
+\r
+IF NOT DEFINED SAT_DEBUG (\r
+  SET SAT_DEBUG=0\r
+)\r
+\r
+SET PRODUCT_BUILD_TYPE=Release\r
+REM TODO: NGH: not Tested yet\r
+REM if %SAT_DEBUG% == 1 (\r
+REM   set PRODUCT_BUILD_TYPE=Debug\r
+REM )\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+if NOT exist "%PRODUCT_INSTALL%\lib" mkdir %PRODUCT_INSTALL%\lib\r
+if NOT exist "%PRODUCT_INSTALL%\include" mkdir %PRODUCT_INSTALL%\include\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+robocopy %SOURCE_DIR% %BUILD_DIR% /E /NP /NFL /NDL /NS /NC\r
+if NOT %ERRORLEVEL% == 1 (\r
+    echo ERROR when copying archive %ERRORLEVEL%\r
+    exit 1\r
+)\r
+\r
+cd %BUILD_DIR%\r
+\r
+REM Upgrade to current version of MSVC\r
+echo.\r
+echo *** devenv %BUILD_DIR%\pthread.sln /upgrade\r
+devenv %BUILD_DIR%\pthread.sln /upgrade\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on devenv\r
+    exit 2\r
+)\r
+\r
+REM Compilation\r
+echo.\r
+echo *** %BUILD_DIR%\pthread.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64\r
+\r
+msbuild %BUILD_DIR%\pthread.sln /t:build /p:Configuration=%PRODUCT_BUILD_TYPE%;Platform=x64\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on msbuild\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** Installing includes\r
+echo --------------------------------------------------------------------------\r
+echo.\r
+\r
+xcopy %BUILD_DIR%\*.h %PRODUCT_INSTALL%\include\\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on copying includes"\r
+    exit 4\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** Installing libs\r
+echo --------------------------------------------------------------------------\r
+echo.\r
+\r
+xcopy %BUILD_DIR%\*.dll %PRODUCT_INSTALL%\lib\\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on copying dll files"\r
+    exit 5\r
+)\r
+\r
+xcopy %BUILD_DIR%\*.lib %PRODUCT_INSTALL%\lib\\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on copying lib files"\r
+    exit 6\r
+)\r
+\r
+copy %PRODUCT_INSTALL%\lib\pthreadVC2.lib %PRODUCT_INSTALL%\lib\pthreadVC2_64.lib\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on renaming lib\pthreadVC2.lib"\r
+    exit 7\r
+)\r
+\r
+echo.\r
+echo "########## END"\r
diff --git a/products/compil_scripts/pthreads.sh b/products/compil_scripts/pthreads.sh
new file mode 100755 (executable)
index 0000000..7cf3358
--- /dev/null
@@ -0,0 +1 @@
+# Utile pour SAT5
\ No newline at end of file
diff --git a/products/compil_scripts/pyhamcrest.sh b/products/compil_scripts/pyhamcrest.sh
new file mode 100755 (executable)
index 0000000..52be542
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "pyhamcrest" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+PRODUCT_NAME=`ls *.whl` 
+
+echo ##########################################################################
+echo *** Installing $PRODUCT_NAME version: $VERSION
+echo ##########################################################################
+
+rm -rf $PRODUCT_INSTALL && mkdir -p $PRODUCT_INSTALL
+$PYTHONBIN -m pip install --no-dependencies $PRODUCT_NAME
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/pyparsing.bat b/products/compil_scripts/pyparsing.bat
new file mode 100755 (executable)
index 0000000..72ae1a4
--- /dev/null
@@ -0,0 +1,41 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo pyparsing %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages\r
+if NOT exist "%dir_lib%" mkdir %dir_lib%\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/pyparsing.sh b/products/compil_scripts/pyparsing.sh
new file mode 100755 (executable)
index 0000000..8e35928
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "pyparsing" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/pyreadline.bat b/products/compil_scripts/pyreadline.bat
new file mode 100755 (executable)
index 0000000..1159360
--- /dev/null
@@ -0,0 +1,45 @@
+rem @echo off\r
+\r
+echo ##########################################################################\r
+echo pyreadline %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages\r
+if NOT exist "%dir_lib%" mkdir %dir_lib%\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo "pyreadline is installed into %PYTHONHOME% dir " > %PRODUCT_INSTALL%\README.txt\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/pyreadline.sh b/products/compil_scripts/pyreadline.sh
new file mode 100755 (executable)
index 0000000..f8920f1
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "pyreadline" $VERSION
+echo "##########################################################################"
+
+
+mkdir -p $PRODUCT_INSTALL
+echo "pyreadline is a Windows porting of readline, a native module of Unix python" > $PRODUCT_INSTALL/README
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/pytz.bat b/products/compil_scripts/pytz.bat
new file mode 100755 (executable)
index 0000000..2a1eae0
--- /dev/null
@@ -0,0 +1,41 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Pytz %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages\r
+if NOT exist "%dir_lib%" mkdir %dir_lib%\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/pytz.sh b/products/compil_scripts/pytz.sh
new file mode 100755 (executable)
index 0000000..2c1c64d
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "pytz" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/qt-4.6.3.sh b/products/compil_scripts/qt-4.6.3.sh
new file mode 100755 (executable)
index 0000000..f2e0797
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Qt" $VERSION
+echo "##########################################################################"
+
+
+
+echo
+echo "*** configure"
+CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \
+    -verbose -no-separate-debug-info -confirm-license -qt-libpng
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+if [[ $BITS == "64" ]]
+then
+    echo "*** create link for lib64"
+    cd $PRODUCT_INSTALL
+    ln -s lib lib64
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/qt-4.8.4.sh b/products/compil_scripts/qt-4.8.4.sh
new file mode 100755 (executable)
index 0000000..b18c4b1
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Qt" $VERSION
+echo "##########################################################################"
+
+
+
+echo
+echo "*** configure"
+CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \
+    -verbose -no-separate-debug-info -confirm-license -qt-libpng -no-sql-cli
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo "*** create link for lib64"
+cd $PRODUCT_INSTALL
+ln -s lib lib64
+
+
+echo "*** correction of a problem with webcore and jscore libraries"
+cd ${PRODUCT_INSTALL}/lib && sed -i "s% -L../../WebCore/release%%g;s% -L../../JavaScriptCore/release%%g;s% -lwebcore%%g;s% -ljscore%%g" libQtWebKit.la
+
+echo "*** Adding qt.conf file in order to be able to compile using the moved Qt installation"
+cd ${PRODUCT_INSTALL}/bin && echo -e "[Paths]\nPrefix=..\nBinaries=bin" > qt.conf
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/qt-5.5.1.sh b/products/compil_scripts/qt-5.5.1.sh
new file mode 100755 (executable)
index 0000000..ff91508
--- /dev/null
@@ -0,0 +1,98 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Qt" $VERSION
+echo "##########################################################################"
+
+
+
+# OP 02/05/2017 Artifact 8644 : probleme de longueur sur certaines commandes
+#                               de compilation Qt. On fait tout dans les sources
+#CURRENT_DIR=`pwd`
+cd $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on $SOURCE_DIR access"
+    exit 1
+fi
+
+echo
+echo "*** configure"
+# OP 02/05/2017 Artifact 8644 : probleme de longueur sur certaines commandes
+#                               de compilation Qt. On fait tout dans les sources
+#CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \
+#    -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-compile-examples
+CXXFLAGS="-fpermissive" ./configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \
+    -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-compile-examples -skip qtwebengine
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+# OP 02/05/2017 Artifact 8644 : modification du numero d'erreur +
+#                               repositionnement dans le repertoire d'origine
+#    exit 1
+#    cd $CURRENT_DIR
+    exit 2
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+# OP 02/05/2017 Artifact 8644 : modification du numero d'erreur +
+#                               repositionnement dans le repertoire d'origine
+#    exit 2
+#    cd $CURRENT_DIR
+    exit 3
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+# OP 02/05/2017 Artifact 8644 : modification du numero d'erreur +
+#                               repositionnement dans le repertoire d'origine
+#    exit 3
+#    cd $CURRENT_DIR
+    exit 4
+fi
+
+# OP 12/05/2017 Artifact 8644 : on supprime le make clean car il provoque
+#                               une boucle infinie dans le repertoire source
+#                               qt/qtwebkit/Source/WebCore
+#echo
+#echo "*** make clean"
+#make clean
+#if [ $? -ne 0 ]
+#then
+#    echo "ERROR on make clean"
+# OP 04/05/2017 Artifact 8644 : repositionnement dans le repertoire d'origine
+#    cd $CURRENT_DIR
+#    exit 5
+#fi
+
+if [[ $BITS == "64" ]]
+then
+    echo "*** create link for lib64"
+    cd $PRODUCT_INSTALL
+# OP 04/05/2017 Artifact 8644 : verif de la bonne execution de la commande
+    if [ $? -ne 0 ]
+    then
+        echo "ERROR on $PRODUCT_INSTALL access"
+        exit 5
+    fi
+    ln -s lib lib64
+    # OP 04/05/2017 Artifact 8644 : verif de la bonne execution de la commande
+    if [ $? -ne 0 ]
+    then
+        echo "ERROR on create link for lib64 in $PRODUCT_INSTALL"
+        exit 6
+    fi
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/qt-5.6.1.bat b/products/compil_scripts/qt-5.6.1.bat
new file mode 100755 (executable)
index 0000000..7f31c37
--- /dev/null
@@ -0,0 +1,65 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Qt %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+REM Configure\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** configure  \r
+echo --------------------------------------------------------------------------\r
+\r
+rem configure -prefix %PRODUCT_INSTALL% -release -opensource -verbose -no-separate-debug-info -confirm-license -no-compile-examples -qt-libpng \r
+\r
+REM call configure -prefix %PRODUCT_INSTALL% -confirm-license -verbose -release -platform win32-msvc2010 -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -qt-sql-odbc -opensource -make libs -qt-designer\r
+\r
+call configure -prefix %PRODUCT_INSTALL% -confirm-license -verbose -release -platform win32-msvc2010 -qt-pcre -qt-libjpeg -opengl desktop -qt-sql-sqlite -qt-sql-odbc -opensource -make tools -make libs\r
+\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on configure"\r
+    exit 1\r
+)\r
+\r
+REM Compilation with nmake as said in qt documentation\r
+REM nmake can crash because of multi-threading problems\r
+REM Thus, we will try to run it 42 times until it works\r
+set /a remaining_tries = 42\r
+:nmake\r
+echo *** Trying to run nmake %remaining_tries% more time.\r
+set /a remaining_tries = remaining_tries - 1\r
+nmake\r
+if NOT %ERRORLEVEL% == 0 if %remaining_tries% gtr 0 (\r
+    goto nmake\r
+)\r
+if %remaining_tries% == 0 (\r
+    echo "ERROR on nmake"\r
+    exit 2\r
+)\r
+\r
+REM Installation\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** nmake install\r
+echo --------------------------------------------------------------------------\r
+\r
+nmake install\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on nmake install"\r
+    exit 3\r
+)\r
+\r
+echo "*** Adding qt.conf file in order to be able to compile using the moved Qt installation"\r
+echo [Paths] >  %PRODUCT_INSTALL%\bin\qt.conf\r
+echo Prefix=../ >> %PRODUCT_INSTALL%\bin\qt.conf\r
+\r
+echo.\r
+echo ########## END\r
+\r
diff --git a/products/compil_scripts/qt-5.6.1.sh b/products/compil_scripts/qt-5.6.1.sh
new file mode 100755 (executable)
index 0000000..bb50ddb
--- /dev/null
@@ -0,0 +1,96 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Qt" $VERSION
+echo "##########################################################################"
+
+
+
+# OP 28/04/2017 Artifact 8644 : probleme de longueur sur certaines commandes
+#                               de compilation Qt. On fait tout dans les sources
+#CURRENT_DIR=`pwd`
+cd $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on $SOURCE_DIR access"
+    exit 1
+fi
+
+echo
+echo "*** configure"
+# OP 28/04/2017 Artifact 8644 : probleme de longueur sur certaines commandes
+#                               de compilation Qt. On fait tout dans les sources
+#CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \
+#    -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-eglfs -dbus-runtime
+CXXFLAGS="-fpermissive" ./configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \
+    -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-eglfs -dbus-runtime -skip qtwebengine
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+# OP 28/04/2017 Artifact 8644 : modification du numero d'erreur +
+#                               repositionnement dans le repertoire d'origine
+#    exit 1
+#    cd $CURRENT_DIR
+    exit 2
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    # OP 28/04/2017 Artifact 8644 : modification du numero d'erreur +
+#                               repositionnement dans le repertoire d'origine
+#    exit 2
+#    cd $CURRENT_DIR
+    exit 3
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    # OP 28/04/2017 Artifact 8644 : modification du numero d'erreur +
+#                               repositionnement dans le repertoire d'origine
+#    exit 3
+#    cd $CURRENT_DIR
+    exit 4
+fi
+
+# OP 04/03/2017 Artifact 8644 : ajout du make clean pour nettoyer les sources
+echo
+echo "*** make clean"
+make clean
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make clean"
+# OP 04/05/2017 Artifact 8644 : repositionnement dans le repertoire d'origine
+#    cd $CURRENT_DIR
+    exit 5
+fi
+
+if [[ $BITS == "64" ]]
+then
+    echo "*** create link for lib64"
+    cd $PRODUCT_INSTALL
+# OP 04/05/2017 Artifact 8644 : verif de la bonne execution de la commande
+    if [ $? -ne 0 ]
+    then
+        echo "ERROR on $PRODUCT_INSTALL access"
+        exit 6
+    fi
+    ln -s lib lib64
+    # OP 04/05/2017 Artifact 8644 : verif de la bonne execution de la commande
+    if [ $? -ne 0 ]
+    then
+        echo "ERROR on create link for lib64 in $PRODUCT_INSTALL"
+        exit 7
+    fi
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/qt-5.6.1_test.sh b/products/compil_scripts/qt-5.6.1_test.sh
new file mode 100755 (executable)
index 0000000..daa20a6
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Qt" $VERSION
+echo "##########################################################################"
+
+
+
+echo
+echo "*** configure"
+CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \
+    -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb 
+#-no-egl -no-eglfs -no-use-gold-linker
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+if [[ $BITS == "64" ]]
+then
+    echo "*** create link for lib64"
+    cd $PRODUCT_INSTALL
+    ln -s lib lib64
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/qt-5.8.4.sh b/products/compil_scripts/qt-5.8.4.sh
new file mode 100755 (executable)
index 0000000..b18c4b1
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Qt" $VERSION
+echo "##########################################################################"
+
+
+
+echo
+echo "*** configure"
+CXXFLAGS="-fpermissive" $SOURCE_DIR/configure -prefix $PRODUCT_INSTALL -release -opensource -no-rpath \
+    -verbose -no-separate-debug-info -confirm-license -qt-libpng -no-sql-cli
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo "*** create link for lib64"
+cd $PRODUCT_INSTALL
+ln -s lib lib64
+
+
+echo "*** correction of a problem with webcore and jscore libraries"
+cd ${PRODUCT_INSTALL}/lib && sed -i "s% -L../../WebCore/release%%g;s% -L../../JavaScriptCore/release%%g;s% -lwebcore%%g;s% -ljscore%%g" libQtWebKit.la
+
+echo "*** Adding qt.conf file in order to be able to compile using the moved Qt installation"
+cd ${PRODUCT_INSTALL}/bin && echo -e "[Paths]\nPrefix=..\nBinaries=bin" > qt.conf
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/qt.bat b/products/compil_scripts/qt.bat
new file mode 100644 (file)
index 0000000..18132c6
--- /dev/null
@@ -0,0 +1,75 @@
+@echo off
+
+echo ##########################################################################
+echo Qt %VERSION%
+echo ##########################################################################
+
+IF NOT DEFINED SAT_DEBUG (
+  SET SAT_DEBUG=0
+)
+
+SET PRODUCT_BUILD_TYPE=-release
+REM TODO: NGH: not Tested yet
+REM if %SAT_DEBUG% == 1 (
+REM   set PRODUCT_BUILD_TYPE=-debug
+REM )
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+REM Configure
+echo.
+echo --------------------------------------------------------------------------
+echo *** configure  
+echo --------------------------------------------------------------------------
+
+set QT_OPTIONS=-platform win32-msvc2017
+set QT_OPTIONS=%QT_OPTIONS% -opensource -confirm-license %PRODUCT_BUILD_TYPE%
+set QT_OPTIONS=%QT_OPTIONS% -no-angle -opengl desktop -nomake examples -nomake tests 
+set QT_OPTIONS=%QT_OPTIONS%  -skip qtwebengine  -skip wayland -skip qtgamepad -no-openssl
+set QT_OPTIONS=%QT_OPTIONS% -prefix %PRODUCT_INSTALL%
+call configure  %QT_OPTIONS%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on configure"
+    exit 1
+)
+
+REM Compilation with nmake as said in qt documentation
+REM nmake can crash because of multi-threading problems
+REM Thus, we will try to run it 42 times until it works
+set /a remaining_tries = 42
+:nmake
+echo *** Trying to run nmake %remaining_tries% more time.
+set /a remaining_tries = remaining_tries - 1
+nmake
+if NOT %ERRORLEVEL% == 0 if %remaining_tries% gtr 0 (
+    goto nmake
+)
+if %remaining_tries% == 0 (
+    echo "ERROR on nmake"
+    exit 2
+)
+
+REM Installation
+echo.
+echo --------------------------------------------------------------------------
+echo *** nmake install
+echo --------------------------------------------------------------------------
+
+nmake install
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on nmake install"
+    exit 3
+)
+
+echo "*** Adding qt.conf file in order to be able to compile using the moved Qt installation"
+echo [Paths] >  %PRODUCT_INSTALL%\bin\qt.conf
+echo Prefix=../ >> %PRODUCT_INSTALL%\bin\qt.conf
+
+echo.
+echo ########## END
+
diff --git a/products/compil_scripts/qt.sh b/products/compil_scripts/qt.sh
new file mode 100755 (executable)
index 0000000..cc943e3
--- /dev/null
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Qt" $VERSION
+echo "##########################################################################"
+
+cd $SOURCE_DIR
+if [ $? -ne 0 ]
+then
+    echo "ERROR on $SOURCE_DIR access"
+    exit 1
+fi
+
+if [[ $DIST_NAME == "FD" && $DIST_VERSION == "32" ]]
+then
+    export  QMAKE_CXXFLAGS="-std=c++11"
+fi
+
+# For -qt-harfbuzz option, see spns #9694
+echo
+echo "*** ./configure -prefix $PRODUCT_INSTALL -release -opensource -nomake tests -nomake examples -no-rpath -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-eglfs -dbus-runtime -skip qtwebengine -skip wayland -skip qtgamepad -system-freetype -qt-harfbuzz -no-openssl -no-glib"
+
+./configure -prefix $PRODUCT_INSTALL -release -opensource -nomake tests -nomake examples -no-rpath \
+    -verbose -no-separate-debug-info -confirm-license -qt-libpng -qt-xcb -no-eglfs -dbus-runtime -skip qtwebengine \
+    -skip wayland -skip qtgamepad -system-freetype -qt-harfbuzz \
+    -no-openssl -no-glib
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 2
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 3
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 4
+fi
+
+# make clean pour nettoyer les sources
+echo
+echo "*** make clean"
+make clean
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make clean"
+    exit 5
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/qwt-6.1.0.bat b/products/compil_scripts/qwt-6.1.0.bat
new file mode 100755 (executable)
index 0000000..b015a0e
--- /dev/null
@@ -0,0 +1,95 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo qwt %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+if exist "%BUILD_DIR%" rmdir /Q /S "%BUILD_DIR%"\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+xcopy * %BUILD_DIR% /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy\r
+    exit 1\r
+)\r
+cd %BUILD_DIR%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** prepare qmake\r
+echo --------------------------------------------------------------------------\r
+echo.\r
+\r
+rem # Remplacement des antislashs par des slashs\r
+set str=%PRODUCT_INSTALL%\r
+set str=%str:\=/%\r
+\r
+call :GETTEMPNAME\r
+attrib -R qwtconfig.pri \r
+sed "s|\(QWT_INSTALL_PREFIX[[:space:]]*\)=\([[:space:]]*\)\(.*\)|\1=\2%str%|g" < qwtconfig.pri > %tmpfile%\r
+move /y %tmpfile% qwtconfig.pri\r
+\r
+cd designer\r
+call :GETTEMPNAME\r
+attrib -R designer.pro \r
+sed "s|\(target\.path[[:space:]]*\)=\([[:space:]]*\).*|\1=\2\$\$QWT_INSTALL_PREFIX/plugins/designer|g" < designer.pro > %tmpfile%\r
+move /y %tmpfile% designer.pro\r
+cd ..\r
+\r
+rem # Desactivation du mode Debug\r
+call :GETTEMPNAME\r
+attrib -R qwtbuild.pri\r
+sed "s|\(CONFIG[[:space:]]*+=[[:space:]]*debug_and_release\)|#\1|g" < qwtbuild.pri > %tmpfile%\r
+move /y %tmpfile% qwtbuild.pri\r
+sed "s|\(CONFIG[[:space:]]*+=[[:space:]]*build_all\)|#\1|g" < qwtbuild.pri > %tmpfile%\r
+move /y %tmpfile% qwtbuild.pri\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** qmake\r
+echo --------------------------------------------------------------------------\r
+echo.\r
+\r
+qmake\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on qmake : %ERRORLEVEL%\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** nmake\r
+echo --------------------------------------------------------------------------\r
+echo.\r
+\r
+nmake \r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on nmake\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** nmake install\r
+echo --------------------------------------------------------------------------\r
+echo.\r
+\r
+nmake install\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on nmake install\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
+\r
+:: ========== FUNCTIONS ==========\r
+exit /B\r
+\r
+:GETTEMPNAME\r
+  set tmpfile=%TMP%\mytempfile-%RANDOM%.tmp\r
+  if exist "%tmpfile%" GOTO :GETTEMPNAME \r
+  exit /B\r
diff --git a/products/compil_scripts/qwt-6.1.0.sh b/products/compil_scripts/qwt-6.1.0.sh
new file mode 100755 (executable)
index 0000000..28cfca4
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "qwt" $VERSION
+echo "##########################################################################"
+
+
+
+export TMAKEPATH=${QTDIR}/bin
+export PATH=${TMAKEPATH}:${PATH}
+
+echo
+echo "*** copy source"
+mkdir -p ${PRODUCT_INSTALL}
+#cp -r $SOURCE_DIR/* .
+cd $SOURCE_DIR
+
+echo
+echo "*** prepare qmake"
+sed -i "s|\(QWT_INSTALL_PREFIX[[:space:]]*\)=\([[:space:]]*\)\(.*\)|\1=\2${PRODUCT_INSTALL}|g" qwtconfig.pri
+sed -i "s|#\(CONFIG[[:space:]]*+=[[:space:]]*QwtSVGItem\)|\1|g" qwtconfig.pri
+
+sed -i "s|\(target\.path[[:space:]]*\)=\([[:space:]]*\).*|\1=\2\$\$QWT_INSTALL_PREFIX/plugins/designer|g" designer/designer.pro 
+
+echo
+echo "** qmake"
+qmake
+if [ $? -ne 0 ]
+then
+    echo "ERROR on qmake"
+    exit 1
+fi
+
+echo
+echo "*** make"
+make 
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/qwt.sh b/products/compil_scripts/qwt.sh
new file mode 100755 (executable)
index 0000000..e086e96
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "qwt" $VERSION
+echo "##########################################################################"
+
+
+
+cp -r $SOURCE_DIR/* .
+
+export TMAKEPATH=${QTDIR}/bin
+export PATH=${TMAKEPATH}:${PATH}
+
+echo
+echo "*** copy source"
+mkdir -p ${PRODUCT_INSTALL}
+
+echo
+echo "*** prepare qmake"
+sed -i "s|\(INSTALLBASE[[:space:]]*\)=\([[:space:]]*\)\(.*\)|\1=\2${PRODUCT_INSTALL}|g" qwtconfig.pri
+sed -i "s|#\(CONFIG[[:space:]]*+=[[:space:]]*QwtSVGItem\)|\1|g" qwtconfig.pri
+
+sed -i "s|\(target\.path[[:space:]]*\)=\([[:space:]]*\).*|\1=\2\$\$INSTALLBASE/plugins/designer|g" designer/designer.pro 
+
+echo
+echo "** qmake"
+qmake
+if [ $? -ne 0 ]
+then
+    echo "ERROR on qmake"
+    exit 1
+fi
+
+echo
+echo "*** make"
+make 
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
+
diff --git a/products/compil_scripts/requests.sh b/products/compil_scripts/requests.sh
new file mode 100755 (executable)
index 0000000..cfeec8b
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "requests" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/root.bat b/products/compil_scripts/root.bat
new file mode 100644 (file)
index 0000000..f0f801d
--- /dev/null
@@ -0,0 +1,21 @@
+@echo off
+
+echo ##########################################################################
+echo ROOT %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+
+xcopy %SOURCE_DIR%\* %PRODUCT_INSTALL% /E /I /Q
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy
+    exit 1
+)
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/ruby.bat b/products/compil_scripts/ruby.bat
new file mode 100644 (file)
index 0000000..25824f3
--- /dev/null
@@ -0,0 +1,22 @@
+@echo off
+
+echo ##########################################################################
+echo Ruby %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+xcopy * %PRODUCT_INSTALL% /E /I /Q
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy
+    exit 1
+)
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/scipy.bat b/products/compil_scripts/scipy.bat
new file mode 100755 (executable)
index 0000000..800979b
--- /dev/null
@@ -0,0 +1,33 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Scipy %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+set INSTALL_LIB=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\r
+if NOT exist "%INSTALL_LIB%" mkdir %INSTALL_LIB%\r
+set PYTHONPATH=%INSTALL_LIB%;%PYTHONPATH%\r
+\r
+cd %SOURCE_DIR%\r
+echo.\r
+FOR /F "delims=" %%i IN ("*.whl") DO (set SCIPY_LIB_WHL=%%~ni%%~xi)\r
+echo.\r
+echo INFO: found Wheel file: %SCIPY_LIB_WHL%\r
+\r
+python -m pip install --no-dependencies  --ignore-installed %SCIPY_LIB_WHL% --prefix=%PRODUCT_INSTALL%\r
+\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on pip based Scipy installation"\r
+    exit 1\r
+)\r
+\r
+mv %PRODUCT_INSTALL%\lib\site-packages %INSTALL_LIB%\site-packages\r
+\r
+echo.\r
+echo "########## END"\r
diff --git a/products/compil_scripts/scipy.sh b/products/compil_scripts/scipy.sh
new file mode 100755 (executable)
index 0000000..21347b9
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "scipy" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+echo
+echo "*** build"
+echo ${PYTHONPATH}
+python setup.py build
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build"
+    exit 2
+fi
+
+SCIPY_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+mkdir -p ${SCIPY_INSTALL}
+PYTHONPATH=${SCIPY_INSTALL}:${PYTHONPATH}
+echo
+echo "*** install"
+python setup.py install --prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/scons.sh b/products/compil_scripts/scons.sh
new file mode 100755 (executable)
index 0000000..79702f3
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+#
+echo "##########################################################################"
+echo "Scons" $VERSION
+echo "##########################################################################"
+#
+cd $SOURCE_DIR
+#
+echo
+echo "*** setup.py"
+python setup.py install --prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup"
+    exit 3
+fi
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/scotch-5.1.12.sh b/products/compil_scripts/scotch-5.1.12.sh
new file mode 100755 (executable)
index 0000000..48d283d
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Scotch" $VERSION
+echo "##########################################################################"
+
+
+
+mkdir -p $PRODUCT_INSTALL
+
+cd $SOURCE_DIR
+
+echo
+#echo "*** copy BUILD to INSTALL  : cp -ar ${PRODUCT_BUILD} ${PRODUCT_INSTALL}"
+#cp -ar * ${PRODUCT_INSTALL}
+#if [ $? -ne 0 ]
+#then
+#    echo "ERROR on cp -ar ${SOURCE_DIR} ${PRODUCT_INSTALL}"
+#    exit 1
+#fi
+#echo "INSTALL :: ${PRODUCT_INSTALL}"
+
+cd src
+
+cp Make.inc/Makefile.inc.x86-64_pc_linux2 ./Makefile.inc.ori
+
+# add pthread for gcc > 4.4
+sed -e "s%LDFLAGS\([[:space:]]*\)=\([[:space:]]*\)\(.*\)%LDFLAGS\1=\2 \3 -lpthread%g" Makefile.inc.ori > Makefile.inc
+
+# add -fPIC
+sed -e 's|CFLAGS[\t ]*=|& -fPIC|g' Makefile.inc > Makefile.in_new
+cp Makefile.in_new Makefile.inc
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 1
+fi
+
+echo "*** copy to INSTALL  : cp -ar ${SOURCE_DIR}/* ${PRODUCT_INSTALL}"
+cp -ar ${SOURCE_DIR}/* ${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cp -ar ${SOURCE_DIR}/* ${PRODUCT_INSTALL}"
+    exit 2
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/scotch.sh b/products/compil_scripts/scotch.sh
new file mode 100755 (executable)
index 0000000..b26f46a
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "Scotch" $VERSION
+echo "##########################################################################"
+
+
+
+mkdir -p $PRODUCT_INSTALL
+
+cp -r $SOURCE_DIR/* .
+
+echo
+echo "*** copy BUILD to INSTALL"
+cp -ar ${PRODUCT_BUILD}/* ${PRODUCT_INSTALL}
+cd ${PRODUCT_INSTALL}/src
+
+echo
+echo "*** create Makefile"
+if [[ $VERSION == "6.0.4" ]]
+then
+    sed -e "s%CFLAGS\([[:space:]]*\)=\([[:space:]]*\)\(.*\)%CFLAGS\1=\2-fPIC \3%g" Make.inc/Makefile.inc.x86-64_pc_linux2 > Makefile.inc
+fi
+if [[ $BITS == "64" ]]
+then
+    if [[ $VERSION == "5.1.11" ]]
+    then
+        sed -e "s%CFLAGS\([[:space:]]*\)=\([[:space:]]*\)\(.*\)%CFLAGS\1=\2-fPIC \3%g" Makefile.inc > Makefile.in_new
+        cp Makefile.in_new Makefile.inc
+    else
+        sed -e 's|CFLAGS\t=|& -fPIC|g' Makefile.inc > Makefile.in_new
+        cp Makefile.in_new Makefile.inc
+    fi
+fi
+
+# add pthread for gcc > 4.4
+sed -e "s%LDFLAGS\([[:space:]]*\)=\([[:space:]]*\)\(.*\)%LDFLAGS\1=\2 \3 -lpthread%g" Makefile.inc > Makefile.in_new
+cp Makefile.in_new Makefile.inc
+
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/setuptools.bat b/products/compil_scripts/setuptools.bat
new file mode 100755 (executable)
index 0000000..3e934eb
--- /dev/null
@@ -0,0 +1,42 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo setuptools %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages\r
+if NOT exist "%dir_lib%" mkdir %dir_lib%\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL% --install-lib=%dir_lib% --single-version-externally-managed --record files.txt\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/setuptools.sh b/products/compil_scripts/setuptools.sh
new file mode 100755 (executable)
index 0000000..063bff7
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "setuptools" $VERSION
+echo "##########################################################################"
+
+mkdir -p ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages:${PYTHONPATH}
+mkdir -p $PRODUCT_INSTALL
+echo
+
+cd $SOURCE_DIR
+
+## unset PYTHONDONTWRITEBYTECODE set by default on MD10
+#PYTHONDONTWRITEBYTECODE=
+
+echo "*** setup.py BUILD"
+python setup.py build
+echo
+
+echo "*** setup.py INSTALL"
+python setup.py install --prefix=${PRODUCT_INSTALL} --install-lib ${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+if [ $? -ne 0 ]
+then
+    echo "ERROR on setup"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/sip.bat b/products/compil_scripts/sip.bat
new file mode 100755 (executable)
index 0000000..2b39abc
--- /dev/null
@@ -0,0 +1,50 @@
+@echo off
+
+echo ##########################################################################
+echo sip %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+
+set python_name=python%PYTHON_VERSION%
+
+echo.
+echo --------------------------------------------------------------------------
+echo Launching "python.exe configure.py"
+echo --------------------------------------------------------------------------
+
+%PYTHON_ROOT_DIR%\python.exe configure.py -b %PRODUCT_INSTALL%\bin -d %PRODUCT_INSTALL%\lib\%python_name%\site-packages -e %PRODUCT_INSTALL%\include\%python_name% -v %PRODUCT_INSTALL%\sip -p win32-msvc
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on python configure.py "
+    exit 1
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo Launching "nmake"
+echo --------------------------------------------------------------------------
+
+nmake
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on nmake"
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo Launching "nmake install"
+echo --------------------------------------------------------------------------
+
+nmake install
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on nmake install"
+    exit 3
+)
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/sip.sh b/products/compil_scripts/sip.sh
new file mode 100755 (executable)
index 0000000..ca80cb7
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "sip" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+python_name=python$PYTHON_VERSION
+
+echo
+echo "*** configure.py -b ${PRODUCT_INSTALL}/bin -d ${PRODUCT_INSTALL}/lib/${python_name}/site-packages -e ${PRODUCT_INSTALL}/include/${python_name} -v ${PRODUCT_INSTALL}/sip"
+python ./configure.py -b ${PRODUCT_INSTALL}/bin \
+    -d ${PRODUCT_INSTALL}/lib/${python_name}/site-packages \
+    -e ${PRODUCT_INSTALL}/include/${python_name} \
+    -v ${PRODUCT_INSTALL}/sip
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/six.bat b/products/compil_scripts/six.bat
new file mode 100755 (executable)
index 0000000..03871b0
--- /dev/null
@@ -0,0 +1,41 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo six %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+set dir_lib=%PRODUCT_INSTALL%\lib\python%PYTHON_VERSION%\site-packages\r
+if NOT exist "%dir_lib%" mkdir %dir_lib%\r
+set PYTHONPATH=%dir_lib%;%PYTHONPATH%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py build"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py build --build-base %BUILD_DIR% --build-temp %BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py build\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo Launching "python.exe setup.py install"\r
+echo --------------------------------------------------------------------------\r
+\r
+%PYTHON_ROOT_DIR%\python.exe setup.py install --prefix=%PRODUCT_INSTALL%  --install-lib=%dir_lib% \r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on setup.py install\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/six.sh b/products/compil_scripts/six.sh
new file mode 100755 (executable)
index 0000000..4f185d4
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "six" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/snowballstemmer.sh b/products/compil_scripts/snowballstemmer.sh
new file mode 100755 (executable)
index 0000000..7cdc251
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "snowballstemmer" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/solvespace-2.1.sh b/products/compil_scripts/solvespace-2.1.sh
new file mode 100755 (executable)
index 0000000..c16efce
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "solvespace" $VERSION
+echo "##########################################################################"
+
+
+
+
+CMAKE_OPTIONS=""
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+CMAKE_OPTIONS=$CMAKE_OPTIONS" -DONLY_LIB=ON"
+
+echo '$SOURCE_DIR '  $SOURCE_DIR
+cmake $CMAKE_OPTIONS $SOURCE_DIR
+
+if [ $? -ne 0 ]
+then
+    echo "ERROR on CMake"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/sphinx_rtd_theme.sh b/products/compil_scripts/sphinx_rtd_theme.sh
new file mode 100755 (executable)
index 0000000..8e2d622
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "sphinx_rtd_theme" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+echo
+echo "*** setup.py BUILD"
+python setup.py build
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build"
+    exit 2
+fi
+
+dir_lib=$PRODUCT_INSTALL'/lib/python'$PYTHON_VERSION'/site-packages'
+
+# HACK 
+PYTHONPATH=$PYTHONPATH:$dir_lib
+
+mkdir -p $PRODUCT_INSTALL
+mkdir -p $dir_lib
+
+echo
+echo "*** install"
+python setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/sphinxcontrib.sh b/products/compil_scripts/sphinxcontrib.sh
new file mode 100755 (executable)
index 0000000..98ba065
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "sphinxcontrib" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+echo
+echo "*** build"
+python setup.py build
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build"
+    exit 2
+fi
+
+SPHINXCONTRIB_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+mkdir -p ${SPHINXCONTRIB_INSTALL}
+export PYTHONPATH=${SPHINXCONTRIB_INSTALL}:${PYTHONPATH}
+echo
+echo "*** install"
+python setup.py install --prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/sphinxcontrib_napoleon.sh b/products/compil_scripts/sphinxcontrib_napoleon.sh
new file mode 100755 (executable)
index 0000000..c74b284
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "sphinxcontrib_napoleon" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/sphinxcontrib_websupport.sh b/products/compil_scripts/sphinxcontrib_websupport.sh
new file mode 100755 (executable)
index 0000000..02ed2d7
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "sphinxcontrib_websupport" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/sphinxintl.sh b/products/compil_scripts/sphinxintl.sh
new file mode 100755 (executable)
index 0000000..b0df5d0
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "sphinxintl" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/subprocess32.sh b/products/compil_scripts/subprocess32.sh
new file mode 100755 (executable)
index 0000000..624bee8
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "subprocess32" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+echo
+echo "*** build"
+python setup.py build
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build"
+    exit 2
+fi
+
+SUBPROCESS_INSTALL=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION}/site-packages
+mkdir -p ${SUBPROCESS_INSTALL}
+export PYTHONPATH=${SUBPROCESS_INSTALL}:${PYTHONPATH}
+echo
+echo "*** install"
+python setup.py install --prefix=${PRODUCT_INSTALL}
+if [ $? -ne 0 ]
+then
+    echo "ERROR on install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/swig.bat b/products/compil_scripts/swig.bat
new file mode 100755 (executable)
index 0000000..3939414
--- /dev/null
@@ -0,0 +1,31 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo swig %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+if NOT exist "%PRODUCT_INSTALL%\bin" mkdir %PRODUCT_INSTALL%\bin\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+xcopy . %PRODUCT_INSTALL% /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy\r
+    exit 1\r
+)\r
+\r
+cd %PRODUCT_INSTALL%\r
+mkdir %PRODUCT_INSTALL%\bin\r
+\r
+mv %PRODUCT_INSTALL%\swig.exe %PRODUCT_INSTALL%\bin\swig.exe\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on copy swig.exe\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo ########## END
\ No newline at end of file
diff --git a/products/compil_scripts/swig.sh b/products/compil_scripts/swig.sh
new file mode 100755 (executable)
index 0000000..2c0a87c
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "swig" $VERSION
+echo "##########################################################################"
+
+
+
+#echo
+#echo "*** autogen"
+#./autogen.sh
+#if [ $? -ne 0 ]
+#then
+#    echo "ERROR on autogen"
+#    exit 1
+#fi
+
+echo
+echo "*** configure --without-pcre --without-octave"
+$SOURCE_DIR/configure --prefix=${PRODUCT_INSTALL} --without-pcre --without-octave
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo 
+#echo "*** link swig2.0 -> swig"
+#cd $PRODUCT_INSTALL/bin
+#ln -s swig swig2.0
+#if [ $? -ne 0 ]
+#then
+#    echo "ERROR on link swig2.0 -> swig"
+#    exit 4
+#fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/tbb.bat b/products/compil_scripts/tbb.bat
new file mode 100644 (file)
index 0000000..57bd70d
--- /dev/null
@@ -0,0 +1,63 @@
+@echo off
+
+echo ##########################################################################
+echo Threading Building Blocks %VERSION%
+echo ##########################################################################
+
+if exist "%BUILD_DIR%" rmdir /Q /S "%BUILD_DIR%"
+mkdir %BUILD_DIR%
+
+SET MSBUILDDISABLENODEREUSE=1
+cd %SOURCE_DIR%
+xcopy * %BUILD_DIR% /E /I /Q
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy
+    exit 1
+)
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+
+if NOT defined CYGWIN_ROOT_DIR (
+  echo ERROR: Please set the environment variable: CYGWIN_ROOT_DIR
+  exit 1
+) else (
+  echo INFO: Cygwin suite environment variable is set to: %CYGWIN_ROOT_DIR%
+)
+
+cd %BUILD_DIR%
+
+REM pay attention to ROBOCOY 1: One or more files were copied successfully (that is, new files have arrived)
+robocopy %BUILD_DIR%\build\vs2013 %BUILD_DIR%\build\vs2017  /E /NP /NFL /NDL /NS /NC
+if NOT %ERRORLEVEL% == 1 (
+    echo ERROR when renaming subfolder %BUILD_DIR%\build\vs2013
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** start compilation
+echo --------------------------------------------------------------------------
+REM Upgrade to current version of MSVC
+echo.
+echo *** devenv %BUILD_DIR%\build\vs2017\makefile.sln /upgrade
+devenv %BUILD_DIR%\build\vs2017\makefile.sln /upgrade
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on devenv
+    exit 3
+)
+REM remove the residual file named nul which is a reserved field for Windows...
+set PATH=%PATH%;%CYGWIN_ROOT_DIR%\bin
+
+%PYTHON_ROOT_DIR%\python.exe %SOURCE_DIR:\=/%/build/build.py --install --install-python --vs=2017 --msbuild --prefix=%PRODUCT_INSTALL:\=/%
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on %PYTHON_ROOT_DIR%\python.exe %SOURCE_DIR:\=/%/build/build.py
+    exit 4
+)
+
+REM remove the residual file named nul which is a reserved field for Windows...
+mv %BUILD_DIR%\src\nul %BUILD_DIR%\src\null.txt
+
+taskkill /F /IM "mspdbsrv.exe"
+
+echo.
+echo ########## END
diff --git a/products/compil_scripts/tbb.sh b/products/compil_scripts/tbb.sh
new file mode 100755 (executable)
index 0000000..5f29405
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "tbb" $VERSION
+echo "##########################################################################"
+
+rm -rf $BUILD_DIR
+mkdir -p $BUILD_DIR
+cd $BUILD_DIR
+
+cp -r $SOURCE_DIR/* $BUILD_DIR/
+
+
+echo
+echo "*** make"
+make 
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+rm -rf $PRODUCT_INSTALL
+mkdir -p $PRODUCT_INSTALL
+cp -r $BUILD_DIR/include $PRODUCT_INSTALL/include
+cp -r $BUILD_DIR/build/linux*_release $PRODUCT_INSTALL/lib
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/tcl.bat b/products/compil_scripts/tcl.bat
new file mode 100755 (executable)
index 0000000..551c064
--- /dev/null
@@ -0,0 +1,54 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo tcl %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+if exist "%BUILD_DIR%" rmdir /Q /S "%BUILD_DIR%"\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+xcopy * %BUILD_DIR% /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy\r
+    exit 1\r
+)\r
+\r
+cd %BUILD_DIR%\win\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** prepare nmake\r
+echo --------------------------------------------------------------------------\r
+\r
+REM tcl/tk does not compile, this SDK tag is required\r
+REM see https://wiki.tcl-lang.org/page/Building+with+Visual+Studio+2017\r
+call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64  10.0.15063.0 \r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** nmake -f makefile.vc\r
+echo --------------------------------------------------------------------------\r
\r
+nmake -f makefile.vc\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on nmake"\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo -------------------------------------------------------------------------- \r
+echo *** nmake -f makefile.vc install\r
+echo -------------------------------------------------------------------------- \r
+\r
+nmake -f makefile.vc install INSTALLDIR=%PRODUCT_INSTALL%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on nmake install"\r
+    exit 3\r
+)\r
+\r
+echo.\r
+echo ########## END\r
+\r
diff --git a/products/compil_scripts/tcl.sh b/products/compil_scripts/tcl.sh
new file mode 100755 (executable)
index 0000000..cf18b5d
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "tcl" $VERSION
+echo "##########################################################################"
+
+
+
+echo
+echo "*** configure --enable-shared --enable-threads"
+$SOURCE_DIR/unix/configure --prefix=$PRODUCT_INSTALL --enable-shared --enable-threads
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/tcltk.bat b/products/compil_scripts/tcltk.bat
new file mode 100644 (file)
index 0000000..26c0233
--- /dev/null
@@ -0,0 +1,94 @@
+@echo off
+
+echo ##########################################################################
+echo tcl/tk %VERSION%
+echo ##########################################################################
+
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%
+
+REM clean BUILD directory
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%
+mkdir %BUILD_DIR%
+
+cd %SOURCE_DIR%
+xcopy * %BUILD_DIR% /E /I /Q
+if NOT %ERRORLEVEL% == 0 (
+    echo ERROR on xcopy
+    exit 1
+)
+
+cd %BUILD_DIR%\tcl\win
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** prepare nmake
+echo --------------------------------------------------------------------------
+
+REM tcl/tk does not compile, this SDK tag is required
+REM see https://wiki.tcl-lang.org/page/Building+with+Visual+Studio+2017
+call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64  10.0.15063.0
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** nmake -f makefile.vc
+echo --------------------------------------------------------------------------
+nmake -f makefile.vc
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on nmake"
+    exit 2
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** nmake -f makefile.vc install
+echo --------------------------------------------------------------------------
+
+nmake -f makefile.vc install INSTALLDIR=%PRODUCT_INSTALL%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on nmake install"
+    exit 3
+)
+
+cd %SOURCE_DIR%\tcl\win
+
+
+echo.
+echo ****************************************************************
+where.exe nmake
+
+cd %BUILD_DIR%\tk\win
+set TCLDIR=%BUILD_DIR%\tcl
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** prepare nmake
+echo --------------------------------------------------------------------------
+
+dir rules.vc
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** nmake -f makefile.vc TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR%\tk
+echo --------------------------------------------------------------------------
+nmake -f makefile.vc TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR%\tk
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on nmake"
+    exit 4
+)
+
+echo.
+echo --------------------------------------------------------------------------
+echo *** nmake -f makefile.vc install TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR%\tk INSTALLDIR=%PRODUCT_INSTALL%
+echo --------------------------------------------------------------------------
+
+nmake -f makefile.vc install TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR%\tk INSTALLDIR=%PRODUCT_INSTALL%
+if NOT %ERRORLEVEL% == 0 (
+    echo "ERROR on nmake install"
+    exit 5
+)
+
+
+echo.
+echo ########## END
\ No newline at end of file
diff --git a/products/compil_scripts/tcltk.sh b/products/compil_scripts/tcltk.sh
new file mode 100755 (executable)
index 0000000..aaf1d7c
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "tcl/tk" $VERSION
+echo "##########################################################################"
+
+echo
+echo "INFO: building tcl..."
+echo "INFO: running command: configure --enable-shared --enable-threads"
+
+mkdir -p $BUILD_DIR/tcl && cd $BUILD_DIR/tcl
+$SOURCE_DIR/tcl/unix/configure --prefix=$PRODUCT_INSTALL --enable-shared --enable-threads
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure (tcl)"
+    exit 1
+fi
+
+echo
+echo "INFO: running command: make " $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make (tcl)"
+    exit 2
+fi
+
+echo
+echo "INFO: running command: make install (tcl)"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install (tcl)"
+    exit 3
+fi
+
+echo "INFO: building tk..."
+mkdir -p $BUILD_DIR/tk && cd $BUILD_DIR/tk
+echo "INFO: running command:  configure --enable-shared --enable-threads --with-tcl=$PRODUCT_INSTALL/lib --with-tclinclude=$PRODUCT_INSTALL/include"
+$SOURCE_DIR/tk/unix/configure --prefix=$PRODUCT_INSTALL --enable-shared --enable-threads \
+    --with-tcl=$PRODUCT_INSTALL/lib --with-tclinclude=$PRODUCT_INSTALL/include
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure (tk)"
+    exit 2
+fi
+
+echo
+echo "INFO: running command: make"
+make
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make (tk)"
+    exit 2
+fi
+
+echo
+echo "INFO: running command: make install"
+make install 
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install (tk)"
+    exit 3
+fi
+
+cp tkConfig.sh $PRODUCT_INSTALL/lib # needed by Netgen
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/tk.bat b/products/compil_scripts/tk.bat
new file mode 100755 (executable)
index 0000000..f0e22f9
--- /dev/null
@@ -0,0 +1,78 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo tk %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\win\r
+\r
+echo.\r
+echo ****************************************************************\r
+where.exe nmake\r
+\r
+REM tcl/tk does not compile, this SDK tag is required\r
+REM see https://wiki.tcl-lang.org/page/Building+with+Visual+Studio+2017\r
+call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64  10.0.15063.0 \r
+\r
+echo.\r
+echo ****************************************************************\r
+where.exe nmake\r
+\r
+\r
+call :NORMALIZEPATH "%BUILD_DIR%\..\tcl"\r
+set TCLDIR=%RETVAL%\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** prepare nmake\r
+echo --------------------------------------------------------------------------\r
+\r
+dir rules.vc\r
+\r
+echo.\r
+echo --------------------------------------------------------------------------\r
+echo *** nmake -f makefile.vc TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR%\r
+echo --------------------------------------------------------------------------\r
\r
+nmake -f makefile.vc TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on nmake"\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo -------------------------------------------------------------------------- \r
+echo *** nmake -f makefile.vc install TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR% INSTALLDIR=%TCLHOME%\r
+echo -------------------------------------------------------------------------- \r
+\r
+nmake -f makefile.vc install TCLDIR=%TCLDIR% TMP_DIR=%BUILD_DIR% INSTALLDIR=%TCLHOME%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo "ERROR on nmake install"\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo -------------------------------------------------------------------------- \r
+echo *** post-installation (%TCLHOME%)\r
+echo -------------------------------------------------------------------------- \r
+\r
+echo "Tk is installed into tcl dir %TCLHOME%" > %PRODUCT_INSTALL%/README\r
+\r
+rem tkConfig.sh n a pas ete \r
+rem cp tkConfig.sh %TCLHOME%/lib rem Needed fot netgen and Togl\r
+\r
+echo.\r
+echo ########## END\r
+\r
+:: ========== FUNCTIONS ==========\r
+exit /B\r
+\r
+:NORMALIZEPATH\r
+  SET RETVAL=%~dpfn1\r
+  EXIT /B\r
+  \r
diff --git a/products/compil_scripts/tk.sh b/products/compil_scripts/tk.sh
new file mode 100755 (executable)
index 0000000..558cbf0
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "tk" $VERSION
+echo "##########################################################################"
+
+
+
+#cp $TCLHOME/include/*.h generic/
+
+echo
+echo "*** configure --enable-shared --enable-threads --with-tcl=$TCLHOME/lib --with-tclinclude=$TCLHOME/include"
+$SOURCE_DIR/unix/configure --prefix=$TCLHOME --enable-shared --enable-threads \
+    --with-tcl=$TCLHOME/lib --with-tclinclude=$TCLHOME/include
+if [ $? -ne 0 ]
+then
+    echo "ERROR on configure"
+    exit 2
+fi
+
+echo
+echo "*** make"
+make
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install 
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+mkdir -p $PRODUCT_INSTALL
+echo "Tk is installed into tcl dir $TCLHOME" > $PRODUCT_INSTALL/README
+cp tkConfig.sh $TCLHOME/lib #Needed fot netgen
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/typing.sh b/products/compil_scripts/typing.sh
new file mode 100755 (executable)
index 0000000..f12907c
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "typing $VERSION"
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** install with $PYTHONBIN $PYTHON_VERSION"
+function version_ge() { test "$(echo "$@" | tr " " "\n" | sort -rV | head -n 1)" == "$1"; }
+
+if version_ge $PYTHON_VERSION "3."; then
+    echo "***  $VERSION >= 2.X is not supported and was not tested! Please, report this issue to SALOME support!"
+    exit 3
+else
+    $PYTHONBIN pip-10.0.1-py2.py3-none-any.whl/pip install --no-index --target $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages typing-${VERSION}-py2-none-any.whl
+    if [ $? -ne 0 ]
+    then
+        echo "ERROR on install" $?
+        exit 3
+    fi
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/uranie_win.bat b/products/compil_scripts/uranie_win.bat
new file mode 100755 (executable)
index 0000000..4a5cee2
--- /dev/null
@@ -0,0 +1,21 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo Uranie %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+xcopy /s /y /q * %PRODUCT_INSTALL%\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy\r
+    exit 1\r
+)\r
+\r
+echo.\r
+echo ########## END\r
diff --git a/products/compil_scripts/uranie_win.sh b/products/compil_scripts/uranie_win.sh
new file mode 100755 (executable)
index 0000000..7cf3358
--- /dev/null
@@ -0,0 +1 @@
+# Utile pour SAT5
\ No newline at end of file
diff --git a/products/compil_scripts/urllib3.sh b/products/compil_scripts/urllib3.sh
new file mode 100755 (executable)
index 0000000..ae5a27b
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "urllib3" $VERSION
+echo "##########################################################################"
+
+
+
+echo  "*** build in SOURCE directory"
+cd $SOURCE_DIR
+
+# we don't install in python directory -> modify environment as described in INSTALL file
+mkdir -p $PRODUCT_INSTALL/lib/python${PYTHON_VERSION:0:3}/site-packages
+export PATH=$(pwd)/bin:$PATH
+export PYTHONPATH=$(pwd):$PYTHONPATH
+export PYTHONPATH=${PRODUCT_INSTALL}/lib/python${PYTHON_VERSION:0:3}/site-packages:$PYTHONPATH
+
+echo
+echo "*** build and install with $PYTHONBIN"
+$PYTHONBIN setup.py install --prefix=$PRODUCT_INSTALL
+if [ $? -ne 0 ]
+then
+    echo "ERROR on build/install"
+    exit 3
+fi
+
+echo
+echo "########## END"
diff --git a/products/compil_scripts/vtk.sh b/products/compil_scripts/vtk.sh
new file mode 100755 (executable)
index 0000000..4179d53
--- /dev/null
@@ -0,0 +1,82 @@
+#!/bin/bash
+
+echo "##########################################################################"
+echo "VTK" $VERSION
+echo "##########################################################################"
+
+
+
+cd $SOURCE_DIR
+
+python_name=python$PYTHON_VERSION
+
+sed -i "s%seekg(self->GetFile()->tellg()%seekg(static_cast<long>(self->GetFile()->tellg())%g" IO/vtkBMPReader.cxx
+sed -i "s%seekg(self->GetFile()->tellg()%seekg(static_cast<long>(self->GetFile()->tellg())%g" IO/vtkImageReader.cxx
+sed -i "s%#include <string>%#include <string>\n#include <cstring>%g" Utilities/DICOMParser/DICOMFile.cxx
+sed -i "s%#include <string>%#include <string>\n#include <cstring>%g" Utilities/DICOMParser/DICOMParser.cxx
+sed -i "s%#include <string>%#include <string>\n#include <cstring>%g" Utilities/DICOMParser/DICOMAppHelper.cxx
+
+chmod 600 Utilities/vtktiff/tif_fax3sm.c
+
+#sed -i "s%char \*doc \=%const char \*doc \=%g" Common/vtkPythonUtil.cxx
+
+VTK_CMAKE_OPTIONS=""
+### compiler options
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS"-DVTK_HAVE_GETSOCKNAME_WITH_SOCKLEN_T=1"
+### common VTK settings
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DBUILD_SHARED_LIBS:BOOL=ON"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DCMAKE_BUILD_TYPE:STRING=Release"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DCMAKE_CXX_COMPILER:STRING=`which g++`"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DCMAKE_C_COMPILER:STRING=`which gcc`"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DCMAKE_INSTALL_PREFIX:STRING=${PRODUCT_INSTALL}"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_HYBRID:BOOL=ON"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_PARALLEL:BOOL=ON"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_PATENTED:BOOL=OFF"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_RENDERING:BOOL=ON"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_GL2PS:BOOL=ON"  # GL_2_PS
+### Wrap Python settings
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_WRAP_PYTHON:BOOL=ON"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DPYTHON_EXECUTABLE:STRING=${PYTHONHOME}/bin/${python_name}"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DPYTHON_INCLUDE_PATH:STRING=${PYTHONHOME}/include/${python_name}"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DPYTHON_LIBRARY:STRING=${PYTHONHOME}/lib/${python_name}/config/lib${python_name}.a"
+### No tcl tk wrap
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_WRAP_TCL:BOOL=OFF"
+VTK_CMAKE_OPTIONS=$VTK_CMAKE_OPTIONS" -DVTK_USE_TK:BOOL=OFF"
+
+echo
+echo "*** cmake" ${VTK_CMAKE_OPTIONS} 
+cmake ${VTK_CMAKE_OPTIONS} .
+if [ $? -ne 0 ]
+then
+    echo "ERROR on cmake"
+    exit 1
+fi
+
+echo
+echo "*** make" $MAKE_OPTIONS
+make $MAKE_OPTIONS
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make"
+    exit 2
+fi
+
+echo
+echo "*** make install"
+make install
+if [ $? -ne 0 ]
+then
+    echo "ERROR on make install"
+    exit 3
+fi
+
+echo
+echo "*** create links"
+cd ${PRODUCT_INSTALL}/include
+ln -s vtk-${VERSION%.*}/ vtk
+cd ${PRODUCT_INSTALL}/lib
+ln -s . vtk
+
+echo
+echo "########## END"
+
diff --git a/products/compil_scripts/zlib.bat b/products/compil_scripts/zlib.bat
new file mode 100755 (executable)
index 0000000..db7b538
--- /dev/null
@@ -0,0 +1,72 @@
+@echo off\r
+\r
+echo ##########################################################################\r
+echo zlib %VERSION%\r
+echo ##########################################################################\r
+\r
+if NOT exist "%PRODUCT_INSTALL%" mkdir %PRODUCT_INSTALL%\r
+\r
+REM clean BUILD directory\r
+if exist "%BUILD_DIR%" rmdir /Q /S %BUILD_DIR%\r
+mkdir %BUILD_DIR%\r
+\r
+cd %SOURCE_DIR%\r
+\r
+xcopy include %PRODUCT_INSTALL%\include /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy include\r
+    exit 1\r
+)\r
+\r
+xcopy bin %PRODUCT_INSTALL%\bin /E /I /Q\r
+if NOT %ERRORLEVEL% == 0 (\r
+    echo ERROR on xcopy bin\r
+    exit 2\r
+)\r
+\r
+echo.\r
+echo ########## END\r
+\r
+REM if exist "%PRODUCT_INSTALL%" rmdir /Q /S "%PRODUCT_INSTALL%"\r
+REM mkdir %PRODUCT_INSTALL%\r
+\r
+REM set CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX:STRING=%PRODUCT_INSTALL:\=/%\r
+REM if defined CMAKE_GENERATOR (\r
+    REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR=%CMAKE_GENERATOR%\r
+REM ) else (\r
+    REM set CMAKE_OPTIONS=%CMAKE_OPTIONS% -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"\r
+REM )\r
+REM set MSBUILDDISABLENODEREUSE=1\r
+\r
+REM cd %BUILD_DIR%\r
+\r
+REM echo.\r
+REM echo --------------------------------------------------------------------------\r
+REM echo *** %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+REM echo --------------------------------------------------------------------------\r
+\r
+REM %CMAKE_ROOT%\bin\cmake %CMAKE_OPTIONS% %SOURCE_DIR%\r
+REM if NOT %ERRORLEVEL% == 0 (\r
+    REM echo ERROR on cmake\r
+    REM exit 1\r
+REM )\r
+\r
+REM echo.\r
+REM echo --------------------------------------------------------------------------\r
+REM echo *** %CMAKE_ROOT%\bin\cmake --build . --config Release --target INSTALL\r
+REM echo --------------------------------------------------------------------------\r
+\r
+REM %CMAKE_ROOT%\bin\cmake --build . --config Release --target INSTALL\r
+REM if NOT %ERRORLEVEL% == 0 (\r
+    REM echo ERROR on cmake build\r
+    REM exit 2\r
+REM )\r
+\r
+REM cp %PRODUCT_INSTALL%\lib\zlib.lib %PRODUCT_INSTALL%\lib\zlib1.lib\r
+REM cp %PRODUCT_INSTALL%\lib\zlib.lib %PRODUCT_INSTALL%\lib\z.lib\r
+REM cp %PRODUCT_INSTALL%\bin\zlib.dll %PRODUCT_INSTALL%\bin\zlib1.dll\r
+\r
+REM taskkill /F /IM "mspdbsrv.exe"\r
+\r
+REM echo.\r
+REM echo ########## END
\ No newline at end of file
diff --git a/products/compil_scripts/zlib.sh b/products/compil_scripts/zlib.sh
new file mode 100755 (executable)
index 0000000..7cf3358
--- /dev/null
@@ -0,0 +1 @@
+# Utile pour SAT5
\ No newline at end of file
diff --git a/products/cppunit.pyconf b/products/cppunit.pyconf
new file mode 100644 (file)
index 0000000..29e9583
--- /dev/null
@@ -0,0 +1,46 @@
+default :
+{
+    name : "cppunit"
+    build_source : "script"
+    compil_script :  $name  + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["cppunit"]
+        rpm_dev : ["cppunit-devel"]
+        apt : ["libcppunit"]
+        apt_dev : ["libcppunit-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    build_depend : ["cmake"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
+
+# NOTE: do not delete this section, it was added on purpose in order to be able to overload it for Windows in the main application.
+version_1_13_2 :
+{
+  patches : []
+}
+
+version_1_13_2_win :
+{
+  patches : ['cppunit-1.13.2_windows.patch']
+  properties:
+  {
+    incremental : "yes"
+    single_install_dir : "yes"
+    compile_time : "yes"
+  }
+}
+
diff --git a/products/cycler.pyconf b/products/cycler.pyconf
new file mode 100644 (file)
index 0000000..d6e1a2f
--- /dev/null
@@ -0,0 +1,40 @@
+default :
+{
+    name : "cycler"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-cycler"]
+        rpm_dev : []
+        apt : ["python3-cycler"]
+        apt_dev : []
+    }
+    archive_info:
+    {
+        archive_name : $name + "-" + $APPLICATION.products.cycler + ".tar.gz"
+    }
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    depend : ['Python', 'six', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+    compil_script :  'pip_install_whl' + $VARS.scriptExtension
+    archive_info:
+    {
+        archive_name : "cycler-" + $APPLICATION.products.cycler + "_windows.tar.gz"
+    }
+}
diff --git a/products/dateutil.pyconf b/products/dateutil.pyconf
new file mode 100644 (file)
index 0000000..dcc5764
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "python_dateutil"
+    build_source : "script"
+    compil_script :  "pip_install.sh"
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-dateutil"]
+        rpm_dev : []
+        apt : ["python3-dateutil"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : "dateutil.py"
+    }
+    depend : ['Python', 'setuptools', 'six']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental: "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "dateutil-" + $APPLICATION.products.dateutil + "_windows.tar.gz"}
+}
diff --git a/products/distribute.pyconf b/products/distribute.pyconf
new file mode 100755 (executable)
index 0000000..6d84fe5
--- /dev/null
@@ -0,0 +1,24 @@
+default :
+{
+    name : "distribute"
+    build_source : "script"
+    compil_script :  $name  + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental: "yes"
+    }
+}
+
+default_win:
+{
+    depend : ['Python']
+}
diff --git a/products/docutils.pyconf b/products/docutils.pyconf
new file mode 100644 (file)
index 0000000..f4843fb
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "docutils"
+    build_source : "script"
+    compil_script : "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-docutils"]
+        rpm_dev : []
+        apt : ["python3-docutils"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ["Python", "setuptools"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "docutils-" + $APPLICATION.products.docutils + "_windows.tar.gz"}
+}
diff --git a/products/doxygen.pyconf b/products/doxygen.pyconf
new file mode 100755 (executable)
index 0000000..f14f6e5
--- /dev/null
@@ -0,0 +1,64 @@
+default :
+{
+    name : "doxygen"
+    build_source : "cmake"
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : []
+        rpm_dev : ["doxygen"]
+        apt : []
+        apt_dev : ["doxygen"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ["graphviz", "cmake"]
+    build_depend : ["cmake"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      compile_time : "yes"
+    }
+}
+
+default_win :
+{
+    build_source : "script"
+    compil_script :  "doxygen.bat"
+    archive_info : {archive_name : "doxygen-" + $APPLICATION.products.doxygen + "_windows.tar.gz"}
+    properties:
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+      compile_time : "yes"
+    }
+}
+
+version_1_8_3_1 :
+{
+    build_source : "script"
+    compil_script :  "doxygen" +  $VARS.scriptExtension
+    patches : [
+            "doxygen-1.8.3.1.patch"
+            "doxygen_compatibility_flex260.patch"
+            ]
+}
+
+version_1_8_3_1_win :
+{
+    # no patch since we are using Windows binary
+    patches : []
+    depend : []
+}
+
+version_1_8_0 :
+{
+    build_source : "script"
+    compil_script :  "doxygen.sh"
+}
diff --git a/products/eigen.pyconf b/products/eigen.pyconf
new file mode 100644 (file)
index 0000000..7e494bc
--- /dev/null
@@ -0,0 +1,34 @@
+default :
+{
+    name : "eigen"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : []
+        rpm_dev : ["eigen3-devel"]
+        apt : []
+        apt_dev : ["libeigen3-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
+
+version_3_2_7 :
+{
+    compil_script :  "eigen-3.2.7.sh"
+    depend : []
+}
+
diff --git a/products/embree.pyconf b/products/embree.pyconf
new file mode 100644 (file)
index 0000000..7f06cf5
--- /dev/null
@@ -0,0 +1,27 @@
+default :
+{
+    name : "embree"
+    build_source : "cmake"
+    cmake_options : " -DEMBREE_ISPC_SUPPORT=ON -DEMBREE_TUTORIALS=OFF -DCMAKE_INSTALL_LIBDIR=lib"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['ispc','tbb']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+   cmake_options : '  -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON -DEMBREE_ISPC_SUPPORT=ON -DEMBREE_TUTORIALS=OFF -DEMBREE_TASKING_SYSTEM=TBB -DTBB_ROOT=%TBB_DIR:\=/% '
+   archive_info : {archive_name : "embree-" + $APPLICATION.products.embree + "_windows.tar.gz"}
+   depend : ['ispc','tbb']
+}
+
diff --git a/products/env_scripts/ADAO.py b/products/env_scripts/ADAO.py
new file mode 100644 (file)
index 0000000..e0ce0cf
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+import os
+import platform
+
+def set_env(env, product_dir, version):
+    env.set('ADAO_ENGINE_ROOT_DIR', product_dir)
+    env.set('ADAO_ROOT_DIR', product_dir)
+    env.set('CURRENT_SOFTWARE_INSTALL_DIR',product_dir)
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    env.prepend('PYTHONPATH', os.path.join(product_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/ADAO_INTERFACE.py b/products/env_scripts/ADAO_INTERFACE.py
new file mode 100644 (file)
index 0000000..a65f6dc
--- /dev/null
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+import os
+import platform
+
+def set_env(env, product_dir, version):
+    env.set('ADAO_INTERFACE_ROOT_DIR', product_dir)
+    env.prepend('LD_LIBRARY_PATH', os.path.join(product_dir, 'lib'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/Babel.py b/products/env_scripts/Babel.py
new file mode 100644 (file)
index 0000000..30e59ed
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+    env.set("BABEL_ROOT_DIR",prereq_dir)
+
+    versionPython = env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin'))
+               
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/CAS.py b/products/env_scripts/CAS.py
new file mode 100755 (executable)
index 0000000..459713f
--- /dev/null
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('CASROOT', prereq_dir)
+    
+    # [CMake GUI] Nouveau nom pour CASROOT = CAS_ROOT_DIR 22/03/2013
+    env.set('OPENCASCADE_ROOT_DIR', prereq_dir)
+    env.prepend('PATH', prereq_dir)
+    
+    if platform.system()=="Windows" :
+        env.prepend('PATH', os.path.join(prereq_dir, 'win64', 'vc14' ,'bin'))
+    else :
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+   
+
+def set_nativ_env(env):
+    pass
+
diff --git a/products/env_scripts/CDMATH.py b/products/env_scripts/CDMATH.py
new file mode 100644 (file)
index 0000000..5569bc3
--- /dev/null
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('CDMATH_ROOT_DIR', prereq_dir)
+    
+    env.set('CDMATH_DIR', prereq_dir)
+
+    root = env.get('CDMATH_DIR')
+    
+    env.prepend('PATH', os.path.join(root, 'include'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'lib'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'lib', 'cdmath'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'bin', 'cdmath'))
+
+        
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/COREFLOWS.py b/products/env_scripts/COREFLOWS.py
new file mode 100644 (file)
index 0000000..caf817a
--- /dev/null
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, product_dir, version):
+    env.set('CoreFlows_INSTALL', product_dir)
+    env.set('CoreFlows_ROOT_DIR', product_dir)
+
+    install_rep = env.get('CoreFlows_INSTALL')
+    root_module_rep = env.get('CoreFlows_ROOT_DIR')
+
+    env.set('CoreFlows_ROOT', product_dir)
+    env.set('CoreFlows_PYTHON', 'ON')
+    env.set('CoreFlows_DOC', 'ON')
+    env.set('CoreFlows_GUI', 'ON')
+    env.set('CoreFlows', os.path.join(install_rep,'bin','Executable','CoreFlowsMainExe'))
+    env.set('CoreFlowsGUI', os.path.join(install_rep,'bin','salome','CoreFlows_Standalone.py'))
+    env.set('COREFLOWS_ROOT_DIR', root_module_rep)
+
+    root = env.get('CoreFlows_ROOT_DIR')
+    
+    env.prepend('PATH', os.path.join(root, 'include'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'lib'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'lib', 'CoreFlows_Python'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'bin', 'CoreFlows_Python'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'lib','python2.7','site-packages','salome'))
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/Cython.py b/products/env_scripts/Cython.py
new file mode 100644 (file)
index 0000000..047f54e
--- /dev/null
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set("CYTHON_ROOT_DIR",prereq_dir)
+
+    versionPython = env.get('PYTHON_VERSION')
+
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin'))
+
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/EFICAS_TOOLS.py b/products/env_scripts/EFICAS_TOOLS.py
new file mode 100644 (file)
index 0000000..e342798
--- /dev/null
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('EFICAS_TOOLS_ROOT_DIR', prereq_dir)   # update for cmake 
+    env.set('EFICAS_TOOLS_ROOT', prereq_dir)
+    env.append('PYTHONPATH', prereq_dir)
+    env.append('LD_LIBRARY_PATH', prereq_dir)
+    ld = ['Accas','Aide','convert','Doc','Editeur','Efi2Xsd','Extensions','generator','Ihm','InterfaceQT4','Noyau','Telemac','Traducteur','UiQT5']
+    if platform.system() == "Windows" :
+        LD_LIBRARY_PATH='PATH'
+    else:
+       LD_LIBRARY_PATH='LD_LIBRARY_PATH'
+        
+    env.append(LD_LIBRARY_PATH, prereq_dir)
+    for d in ld:
+        env.append('PYTHONPATH', os.path.join(prereq_dir, d))
+        env.append(LD_LIBRARY_PATH, os.path.join(prereq_dir, d))
+                                                                                                                        
+def set_nativ_env(env):
+    env.set('EFICAS_TOOLS_ROOT_DIR', '/usr')   # update for cmake
+    env.set('EFICAS_TOOLS_ROOT', '/usr')
+    env.set('EFICAS_TOOLS_LIB_DIR', '/usr/lib')
+    pass
diff --git a/products/env_scripts/Hexotic.py b/products/env_scripts/Hexotic.py
new file mode 100755 (executable)
index 0000000..8c709d0
--- /dev/null
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_distene_licence(env):
+    try:
+        license_file = env.environ.get_value("LICENCE_FILE")
+    except Exception as e:
+        return
+    if os.path.exists(license_file):
+        env.add_line(1)
+        env.add_comment("Set DISTENE License")
+        env.set('DISTENE_LICENSE_FILE', 'Use global envvar: DLIM8VAR')
+
+        if os.access(license_file, os.R_OK):
+            lines = open(license_file, "r").readlines()
+            for line in lines:
+                id1=line.find('r"dlim8')
+                if id1 != -1:
+                    # on a trouvé la clé dlim8 dans line, on extrait sa valeur
+                    id2=line.find('"', id1+2)
+                    if id2 != -1:
+                        env.set("DLIM8VAR", line[id1+2:id2])
+                        break
+
+def set_env(env, prereq_dir, version):
+    if not env.forBuild:
+        # we don't need licence keys at compile time
+        set_distene_licence(env)
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/Homard.py b/products/env_scripts/Homard.py
new file mode 100755 (executable)
index 0000000..9c49ae3
--- /dev/null
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+def set_env(env, prereq_dir, version):
+    env.set('HOMARD_REP_EXE', prereq_dir)
+    root = env.get('HOMARD_REP_EXE')
+    env.set('HOMARD_EXE', 'homard')
+    
+    env.prepend('PATH', root)
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/Jinja2.py b/products/env_scripts/Jinja2.py
new file mode 100755 (executable)
index 0000000..ae77a5d
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('JINJADIR', prereq_dir)
+    env.set('JINJA_ROOT_DIR', prereq_dir) # update for cmake
+    
+    pyver = 'python' + env.get('PYTHON_VERSION')
+
+    if not platform.system() == "Windows" :
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    env.set('JINJA_ROOT_DIR', '/usr') # update for cmake
+    env.set('JINJADIR', '/usr')
diff --git a/products/env_scripts/LIBBATCH.py b/products/env_scripts/LIBBATCH.py
new file mode 100644 (file)
index 0000000..6dac203
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+import os
+import platform
+
+def set_env(env, product_dir, version):
+    env.set('LIBBATCH_ROOT_DIR', product_dir)
+    
+    pyver = 'python' + env.get('PYTHON_VERSION')
+
+    if platform.system() == "Windows" :
+        env.prepend('PATH', os.path.join(product_dir, 'lib'))
+        env.prepend('PATH', os.path.join(product_dir, 'lib', pyver))
+        env.prepend('PYTHONPATH', os.path.join(product_dir, 'lib', pyver))
+    else:
+        env.prepend('LD_LIBRARY_PATH', os.path.join(product_dir, 'lib'))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(product_dir, 'lib', pyver))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/MeshGems.py b/products/env_scripts/MeshGems.py
new file mode 100644 (file)
index 0000000..158b5c6
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_distene_licence(env):
+    try:
+        license_file = env.environ.get_value("LICENCE_FILE")
+    except Exception as e:
+        return
+
+    if os.path.exists(license_file):
+        env.add_line(1)
+        env.add_comment("Set DISTENE License")
+        env.set('DISTENE_LICENSE_FILE', 'Use global envvar: DLIM8VAR')
+
+        if os.access(license_file, os.R_OK):
+            lines = open(license_file, "r").readlines()
+            for line in lines:
+                id1=line.find('r"dlim8')
+                if id1 != -1:
+                    # on a trouvé la clé dlim8 dans line, on extrait sa valeur
+                    id2=line.find('"', id1+2)
+                    if id2 != -1:
+                        env.set("DLIM8VAR", line[id1+2:id2])
+                        break
+
+def set_env(env, prereq_dir, version):
+    env.add_comment("Here you can define your license parameters for MeshGems")
+    env.add_comment("DISTENE license")
+
+    if not env.forBuild:
+        # we don't need licence keys at compile time
+        set_distene_licence(env)
+
+    env.set('MESHGEMSHOME', prereq_dir)
+    env.set('MESHGEMS_ROOT_DIR', prereq_dir)    # update for cmake
+
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+    if platform.system() == "Windows" :
+        env.prepend('PATH', os.path.join(prereq_dir, 'lib'))
+    else :
+        libdir = "Linux_64"
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin', libdir))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib', libdir))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/ParMetis.py b/products/env_scripts/ParMetis.py
new file mode 100644 (file)
index 0000000..d4b6857
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('PARMETISDIR', prereq_dir)
+    env.set('PARMETIS_ROOT_DIR', prereq_dir)   # update for cmake 
+    root = env.get('PARMETISDIR')
+
+    env.prepend('LD_LIBRARY_PATH', root)
+    env.prepend('PATH', root)
+#    env.prepend('PATH', os.path.join(root, "Graphs"))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/ParaView.py b/products/env_scripts/ParaView.py
new file mode 100644 (file)
index 0000000..b8554c2
--- /dev/null
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    # keep only the first two version numbers
+    ver = '.'.join(version.replace('-', '.').split('.')[:2])
+
+    # BUG WITH 5.0_beta
+    if ver == '5.0_beta':
+        ver = '5.0'
+
+    if ver == '5.8.0rc2' :
+        ver = '5.8'
+
+    env.set('PVHOME', prereq_dir)
+    env.set('VTKHOME', prereq_dir)  
+    env.set('PVVERSION', ver)
+    
+    env.set('PARAVIEW_ROOT_DIR', prereq_dir)
+    env.set('PARAVIEW_VERSION', ver)
+
+    set_paraview_env(env, ver)
+    set_vtk_env(env, ver)
+
+def set_nativ_env(env):
+    if os.getenv("PVHOME") is None:
+        raise Exception("PVHOME is not set")
+    
+    if os.getenv("PVVERSION") is None:
+        raise Exception("PVVERSION is not set")
+
+    version = env.get("PVVERSION")
+    set_paraview_env(env, version)
+
+def set_paraview_env(env, version):
+    root = env.get('PVHOME')
+    lib_dir = 'lib'
+    env.set('ParaView_DIR', os.path.join(root, lib_dir, 'paraview-%s' % version))
+    env.prepend('PATH', os.path.join(root, 'bin'))
+    
+    if platform.system() == "Windows" :
+        paralib = os.path.join(root, 'lib', 'paraview-' + version)
+        env.prepend('PATH', paralib)
+        env.prepend('PV_PLUGIN_PATH', paralib)
+        env.prepend('PYTHONPATH', os.path.join(root,'bin', 'Lib', 'site-packages'))
+        env.prepend('PYTHONPATH', os.path.join(root,'bin', 'Lib', 'site-packages'))
+        env.prepend('PYTHONPATH', os.path.join(root,'bin', 'Lib', 'site-packages', 'paraview'))
+        env.prepend('PYTHONPATH', os.path.join(root,'bin', 'Lib', 'site-packages', 'vtk'))
+    else:
+        paralib = os.path.join(root, lib_dir, 'paraview-' + version)
+        env.prepend('PV_PLUGIN_PATH', paralib)
+        env.prepend('PYTHONPATH', os.path.join(paralib, 'site-packages'))
+        env.prepend('PYTHONPATH', os.path.join(paralib, 'site-packages', 'vtk'))
+        env.prepend('PATH', os.path.join(root, 'include', 'paraview-' + version))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(root, lib_dir, 'paraview-' + version))
+        env.prepend('PYTHONPATH', paralib)
+
+def set_vtk_env(env, version):
+    root = env.get('VTKHOME')
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    lib_dir = 'lib'
+
+    #env.prepend('PATH', os.path.join(root, 'bin'))
+
+    env.set('VTK_ROOT_DIR', root)
+    env.set('VTK_DIR', os.path.join(root, lib_dir, 'cmake', 'paraview-' + version))
+    # OP TEST
+    env.prepend('VTK_ROOT_DIR', os.path.join(root, lib_dir, 'cmake', 'paraview-' + version))
+    #env.prepend('VTK_ROOT_DIR', os.path.join(root, lib_dir, 'paraview-' + version))
+    
+    if not platform.system() == "Windows" :
+        #http://computer-programming-forum.com/57-tcl/1dfddc136afccb94.htm
+        #Tcl treats the contents of that variable as a list. Be happy, for you can now use drive letters on windows.
+        env.prepend('LD_LIBRARY_PATH', os.path.join(root, lib_dir))
+        env.prepend('PYTHONPATH', os.path.join(root, lib_dir, pyver, 'site-packages'))
+
+    # 20 03 2013 compilation de PARAVIS basé sur paraview 3.98.1 et VTK 6
+    if version == '3.98':
+        cmake_dir = os.path.join(root, 'lib', 'cmake', 'paraview-' + version)
+        env.set('VTK_DIR', cmake_dir)
+    # fin
+
diff --git a/products/env_scripts/ParaViewData.py b/products/env_scripts/ParaViewData.py
new file mode 100755 (executable)
index 0000000..99be4d0
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+def set_env(env, prereq_dir, version):
+    env.set('PARAVIEWDATA_ROOT_DIR', prereq_dir)
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/Pillow.py b/products/env_scripts/Pillow.py
new file mode 100644 (file)
index 0000000..559053d
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+    env.set("PILLOW_ROOT_DIR",prereq_dir)
+
+    versionPython = env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin'))
+               
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/PyHamcrest.py b/products/env_scripts/PyHamcrest.py
new file mode 100644 (file)
index 0000000..ab2276b
--- /dev/null
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('PYHAMCREST_ROOT_DIR', prereq_dir)
+    
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/PyQt.py b/products/env_scripts/PyQt.py
new file mode 100644 (file)
index 0000000..73db42d
--- /dev/null
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('PYQTDIR', prereq_dir)
+  version_table = version.split('.')
+  if version_table[0] == '5':
+    env.set('PYQT5_ROOT_DIR', prereq_dir)
+  else:
+    env.set('PYQT4_ROOT_DIR', prereq_dir)
+
+  env.set('PYQT_SIPS', os.path.join(prereq_dir, 'sip'))
+  env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+  env.prepend('PYTHONPATH', prereq_dir)
+  pyver = 'python' + env.get('PYTHON_VERSION')
+  env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+  if not platform.system() == "Windows" :
+    env.set('PYUIC5',os.path.join(prereq_dir, 'bin','pyuic5'))
+    env.prepend('LD_LIBRARY_PATH', prereq_dir)
+  else:
+    env.set('PYUIC5',os.path.join(prereq_dir, 'bin','pyuic5.bat'))
+
+def set_nativ_env(env):
+  env.set('PYQT5_ROOT_DIR', '/usr')
diff --git a/products/env_scripts/Pygments.py b/products/env_scripts/Pygments.py
new file mode 100755 (executable)
index 0000000..ed06696
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('PYGMENTS_ROOT_DIR', prereq_dir) # update for cmake
+    env.set('PYGMENTSDIR', prereq_dir)
+    
+    if not platform.system() == "Windows" :
+        pyver = 'python' + env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/Python.py b/products/env_scripts/Python.py
new file mode 100644 (file)
index 0000000..cec24e3
--- /dev/null
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env,prereq_dir,version,forBuild=None):
+    env.set('PYTHONHOME', prereq_dir)
+        
+    # [CMake KERNEL] Nouveau nom pour PYTHONHOME = PYTHON_ROOT_DIR 22/03/2013
+    env.set('PYTHON_ROOT_DIR', prereq_dir)
+
+    # keep only the first two version numbers
+    version = '.'.join(version.replace('-', '.').split('.')[:2])
+    env.set('PYTHON_VERSION', version)
+    
+    env.prepend('PATH', prereq_dir)
+
+    if platform.system() == "Windows" :
+        env.set('PYTHON_INCLUDE', os.path.join(prereq_dir, 'include'))
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib'))
+        env.set('PYTHON_SITE_PACKAGES',os.path.join(prereq_dir, 'lib','site-packages'))
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib','site-packages'))
+        env.set('PYTHONBIN', os.path.join(prereq_dir, 'python.exe'))  # needed for runSalome.py
+        env.prepend('PATH', os.path.join(prereq_dir, 'libs'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'Scripts'))
+    else :
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+        env.set('PYTHON_INCLUDE', os.path.join(prereq_dir, 'include', 'python' + version))
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', 'python' + version))
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', 'python' + version, 'site-packages'))
+        if version[0]=='3':
+            env.set('PYTHONBIN', os.path.join(prereq_dir, 'bin','python3'))  # needed for runSalome.py
+        else:
+            env.set('PYTHONBIN', os.path.join(prereq_dir, 'bin','python'))  # needed for runSalome.py
+    
+
+def set_nativ_env(env):
+    import sys
+    #env.set('PYTHONHOME',"%s.%s" % sys.version_info[0:2])
+    env.set('PYTHON_ROOT_DIR', '/usr')
+    env.set('PYTHON_VERSION', "%s.%s" % sys.version_info[0:2])
+    if sys.version_info[0] == 3 :
+        env.set('PYTHONBIN','/usr/bin/python3')
+    else:
+        env.set('PYTHONBIN','/usr/bin/python2')
+
diff --git a/products/env_scripts/SAMPLES.py b/products/env_scripts/SAMPLES.py
new file mode 100644 (file)
index 0000000..4223758
--- /dev/null
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    product_root_dir=env.get("PRODUCT_ROOT_DIR")
+    env.set('SAMPLES_SRC_DIR', os.path.join(product_root_dir, "SOURCES", "SAMPLES"))
+    env.set('DATA_DIR', env.get("SAMPLES_SRC_DIR"))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/SOLVERLAB.py b/products/env_scripts/SOLVERLAB.py
new file mode 100644 (file)
index 0000000..caf817a
--- /dev/null
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, product_dir, version):
+    env.set('CoreFlows_INSTALL', product_dir)
+    env.set('CoreFlows_ROOT_DIR', product_dir)
+
+    install_rep = env.get('CoreFlows_INSTALL')
+    root_module_rep = env.get('CoreFlows_ROOT_DIR')
+
+    env.set('CoreFlows_ROOT', product_dir)
+    env.set('CoreFlows_PYTHON', 'ON')
+    env.set('CoreFlows_DOC', 'ON')
+    env.set('CoreFlows_GUI', 'ON')
+    env.set('CoreFlows', os.path.join(install_rep,'bin','Executable','CoreFlowsMainExe'))
+    env.set('CoreFlowsGUI', os.path.join(install_rep,'bin','salome','CoreFlows_Standalone.py'))
+    env.set('COREFLOWS_ROOT_DIR', root_module_rep)
+
+    root = env.get('CoreFlows_ROOT_DIR')
+    
+    env.prepend('PATH', os.path.join(root, 'include'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'lib'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'lib', 'CoreFlows_Python'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'bin', 'CoreFlows_Python'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'lib','python2.7','site-packages','salome'))
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/Sphinx.py b/products/env_scripts/Sphinx.py
new file mode 100755 (executable)
index 0000000..7b363f3
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('SPHINXDIR', prereq_dir)
+    env.set('SPHINX_ROOT_DIR', prereq_dir)   
+    if not platform.system() == "Windows" :
+        env.prepend('PATH',prereq_dir)
+        env.set('SPHINX_EXECUTABLE',os.path.join(prereq_dir, 'Scripts','sphinx-build.exe'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'Scripts'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        pyver = 'python' + env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    env.set('SPHINXDIR', '/usr')
+    env.set('SPHINX_ROOT_DIR', '/usr')
diff --git a/products/env_scripts/TRUST.py b/products/env_scripts/TRUST.py
new file mode 100644 (file)
index 0000000..5c134c4
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set("TRUST_ROOT_DIR",prereq_dir)
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'include'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/Togl.py b/products/env_scripts/Togl.py
new file mode 100644 (file)
index 0000000..f0a75e4
--- /dev/null
@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('TOGL_ROOT_DIR', prereq_dir)   # update for cmake 
+    env.set('TOGL', prereq_dir)
+    env.set('TOGL_SHORT_VERSION', version.split('-')[0])
+    
+    togl = env.get('TOGL_ROOT_DIR')
+
+    env.set('TOGL_LIB_DIR', os.path.join(togl, 'lib', 'Togl' + version.split('-')[0]))
+    
+    env.prepend('PATH', env.get('TOGL_LIB_DIR'))
+
+    if platform.system() == "Windows" :
+        env.prepend('LIB', env.get('TOGL_LIB_DIR'))
+        env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+
+def set_nativ_env(env):
+    env.set('TOGL_ROOT_DIR', '/usr')   # update for cmake
+    env.set('TOGL', '/usr')
+    env.set('TOGL_LIB_DIR', '/usr/lib')
+
diff --git a/products/env_scripts/TrioCFD.py b/products/env_scripts/TrioCFD.py
new file mode 100644 (file)
index 0000000..4fb4fc7
--- /dev/null
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set("TRIOCFD_ROOT_DIR",prereq_dir)
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/XDATA.py b/products/env_scripts/XDATA.py
new file mode 100644 (file)
index 0000000..07e1494
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('XDATAROOT', prereq_dir)
+    env.set('XDATA_ROOT_DIR', prereq_dir)    # update for cmake
+    root = env.get('XDATAROOT')
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    
+    env.prepend('PATH', os.path.join(root, 'bin'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'lib', pyver, 'site-packages', 'xdata'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/YACSGEN.py b/products/env_scripts/YACSGEN.py
new file mode 100644 (file)
index 0000000..2e14c8a
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('YACSGENROOT', prereq_dir)
+    env.set('YACSGEN_ROOT_DIR', prereq_dir)    # update for cmake
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/alabaster.py b/products/env_scripts/alabaster.py
new file mode 100644 (file)
index 0000000..1038710
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+    env.set("ALABASTER_ROOT_DIR",prereq_dir)
+    versionPython = env.get('PYTHON_VERSION')
+    if platform.system() == "Windows" :
+        pass
+    else :
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
+
diff --git a/products/env_scripts/boost.py b/products/env_scripts/boost.py
new file mode 100755 (executable)
index 0000000..fc95367
--- /dev/null
@@ -0,0 +1,28 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  if platform.system() == "Windows" :
+    prereq_dir = prereq_dir.replace('/','\\')
+    env.set('BOOSTDIR', prereq_dir)
+    env.set('BOOST_ROOT_DIR', prereq_dir)
+    env.set('BOOST_ROOT', prereq_dir)
+    env.set('BOOST_INCLUDE_DIR',os.path.join(prereq_dir,'include','boost-1_67','boost'))
+    env.set('Boost_INCLUDE_DIR',os.path.join(prereq_dir,'include','boost-1_67','boost'))
+    env.set('BOOST_INCLUDEDIR',os.path.join(prereq_dir,'include','boost-1_67','boost'))
+    env.set('Boost_ADDITIONAL_VERSIONS',"'1.67.0 1.67'")
+    env.set('BOOST_LIBRARY_DIR',os.path.join(prereq_dir,'lib'))
+    env.set('BOOST_LIBRARYDIR',os.path.join(prereq_dir,'lib'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'lib'))
+  else :
+    env.set('BOOSTDIR', prereq_dir)
+    env.set('BOOST_ROOT_DIR', prereq_dir)
+    env.prepend('PATH', os.path.join(prereq_dir, 'include'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+        
+def set_nativ_env(env):
+  env.set('BOOSTDIR', '/usr')
+  env.set('BOOST_ROOT_DIR', '/usr')
diff --git a/products/env_scripts/bsd_xdr.py b/products/env_scripts/bsd_xdr.py
new file mode 100755 (executable)
index 0000000..b2aed03
--- /dev/null
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('BSD_XDR_DIR', prereq_dir)
+    
+    env.set('BSD_XDR_BIN', os.path.join(prereq_dir, 'bin'))
+    env.set('BSD_XDR_INCLUDE_DIR', os.path.join(prereq_dir, 'include'))
+    env.set('BSD_XDR_LIBRARY', os.path.join(prereq_dir, 'lib'))
+    
+    env.prepend('INCLUDE', env.get('BSD_XDR_INCLUDE_DIR'))
+    env.prepend('PATH', env.get('BSD_XDR_BIN'))
+
+    if not platform.system() == "Windows" :
+        env.prepend('PATH', env.get('BSD_XDR_LIBRARY'))
+            
+def set_nativ_env(env):
+    env.set('BSD_XDR_DIR', '/usr')
diff --git a/products/env_scripts/ceatest.py b/products/env_scripts/ceatest.py
new file mode 100644 (file)
index 0000000..a8598cf
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set("CEATESTBASE_ROOT_DIR", prereq_dir)
+    root=env.get("CEATESTBASE_ROOT_DIR")
+    env.set('TT_BASE_RESSOURCES', os.path.join(root, "bin", "salome", "test", "RESSOURCES")) 
+    env.set('TT_TMP_RESULT', os.path.join(root, "bin", "salome", "test", "tmp")) 
+    env.prepend('PYTHONPATH', env.get("TT_BASE_RESSOURCES"))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/certifi.py b/products/env_scripts/certifi.py
new file mode 100644 (file)
index 0000000..efae69d
--- /dev/null
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set("CERTIFI_ROOT_DIR",prereq_dir)
+
+    versionPython = env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/cgns.py b/products/env_scripts/cgns.py
new file mode 100644 (file)
index 0000000..576d8f3
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+  env.set('CGNS_ROOT_DIR', prereq_dir)
+  env.set('CGNS_INCLUDE_DIR',os.path.join(prereq_dir,'include'))
+  env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+  if platform.system() == "Windows" :
+    env.set('CGNS_LIBRARY',os.path.join(prereq_dir,'lib','libcgnsdll.lib'))
+  else:
+    env.set('CGNS_LIBRARY',os.path.join(prereq_dir,'lib','libcgns.so'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+  env.set('CGNS_ROOT_DIR', '/usr')
diff --git a/products/env_scripts/chardet.py b/products/env_scripts/chardet.py
new file mode 100644 (file)
index 0000000..f6e7029
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set("CHARDET_ROOT_DIR",prereq_dir)
+
+    versionPython = env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/click.py b/products/env_scripts/click.py
new file mode 100644 (file)
index 0000000..15f1afd
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+    env.set("CLICK_ROOT_DIR",prereq_dir)
+    versionPython = env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/cmake.py b/products/env_scripts/cmake.py
new file mode 100755 (executable)
index 0000000..51fbc67
--- /dev/null
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('CMAKE_ROOT', prereq_dir)
+    
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    env.set('CMAKE_ROOT', '/usr')
+
diff --git a/products/env_scripts/colorama.py b/products/env_scripts/colorama.py
new file mode 100755 (executable)
index 0000000..6ba9689
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('COLORAMA_ROOT_DIR', env.get('PYTHON_ROOT_DIR'))
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/cppunit.py b/products/env_scripts/cppunit.py
new file mode 100644 (file)
index 0000000..53e4c7b
--- /dev/null
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('CPPUNITHOME', prereq_dir)
+    env.set('CPPUNIT_ROOT', prereq_dir)
+    env.set('CPPUNIT_ROOT_DIR', prereq_dir) # update for cmake   
+    
+    env.set('CPPUNITINSTDIR', prereq_dir)
+    
+    if platform.system() == "Windows" :
+        env.prepend('PATH', os.path.join(prereq_dir, 'lib'))
+    else :
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    env.set('CPPUNIT_ROOT_DIR', '/usr') # update for cmake 
+    env.set('CPPUNITHOME','/usr')
+    env.set('CPPUNIT_ROOT','/usr')
diff --git a/products/env_scripts/cycler.py b/products/env_scripts/cycler.py
new file mode 100644 (file)
index 0000000..e129007
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set("CYCLER_ROOT_DIR",prereq_dir)
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/dateutil.py b/products/env_scripts/dateutil.py
new file mode 100644 (file)
index 0000000..57624a2
--- /dev/null
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    #env.set('DATEUTIL_ROOT_DIR', env.get('PYTHON_ROOT_DIR'))
+    env.set('DATEUTIL_ROOT_DIR', prereq_dir)
+    if not platform.system() == "Windows" :
+        pyver = 'python' + env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/distribute.py b/products/env_scripts/distribute.py
new file mode 100644 (file)
index 0000000..0f043ba
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    #env.set('DISTRIBUTE_ROOT_DIR', env.get('PYTHON_ROOT_DIR'))
+    env.set('DISTRIBUTE_ROOT_DIR', prereq_dir)
+
+    if platform.system() == "Windows" :
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'site-packages'))
+    else:
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        pyver = 'python' + env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/docutils.py b/products/env_scripts/docutils.py
new file mode 100755 (executable)
index 0000000..51504d5
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('DOCUTILSDIR', prereq_dir)
+    env.set('DOCUTILS_ROOT_DIR', prereq_dir) # update for cmake
+    if not platform.system() == "Windows" :
+        pyver = 'python' + env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    env.set('DOCUTILS_ROOT_DIR', '/usr') # update for cmake
+    env.set('DOCUTILSDIR', '/usr')
+    pass
diff --git a/products/env_scripts/doxygen.py b/products/env_scripts/doxygen.py
new file mode 100755 (executable)
index 0000000..757cd78
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('DOXYGENDIR', prereq_dir)
+    env.set('DOXYGEN_ROOT_DIR', prereq_dir)
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    env.set('DOXYGENDIR', '/usr')
+    env.set('DOXYGEN_ROOT_DIR', '/usr')
+
diff --git a/products/env_scripts/eigen.py b/products/env_scripts/eigen.py
new file mode 100644 (file)
index 0000000..9db1557
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('EIGEN_ROOT_DIR', prereq_dir)    # update for cmake
+  root = env.get('EIGEN_ROOT_DIR')
+  if platform.system() != "Windows" :
+    pass
+  else:
+    env.prepend('PATH', os.path.join(root, 'include', 'eigen3'))
+
+def set_nativ_env(env):
+  env.set('EIGEN_ROOT_DIR', '/usr')
diff --git a/products/env_scripts/embree.py b/products/env_scripts/embree.py
new file mode 100644 (file)
index 0000000..7703c62
--- /dev/null
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('EMBREE_ROOT_DIR', prereq_dir)
+  env.set('EMBREE_VERSION', version)
+  env.set('embree_DIR', prereq_dir)
+  if platform.system() == "Windows":
+    env.prepend('PATH',os.path.join(prereq_dir, 'bin'))
+  else:
+    env.prepend('LD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/expat.py b/products/env_scripts/expat.py
new file mode 100755 (executable)
index 0000000..731e73f
--- /dev/null
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('EXPAT_DIR', prereq_dir)
+  env.set('EXPAT_ROOT_DIR', prereq_dir)  # update for cmake  
+  root = env.get('EXPAT_DIR')
+  if platform.system() == "Windows" :
+    env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('LIB', os.path.join(prereq_dir, 'bin'))
+  else :    
+    env.prepend('PATH', os.path.join(root, 'bin'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib'))
+
+def set_nativ_env(env):
+  env.set('EXPAT_ROOT_DIR', '/usr')  # update for cmake 
+  env.set('EXPAT_DIR', '/usr')
diff --git a/products/env_scripts/f2c.py b/products/env_scripts/f2c.py
new file mode 100644 (file)
index 0000000..660019f
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('F2C_ROOT_DIR', prereq_dir)
+    
+    env.set('F2C_BIN', prereq_dir)
+    env.set('F2C_LIBRARIES', prereq_dir)
+    env.set('F2C_INCLUDE_DIR', prereq_dir)
+    
+    env.prepend('INCLUDE', prereq_dir)
+    env.prepend('LIB', prereq_dir)
+    env.prepend('PATH', prereq_dir)
+    
+def set_nativ_env(env):
+    pass
+
+    
diff --git a/products/env_scripts/freeimage.py b/products/env_scripts/freeimage.py
new file mode 100644 (file)
index 0000000..ac0ccae
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('FREEIMAGEDIR', prereq_dir)
+  env.set('FREEIMAGE_ROOT_DIR', prereq_dir)    # update for cmake
+  env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+  if platform.system() == "Windows" :
+    env.prepend('LIBS', os.path.join(prereq_dir, 'lib'))
+  else:
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    # CAS KO on UB16 with this vars set because /usr/lib/x86_64-linux-gnu/libfreeimage.so is not found
+    #env.set('FREEIMAGE_ROOT_DIR', '/usr')    # update for cmake
+    #env.set('FREEIMAGEDIR', '/usr')
+    pass
diff --git a/products/env_scripts/freetype.py b/products/env_scripts/freetype.py
new file mode 100755 (executable)
index 0000000..90792a6
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+import os
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('FREETYPEDIR', prereq_dir)
+    env.set('FREETYPE_ROOT_DIR', prereq_dir)    # update for cmake
+    
+    env.set('FREETYPE_BIN', os.path.join(prereq_dir, 'bin'))
+    env.set('FREETYPE_LIBRARY', os.path.join(prereq_dir, 'lib'))
+    env.set('FREETYPE_INCLUDE_DIR', os.path.join(prereq_dir, 'include'))
+
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+    if platform.system() == "Windows" :
+        env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+        env.prepend('LIB', os.path.join(prereq_dir, 'bin'))
+        env.prepend('CPLUS_INCLUDE_PATH', os.path.join(prereq_dir, 'include', 'freetype'))
+    else:
+        env.prepend('PKG_CONFIG_PATH', os.path.join(prereq_dir, 'lib', 'pkgconfig'))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))      
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/ftgl.py b/products/env_scripts/ftgl.py
new file mode 100755 (executable)
index 0000000..6930251
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('FTGLDIR', prereq_dir)
+    env.set('FTGL_ROOT_DIR', prereq_dir)    # update for cmake
+    root = env.get('FTGLDIR')
+    
+    env.prepend('PATH', os.path.join(root, 'bin'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib'))
+    #env.set('LD_PRELOAD', os.path.join(root, 'lib', 'libftgl.so'))
+
+def set_nativ_env(env):
+    env.set('FTGL_ROOT_DIR', '/usr')    # update for cmake
+    env.set('FTGLDIR', '/usr')
diff --git a/products/env_scripts/functools32.py b/products/env_scripts/functools32.py
new file mode 100644 (file)
index 0000000..1194be1
--- /dev/null
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+
+def set_env(env, prereq_dir, version):
+    env.set("FUNCTOOLS_ROOT_DIR",prereq_dir)
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/gcc.py b/products/env_scripts/gcc.py
new file mode 100644 (file)
index 0000000..d900c8b
--- /dev/null
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+  if not platform.system() == "Windows" :
+    env.set('CC', os.path.join(prereq_dir,'bin','gcc'))
+    env.set('CXX', os.path.join(prereq_dir,'bin','g++'))
+    env.set('FC', os.path.join(prereq_dir,'bin','gfortran'))
+    env.set('EBROOTGCC', version)
+    env.set('EBVERSIONGCC', version)
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib64'))
+    env.prepend('LIBRARY_PATH', os.path.join(prereq_dir, 'lib64'))
+    env.prepend('MANPATH', os.path.join(prereq_dir, 'share','man'))
+    env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+    env.prepend('CPATH', os.path.join(prereq_dir, 'include'))
+
+def set_nativ_env(env):
+  pass
diff --git a/products/env_scripts/gl2ps.py b/products/env_scripts/gl2ps.py
new file mode 100755 (executable)
index 0000000..638ada3
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('GL2PSDIR', prereq_dir)
+  env.set('GL2PS_ROOT_DIR', prereq_dir)
+    
+  env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+  if not platform.system() == "Windows" :
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+  pass
diff --git a/products/env_scripts/glu.py b/products/env_scripts/glu.py
new file mode 100644 (file)
index 0000000..26f2686
--- /dev/null
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('GLUROOT', prereq_dir)
+    env.set('GLU_ROOT_DIR', prereq_dir)
+
+    #l = []
+    #l.append(os.path.join(prereq_dir, 'bin'))
+    #l.append(os.path.join(prereq_dir, 'include', 'glu'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'include', 'glu'))
+
+    #l = []
+    #l.append(os.path.join(prereq_dir, 'lib'))
+    #l.append(os.path.join(prereq_dir, 'lib', 'glu'))
+    
+    if platform.system() == "Windows" :
+        env.prepend('LIB', os.path.join(prereq_dir, 'lib'))
+        env.prepend('LIB', os.path.join(prereq_dir, 'lib', 'glu'))
+        env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'lib'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'lib', 'glu'))
+    else :
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib', 'glu'))
+
+def set_nativ_env(env):
+    env.set('GLUROOT', '/usr')
+    env.set('GLU_ROOT_DIR', '/usr')
diff --git a/products/env_scripts/gmsh.py b/products/env_scripts/gmsh.py
new file mode 100644 (file)
index 0000000..f75a473
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version): 
+  env.set('GMSHHOME', prereq_dir)
+  env.set('GMSH_ROOT_DIR', prereq_dir)
+  if platform.system() == "Windows" :
+    env.append('PATH',os.path.join(prereq_dir,'bin'))
+  else:
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    env.set('GMSH_ROOT_DIR', '/usr')
diff --git a/products/env_scripts/graphviz.py b/products/env_scripts/graphviz.py
new file mode 100644 (file)
index 0000000..54e0a9f
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('GRAPHVIZROOT', prereq_dir)
+    env.set('GRAPHVIZ_ROOT_DIR', prereq_dir)
+
+    if platform.system() == "Windows" :
+        env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('LIB', os.path.join(prereq_dir, 'bin'))
+        env.set('DOT_PATH',os.path.join(prereq_dir, 'bin'))
+    else :
+        # OP 16/10/2018 Bug with launcher generation during sat package
+        #               Do not set several simultaneous directories
+        #               in variables
+        #l = []
+        #l.append(os.path.join(prereq_dir, 'bin'))
+        ## OP ???
+        #l.append(os.path.join(prereq_dir, 'include', 'graphviz'))
+        #env.prepend('PATH', l)
+        #l = []
+        #l.append(os.path.join(prereq_dir, 'lib'))
+        #l.append(os.path.join(prereq_dir, 'lib', 'graphviz'))
+        #env.prepend('LD_LIBRARY_PATH', l)
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        # OP ???
+        env.prepend('PATH', os.path.join(prereq_dir, 'include', 'graphviz'))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib', 'graphviz'))
+
+def set_nativ_env(env):
+    env.set('GRAPHVIZROOT', '/usr')
+    env.set('GRAPHVIZ_ROOT_DIR', '/usr')
diff --git a/products/env_scripts/hdf5.py b/products/env_scripts/hdf5.py
new file mode 100644 (file)
index 0000000..c9c08ce
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+    env.set('HDF5HOME', prereq_dir)
+    env.set('HDF5_DIR', prereq_dir)
+    env.set('HDF5_ROOT', prereq_dir)
+    env.set('HDF5_ROOT_DIR', prereq_dir)
+
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+    env.set('HDF5_LIBRARIES', os.path.join(prereq_dir, 'lib'))
+    env.set('HDF5_INCLUDE_DIRS', os.path.join(prereq_dir, 'include'))
+    env.set('HDF5_VERSION', version)
+
+    if not platform.system() == "Windows" :
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+    
+def set_nativ_env(env):
+    env.set('HDF5HOME', '/usr')
+    env.set('HDF5_ROOT', '/usr')
+    env.set('HDF5_ROOT_DIR', '/usr')    # update for cmake
+
diff --git a/products/env_scripts/idna.py b/products/env_scripts/idna.py
new file mode 100644 (file)
index 0000000..ebd461e
--- /dev/null
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set("IDNA_ROOT_DIR",prereq_dir)
+
+    if not platform.system() == "Windows" :
+        versionPython = env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/imagesize.py b/products/env_scripts/imagesize.py
new file mode 100644 (file)
index 0000000..418ad46
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+def set_env(env, prereq_dir, version):
+    env.set("IMAGESIZE_ROOT_DIR",prereq_dir)
+
+    if not platform.system() == "Windows" :
+        versionPython = env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/ispc.py b/products/env_scripts/ispc.py
new file mode 100644 (file)
index 0000000..066fffd
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/env python
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('ISPC_ROOT_DIR', prereq_dir)    # update for cmake
+    # access to ispc binary
+    env.prepend('PATH', os.path.join(prereq_dir,'bin'))
+    
diff --git a/products/env_scripts/kiwisolver.py b/products/env_scripts/kiwisolver.py
new file mode 100644 (file)
index 0000000..981661d
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+def set_env(env, prereq_dir, version):
+    env.set("KIWISOLVER_ROOT_DIR",prereq_dir)
+    if not platform.system() == "Windows" :
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        versionPython = env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin'))
+
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/lapack.py b/products/env_scripts/lapack.py
new file mode 100644 (file)
index 0000000..688695d
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('LAPACKHOME', prereq_dir)
+  env.set('LAPACK_ROOT_DIR', prereq_dir)
+  env.set('LAPACK_SRC', os.path.join(prereq_dir,'SRC'))
+  env.set('BLAS_SRC', os.path.join(prereq_dir,'BLAS','SRC'))
+    
+  if not platform.system() == "Windows" :
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+    # FOR NUMPY AND SCIPY
+    env.set('BLAS', os.path.join(prereq_dir, 'lib'))
+    env.set('LAPACK', os.path.join(prereq_dir, 'lib'))
+    env.set('ATLAS', os.path.join(prereq_dir, 'lib'))
+  else:
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    env.set('LAPACKHOME', '/usr')
+
diff --git a/products/env_scripts/lata.py b/products/env_scripts/lata.py
new file mode 100644 (file)
index 0000000..9ce8653
--- /dev/null
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.prepend('PV_PLUGIN_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    pass
+
diff --git a/products/env_scripts/libjpeg.py b/products/env_scripts/libjpeg.py
new file mode 100644 (file)
index 0000000..9813f30
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  # this prerequisites is only used on windows platform
+  if platform.system()=="Windows" :
+    env.set('LIBJPEG_DIR', prereq_dir)
+    env.set('LIBJPEG_BINDIR', os.path.join(prereq_dir, 'bin'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('LIB', os.path.join(prereq_dir, 'bin'))
+  else:
+    pass
+
+def set_nativ_env(env):
+    pass
+
+    
diff --git a/products/env_scripts/libpng.py b/products/env_scripts/libpng.py
new file mode 100755 (executable)
index 0000000..2258bfe
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  # this prerequisites is only used on windows platform
+  if platform.system()=="Windows" :
+    env.set('LIBPNG_DIR', prereq_dir)
+    env.set('LIBPNG_BINDIR', os.path.join(prereq_dir, 'bin'))
+    env.set('LIBPNG_LIBRARY', os.path.join(prereq_dir, 'bin'))
+    env.set('LIBPNG_INCLUDE_DIR', os.path.join(prereq_dir, 'include'))
+    env.set('PNG_LIBRARIES', os.path.join(prereq_dir, 'bin'))
+    env.set('PNG_INCLUDE_DIR', os.path.join(prereq_dir, 'include'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+    env.prepend('LIB', os.path.join(prereq_dir, 'bin'))
+  else:
+    pass
+
+def set_nativ_env(env):
+    pass
+
+    
diff --git a/products/env_scripts/libxml2.py b/products/env_scripts/libxml2.py
new file mode 100644 (file)
index 0000000..ccef495
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('LIBXML_DIR', prereq_dir)
+    env.set('LIBXML2_ROOT_DIR', prereq_dir)
+    
+    env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+    if not platform.system() == "Windows" :
+        pyver = 'python' + env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/llvm.py b/products/env_scripts/llvm.py
new file mode 100644 (file)
index 0000000..9a2c22d
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('LLVMROOT', prereq_dir)
+  env.set('LLVM_HOME', prereq_dir)
+  env.set('LLVM_ROOT_DIR', prereq_dir)
+  if platform.system() == "Windows" :
+    env.prepend('LIB', os.path.join(prereq_dir, 'lib'))
+    env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+  else :
+    # OP ???
+    env.prepend('PATH', os.path.join(prereq_dir, 'include', 'llvm'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'lib'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    env.set('LLVMROOT', '/usr')
+    env.set('LLVM_ROOT_DIR', '/usr')
diff --git a/products/env_scripts/markupsafe.py b/products/env_scripts/markupsafe.py
new file mode 100644 (file)
index 0000000..90a4b5a
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set("MARKUPSAFE_ROOT_DIR",prereq_dir)
+
+    versionPython = env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/matplotlib.py b/products/env_scripts/matplotlib.py
new file mode 100644 (file)
index 0000000..cca2425
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+def set_env(env, prereq_dir, version):
+    env.set('MATPLOTLIB_ROOT_DIR', prereq_dir)
+    if not platform.system() == "Windows" :
+        pyver = 'python' + env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+    # FOR THE FILE CONFIG MATPLOTLIBRC
+    env.set('MPLCONFIGDIR', prereq_dir)
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/med.py b/products/env_scripts/med.py
new file mode 100644 (file)
index 0000000..7a2da79
--- /dev/null
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+    env.set('MED3HOME', prereq_dir)
+    env.set('MED2HOME', prereq_dir)
+    env.set('MEDFILE_ROOT_DIR', prereq_dir)    # update for cmake
+    
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))    
+   
+    if platform.system() == "Windows" :
+        env.prepend('PATH', os.path.join(prereq_dir, 'lib'))
+    else :
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    env.set('MEDFILE_ROOT_DIR', '/usr')    # update for cmake
+    env.set('MED3HOME', '/usr')
+    env.set('MED2HOME', '/usr')
diff --git a/products/env_scripts/mesa.py b/products/env_scripts/mesa.py
new file mode 100644 (file)
index 0000000..e02f75e
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('MESAROOT', prereq_dir)
+  env.set('MESA_ROOT_DIR', prereq_dir)
+  env.set('XLIB_SKIP_ARGB_VISUALS', '1')
+    
+  if platform.system() == "Windows" :
+    env.prepend('PATH', os.path.join(prereq_dir, 'x64'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'x64','osmesa-gallium'))
+  else:
+    env.prepend('PATH', os.path.join(prereq_dir, 'include', 'GL'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+    if version.startswith('19'):
+      env.set('MESA_GL_VERSION_OVERRIDE','4.5')
+
+def set_nativ_env(env):
+  env.set('MESAROOT', '/usr')
+  env.set('MESA_ROOT_DIR', '/usr')
+  env.set('XLIB_SKIP_ARGB_VISUALS', '1')
diff --git a/products/env_scripts/metis.py b/products/env_scripts/metis.py
new file mode 100755 (executable)
index 0000000..09f763b
--- /dev/null
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('METISDIR', prereq_dir)
+    env.set('METIS_ROOT_DIR', prereq_dir)  # update for cmake  
+
+    env.set('METIS_BIN', os.path.join(prereq_dir, 'bin'))
+    env.set('METIS_LIBRARY', os.path.join(prereq_dir, 'lib'))
+    env.set('METIS_LIBRARIES', os.path.join(prereq_dir, 'lib'))
+    env.set('METIS_INCLUDE_DIR', os.path.join(prereq_dir, 'include'))
+
+    if platform.system() == "Windows" :
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    
+def set_nativ_env(env):
+    env.set('METISDIR', '/usr')
+    env.set('METIS_ROOT_DIR', '/usr')  # update for cmake    
diff --git a/products/env_scripts/msvc.py b/products/env_scripts/msvc.py
new file mode 100644 (file)
index 0000000..217e9aa
--- /dev/null
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('MSVC_ROOT_DIR', prereq_dir)    
+    env.prepend('PATH', prereq_dir)
+    
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/netgen.py b/products/env_scripts/netgen.py
new file mode 100755 (executable)
index 0000000..44c5955
--- /dev/null
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('NETGENHOME', prereq_dir)
+    env.set('NETGEN_ROOT_DIR', prereq_dir)
+    
+    env.set('NETGEN_BIN', os.path.join(prereq_dir, 'bin'))
+    env.set('NETGEN_LIBRARY', os.path.join(prereq_dir, 'lib'))
+    env.set('NETGEN_LIBRARIES', os.path.join(prereq_dir, 'lib'))
+    env.set('NETGEN_INCLUDE_DIR', os.path.join(prereq_dir, 'include'))
+    env.set('NETGEN_INCLUDE_DIRS', os.path.join(prereq_dir, 'include'))
+    
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    
+    if platform.system() == "Windows" :
+        env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+        env.prepend('LIB', os.path.join(prereq_dir, 'lib'))
+    else :
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+    
+def set_nativ_env(env):
+    env.set('NETGEN_ROOT_DIR', '/usr')    # update for cmake
+    env.set('NETGENHOME', '/usr')
diff --git a/products/env_scripts/nlopt.py b/products/env_scripts/nlopt.py
new file mode 100644 (file)
index 0000000..fc95c33
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+  env.set("NLOPT_ROOT_DIR",prereq_dir)
+  pyver = 'python' + env.get('PYTHON_VERSION')
+  if platform.system() == "Windows" :
+    env.prepend('PATH',os.path.join(prereq_dir, 'bin'))
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+  else :
+    env.prepend('LD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib'))
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+  pass
diff --git a/products/env_scripts/numpy.py b/products/env_scripts/numpy.py
new file mode 100644 (file)
index 0000000..a4e1be5
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  if not platform.system() == "Windows" :
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    env.set('NUMPY_INCLUDE_DIR',os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+    env.set('NUMPY_INCLUDE_DIR2',os.path.join(prereq_dir, 'lib', pyver, 'site-packages','numpy','core','include'))
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/omniNotify.py b/products/env_scripts/omniNotify.py
new file mode 100755 (executable)
index 0000000..d94ab79
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+def set_env(env, prereq_dir, version):
+    pass
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/omniORB.py b/products/env_scripts/omniORB.py
new file mode 100644 (file)
index 0000000..78356b6
--- /dev/null
@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('OMNIORB_ROOT_DIR', prereq_dir) # update for cmake    
+
+    if platform.system() == "Windows" :
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin', 'x86_win32'))
+        env.prepend('PATH',os.path.join(prereq_dir, 'lib', 'x86_win32'))
+        env.prepend( 'PYTHONPATH', os.path.join(prereq_dir, 'lib', 'python'))
+        env.prepend( 'PYTHONPATH', os.path.join(prereq_dir, 'lib', 'x86_win32'))
+        env.set("OMNIORB_USER_PATH", "%APPDATA%")
+    else:
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend( 'PYTHONPATH', os.path.join(prereq_dir, 'lib'))
+        pyver = 'python' + env.get('PYTHON_VERSION')
+        env.prepend( 'PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+        env.prepend( 'PYTHONPATH', os.path.join(prereq_dir, 'lib64', pyver, 'site-packages'))
+        env.prepend('LD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib'))
+        env.set("OMNIORB_USER_PATH", "/tmp")
+
+def set_nativ_env(env):
+    env.set('OMNIORB_ROOT_DIR', "/usr") # update for cmake
diff --git a/products/env_scripts/omniORBpy.py b/products/env_scripts/omniORBpy.py
new file mode 100644 (file)
index 0000000..811f56c
--- /dev/null
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+def set_env(env, prereq_dir, version):
+    omniorb_root_dir = env.get('OMNIORB_ROOT_DIR')    
+    env.set('OMNIORBPY_ROOT_DIR', omniorb_root_dir)    
+    
+def set_nativ_env(env):
+    env.set('OMNIORBPY_ROOT_DIR',"/usr")
+
+
diff --git a/products/env_scripts/openblas.py b/products/env_scripts/openblas.py
new file mode 100644 (file)
index 0000000..94c0a77
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('OPENBLASHOME', prereq_dir)
+  env.set('OPENBLAS_ROOT_DIR', prereq_dir)
+  env.set('OPENBLAS_SRC', os.path.join(prereq_dir,'SRC'))
+  env.set('BLAS_SRC', os.path.join(prereq_dir,'BLAS','SRC'))
+    
+  if not platform.system() == "Windows" :
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+    # FOR NUMPY AND SCIPY
+    env.set('BLAS', os.path.join(prereq_dir, 'lib'))
+    env.set('OPENBLAS', os.path.join(prereq_dir, 'lib'))
+  else:
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    env.set('OPENBLASHOME', '/usr')
+
diff --git a/products/env_scripts/opencv.py b/products/env_scripts/opencv.py
new file mode 100755 (executable)
index 0000000..546660c
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('OPENCV_ROOT_DIR', prereq_dir)
+  env.set('OPENCV_HOME', prereq_dir)
+  env.set('OPENCV_DIR', prereq_dir)
+  env.set('OpenCV_DIR', prereq_dir)
+  env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+  if not platform.system() == "Windows" :
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+  else:
+    env.prepend('PATH', os.path.join(prereq_dir, 'x64','vc15','bin'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'x64','vc15','lib'))
+    env.set('OpenCV_INCLUDE_DIRS', os.path.join(prereq_dir, 'include') + ';' + os.path.join(prereq_dir, 'include','opencv') + ';' + os.path.join(prereq_dir, 'include','opencv2'))
+
+def set_nativ_env(env):
+  env.set('OPENCV_ROOT_DIR', '/usr')
+  env.set('OPENCV_HOME', '/usr')
diff --git a/products/env_scripts/openmpi.py b/products/env_scripts/openmpi.py
new file mode 100644 (file)
index 0000000..38872b1
--- /dev/null
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('OPENMPIDIR', prereq_dir)
+    env.set('OPAL_PREFIX', prereq_dir) # be able to move openmpi install (packages)
+    env.set('MPI_ROOT_DIR', prereq_dir)  # update for cmake  
+    env.set('MPI_ROOT', prereq_dir)
+    root = env.get('OPENMPIDIR')
+    
+    env.prepend('PATH', os.path.join(root, 'bin'))
+    env.prepend('PATH', os.path.join(root, 'include'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib'))
+    env.prepend('C_INCLUDE_PATH', os.path.join(root, 'include'))  # needed for parallel h5py
+
+def set_nativ_env(env):
+    env.set('MPI_ROOT_DIR', "/usr")  # update for cmake
+    env.set('OPENMPIDIR', "/usr")
+    env.set('MPI_ROOT', "/usr")
+
+
diff --git a/products/env_scripts/ospray.py b/products/env_scripts/ospray.py
new file mode 100644 (file)
index 0000000..f346251
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('OSPRAY_ROOT_DIR', prereq_dir)
+  ospray_version = 'ospray-' + version
+  env.set('ospray_DIR', os.path.join(prereq_dir,'lib','cmake',ospray_version))
+  env.set('OSPRAY_VERSION', version)
+  if platform.system() == "Windows":
+    env.prepend('PATH',os.path.join(prereq_dir, 'bin'))
+  else:
+    env.prepend('LD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/packaging.py b/products/env_scripts/packaging.py
new file mode 100644 (file)
index 0000000..5bec2cd
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+def set_env(env, prereq_dir, version):
+    env.set("PACKAGING_ROOT_DIR",prereq_dir)
+
+    versionPython = env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/perl.py b/products/env_scripts/perl.py
new file mode 100644 (file)
index 0000000..4669d88
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('PERLROOT', prereq_dir)
+    
+    env.set('PERL_ROOT_DIR', prereq_dir)
+
+    env.prepend('PATH', prereq_dir)
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'lib'))
+
+
+def set_nativ_env(env):
+    pass
+
diff --git a/products/env_scripts/petsc.py b/products/env_scripts/petsc.py
new file mode 100644 (file)
index 0000000..8cf89b0
--- /dev/null
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('PETSCDIR', prereq_dir)
+    env.set('PETSC_ROOT_DIR', prereq_dir)
+    
+    env.set('PETSC_DIR', prereq_dir)
+    env.set('PETSC_ARCH', 'arch-linux2-c-debug')
+
+    root = env.get('PETSCDIR')
+    
+    env.prepend('PATH', os.path.join(root, 'include'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib'))
+    #env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'arch-linux2-c-debug', 'lib'))
+
+        
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/planegcs.py b/products/env_scripts/planegcs.py
new file mode 100644 (file)
index 0000000..4a074a1
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('PLANEGCS_ROOT_DIR', prereq_dir)    # update for cmake
+  root = env.get('PLANEGCS_ROOT_DIR')
+  if platform.system() == "Windows" :
+    env.prepend('PATH',os.path.join(root, 'lib'))
+  else:
+    env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/pockets.py b/products/env_scripts/pockets.py
new file mode 100644 (file)
index 0000000..f60fefa
--- /dev/null
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+def set_env(env, prereq_dir, version):
+    env.set("POCKETS_ROOT_DIR",prereq_dir)
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/pthreads.py b/products/env_scripts/pthreads.py
new file mode 100755 (executable)
index 0000000..db88ad5
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+#   this prerequisites is only used on windows platform
+    env.set('PTHREAD_ROOT_DIR', prereq_dir)
+
+    env.set('PTHREAD_LIBRARY', os.path.join(prereq_dir, 'lib'))
+    env.set('PTHREAD_LIBRARIES', os.path.join(prereq_dir, 'lib'))
+    env.set('PTHREAD_INCLUDE_DIR', os.path.join(prereq_dir, 'include'))
+    env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+    env.prepend('LIB', os.path.join(prereq_dir, 'lib'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'lib'))
+
+    if not platform.system() == "Windows" :
+        env.set('PTHREAD_BINDIR', os.path.join(prereq_dir, 'bin'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    pass
+    
diff --git a/products/env_scripts/pyparsing.py b/products/env_scripts/pyparsing.py
new file mode 100644 (file)
index 0000000..067d84f
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    #env.set('PYPARSING_ROOT_DIR', env.get('PYTHON_ROOT_DIR'))
+    env.set('PYPARSING_ROOT_DIR', prereq_dir)
+    
+    if not platform.system() == "Windows" :
+        pyver = 'python' + env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/pyreadline.py b/products/env_scripts/pyreadline.py
new file mode 100755 (executable)
index 0000000..568c51b
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  if platform.system() == "Windows" :
+    env.set('PYREADLINE_ROOT_DIR', prereq_dir)
+  else:
+    env.set('PYREADLINE_ROOT_DIR', env.get('PYTHON_ROOT_DIR'))
+    
+def set_nativ_env(env):
+    env.set('PYREADLINE_ROOT_DIR', env.get('PYTHON_ROOT_DIR'))
diff --git a/products/env_scripts/pytz.py b/products/env_scripts/pytz.py
new file mode 100755 (executable)
index 0000000..e8a1cdc
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('PYTZ_ROOT_DIR', prereq_dir)
+    if not platform.system() == "Windows" :
+        pyver = 'python' + env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/qt.py b/products/env_scripts/qt.py
new file mode 100644 (file)
index 0000000..8d42bb3
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('QTDIR', prereq_dir)
+    
+    version_table = version.split('.') 
+    if version_table[0] == '5':
+        env.set('QT5_ROOT_DIR', prereq_dir)
+        env.prepend('QT_PLUGIN_PATH', os.path.join(prereq_dir, 'plugins'))
+        env.prepend('QT_QPA_PLATFORM_PLUGIN_PATH', os.path.join(prereq_dir, 'plugins'))
+    else:
+        env.set('QT4_ROOT_DIR', prereq_dir)
+
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+    if platform.system() == "Windows" :
+        env.prepend('LIB', os.path.join(prereq_dir, 'lib'))
+    else :
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    env.set('QT5_ROOT_DIR', '/usr')
+    env.set('Qt5Core_DIR', '/usr/lib64/cmake/Qt5Core')
+    env.set('Qt5Gui_DIR', '/usr/lib64/cmake/Qt5Gui')
+    env.set('Qt5Widgets_DIR', '/usr/lib64/cmake/Qt5Widgets')
+    env.set('Qt5Network_DIR', '/usr/lib64/cmake/Qt5Network')
+    env.set('Qt5Xml_DIR', '/usr/lib64/cmake/Qt5Xml')
+    env.set('Qt5OpenGL_DIR', '/usr/lib64/cmake/Qt5OpenGL')
+    env.set('Qt5PrintSupport_DIR', '/usr/lib64/cmake/Qt5PrintSupport')
+    env.set('Qt5Help_DIR', '/usr/lib64/cmake/Qt5Help')
+    env.set('Qt5Test_DIR', '/usr/lib64/cmake/Qt5Test')
+    env.set('Qt5X11Extras_DIR', '/usr/lib64/cmake/Qt5X11Extras')
diff --git a/products/env_scripts/qwt.py b/products/env_scripts/qwt.py
new file mode 100755 (executable)
index 0000000..1632ab1
--- /dev/null
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('QWTHOME', prereq_dir)
+    env.set('QWT_ROOT_DIR', prereq_dir)
+
+    if platform.system() == "Windows" :
+        env.prepend('PATH', os.path.join(prereq_dir, 'lib'))
+    else:
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    env.set('QWTHOME', '/usr')
+    env.set('QWT_ROOT_DIR', '/usr')
+    pass
diff --git a/products/env_scripts/requests.py b/products/env_scripts/requests.py
new file mode 100644 (file)
index 0000000..f3e3644
--- /dev/null
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+def set_env(env, prereq_dir, version):
+    env.set("REQUESTS_ROOT_DIR",prereq_dir)
+    if not platform.system() == "Windows" :
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        versionPython = env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/root.py b/products/env_scripts/root.py
new file mode 100644 (file)
index 0000000..0503f86
--- /dev/null
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('ROOTSYS', prereq_dir)
+  if platform.system() == "Windows":
+    env.prepend('PATH',os.path.join(prereq_dir, 'bin'))
+    env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin'))
+  else:
+    env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib'))
+    env.prepend('LD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib'))
+    env.prepend('DYLD_LIBRARY_PATH',os.path.join(prereq_dir, 'lib'))
+    env.prepend('SHLIB_PATH',os.path.join(prereq_dir, 'lib'))
+    env.prepend('LIBPATH',os.path.join(prereq_dir, 'lib'))
+    env.prepend('PATH',os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/ruby.py b/products/env_scripts/ruby.py
new file mode 100644 (file)
index 0000000..dd1ced4
--- /dev/null
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    
+    env.set('RUBY_ROOT_DIR', prereq_dir)
+    env.prepend('PATH', prereq_dir)
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    
+
+def set_nativ_env(env):
+    pass
+
diff --git a/products/env_scripts/scipy.py b/products/env_scripts/scipy.py
new file mode 100644 (file)
index 0000000..8d98f9f
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set("SCIPY_ROOT_DIR", prereq_dir)
+  if not platform.system() == "Windows" :
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+  pass
diff --git a/products/env_scripts/scons.py b/products/env_scripts/scons.py
new file mode 100644 (file)
index 0000000..f4219ea
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set("SCONS_ROOT_DIR",prereq_dir)
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+    versionPython = env.get('PYTHON_VERSION')
+    env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+    env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'scons' + version))
+    env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/scotch.py b/products/env_scripts/scotch.py
new file mode 100755 (executable)
index 0000000..edf7a94
--- /dev/null
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+def set_env(env, prereq_dir, version):
+    env.set('SCOTCHDIR', prereq_dir)
+    env.set('SCOTCH_ROOT_DIR', prereq_dir)    # update for cmake
+
+def set_nativ_env(env):
+    env.set('SCOTCH_ROOT_DIR', '/usr')    # update for cmake
+    env.set('SCOTCHDIR', '/usr')
+
diff --git a/products/env_scripts/setuptools.py b/products/env_scripts/setuptools.py
new file mode 100644 (file)
index 0000000..3ee5a86
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('SETUPTOOLDIR', prereq_dir)
+    env.set('SETUPTOOLS_ROOT_DIR', prereq_dir)   # update for cmake 
+    
+    versionPython = env.get('PYTHON_VERSION')    
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    env.set('SETUPTOOLS_ROOT_DIR', '/usr')   # update for cmake
+    env.set('SETUPTOOLDIR', '/usr')
+    pass
diff --git a/products/env_scripts/sip.py b/products/env_scripts/sip.py
new file mode 100644 (file)
index 0000000..eae92bf
--- /dev/null
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    pyver = 'python' + env.get('PYTHON_VERSION')
+
+    pyqt = env.get('PYQTDIR')
+    env.set('PYQT_SIPS_DIR', pyqt)
+    env.set('SIPDIR', prereq_dir)
+    env.set('SIP_ROOT_DIR', prereq_dir)
+
+    if not platform.system() == "Windows" :
+        # [CMake GUI] Nouveau nom pour SIPDIR = SIP_ROOT_DIR 22/03/2013
+        env.set('SIPDIR', prereq_dir)
+        env.set('SIP_ROOT_DIR', prereq_dir)
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+        env.prepend('CPLUS_INCLUDE_PATH', os.path.join(prereq_dir, 'include', pyver))
+    else:
+#        env.set('SIPDIR', os.path.join(env.get('PYTHON_ROOT_DIR'),'site-packages'))
+#        env.set('SIP_ROOT_DIR', os.path.join(env.get('PYTHON_ROOT_DIR'),'site-packages'))
+#        env.prepend('CPLUS_INCLUDE_PATH', os.path.join( env.get('PYTHON_INCLUDE_PATH'), pyver))
+        env.prepend('CPLUS_INCLUDE_PATH', os.path.join(prereq_dir, 'include', pyver))
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+  
+def set_nativ_env(env):
+    env.set('SIPDIR', '/usr')
+    env.set('SIP_ROOT_DIR','/usr')
+
diff --git a/products/env_scripts/six.py b/products/env_scripts/six.py
new file mode 100644 (file)
index 0000000..abb5edd
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  #env.set('SIX_ROOT_DIR', env.get('PYTHON_ROOT_DIR'))
+  env.set('SIX_ROOT_DIR', prereq_dir)
+  pyver = 'python' + env.get('PYTHON_VERSION')
+  if not platform.system() == "Windows" :
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/snowballstemmer.py b/products/env_scripts/snowballstemmer.py
new file mode 100644 (file)
index 0000000..c510714
--- /dev/null
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+    env.set("SNOWBALLSTEMMER_ROOT_DIR",prereq_dir)
+    versionPython = env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+       env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/solvespace.py b/products/env_scripts/solvespace.py
new file mode 100644 (file)
index 0000000..b5b3a6c
--- /dev/null
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+
+def set_env(env, prereq_dir, version):
+    env.set('SOLVESPACE_ROOT_DIR', prereq_dir)
+    root = env.get('SOLVESPACE_ROOT_DIR')
+    env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/sphinx_rtd_theme.py b/products/env_scripts/sphinx_rtd_theme.py
new file mode 100644 (file)
index 0000000..f029bd4
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+    env.set("SPHINX_RTD_THEME_ROOT_DIR",prereq_dir)
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+
+    if platform.system() == "Windows" :
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', 'site-packages'))
+    else :
+        versionPython = env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'bin'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/sphinxcontrib.py b/products/env_scripts/sphinxcontrib.py
new file mode 100644 (file)
index 0000000..7838423
--- /dev/null
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+
+def set_env(env, prereq_dir, version):
+    env.set("SPHINXCONTRIB_ROOT_DIR",prereq_dir)
+    pyver = 'python' + env.get('PYTHON_VERSION')
+
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages/sphinxcontrib_napoleon-0.6.1-py2.7.egg/sphinxcontrib'))
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages/sphinxcontrib_napoleon-0.6.1-py2.7.egg/sphinxcontrib/napoleon'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/sphinxcontrib_applehelp.py b/products/env_scripts/sphinxcontrib_applehelp.py
new file mode 100644 (file)
index 0000000..1fcaa44
--- /dev/null
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+
+def set_env(env, prereq_dir, version):
+   pass
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/sphinxcontrib_devhelp.py b/products/env_scripts/sphinxcontrib_devhelp.py
new file mode 100644 (file)
index 0000000..1fcaa44
--- /dev/null
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+
+def set_env(env, prereq_dir, version):
+   pass
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/sphinxcontrib_htmlhelp.py b/products/env_scripts/sphinxcontrib_htmlhelp.py
new file mode 100644 (file)
index 0000000..1fcaa44
--- /dev/null
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+
+def set_env(env, prereq_dir, version):
+   pass
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/sphinxcontrib_jsmath.py b/products/env_scripts/sphinxcontrib_jsmath.py
new file mode 100644 (file)
index 0000000..1fcaa44
--- /dev/null
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+
+def set_env(env, prereq_dir, version):
+   pass
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/sphinxcontrib_napoleon.py b/products/env_scripts/sphinxcontrib_napoleon.py
new file mode 100644 (file)
index 0000000..d48c662
--- /dev/null
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+def set_env(env, prereq_dir, version):
+  env.set("SPHINXCONTRIB_NAPOLEON_ROOT_DIR",prereq_dir)
+  versionPython = env.get('PYTHON_VERSION')
+  if not platform.system() == "Windows" :
+      env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+       
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/sphinxcontrib_qthelp.py b/products/env_scripts/sphinxcontrib_qthelp.py
new file mode 100644 (file)
index 0000000..1fcaa44
--- /dev/null
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+
+def set_env(env, prereq_dir, version):
+   pass
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/sphinxcontrib_serializinghtml.py b/products/env_scripts/sphinxcontrib_serializinghtml.py
new file mode 100644 (file)
index 0000000..1fcaa44
--- /dev/null
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+
+def set_env(env, prereq_dir, version):
+   pass
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/sphinxcontrib_websupport.py b/products/env_scripts/sphinxcontrib_websupport.py
new file mode 100644 (file)
index 0000000..0cbb3cc
--- /dev/null
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+def set_env(env, prereq_dir, version):
+    env.set("SPHINXCONTRIB_WEBSUPPORT_ROOT_DIR",prereq_dir)
+    versionPython = env.get('PYTHON_VERSION')
+    if not platform.system() == "Windows" :
+        env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/sphinxintl.py b/products/env_scripts/sphinxintl.py
new file mode 100644 (file)
index 0000000..60c993c
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set("SPHINXINTL_ROOT_DIR",prereq_dir)
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    if  platform.system() == "Windows" :
+      env.set('SPHINXINTL_EXECUTABLE',os.path.join(prereq_dir, 'Scripts','sphinx-build.exe'))
+    else:
+      env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+      env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/subprocess32.py b/products/env_scripts/subprocess32.py
new file mode 100644 (file)
index 0000000..ed3413a
--- /dev/null
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+
+def set_env(env, prereq_dir, version):
+    env.set("SUBPROCESS_ROOT_DIR",prereq_dir)
+    pyver = 'python' + env.get('PYTHON_VERSION')
+    env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/swig.py b/products/env_scripts/swig.py
new file mode 100644 (file)
index 0000000..3605811
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('SWIG_ROOT', prereq_dir)
+    env.set('SWIG_ROOT_DIR', prereq_dir)
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    if platform.system() == "Windows" :
+        env.set('SWIG_LIB', os.path.join( prereq_dir, "Lib"))
+    else :
+        env.set('SWIG_LIB', os.path.join( prereq_dir, "share", "swig", version))
+
+def set_nativ_env(env):
+    env.set('SWIG_ROOT_DIR', '/usr')
+    env.set('SWIG_ROOT', '/usr')
diff --git a/products/env_scripts/tbb.py b/products/env_scripts/tbb.py
new file mode 100644 (file)
index 0000000..792c9e9
--- /dev/null
@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version):
+  env.set('TBB_ROOT_DIR', prereq_dir)
+  if platform.system()=="Windows" :
+    # this prerequisites is only used on windows platform
+    arch = 'intel64'
+    vs   = '14_uwp' # target is Visual studio 2017
+    env.set('TBB_DIR', prereq_dir)
+    env.set('TBB_TARGET_ARCH',arch)
+    env.set('TBB_TARGET_VS',vs)
+    env.prepend('PATH', os.path.join(prereq_dir,'bin'))
+  else:
+    env.set('TBB_ROOT', prereq_dir)
+    env.set('TBBROOT', prereq_dir)
+    env.set('TBB_INSTALL_DIR', prereq_dir)
+    env.set('TBB_INCLUDE_DIR', os.path.join(prereq_dir,'include'))
+    env.set('TBB_LIBRARY_DIR', os.path.join(prereq_dir,'lib'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir,'lib'))
+
+def set_nativ_env(env):
+    pass
+
diff --git a/products/env_scripts/tcl.py b/products/env_scripts/tcl.py
new file mode 100644 (file)
index 0000000..4432a88
--- /dev/null
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('TCL_ROOT_DIR', prereq_dir) # update for cmake
+    env.set('TCLHOME', prereq_dir)
+
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+    env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+    env.set('TCL_SHORT_VERSION', version[:version.rfind('.')])
+
+    l = []
+    l.append(os.path.join(prereq_dir, 'lib'))
+    l.append(os.path.join(prereq_dir, 'lib', 'tcl', env.get('TCL_SHORT_VERSION')))
+    #http://computer-programming-forum.com/57-tcl/1dfddc136afccb94.htm
+    #Tcl treats the contents of that variable as a list. Be happy, for you can now use drive letters on windows.
+    env.prepend('TCLLIBPATH', l, sep=" ")
+
+    if not platform.system() == "Windows" :
+        env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    env.set('TCL_ROOT_DIR', '/usr') # update for cmake
+    env.set('TCLHOME', '/usr')
diff --git a/products/env_scripts/tcltk.py b/products/env_scripts/tcltk.py
new file mode 100644 (file)
index 0000000..18069de
--- /dev/null
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  env.set('TCL_ROOT_DIR', prereq_dir)
+  env.set('TCLHOME', prereq_dir)
+  env.set('TK_ROOT_DIR', prereq_dir)
+  env.set('TKHOME', prereq_dir)
+  env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+  env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+  env.set('TCL_SHORT_VERSION', version[:version.rfind('.')])
+  env.set('TK_SHORT_VERSION', version[:version.rfind('.')])
+
+  l = []
+  l.append(os.path.join(prereq_dir, 'lib'))
+  l.append(os.path.join(prereq_dir, 'lib', 'tcl', env.get('TCL_SHORT_VERSION')))
+  #http://computer-programming-forum.com/57-tcl/1dfddc136afccb94.htm
+  #Tcl treats the contents of that variable as a list. Be happy, for you can now use drive letters on windows.
+  env.prepend('TCLLIBPATH',l, sep=" ")
+  l = []
+  l.append(os.path.join(prereq_dir, 'lib'))
+  l.append(os.path.join(prereq_dir, 'lib', 'tk', env.get('TCL_SHORT_VERSION')))
+  env.prepend('TKLIBPATH', l, sep=" ")
+
+  if not platform.system() == "Windows" :
+    env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
+
+def set_nativ_env(env):
+    env.set('TCL_ROOT_DIR', '/usr') # update for cmake
+    env.set('TCLHOME', '/usr')
+    env.set('TK_ROOT_DIR', '/usr')   # update for cmake
+    env.set('TKHOME', '/usr')
diff --git a/products/env_scripts/tk.py b/products/env_scripts/tk.py
new file mode 100755 (executable)
index 0000000..4f90200
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    # OP TEST
+    #env.set('TK_ROOT_DIR', prereq_dir)   # update for cmake
+    #env.set('TKHOME', prereq_dir)
+    env.set('TK_ROOT_DIR', env.get('TCL_ROOT_DIR'))
+    env.set('TKHOME', env.get('TCL_ROOT_DIR'))
+    root = env.get('TKHOME')
+
+    env.prepend('PATH', os.path.join(root, 'bin'))
+    
+    l = []
+    l.append(os.path.join(root, 'lib'))
+    l.append(os.path.join(root, 'lib', 'tk', env.get('TCL_SHORT_VERSION')))
+    #http://computer-programming-forum.com/57-tcl/1dfddc136afccb94.htm
+    #Tcl treats the contents of that variable as a list. Be happy, for you can now use drive letters on windows.
+    env.prepend('TKLIBPATH', l, sep=" ")
+
+    if not platform.system() == "Windows" :
+        env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib'))
+    
+
+def set_nativ_env(env):
+    env.set('TK_ROOT_DIR', '/usr')   # update for cmake
+    env.set('TKHOME', '/usr')
diff --git a/products/env_scripts/typing.py b/products/env_scripts/typing.py
new file mode 100644 (file)
index 0000000..2f7ddbb
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+    env.set('TYPING_ROOT_DIR', prereq_dir)
+    if not platform.system() == "Windows" :
+        pyver = 'python' + env.get('PYTHON_VERSION')
+        env.prepend('PYTHONPATH', os.path.join(prereq_dir, 'lib', pyver, 'site-packages'))
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/uranie_win.py b/products/env_scripts/uranie_win.py
new file mode 100755 (executable)
index 0000000..fb8dae1
--- /dev/null
@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path, platform
+
+def set_env(env, prereq_dir, version, forBuild=None):
+    version = '.'.join(version.replace('-', '.').split('.')[:2])
+    env.set('URANIE_VERSION', version)
+    
+    if platform.system()=="Windows" :
+        # URANIE
+        uranie_root = os.path.join(prereq_dir, 'uranie-3.9.0')
+        env.set('URANIE_ROOT_DIR', uranie_root)
+        env.set('URANIESYS', uranie_root)
+        env.prepend('PATH', os.path.join(uranie_root, 'bin'))
+        env.prepend('PATH', os.path.join(uranie_root, 'lib'))
+        
+        # ROOT
+        root_dir = os.path.join(prereq_dir, 'root5.34.14')
+        env.set('ROOT_ROOT_DIR', root_dir)
+        env.set('ROOTSYS', root_dir)
+        env.set('ROOTSYSLIB', os.path.join(root_dir, 'lib'))
+        env.prepend('PATH', os.path.join(root_dir, 'bin'))
+        
+        env.prepend('PATH', os.path.join(prereq_dir, 'zlib-1.2.5', 'bin'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'libxml2-2.7.8.win32', 'bin'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'libxml2-2.7.8.win32', 'lib'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'iconv-1.9.2.win32', 'bin'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'libxslt-1.1.26.win32', 'bin'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'fftw-3.3.3-dll32'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'nlopt-2.4.2-dll32'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'pcl-1.10-modified', 'debug'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'optpp-2.4', 'lib'))
+        env.prepend('PATH', os.path.join(prereq_dir, 'pthread-win32', 'Pre-built.2', 'dll', 'x86'))
+    else :
+        env.set('URANIE_ROOT_DIR', prereq_dir)
+        uranie = env.get('URANIE_ROOT_DIR') 
+
+        ### 
+        # FORMAT URANIE
+    
+        # URANIE PATH
+        env.set('URANIESYS', prereq_dir)  
+
+        # PYTHON PATH
+        env.prepend('PYTHONPATH', os.path.join(uranie, 'lib', 'python'))
+    
+        # LD LIBRARY PATH
+        env.prepend('LD_LIBRARY_PATH', os.path.join(uranie, 'lib'))
+
+        # ROOT PATH
+        root_env = env.get('ROOT_ROOT_DIR')
+        env.set('ROOTSYS', root_env)
+
+        root_lib_env = os.path.join(root_env,'lib','root')
+        if os.path.isdir(root_lib_env):
+            env.prepend('ROOTSYSLIB', root_lib_env)
+        else:
+            env.prepend('ROOTSYSLIB', os.path.join(root_env,'lib'))
+    
+        # PATH
+        env.prepend('PATH', os.path.join(uranie,'bin'))
+        env.prepend('PATH', os.path.join(root_env,'bin'))
+
+        # OPT
+        opt_env = os.path.join(uranie, 'OPT++','optpp-2.4','lib')
+        env.prepend('LD_LIBRARY_PATH', opt_env)
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/urllib3.py b/products/env_scripts/urllib3.py
new file mode 100644 (file)
index 0000000..b50165c
--- /dev/null
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os
+import platform
+
+def set_env(env, prereq_dir, version):
+    if not platform.system() == "Windows" :
+       versionPython = env.get('PYTHON_VERSION')
+       env.prepend('PYTHONPATH',os.path.join(prereq_dir, 'lib', 'python' + versionPython, 'site-packages'))
+       env.set("URLLIB3_ROOT_DIR",prereq_dir)
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/vtk.py b/products/env_scripts/vtk.py
new file mode 100644 (file)
index 0000000..6f73441
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+def set_env(env, prereq_dir, version):
+    env.set('VTK_ROOT_DIR', prereq_dir) # update for cmake
+    env.set('VTKHOME', prereq_dir)
+    root = env.get('VTKHOME')
+    pyver = 'python' + env.get('PYTHON_VERSION')
+
+    env.prepend('PATH', os.path.join(root, 'bin'))
+    env.prepend('LD_LIBRARY_PATH', os.path.join(root, 'lib'))
+    env.prepend('PYTHONPATH', os.path.join(root, 'lib', pyver, 'site-packages'))
+    #http://computer-programming-forum.com/57-tcl/1dfddc136afccb94.htm
+    #Tcl treats the contents of that variable as a list. Be happy, for you can now use drive letters on windows.
+    env.prepend('TCLLIBPATH', os.path.join(root, 'lib', 'vtk-5.0', 'tcl'), sep=" ")
+
+def set_nativ_env(env):
+    pass
diff --git a/products/env_scripts/zlib.py b/products/env_scripts/zlib.py
new file mode 100755 (executable)
index 0000000..742b975
--- /dev/null
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+import os.path
+import platform
+
+def set_env(env, prereq_dir, version):
+  # this prerequisites is only used on windows platform
+  env.set('ZLIB_ROOT_DIR', prereq_dir)
+  if platform.system() == "Windows" :
+    env.set('ZLIB_DIR', prereq_dir)
+    env.set('ZLIB_BIN', os.path.join(prereq_dir, 'bin'))
+    env.set('ZLIB_LIBRARY', os.path.join(prereq_dir, 'bin'))
+    env.set('ZLIB_LIBRARIES', os.path.join(prereq_dir, 'bin'))
+    env.set('ZLIB_INCLUDE_DIR', os.path.join(prereq_dir, 'include'))
+    env.prepend('INCLUDE', os.path.join(prereq_dir, 'include'))
+    env.prepend('LIB', os.path.join(prereq_dir, 'bin'))
+    env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
+  else:
+    pass
+    
+def set_nativ_env(env):
+    pass
+
+    
diff --git a/products/expat.pyconf b/products/expat.pyconf
new file mode 100644 (file)
index 0000000..b3f14c9
--- /dev/null
@@ -0,0 +1,31 @@
+default :
+{
+    name : "expat"
+    build_source : "script"
+    compil_script : $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [ ]
+    patches : [ ] 
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : "base"
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "no"
+    }
+} 
+
+default_win :
+{
+   archive_info : {archive_name : "expat-" + $APPLICATION.products.expat + "_windows.tar.gz"}
+   properties:
+   {
+     incremental : "yes"
+     single_install_dir : "yes"
+   }
+}
diff --git a/products/f2c.pyconf b/products/f2c.pyconf
new file mode 100644 (file)
index 0000000..8a33612
--- /dev/null
@@ -0,0 +1,21 @@
+default :
+{
+    name : "f2c"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    depend : []
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      compile_time : "yes"
+      incremental : "yes"
+    }
+}
diff --git a/products/ffmpeg.pyconf b/products/ffmpeg.pyconf
new file mode 100644 (file)
index 0000000..7a8dad0
--- /dev/null
@@ -0,0 +1,14 @@
+# Only used as a native product for dedicated opencv compilation
+default :
+{
+    name : "ffmpeg" 
+    get_source : "system"
+    depend : []
+    system_info :
+    {
+       rpm : ["ffmpeg"]
+       rpm_dev : ["ffmpeg-devel"]
+       apt : ["ffmpeg"]
+       apt_dev : []
+    }
+}
diff --git a/products/freeimage.pyconf b/products/freeimage.pyconf
new file mode 100644 (file)
index 0000000..5f993e6
--- /dev/null
@@ -0,0 +1,51 @@
+default :
+{
+    name : "freeimage"
+    build_source : "script"
+    compil_script :  $name  + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["freeimage"]
+        rpm_dev : ["freeimage-devel"]
+        apt : ["libfreeimage"]
+        apt_dev : ["libfreeimage-dev"]
+    }
+    patches : []
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
+
+default_win :
+{
+   archive_info : {archive_name : "freeimage-" + $APPLICATION.products.freeimage + "_windows.tar.gz"}
+}
+
+version_3_16_0 :
+{
+    compil_script :  "freeimage-3.16.0.sh"
+    patches : ["freeimage-3.16.0_gcc6.patch"]
+}
+
+# NOTE: do not delete this section, it was added in order to be able to overload it for Windows
+version_3_18_0:
+{
+  patches : [] 
+}
+
+version_3_18_0_win:
+{
+  patches : ['freeimage-3.18.0_windows.patch'] 
+}
+
diff --git a/products/freetype.pyconf b/products/freetype.pyconf
new file mode 100755 (executable)
index 0000000..a245ca4
--- /dev/null
@@ -0,0 +1,67 @@
+default :
+{
+    name : "freetype"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["freetype"]
+        rpm_dev : ["freetype-devel"]
+        apt : ["libfreetype"]
+        apt_dev : ["libfreetype6-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    build_depend : ["cmake"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    check_install : ["lib/pkgconfig/freetype2.pc"]
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "no"
+    }
+}
+
+default_win :
+{
+    build_source : "script"
+    archive_info : {archive_name : "freetype-" + $APPLICATION.products.freetype + "_windows.tar.gz"}
+    depend : []
+    check_install : []
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
+
+
+# needed in order to screen with windows version - see below
+version_2_9_1 :
+{
+  patches : []
+}
+
+version_2_9_1_win :
+{
+  patches : ["freetype-2.9.1_windows.patch"]
+}
+
+
+version_2_4_11 :
+{
+    compil_script : "freetype-2.3" + $VARS.scriptExtension
+    patches : [ "freetype-2.4.11_ft_export_FD20.patch" ]
+}
+
+version_2_3_7 :
+{
+    compil_script : "freetype-2.3" + $VARS.scriptExtension
+}
diff --git a/products/ftgl.pyconf b/products/ftgl.pyconf
new file mode 100644 (file)
index 0000000..8f3ce52
--- /dev/null
@@ -0,0 +1,17 @@
+version_2_1_3_rc5 :
+{
+    name : "ftgl"
+    build_source : "script"
+    compil_script : "ftgl_2.1.3.sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [ "freetype"]
+    patches : [ "ftgl-2.1.3_no_doc.patch"] 
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : "base"
+} 
+
diff --git a/products/functools32.pyconf b/products/functools32.pyconf
new file mode 100644 (file)
index 0000000..42be36a
--- /dev/null
@@ -0,0 +1,19 @@
+default :
+{
+    name : "functools32"
+    build_source : "script"
+    compil_script :  "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    archive_info:
+    {
+        archive_name : $name + "-3.2.3-2.tar.gz"
+    }
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    depend : ['Python']#, 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
diff --git a/products/gcc.pyconf b/products/gcc.pyconf
new file mode 100644 (file)
index 0000000..376bc91
--- /dev/null
@@ -0,0 +1,20 @@
+default :
+{
+    name : "gcc"
+    build_source : "script"
+    compil_script : $name + "-" + $APPLICATION.products.gcc + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    patches : [] 
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+    }
+}
diff --git a/products/gl2ps.pyconf b/products/gl2ps.pyconf
new file mode 100755 (executable)
index 0000000..85754ed
--- /dev/null
@@ -0,0 +1,87 @@
+default :
+{
+    name : "gl2ps"
+    build_source : "cmake"
+    # Add the '-DENABLE_GLUT=OFF' option with CMakeLists.txt patch
+    # to disable link with GLUT library and suppress '-DGLUT_FOUND=OFF' option
+    cmake_options : "-DCMAKE_BUILD_TYPE=Release -DENABLE_PNG=ON -DENABLE_ZLIB=ON -DENABLE_GLUT=OFF"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    build_depend : ["cmake"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+   depend : ["zlib","libpng"]
+    properties:
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
+
+version_1_3_5 :
+{
+    # Add the '-DENABLE_GLUT=OFF' option with CMakeLists.txt patch
+    # to disable link with GLUT library
+    cmake_options : "-DCMAKE_BUILD_TYPE=Release -DENABLE_ZLIB=OFF -DENABLE_PNG=OFF -DENABLE_GLUT=OFF"
+    archive_info:
+    {
+       archive_name : "gl2ps-1.3.5.tar.gz"
+    }
+    patches : ["gl2ps-1.3.5-GLUT.patch"]
+}
+
+version_1_3_8 :
+{
+    # Add the '-DENABLE_GLUT=OFF' option with CMakeLists.txt patch
+    # to disable link with GLUT library
+    cmake_options : "-DCMAKE_BUILD_TYPE=Release -DENABLE_ZLIB=OFF -DENABLE_PNG=OFF -DENABLE_GLUT=OFF"
+    archive_info:
+    {
+       archive_name : "gl2ps-1.3.8.tar.gz"
+    }
+    patches : ["gl2ps-1.3.8-GLUT.patch"]
+}
+
+version_1_3_9p1 :
+{
+    # Add the '-DENABLE_GLUT=OFF' option with CMakeLists.txt patch
+    # to disable link with GLUT library and suppress '-DGLUT_FOUND=OFF' option
+    cmake_options : "-DCMAKE_BUILD_TYPE=Release -DENABLE_PNG=ON -DENABLE_ZLIB=ON -DENABLE_GLUT=OFF"
+    archive_info:
+    {
+       archive_name : "gl2ps-1.3.9p1.tar.gz"
+    }
+    patches : ["gl2ps-1.3.9p1-GLUT.patch"]
+}
+
+version_1_4_0_4037312 :
+{
+    # Add the '-DENABLE_GLUT=OFF' option with CMakeLists.txt patch
+    # to disable link with GLUT library and suppress '-DGLUT_FOUND=OFF' option
+    cmake_options : "-DCMAKE_BUILD_TYPE=Release -DENABLE_PNG=ON -DENABLE_ZLIB=ON -DENABLE_GLUT=OFF"
+    archive_info:
+    {
+       archive_name : "gl2ps-1.4.0_4037312.tar.gz"
+    }
+    patches : ["gl2ps-1.4.0-GLUT.patch"]
+}
+
+version_1_4_0_4037312_win :
+{
+   build_source : "script"
+   compil_script : "gl2ps.bat"
+}
diff --git a/products/glu.pyconf b/products/glu.pyconf
new file mode 100644 (file)
index 0000000..eca00a8
--- /dev/null
@@ -0,0 +1,15 @@
+default :
+{
+    name : "glu"
+    build_source : "script"
+    compil_script :  $name + ".sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [ ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    #install_dir : 'base'
+}
diff --git a/products/gmsh.pyconf b/products/gmsh.pyconf
new file mode 100644 (file)
index 0000000..c75f8f7
--- /dev/null
@@ -0,0 +1,21 @@
+default :
+{
+    name : "gmsh"
+    build_source : "script"
+    compil_script : "gmsh" + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ["CAS","lapack"]
+    build_depend : ["cmake"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : "base"
+    properties:
+    {
+      incremental : "yes"
+    }
+} 
diff --git a/products/graphviz.pyconf b/products/graphviz.pyconf
new file mode 100755 (executable)
index 0000000..3ecf1c8
--- /dev/null
@@ -0,0 +1,68 @@
+default :
+{
+    name : "graphviz"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["graphviz"]
+        rpm_dev : ["graphviz-devel"]
+        apt : ["graphviz"]
+        apt_dev : ["graphviz-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+      compile_and_runtime : "yes"
+    }
+}
+
+default_win :
+{
+   archive_info : {archive_name : "graphviz-" + $APPLICATION.products.graphviz + "_windows.tar.gz"}
+    depend : ['expat','zlib','libpng','libxml2', 'libjpeg']
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+      compile_and_runtime : "no"
+    }
+}
+
+version_2_44_1 :
+{
+}
+
+version_2_44_1_win :
+{
+    compil_script :  "graphviz-2.44.1" + $VARS.scriptExtension
+    depend : ['expat','zlib','libpng','libxml2', 'libjpeg','cmake']
+}
+
+version_2_38_0 :
+{
+    compil_script :  "graphviz-2.38.0" + $VARS.scriptExtension
+    depend : ["swig"]
+}
+
+version_2_38_0_win :
+{
+    compil_script :  "graphviz-2.38.0" + $VARS.scriptExtension
+    depend : ['expat','zlib','libpng','libxml2', 'libjpeg']
+}
+
+version_2_28_0 :
+{
+    compil_script :  "graphviz.sh"
+    depend : ["tcl", "tk", "expat"]
+}
diff --git a/products/hdf5.pyconf b/products/hdf5.pyconf
new file mode 100755 (executable)
index 0000000..f341792
--- /dev/null
@@ -0,0 +1,54 @@
+default :
+{
+    name : "hdf5"
+    build_source : "script"
+    compil_script : $name + "CMake.sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    patches : [] 
+    depend : []
+    opt_depend : [ 'openmpi']
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
+
+default_Autotools :
+{
+    compil_script : "hdf5Autotools.sh"
+    depend : []
+    build_depend : []
+}
+
+default_win :
+{
+   archive_info : {archive_name : "hdf5-" + $APPLICATION.products.hdf5 + "_windows.tar.gz"}
+}
+
+version_1_10_3 :
+{
+    compil_script : "hdf5-1.10.3.sh"
+    patches : [ "hdf5-1.10.3.patch" ]
+}
+
+version_1_10_3_win :
+{
+    compil_script : "hdf5CMake.bat"
+    patches : ['hdf5-1.10.3.patch', 'hdf5-1.10.3.win_unicode_new.patch' ]
+}
+
+version_1_8_8 :
+{
+    compil_script : "hdf5_cxx.sh"
+    depend : []
+    patches : [ "hdf5_188_remove_c++_comment.patch" ] 
+}
diff --git a/products/homard_bin.pyconf b/products/homard_bin.pyconf
new file mode 100644 (file)
index 0000000..413548f
--- /dev/null
@@ -0,0 +1,31 @@
+default :
+{
+    name : "homard_bin"
+    build_source : "script"
+    compil_script :  "Homard-SALOME9.sh" # this script do the install in install_dir/homard
+    get_source : "archive"
+    environ :
+    {
+       env_script : "Homard.py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
+
+version_6_6_0_to_8_5_0 :
+{
+    name : "homard_bin"
+    build_source : "script"
+    compil_script :  "Homard.sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : "Homard.py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
diff --git a/products/homard_pre_windows.pyconf b/products/homard_pre_windows.pyconf
new file mode 100644 (file)
index 0000000..3e3e7f5
--- /dev/null
@@ -0,0 +1,15 @@
+default :
+{
+    name : "Homard"
+    build_source : "script"
+    compil_script :  $name + ".sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
diff --git a/products/idna.pyconf b/products/idna.pyconf
new file mode 100755 (executable)
index 0000000..b196ff1
--- /dev/null
@@ -0,0 +1,34 @@
+default :
+{
+    name : "idna"
+    build_source : "script"
+    compil_script :  "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-idna"]
+        rpm_dev : []
+        apt : ["python3-idna"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+       incremental : "yes"
+       pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "idna-" + $APPLICATION.products.idna + "_windows.tar.gz"}
+   depend : ['Python', 'setuptools','chardet']
+}
diff --git a/products/imagesize.pyconf b/products/imagesize.pyconf
new file mode 100755 (executable)
index 0000000..cf40b3e
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "imagesize"
+    build_source : "script"
+    compil_script : "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-imagesize"]
+        rpm_dev : []
+        apt : ["python3-imagesize"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "imagesize-" + $APPLICATION.products.imagesize + "_windows.tar.gz"}
+}
diff --git a/products/ispc.pyconf b/products/ispc.pyconf
new file mode 100644 (file)
index 0000000..b76d966
--- /dev/null
@@ -0,0 +1,51 @@
+default :
+{
+    name : "ispc"
+    build_source : "cmake"
+    cmake_options : "-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python "
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['llvm']
+    build_depend : ["cmake"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+    build_source : "script"
+    compil_script : "ispc.bat"
+    properties:
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+    depend : ['Python']
+}
+
+version_1_9_2 :
+{
+    build_source : "script"
+    compil_script :  "ispc-1.9.2.sh"
+    archive_info : {archive_name : "ispc-1.9.2-x86_64.tar.gz"}
+    patches : []
+    depend : []
+}
+
+version_1_9_2_src :
+{
+    build_source : "script"
+    compil_script :  "ispc-1.9.2.sh"
+    archive_info : {archive_name : "ispc-1.9.2.tar.gz"}
+    patches : ['ispc-makefile_WERROR.patch']
+    depend : ['llvm']
+}
diff --git a/products/kiwisolver.pyconf b/products/kiwisolver.pyconf
new file mode 100755 (executable)
index 0000000..662832d
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "kiwisolver"
+    build_source : "script"
+    compil_script : "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-kiwisolver"]
+        rpm_dev : []
+        apt : ["python3-kiwisolver"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "kiwisolver-" + $APPLICATION.products.kiwisolver + "_windows.tar.gz"}
+}
diff --git a/products/lapack.pyconf b/products/lapack.pyconf
new file mode 100644 (file)
index 0000000..2320460
--- /dev/null
@@ -0,0 +1,55 @@
+default :
+{
+    name : "lapack"
+    build_source : "script"
+    compil_script : $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["lapack"]
+        rpm_dev : ["lapack-devel"]
+        apt : ["liblapack3"]
+        apt_dev : ["liblapack-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python']
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
+
+# needed in order to screen with windows version
+version_3_8_0 :
+{
+    patches : []
+}
+
+version_3_8_0_win:
+{
+    patches : ['lapack-3.8.0_windows.patch']
+    properties:
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
+
+version_3_6_1 :
+{
+    build_source : "cmake"
+    cmake_options : "-DUSE_OPTIMIZED_BLAS=OFF -DCBLAS=ON -DLAPACKE=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_LIBDIR=lib"
+}
+
+version_3_7_0 :
+{
+    build_source : "cmake"
+    cmake_options : "-DUSE_OPTIMIZED_BLAS=OFF -DCBLAS=ON -DLAPACKE=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_LIBDIR=lib"
+}
diff --git a/products/lata.pyconf b/products/lata.pyconf
new file mode 100644 (file)
index 0000000..055b3e3
--- /dev/null
@@ -0,0 +1,21 @@
+default :
+{
+    name : "lata"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ["ParaView"]
+    build_depend : ["cmake"]
+    patches : ['lata-plugin_visit.patch']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
diff --git a/products/libjpeg.pyconf b/products/libjpeg.pyconf
new file mode 100644 (file)
index 0000000..1601c24
--- /dev/null
@@ -0,0 +1,30 @@
+default :
+{
+    name : "libjpeg"
+    build_source : "script"
+    compil_script : $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['zlib']
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+   archive_info : {archive_name : "libjpeg-" + $APPLICATION.products.libjpeg + "_windows.tar.gz"}
+   properties:
+   {
+     incremental : "yes"
+     single_install_dir : "yes"
+   }
+}
diff --git a/products/libpng.pyconf b/products/libpng.pyconf
new file mode 100755 (executable)
index 0000000..3158537
--- /dev/null
@@ -0,0 +1,30 @@
+default :
+{
+    name : "libpng"
+    build_source : "script"
+    compil_script : $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [ 'zlib' ]
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+   archive_info : {archive_name : "libpng-" + $APPLICATION.products.libpng + "_windows.tar.gz"}
+   properties:
+   {
+     incremental : "yes"
+     single_install_dir : "yes"
+   }
+}
diff --git a/products/libxml2.pyconf b/products/libxml2.pyconf
new file mode 100644 (file)
index 0000000..20d27bb
--- /dev/null
@@ -0,0 +1,48 @@
+default :
+{
+    name : "libxml2"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["libxml2"]
+        rpm_dev : ["libxml2-devel"]
+        apt : ["libxml2"]
+        apt_dev : ["libxml2-dev"]
+    }
+    archive_info:
+    {
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python' ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+   properties:
+   {
+     incremental : "yes"
+     single_install_dir : "yes"
+   }
+}
+# needed in order to screen with windows version - see below
+version_2_9_1 :
+{
+  patches : []
+}
+
+version_2_9_1_win :
+{
+  patches : ["libxml2-2.9.1.patch"]
+}
diff --git a/products/llvm.pyconf b/products/llvm.pyconf
new file mode 100644 (file)
index 0000000..d125f9d
--- /dev/null
@@ -0,0 +1,50 @@
+default :
+{
+    name : "llvm"
+    build_source : "cmake"
+    cmake_options : "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$LLVM_ROOT_DIR -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_ENABLE_RTTI=ON -DLLVM_INSTALL_UTILS=ON -DLLVM_TARGETS_TO_BUILD:STRING=X86 -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python"
+    get_source : "archive"
+    system_info :
+    {
+       rpm : ["llvm-toolset"]
+       rpm_dev : []
+       apt : []
+       apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [ 'Python' ]
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      is_mesa : "yes"
+      not_in_package : "no"
+      incremental : "yes"
+    }
+    patches : []
+}
+
+version_8_0_1_clang :
+{
+    cmake_options : "-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$LLVM_ROOT_DIR -DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_ENABLE_RTTI=ON -DLLVM_INSTALL_UTILS=ON -DLLVM_TARGETS_TO_BUILD:STRING=X86 -DPYTHON_EXECUTABLE=${PYTHON_ROOT_DIR}/bin/python -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON -DLLVM_ENABLE_DUMP=ON "
+}
+
+version_8_0_1_clang_win :
+{
+    cmake_options : ' -DCMAKE_INSTALL_PREFIX=%LLVM_ROOT_DIR% -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON  -DPYTHON_EXECUTABLE:STRING=%PYTHON_ROOT_DIR:\=/%/python.exe -DLLVM_INSTALL_UTILS:BOOL=ON -DLLVM_ENABLE_DUMP:BOOL=ON -Thost=x64'
+   depend : [ 'Python' ]
+   archive_info:
+   {
+     archive_name : "llvm-8.0.1-clang.tar.gz"
+   }
+   properties:
+   {
+     incremental : "yes"
+     compile_time : "yes"
+   }
+}
diff --git a/products/markupsafe.pyconf b/products/markupsafe.pyconf
new file mode 100644 (file)
index 0000000..2b26e0d
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "MarkupSafe"
+    build_source : "script"
+    compil_script :  "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-markupsafe"]
+        rpm_dev : []
+        apt : ["python3-markupsafe"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : "markupsafe.py"
+    }
+    depend : ['Python', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "markupsafe-" + $APPLICATION.products.markupsafe + "_windows.tar.gz"}
+}
diff --git a/products/matplotlib.pyconf b/products/matplotlib.pyconf
new file mode 100755 (executable)
index 0000000..37ab373
--- /dev/null
@@ -0,0 +1,65 @@
+default :
+{
+    name : "matplotlib"
+    build_source : "script"
+    compil_script :  "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-matplotlib"]
+        rpm_dev : []
+        apt : ["python3-matplotlib"]
+        apt_dev : []
+    }
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    # OP distribute is not useful anymore
+    depend : ['Python', 'setuptools', 'PyQt',  'numpy', 'freetype', 'six', 'pytz', 'pyparsing', 'dateutil', 'cycler', 'kiwisolver']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      pip : "no"  # whl prerequisites do not correspond! backports.functools_lru_cache-1.5  and subprocess32-3.5.4 are missing
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script : 'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "matplotlib-" + $APPLICATION.products.matplotlib + "_windows.tar.gz"}
+   depend : ['Python', 'PyQt',  'numpy', 'freetype', 'six', 'pytz', 'pyparsing', 'dateutil', 'setuptools', 'cycler', 'kiwisolver']
+   properties:
+   {
+     incremental : "yes"
+     single_install_dir : "yes"
+   }
+}
+
+version_2_0_2 :
+{
+    depend : ['Python', 'PyQt',  'numpy', 'freetype', 'six', 'pytz', 'pyparsing', 'dateutil', 'setuptools', 'cycler']
+}
+
+version_1_4_3 :
+{
+    name : "matplotlib"
+    depend : ['Python', 'PyQt',  'numpy', 'freetype', 'six', 'pytz', 'distribute', 'pyparsing', 'dateutil', 'setuptools']
+    patches : [
+               $name + "_1_4_3_patch_freetype_detection_for_SAT.patch"
+               $name + "-1.4.3_no_auto_download.patch"
+               $name + "-1.4.3_fix_Cannot_connect_NavigationToolbar2QT.patch"
+              ]
+}
+
+version_1_4_2 :
+{
+    name : "matplotlib"
+    depend : ['Python', 'numpy', 'freetype']
+    patches : [
+                  $name + "_1_4_2_patch_freetype_detection_for_SAT.patch"
+              ]
+}
diff --git a/products/med_pre_windows.pyconf b/products/med_pre_windows.pyconf
new file mode 100755 (executable)
index 0000000..fa2d2e8
--- /dev/null
@@ -0,0 +1,22 @@
+default :
+{
+    name : "med"
+    build_source : "script"
+    compil_script :  "medCMake" + ".sh"
+    test_build : "make check"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [ "hdf5"]
+    opt_depend : ["openmpi"]
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :    
+    {
+        has_unit_tests
+    }
+}
diff --git a/products/medfile.pyconf b/products/medfile.pyconf
new file mode 100644 (file)
index 0000000..0d3ae84
--- /dev/null
@@ -0,0 +1,65 @@
+default :
+{
+    name : "medfile"
+    build_source : "script"
+    compil_script :  "medCMake" + $VARS.scriptExtension
+    test_build : "make test"
+    get_source : "archive"
+    archive_info : {archive_prefix : "med"}
+    environ :
+    {
+       env_script : "med.py"
+    }
+    depend : ["hdf5", "Python"]
+    opt_depend : ["openmpi"]
+    build_depend : ["cmake"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :    
+    {
+        incremental : "yes"
+        has_unit_tests : "yes"
+    }
+}
+
+default_Autotools :
+{
+    compil_script :  "med.sh"
+    test_build : "make check"
+    build_depend : []
+}
+
+# needed in order to screen with windows version - see below
+version_4_1_0 :
+{
+  patches : []
+}
+
+version_4_1_0_win : 
+{
+  patches : ['med-4.1.0_win_3x_files_support.patch']
+}
+
+# needed in order to screen with windows version - see below
+version_4_0_0 : 
+{
+  patches : []
+}
+
+version_4_0_0_win : 
+{
+  patches : ['med-4.0.0_unicode.patch', 'medfile-4.0.0.patch']
+}
+
+version_4_0_0alpha3 :
+{
+    patches : [ "med-4.0.0alpha3.patch" ]
+}
+
+version_3_0_6 :
+{
+    compil_script :  "med.sh"
+    depend : ["hdf5"]
+}
diff --git a/products/mesa.pyconf b/products/mesa.pyconf
new file mode 100644 (file)
index 0000000..a0cc7ef
--- /dev/null
@@ -0,0 +1,40 @@
+default :
+{
+    name : "mesa"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["mesa-libGL"]
+        rpm_dev : ["mesa-libGL-devel", "mesa-libGLU-devel"]
+        apt : []
+        apt_dev : ["mesa-common-dev", "libglu1-mesa-dev"]
+    }
+    environ :
+    {
+      env_script : $name + ".py"
+    }
+    depend : ['llvm']
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      is_mesa : "yes"
+      not_in_package : "no"
+      incremental : "yes"
+    }
+}
+
+default_win:
+{
+   archive_info : {archive_name : "mesa-" + $APPLICATION.products.mesa + "_windows.tar.gz"}
+   depend : []
+}
+
+version_19_0_8:
+{
+  patches: []
+}
diff --git a/products/metis.pyconf b/products/metis.pyconf
new file mode 100644 (file)
index 0000000..1993c51
--- /dev/null
@@ -0,0 +1,47 @@
+default :
+{
+    name : "metis"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info :
+    {
+       rpm : []
+       rpm_dev : ["metis-devel"]
+       apt : []
+       apt_dev : ["libmetis-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    build_depend : ["cmake"]
+    patches : [ ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+       incremental : "yes"
+    }
+}
+
+version_5_1_0  :
+{
+    compil_script :  "metis-5.1.0" + $VARS.scriptExtension
+    patches : [ "metis-use_cat_not_more.patch" ]
+}
+
+version_5_1_0_win  :
+{
+    patches: [ 'metis-use_cat_not_more.patch','metis-5.1.0_windows.patch']
+}
+
+version_5_0_2  :
+{
+    name : "metis"
+    build_source : "script"
+    compil_script :  "metis_5_0_2.sh"
+    patches : [ "metis-use_cat_not_more.patch" ]
+}
diff --git a/products/msvc.pyconf b/products/msvc.pyconf
new file mode 100644 (file)
index 0000000..d3c3aec
--- /dev/null
@@ -0,0 +1,21 @@
+default :
+{
+    name : "msvc"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    depend : []
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      single_install_dir : "yes" # aimed to solve sat #18914
+    }
+}
diff --git a/products/netgen.pyconf b/products/netgen.pyconf
new file mode 100755 (executable)
index 0000000..1d8a2ba
--- /dev/null
@@ -0,0 +1,79 @@
+default :
+{
+    name : "netgen"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['CAS', 'tcl', 'tk']
+    patches : [ ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+    }
+}
+
+default_win:
+{
+   depend : ['CAS','zlib','tcltk']
+}
+
+version_5_3_1_with_CAS_7_2 :
+{
+    archive_info : {archive_name : "netgen-5.3.1.tar.gz"}
+    compil_script :  'netgen_5_3_1' + $VARS.scriptExtension
+    patches : ["netgen-5.3.1-for-SALOME-OCCT-7.2.0.patch"]
+}
+
+version_5_3_1_with_CAS_7_2_win :
+{
+   compil_script :  'netgen.bat'
+   patches :  ['netgen53ForSalomeOCCT730.patch','netgen53ForWindows.patch','netgen53ForSalomeVisualStudio2017.patch']
+   properties :
+   {
+     incremental : "yes"
+     single_install_dir : "yes"
+   }
+}
+
+version_5_3_1 :
+{
+    compil_script :  "netgen_5_3_1.sh"
+    archive_info: {archive_name : "netgen-5.3.1.tar.gz"}
+    patches : [ "netgen53ForSalome.patch"]
+}
+
+version_4_9_13 :
+{
+    archive_info:
+    {
+        archive_name : "netgen-4.9.13.tar.gz"
+    }
+    depend : ['CAS', 'tcl', 'tk', "freetype"]
+    patches : [
+                  "netgen49ForSalome.patch"
+                  "netgen-4.9.13_without_togl.patch"
+              ]
+}
+
+version_4_9_13_with_CAS7 :
+{
+    compil_script :  "netgen_CAS7.sh"
+    archive_info:
+    {
+        archive_name : "netgen-4.9.13.tar.gz"
+    }
+    depend : ['CAS', 'tcl', 'tk', "freetype"]
+    patches : [
+                "netgen-4.9.13_without_togl.patch",
+                "netgen-4.9.13-for-SALOME_v2.patch",
+                "netgen-4.9.13-for-SALOME-OCCT7.0.0-Porting.patch",
+                "netgen-4.9.13-for-OCCT7.0.0-includes.patch"
+              ]
+}
diff --git a/products/nlopt.pyconf b/products/nlopt.pyconf
new file mode 100644 (file)
index 0000000..336664a
--- /dev/null
@@ -0,0 +1,32 @@
+default :
+{
+    name : "nlopt"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python']
+    build_depend : ["cmake", "swig"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "no"
+    }
+}
+
+default_win:
+{
+   depend : ['Python']
+   properties :
+   {
+     incremental : "yes"
+     single_install_dir : "yes"
+   }
+}
diff --git a/products/numpy.pyconf b/products/numpy.pyconf
new file mode 100755 (executable)
index 0000000..6ba91c6
--- /dev/null
@@ -0,0 +1,69 @@
+default :
+{
+    name : "numpy"
+    build_source : "script"
+    compil_script : $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-numpy"]
+        rpm_dev : []
+        apt : ["python3-numpy"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [ 'Python', 'setuptools', 'Cython', 'lapack' ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+
+default_win :
+{
+    compil_script :  'pip_install_whl' + $VARS.scriptExtension
+    archive_info:
+    {
+        archive_name : "numpy-"  + $APPLICATION.products.numpy + "_windows.tar.gz"
+    }
+    depend : [ 'Python', 'setuptools', 'Cython']
+}
+
+version_1_16_4_win_dbg:
+{
+    name : "numpy"
+    build_source : "script"
+    compil_script : $name + $VARS.scriptExtension
+    get_source : "archive"
+    archive_info:
+    {
+        archive_name : "numpy-1.16.4_windows.tar.gz"
+    }
+    depend : [ 'Python', 'setuptools', 'Cython']
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    properties:
+    {
+      incremental : "yes"
+      pip : "no"
+    }
+}
+
+version_1_5_1_to_1_9_2 :
+{
+    name : "numpy"
+    compil_script :  $name + $VARS.scriptExtension
+    depend : [ 'Python']
+}
diff --git a/products/omniNotify.pyconf b/products/omniNotify.pyconf
new file mode 100644 (file)
index 0000000..85a6a17
--- /dev/null
@@ -0,0 +1,19 @@
+version_2_1 :
+{
+    name : "omniNotify"
+    build_source : "script"
+    compil_script : $name + ".sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [ "omniORB", "Python" ]
+    patches : [ 
+        "omniNotify-2.1.patch"
+        "omniNotify-2.1-lib64.patch"
+              ] 
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : "base"
+} 
diff --git a/products/omniORB.pyconf b/products/omniORB.pyconf
new file mode 100644 (file)
index 0000000..babe49e
--- /dev/null
@@ -0,0 +1,19 @@
+default :
+{
+    name : "omniORB"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
diff --git a/products/omniORBpy.pyconf b/products/omniORBpy.pyconf
new file mode 100644 (file)
index 0000000..48a2d7f
--- /dev/null
@@ -0,0 +1,19 @@
+default :
+{
+    name : "omniORBpy"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['omniORB', 'Python' ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
\ No newline at end of file
diff --git a/products/openblas.pyconf b/products/openblas.pyconf
new file mode 100644 (file)
index 0000000..7b74a0c
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "openblas"
+    build_source : "script"
+    compil_script : $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python']
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "no"
+    }
+}
+
+default_win:
+{
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
diff --git a/products/opencv.pyconf b/products/opencv.pyconf
new file mode 100644 (file)
index 0000000..898abb6
--- /dev/null
@@ -0,0 +1,61 @@
+default :
+{
+    name : "opencv"
+    build_source : "script"
+    compil_script :  $name  + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["opencv"]
+        rpm_dev : ["opencv-devel"]
+        apt : ["libopencv"]
+        apt_dev : ["libopencv-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ["Python", "Sphinx", "numpy"]
+    build_depend : ["cmake"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+    }
+}
+
+default_win:
+{
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
+
+version_3_2_0 :
+{
+    patches : ["opencv-3.2.0-ccache.patch"]
+}
+
+version_3_2_0_win :
+{
+    patches : ["opencv-3.2.0-ccache.patch","opencv-3.2.0_windows.patch"]
+}
+
+version_3_2_0_with_ffmpeg :
+{
+    archive_info : {archive_name : "opencv-3.2.0.tar.gz"}
+    compil_script :  "opencv-3.2.0-with-ffmpeg" + $VARS.scriptExtension
+    patches : ["opencv-3.2.0-ccache.patch", "opencv-with-ffmpeg.patch"]
+    depend : ["Python", "Sphinx", "numpy", "ffmpeg", "lapack"]
+}
+
+
+version_2_4_6_1 :
+{
+    patches : ["opencv-2.4.6.1-gcc6.patch"]
+}
diff --git a/products/openmpi.pyconf b/products/openmpi.pyconf
new file mode 100644 (file)
index 0000000..cfc6ac4
--- /dev/null
@@ -0,0 +1,17 @@
+default :
+{
+    name : "openmpi"
+    build_source : "script"
+    compil_script :  $name + ".sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [ ]
+    opt_depend : [ ]
+    patches : [ ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
\ No newline at end of file
diff --git a/products/openssl.pyconf b/products/openssl.pyconf
new file mode 100644 (file)
index 0000000..364c0ba
--- /dev/null
@@ -0,0 +1,17 @@
+default :
+{
+    name : "openssl"
+    get_source : "native"
+    system_info : 
+    {
+        rpm : []
+        rpm_dev : ["openssl-devel"]
+        apt : []
+        apt_dev : ["openssl-dev"]
+    }
+    depend : []
+    properties :
+    {
+      incremental : "yes"
+    }
+}
diff --git a/products/ospray.pyconf b/products/ospray.pyconf
new file mode 100644 (file)
index 0000000..ffe64c9
--- /dev/null
@@ -0,0 +1,36 @@
+default :
+{
+    name : "ospray"
+    build_source : "cmake"
+    cmake_options : "-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DEMBREE_ISPC_SUPPORT=ON -DEMBREE_TUTORIALS=OFF -Dembree_DIR=${embree_DIR} -DOSPRAY_ENABLE_APPS=OFF -DOSPRAY_ENABLE_TUTORIALS=OFF -DCMAKE_INSTALL_LIBDIR=lib"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['embree']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+    cmake_options : '  -Dembree_DIR=%embree_DIR:\=/% -DTBB_ROOT=%TBB_DIR:\=/% -DOSPRAY_TASKING_SYSTEM=TBB  -DOSPRAY_ENABLE_APPS=OFF -DOSPRAY_ENABLE_TUTORIALS=OFF '
+    depend : ['embree']
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
+
+version_1_7_3 :
+{
+    # OSPRAY_ENABLE_APPS not needed here, otherwise compilation issues on several Fedora nodes.
+    cmake_options : "-DEMBREE_TUTORIALS=OFF -Dembree_DIR=${embree_DIR} -DOSPRAY_ENABLE_TUTORIALS=OFF -DOSPRAY_ENABLE_APPS=OFF -DCMAKE_INSTALL_LIBDIR=lib"
+}
diff --git a/products/packaging.pyconf b/products/packaging.pyconf
new file mode 100755 (executable)
index 0000000..fd39a56
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "packaging"
+    build_source : "script"
+    compil_script : "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-packaging"]
+        rpm_dev : []
+        apt : ["python3-packaging"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools', 'six', 'pyparsing']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "packaging-" + $APPLICATION.products.packaging + "_windows.tar.gz"}
+}
diff --git a/products/patches/0001-Update-PlaneGCS-solver-for-SHAPER-needs.patch b/products/patches/0001-Update-PlaneGCS-solver-for-SHAPER-needs.patch
new file mode 100644 (file)
index 0000000..28c2a5e
--- /dev/null
@@ -0,0 +1,647 @@
+From 853a0a438422d61cf1b9756d6949e04e5270d495 Mon Sep 17 00:00:00 2001
+From: azv <azv@opencascade.com>
+Date: Thu, 2 Aug 2018 11:32:16 +0300
+Subject: [PATCH] Update PlaneGCS solver for SHAPER needs
+
+* Add possibility to compile PlaneGCS as a shared library
+* Possibility to avoid memory clearance inside the solver (make possible external memory management)
+---
+ src/Mod/Sketcher/App/planegcs/Constraints.h | 48 ++++++++---------
+ src/Mod/Sketcher/App/planegcs/GCS.cpp       | 81 +++++++++++++++++++++++------
+ src/Mod/Sketcher/App/planegcs/GCS.h         |  8 +--
+ src/Mod/Sketcher/App/planegcs/Geo.h         | 34 ++++++------
+ src/Mod/Sketcher/App/planegcs/Util.h        | 10 ++++
+ 5 files changed, 123 insertions(+), 58 deletions(-)
+
+diff --git a/src/Mod/Sketcher/App/planegcs/Constraints.h b/src/Mod/Sketcher/App/planegcs/Constraints.h
+index 559f3a2..76e4763 100644
+--- a/src/Mod/Sketcher/App/planegcs/Constraints.h
++++ b/src/Mod/Sketcher/App/planegcs/Constraints.h
+@@ -91,7 +91,7 @@ namespace GCS
+         HyperbolaNegativeMinorY = 17
+     };
+-    class Constraint
++    class PLANEGCS_EXPORT Constraint
+     {
+     _PROTECTED_UNLESS_EXTRACT_MODE_:
+         VEC_pD origpvec; // is used only as a reference for redirecting and reverting pvec
+@@ -128,7 +128,7 @@ namespace GCS
+     };
+     // Equal
+-    class ConstraintEqual : public Constraint
++    class PLANEGCS_EXPORT ConstraintEqual : public Constraint
+     {
+     private:
+         inline double* param1() { return pvec[0]; }
+@@ -142,7 +142,7 @@ namespace GCS
+     };
+     // Difference
+-    class ConstraintDifference : public Constraint
++    class PLANEGCS_EXPORT ConstraintDifference : public Constraint
+     {
+     private:
+         inline double* param1() { return pvec[0]; }
+@@ -157,7 +157,7 @@ namespace GCS
+     };
+     // P2PDistance
+-    class ConstraintP2PDistance : public Constraint
++    class PLANEGCS_EXPORT ConstraintP2PDistance : public Constraint
+     {
+     private:
+         inline double* p1x() { return pvec[0]; }
+@@ -178,7 +178,7 @@ namespace GCS
+     };
+     // P2PAngle
+-    class ConstraintP2PAngle : public Constraint
++    class PLANEGCS_EXPORT ConstraintP2PAngle : public Constraint
+     {
+     private:
+         inline double* p1x() { return pvec[0]; }
+@@ -200,7 +200,7 @@ namespace GCS
+     };
+     // P2LDistance
+-    class ConstraintP2LDistance : public Constraint
++    class PLANEGCS_EXPORT ConstraintP2LDistance : public Constraint
+     {
+     private:
+         inline double* p0x() { return pvec[0]; }
+@@ -224,7 +224,7 @@ namespace GCS
+     };
+     // PointOnLine
+-    class ConstraintPointOnLine : public Constraint
++    class PLANEGCS_EXPORT ConstraintPointOnLine : public Constraint
+     {
+     private:
+         inline double* p0x() { return pvec[0]; }
+@@ -246,7 +246,7 @@ namespace GCS
+     };
+     // PointOnPerpBisector
+-    class ConstraintPointOnPerpBisector : public Constraint
++    class PLANEGCS_EXPORT ConstraintPointOnPerpBisector : public Constraint
+     {
+     private:
+         inline double* p0x() { return pvec[0]; }
+@@ -268,7 +268,7 @@ namespace GCS
+     };
+     // Parallel
+-    class ConstraintParallel : public Constraint
++    class PLANEGCS_EXPORT ConstraintParallel : public Constraint
+     {
+     private:
+         inline double* l1p1x() { return pvec[0]; }
+@@ -291,7 +291,7 @@ namespace GCS
+     };
+     // Perpendicular
+-    class ConstraintPerpendicular : public Constraint
++    class PLANEGCS_EXPORT ConstraintPerpendicular : public Constraint
+     {
+     private:
+         inline double* l1p1x() { return pvec[0]; }
+@@ -315,7 +315,7 @@ namespace GCS
+     };
+     // L2LAngle
+-    class ConstraintL2LAngle : public Constraint
++    class PLANEGCS_EXPORT ConstraintL2LAngle : public Constraint
+     {
+     private:
+         inline double* l1p1x() { return pvec[0]; }
+@@ -342,7 +342,7 @@ namespace GCS
+     };
+     // MidpointOnLine
+-    class ConstraintMidpointOnLine : public Constraint
++    class PLANEGCS_EXPORT ConstraintMidpointOnLine : public Constraint
+     {
+     private:
+         inline double* l1p1x() { return pvec[0]; }
+@@ -366,7 +366,7 @@ namespace GCS
+     };
+     // TangentCircumf
+-    class ConstraintTangentCircumf : public Constraint
++    class PLANEGCS_EXPORT ConstraintTangentCircumf : public Constraint
+     {
+     private:
+         inline double* c1x() { return pvec[0]; }
+@@ -389,7 +389,7 @@ namespace GCS
+         virtual double grad(double *);
+     };
+     // PointOnEllipse
+-    class ConstraintPointOnEllipse : public Constraint
++    class PLANEGCS_EXPORT ConstraintPointOnEllipse : public Constraint
+     {
+     private:
+         inline double* p1x() { return pvec[0]; }
+@@ -411,7 +411,7 @@ namespace GCS
+         virtual double grad(double *);
+     };
+     
+-    class ConstraintEllipseTangentLine : public Constraint
++    class PLANEGCS_EXPORT ConstraintEllipseTangentLine : public Constraint
+     {
+     private:
+         Line l;
+@@ -426,7 +426,7 @@ namespace GCS
+         virtual double grad(double *);
+     };
+         
+-    class ConstraintInternalAlignmentPoint2Ellipse : public Constraint
++    class PLANEGCS_EXPORT ConstraintInternalAlignmentPoint2Ellipse : public Constraint
+     {
+     public:
+         ConstraintInternalAlignmentPoint2Ellipse(Ellipse &e, Point &p1, InternalAlignmentType alignmentType);
+@@ -442,7 +442,7 @@ namespace GCS
+         InternalAlignmentType AlignmentType;
+     };
+-    class ConstraintInternalAlignmentPoint2Hyperbola : public Constraint
++    class PLANEGCS_EXPORT ConstraintInternalAlignmentPoint2Hyperbola : public Constraint
+     {
+     public:
+         ConstraintInternalAlignmentPoint2Hyperbola(Hyperbola &e, Point &p1, InternalAlignmentType alignmentType);
+@@ -458,7 +458,7 @@ namespace GCS
+         InternalAlignmentType AlignmentType;
+     };
+-    class ConstraintEqualMajorAxesConic : public Constraint
++    class PLANEGCS_EXPORT ConstraintEqualMajorAxesConic : public Constraint
+     {
+     private:
+         MajorRadiusConic * e1;
+@@ -473,7 +473,7 @@ namespace GCS
+         virtual double grad(double *);
+     };
+-    class ConstraintEqualFocalDistance : public Constraint
++    class PLANEGCS_EXPORT ConstraintEqualFocalDistance : public Constraint
+     {
+     private:
+         ArcOfParabola * e1;
+@@ -488,7 +488,7 @@ namespace GCS
+         virtual double grad(double *);
+     };
+-    class ConstraintCurveValue : public Constraint
++    class PLANEGCS_EXPORT ConstraintCurveValue : public Constraint
+     {
+     private:
+         inline double* pcoord() { return pvec[2]; } //defines, which coordinate of point is being constrained by this constraint
+@@ -515,7 +515,7 @@ namespace GCS
+     };
+     
+     // PointOnHyperbola
+-    class ConstraintPointOnHyperbola : public Constraint
++    class PLANEGCS_EXPORT ConstraintPointOnHyperbola : public Constraint
+     {
+     private:
+         inline double* p1x() { return pvec[0]; }
+@@ -538,7 +538,7 @@ namespace GCS
+     };
+     // PointOnParabola
+-    class ConstraintPointOnParabola : public Constraint
++    class PLANEGCS_EXPORT ConstraintPointOnParabola : public Constraint
+     {
+     private:
+         void errorgrad(double* err, double* grad, double *param); //error and gradient combined. Values are returned through pointers.
+@@ -558,7 +558,7 @@ namespace GCS
+         virtual double grad(double *);
+     };
+     
+-    class ConstraintAngleViaPoint : public Constraint
++    class PLANEGCS_EXPORT ConstraintAngleViaPoint : public Constraint
+     {
+     private:
+         inline double* angle() { return pvec[0]; };
+@@ -583,7 +583,7 @@ namespace GCS
+         virtual double grad(double *);
+     };
+-    class ConstraintSnell : public Constraint //snell's law angles constrainer. Point needs to lie on all three curves to be constraied.
++    class PLANEGCS_EXPORT ConstraintSnell : public Constraint //snell's law angles constrainer. Point needs to lie on all three curves to be constraied.
+     {
+     private:
+         inline double* n1() { return pvec[0]; };
+diff --git a/src/Mod/Sketcher/App/planegcs/GCS.cpp b/src/Mod/Sketcher/App/planegcs/GCS.cpp
+index 474024a..9103653 100644
+--- a/src/Mod/Sketcher/App/planegcs/GCS.cpp
++++ b/src/Mod/Sketcher/App/planegcs/GCS.cpp
+@@ -101,11 +101,56 @@
+ #endif
+ #include <FCConfig.h>
++#ifndef _GCS_USE_STL_OUTPUT
+ #include <Base/Console.h>
++#endif
+ #include <boost/graph/adjacency_list.hpp>
+ #include <boost/graph/connected_components.hpp>
++namespace GCS
++{
++  void Log(const char* message)
++  {
++#ifdef _GCS_USE_STL_OUTPUT
++    std::cout << message << std::endl;
++#else
++    Base::Console().Log(message);
++#endif
++  }
++
++  void Log(const char* format, const char* param)
++  {
++#ifdef _GCS_USE_STL_OUTPUT
++    static char message[4096];
++    sprintf(message, format, param);
++    std::cout << message << std::endl;
++#else
++    Base::Console().Log(format, param);
++#endif
++  }
++
++  void Log(const char* format, const size_t param)
++  {
++#ifdef _GCS_USE_STL_OUTPUT
++    static char message[4096];
++    sprintf(message, format, param);
++    std::cout << message << std::endl;
++#else
++    Base::Console().Log(format, param);
++#endif
++}
++
++  void Warning(const char* message)
++  {
++#ifdef _GCS_USE_STL_OUTPUT
++    std::cout << "Warning: " << message << std::endl;
++#else
++    Base::Console().Warning(message);
++#endif
++  }
++}
++
+ typedef Eigen::FullPivHouseholderQR<Eigen::MatrixXd>::IntDiagSizeVectorType MatrixIndexType;
+ #ifdef _GCS_DEBUG
+@@ -130,7 +175,7 @@ void LogMatrix(std::string str, Eigen::MatrixXd matrix )
+ #else
+     const std::string tmp = stream.str();
+-    Base::Console().Log(tmp.c_str());
++    GCS::Log(tmp.c_str());
+ #endif
+ }
+@@ -155,7 +200,7 @@ void LogMatrix(std::string str, MatrixIndexType matrix )
+     #else
+     const std::string tmp = stream.str();
+-    Base::Console().Log(tmp.c_str());
++    GCS::Log(tmp.c_str());
+     #endif
+ }
+ #endif
+@@ -178,7 +223,7 @@ void LogString(std::string str)
+     #else
+     const std::string tmp = stream.str();
+-    Base::Console().Log(tmp.c_str());
++    GCS::Log(tmp.c_str());
+     #endif
+ }
+@@ -429,7 +474,11 @@ void System::clear()
+     reference.clear();
+     clearSubSystems();
++#ifdef _GCS_DO_NOT_FREE_CONSTRAINTS_MEMORY
++    clist.clear();
++#else
+     free(clist);
++#endif
+     c2p.clear();
+     p2c.clear();
+ }
+@@ -486,9 +535,11 @@ void System::removeConstraint(Constraint *constr)
+     }
+     c2p.erase(constr);
++#ifndef _GCS_DO_NOT_FREE_CONSTRAINTS_MEMORY
+     std::vector<Constraint *> constrvec;
+     constrvec.push_back(constr);
+     free(constrvec);
++#endif
+ }
+ // basic constraints
+@@ -1477,7 +1528,7 @@ int System::solve_BFGS(SubSystem *subsys, bool /*isFine*/, bool isRedundantsolvi
+                 << ", maxIter: "            << maxIterNumber  << "\n";
+         const std::string tmp = stream.str();
+-        Base::Console().Log(tmp.c_str());
++        GCS::Log(tmp.c_str());
+     }
+     double divergingLim = 1e6*err + 1e12;
+@@ -1493,7 +1544,7 @@ int System::solve_BFGS(SubSystem *subsys, bool /*isFine*/, bool isRedundantsolvi
+                         << ", h_norm: "           << h_norm  << "\n";
+                 const std::string tmp = stream.str();
+-                Base::Console().Log(tmp.c_str());
++                GCS::Log(tmp.c_str());
+             }
+             break;
+         }
+@@ -1505,7 +1556,7 @@ int System::solve_BFGS(SubSystem *subsys, bool /*isFine*/, bool isRedundantsolvi
+                         << ", divergingLim: "            << divergingLim  << "\n";
+                 const std::string tmp = stream.str();
+-                Base::Console().Log(tmp.c_str());
++                GCS::Log(tmp.c_str());
+             }
+             break;
+         }
+@@ -1542,7 +1593,7 @@ int System::solve_BFGS(SubSystem *subsys, bool /*isFine*/, bool isRedundantsolvi
+                     << ", h_norm: "                 << h_norm << "\n";
+             const std::string tmp = stream.str();
+-            Base::Console().Log(tmp.c_str());
++            GCS::Log(tmp.c_str());
+         }
+     }
+@@ -1598,7 +1649,7 @@ int System::solve_LM(SubSystem* subsys, bool isRedundantsolving)
+                 << ", maxIter: "        << maxIterNumber  << "\n";
+         const std::string tmp = stream.str();
+-        Base::Console().Log(tmp.c_str());
++        GCS::Log(tmp.c_str());
+     }
+     double nu=2, mu=0;
+@@ -1712,7 +1763,7 @@ int System::solve_LM(SubSystem* subsys, bool isRedundantsolving)
+                     << ", h_norm: "                 << h_norm << "\n";
+             const std::string tmp = stream.str();
+-            Base::Console().Log(tmp.c_str());
++            GCS::Log(tmp.c_str());
+         }
+     }
+@@ -1757,7 +1808,7 @@ int System::solve_DL(SubSystem* subsys, bool isRedundantsolving)
+                 << ", maxIter: "        << maxIterNumber  << "\n";
+         const std::string tmp = stream.str();
+-        Base::Console().Log(tmp.c_str());
++        GCS::Log(tmp.c_str());
+     }
+     Eigen::VectorXd x(xsize), x_new(xsize);
+@@ -1912,7 +1963,7 @@ int System::solve_DL(SubSystem* subsys, bool isRedundantsolving)
+                     << ", err(divergingLim): "  << err  << "\n";
+             const std::string tmp = stream.str();
+-            Base::Console().Log(tmp.c_str());
++            GCS::Log(tmp.c_str());
+         }
+         // count this iteration and start again
+@@ -1926,7 +1977,7 @@ int System::solve_DL(SubSystem* subsys, bool isRedundantsolving)
+         stream  << "DL: stopcode: "     << stop << ((stop == 1) ? ", Success" : ", Failed") << "\n";
+         const std::string tmp = stream.str();
+-        Base::Console().Log(tmp.c_str());
++        GCS::Log(tmp.c_str());
+     }
+     return (stop == 1) ? Success : Failed;
+@@ -3721,7 +3772,7 @@ int System::diagnose(Algorithm alg)
+     Eigen::SparseQR<Eigen::SparseMatrix<double>, Eigen::COLAMDOrdering<int> > SqrJT;
+ #else
+     if(qrAlgorithm==EigenSparseQR){
+-        Base::Console().Warning("SparseQR not supported by you current version of Eigen. It requires Eigen 3.2.2 or higher. Falling back to Dense QR\n");
++        GCS::Warning("SparseQR not supported by you current version of Eigen. It requires Eigen 3.2.2 or higher. Falling back to Dense QR\n");
+         qrAlgorithm=EigenDenseQR;
+     }
+ #endif
+@@ -4074,7 +4125,7 @@ int System::diagnose(Algorithm alg)
+                         break;
+                 }
+-                Base::Console().Log("Sketcher::RedundantSolving-%s-\n",solvername.c_str());
++                GCS::Log("Sketcher::RedundantSolving-%s-\n",solvername.c_str());
+             }
+             if (res == Success) {
+@@ -4088,7 +4139,7 @@ int System::diagnose(Algorithm alg)
+                 resetToReference();
+                 if(debugMode==Minimal || debugMode==IterationLevel) {
+-                    Base::Console().Log("Sketcher Redundant solving: %d redundants\n",redundant.size());
++                    GCS::Log("Sketcher Redundant solving: %d redundants\n",redundant.size());
+                 }
+                 std::vector< std::vector<Constraint *> > conflictGroupsOrig=conflictGroups;
+diff --git a/src/Mod/Sketcher/App/planegcs/GCS.h b/src/Mod/Sketcher/App/planegcs/GCS.h
+index 17d57c8..ecc5b04 100644
+--- a/src/Mod/Sketcher/App/planegcs/GCS.h
++++ b/src/Mod/Sketcher/App/planegcs/GCS.h
+@@ -69,7 +69,7 @@ namespace GCS
+         IterationLevel = 2
+     };
+-    class System
++    class PLANEGCS_EXPORT System
+     {
+     // This is the main class. It holds all constraints and information
+     // about partitioning into subsystems and solution strategies
+@@ -283,9 +283,9 @@ namespace GCS
+     // Helper elements
+     ///////////////////////////////////////
+-    void free(VEC_pD &doublevec);
+-    void free(std::vector<Constraint *> &constrvec);
+-    void free(std::vector<SubSystem *> &subsysvec);
++    PLANEGCS_EXPORT void free(VEC_pD &doublevec);
++    PLANEGCS_EXPORT void free(std::vector<Constraint *> &constrvec);
++    PLANEGCS_EXPORT void free(std::vector<SubSystem *> &subsysvec);
+ } //namespace GCS
+diff --git a/src/Mod/Sketcher/App/planegcs/Geo.h b/src/Mod/Sketcher/App/planegcs/Geo.h
+index 1cdb983..6246f3b 100644
+--- a/src/Mod/Sketcher/App/planegcs/Geo.h
++++ b/src/Mod/Sketcher/App/planegcs/Geo.h
+@@ -26,16 +26,20 @@
+ #include <cmath>
+ #include "Util.h"
++#ifdef _MSC_VER
++#pragma warning(disable : 4251)
++#endif
++
+ namespace GCS
+ {
+-    class DependentParameters 
++    class PLANEGCS_EXPORT DependentParameters
+     {
+     public:
+         DependentParameters():hasDependentParameters(false) {}
+         bool hasDependentParameters;
+     };
+     
+-    class Point : public DependentParameters
++    class PLANEGCS_EXPORT Point : public DependentParameters
+     {
+     public:
+         Point(){x = 0; y = 0;}
+@@ -55,7 +59,7 @@ namespace GCS
+     ///manually as well. The class also provides a bunch of methods to do math
+     ///on it (and derivatives are calculated implicitly).
+     ///
+-    class DeriVector2
++    class PLANEGCS_EXPORT DeriVector2
+     {
+     public:
+         DeriVector2(){x=0; y=0; dx=0; dy=0;}
+@@ -95,7 +99,7 @@ namespace GCS
+     // Geometries
+     ///////////////////////////////////////
+-    class Curve: public DependentParameters //a base class for all curve-based objects (line, circle/arc, ellipse/arc)
++    class PLANEGCS_EXPORT Curve: public DependentParameters //a base class for all curve-based objects (line, circle/arc, ellipse/arc)
+     {
+     public:
+         virtual ~Curve(){}
+@@ -125,7 +129,7 @@ namespace GCS
+         virtual Curve* Copy() = 0; //DeepSOIC: I haven't found a way to simply copy a curve object provided pointer to a curve object.
+     };
+-    class Line: public Curve
++    class PLANEGCS_EXPORT Line: public Curve
+     {
+     public:
+         Line(){}
+@@ -139,7 +143,7 @@ namespace GCS
+         virtual Line* Copy();
+     };
+-    class Circle: public Curve
++    class PLANEGCS_EXPORT Circle: public Curve
+     {
+     public:
+         Circle(){rad = 0;}
+@@ -153,7 +157,7 @@ namespace GCS
+         virtual Circle* Copy();
+     };
+-    class Arc: public Circle
++    class PLANEGCS_EXPORT Arc: public Circle
+     {
+     public:
+         Arc(){startAngle=0;endAngle=0;rad=0;}
+@@ -169,7 +173,7 @@ namespace GCS
+         virtual Arc* Copy();
+     };
+     
+-    class MajorRadiusConic: public Curve
++    class PLANEGCS_EXPORT MajorRadiusConic: public Curve
+     {
+     public:
+         virtual ~MajorRadiusConic(){}
+@@ -179,7 +183,7 @@ namespace GCS
+         DeriVector2 CalculateNormal(Point &p, double* derivparam = 0) = 0;
+     };
+     
+-    class Ellipse: public MajorRadiusConic
++    class PLANEGCS_EXPORT Ellipse: public MajorRadiusConic
+     {
+     public:
+         Ellipse(){ radmin = 0;}
+@@ -197,7 +201,7 @@ namespace GCS
+         virtual Ellipse* Copy();
+     };
+     
+-    class ArcOfEllipse: public Ellipse
++    class PLANEGCS_EXPORT ArcOfEllipse: public Ellipse
+     {
+     public:
+         ArcOfEllipse(){startAngle=0;endAngle=0;radmin = 0;}
+@@ -215,7 +219,7 @@ namespace GCS
+         virtual ArcOfEllipse* Copy();
+     };
+     
+-    class Hyperbola: public MajorRadiusConic
++    class PLANEGCS_EXPORT Hyperbola: public MajorRadiusConic
+     {
+     public:
+         Hyperbola(){ radmin = 0;}
+@@ -233,7 +237,7 @@ namespace GCS
+         virtual Hyperbola* Copy();
+     };    
+-    class ArcOfHyperbola: public Hyperbola
++    class PLANEGCS_EXPORT ArcOfHyperbola: public Hyperbola
+     {
+     public:
+         ArcOfHyperbola(){startAngle=0;endAngle=0;radmin = 0;}
+@@ -249,7 +253,7 @@ namespace GCS
+         virtual ArcOfHyperbola* Copy();
+     };
+     
+-    class Parabola: public Curve
++    class PLANEGCS_EXPORT Parabola: public Curve
+     {
+     public:
+         Parabola(){ }
+@@ -263,7 +267,7 @@ namespace GCS
+         virtual Parabola* Copy();
+     };    
+-    class ArcOfParabola: public Parabola
++    class PLANEGCS_EXPORT ArcOfParabola: public Parabola
+     {
+     public:
+         ArcOfParabola(){startAngle=0;endAngle=0;}
+@@ -279,7 +283,7 @@ namespace GCS
+         virtual ArcOfParabola* Copy();
+     };
+-    class BSpline: public Curve
++    class PLANEGCS_EXPORT BSpline: public Curve
+     {
+     public:
+         BSpline(){periodic=false;degree=2;}
+diff --git a/src/Mod/Sketcher/App/planegcs/Util.h b/src/Mod/Sketcher/App/planegcs/Util.h
+index 8a759ba..7baafaa 100644
+--- a/src/Mod/Sketcher/App/planegcs/Util.h
++++ b/src/Mod/Sketcher/App/planegcs/Util.h
+@@ -44,4 +44,14 @@ namespace GCS
+ } //namespace GCS
++#if defined WIN32
++#  if defined PLANEGCS_EXPORTS
++#    define PLANEGCS_EXPORT __declspec(dllexport)
++#  else
++#    define PLANEGCS_EXPORT __declspec(dllimport)
++#  endif
++#else
++#  define PLANEGCS_EXPORT
++#endif
++
+ #endif // PLANEGCS_UTIL_H
+-- 
+2.9.0.windows.1
+
diff --git a/products/patches/BLSURFPLUGIN_8_4_0.patch b/products/patches/BLSURFPLUGIN_8_4_0.patch
new file mode 100644 (file)
index 0000000..e9b5bf2
--- /dev/null
@@ -0,0 +1,12 @@
+diff -ru BLSURFPLUGIN_orig/tests/tests.set BLSURFPLUGIN_new/tests/tests.set
+--- BLSURFPLUGIN_orig/tests/tests.set  2018-01-17 18:22:04.712283026 +0100
++++ BLSURFPLUGIN_new/tests/tests.set   2018-01-17 18:25:29.130048705 +0100
+@@ -23,7 +23,7 @@
+   attractor_point_outside_face
+   enforced_internal_vertex
+   enforced_vertex
+-  multithread
++  #multithread # commented due to conflict between BLSURFPLUGIN and SAMPLES
+   periodicity_2D_prepro
+   #periodicity_prepro # already tested in examples
+   periodicity_reflexion_2D_prepro
diff --git a/products/patches/CAS-6.5.4.patch b/products/patches/CAS-6.5.4.patch
new file mode 100755 (executable)
index 0000000..0c7f9a0
--- /dev/null
@@ -0,0 +1,24 @@
+diff -pruN CAS-6.5.4_orig/configure.ac CAS-6.5.4/configure.ac
+--- CAS-6.5.4_orig/configure.ac        2012-11-12 11:53:15.000000000 +0100
++++ CAS-6.5.4/configure.ac     2013-02-27 10:58:49.000000000 +0100
+@@ -24,7 +24,7 @@ dnl Checks for programs.
+ AM_PROG_LIBTOOL
+ AC_PROG_CXX
+ AC_PROG_CC_C_O
+-AM_C_PROTOTYPES
++# AM_C_PROTOTYPES # obsolete macro in automake 1.13
+ AC_PROG_AWK
+ AC_PROG_INSTALL
+diff -pruN CAS-6.5.4_orig/src/STEPControl/STEPControl_Reader.cxx CAS-6.5.4/src/STEPControl/STEPControl_Reader.cxx
+--- CAS-6.5.4_orig/src/STEPControl/STEPControl_Reader.cxx      2012-11-12 11:42:38.000000000 +0100
++++ CAS-6.5.4/src/STEPControl/STEPControl_Reader.cxx   2013-02-27 10:57:31.000000000 +0100
+@@ -540,7 +540,7 @@ Standard_Boolean STEPControl_Reader::fin
+          continue;
+       anUnitFact = (!aSiUnit->HasPrefix()  ? 
+                     1. : STEPConstruct_UnitContext::ConvertSiPrefix(aSiUnit->Prefix()));
+-      aName = getSiName(aSiUnit->Name(), aSiUnit->Prefix());
++      aName = getSiName(aSiUnit->Name(), aSiUnit->HasPrefix() ? aSiUnit->Prefix() : StepBasic_SiPrefix(-1));
+       
+            
+     }
diff --git a/products/patches/CAS_autotools_macros.patch b/products/patches/CAS_autotools_macros.patch
new file mode 100755 (executable)
index 0000000..ab4b4c4
--- /dev/null
@@ -0,0 +1,12 @@
+diff -pruN CAS-6.7.1-orig/configure.ac CAS-6.7.1/configure.ac\r
+--- CAS-6.7.1-orig/configure.ac        2014-05-13 17:19:43.692323453 +0200\r
++++ CAS-6.7.1/configure.ac     2014-05-13 17:20:38.807993144 +0200\r
+@@ -10,7 +10,7 @@ CXXFLAGS="$CXXFLAGS"\r
\r
+ AC_PROG_CC\r
\r
+-AM_CONFIG_HEADER(config.h)\r
++AC_CONFIG_HEADERS(config.h)\r
\r
+ dnl AM_MAINTAINER_MODE\r
\r
diff --git a/products/patches/CONFIGURATION-FC29.patch b/products/patches/CONFIGURATION-FC29.patch
new file mode 100644 (file)
index 0000000..7239b10
--- /dev/null
@@ -0,0 +1,23 @@
+diff --git a/cmake/FindXDR.cmake b/cmake/FindXDR.cmake
+index e8e8625..a47508f 100644
+--- a/cmake/FindXDR.cmake
++++ b/cmake/FindXDR.cmake
+@@ -21,8 +21,16 @@ MESSAGE(STATUS "Check for XDR ...")
+ FIND_PATH(XDR_INCLUDE_DIRS rpc/xdr.h)
+ IF(XDR_INCLUDE_DIRS)
+-   SET(XDR_DEFINITIONS "-DHAS_XDR")
+-ENDIF()
++  SET(XDR_DEFINITIONS "-DHAS_XDR")
++ELSE(XDR_INCLUDE_DIRS)
++  IF(EXISTS "/usr/include/tirpc/rpc/xdr.h")
++    MESSAGE(STATUS "XDR was found in /usr/include/tirpc ...")
++    include_directories(/usr/include/tirpc)
++    SET(XDR_DEFINITIONS "-DHAS_XDR")
++    SET(XDR_INCLUDE_DIRS "/usr/include/tirpc")
++    FIND_LIBRARY(XDR_LIBRARIES tirpc)
++  ENDIF()
++ENDIF(XDR_INCLUDE_DIRS)
+ IF(WIN32)
+   FIND_LIBRARY(XDR_LIBRARIES xdr)                 # To get the .lib file from XDR
diff --git a/products/patches/COREFLOWS_PROFILE_NO_ENV_78.patch b/products/patches/COREFLOWS_PROFILE_NO_ENV_78.patch
new file mode 100755 (executable)
index 0000000..e9b9ae3
--- /dev/null
@@ -0,0 +1,11 @@
+diff -pruN COREFLOWS_PROFILE_orig/CMakeLists.txt COREFLOWS_PROFILE/CMakeLists.txt
+--- COREFLOWS_PROFILE_orig/CMakeLists.txt      2016-09-02 16:42:26.275969934 +0200
++++ COREFLOWS_PROFILE/CMakeLists.txt   2016-09-02 16:46:41.643533006 +0200
+@@ -117,5 +117,6 @@ SALOME_INSTALL_SCRIPTS("${_salome_contex
+ SET(_salome_context_BASHRC
+    ${KERNEL_ROOT_DIR}/bin/salome/appliskel/.bashrc
+ )
+-FILE(TO_CMAKE_PATH $ENV{COREFLOWS_PROFILE_ROOT_DIR} _COREFLOWS_PROFILE_ROOT_DIR)
++
++FILE(TO_CMAKE_PATH ${CMAKE_INSTALL_PREFIX} _COREFLOWS_PROFILE_ROOT_DIR)
+ SALOME_INSTALL_SCRIPTS("${_salome_context_BASHRC}" ${_COREFLOWS_PROFILE_ROOT_DIR})
diff --git a/products/patches/GUI_GLdispatch.patch b/products/patches/GUI_GLdispatch.patch
new file mode 100644 (file)
index 0000000..59e7d13
--- /dev/null
@@ -0,0 +1,32 @@
+diff --git a/src/SUITApp/CMakeLists.txt b/src/SUITApp/CMakeLists.txt
+index 7668604..5f4e828 100755
+--- a/src/SUITApp/CMakeLists.txt
++++ b/src/SUITApp/CMakeLists.txt
+@@ -41,6 +41,11 @@ IF(SALOME_USE_PYCONSOLE)
+   LIST(APPEND _link_LIBRARIES ${PYTHON_LIBRARIES})
+ ENDIF()
++FIND_LIBRARY(GLAPI_DISPATCH_LIBRARY libGLdispatch.so)
++IF(GLAPI_DISPATCH_LIBRARY)
++  LIST(APPEND _link_LIBRARIES GLdispatch)
++ENDIF()
++
+ # --- headers ---
+ # header files / to be processed by moc
+diff --git a/src/TOOLSGUI/CMakeLists.txt b/src/TOOLSGUI/CMakeLists.txt
+index e60ddda..1339b2c 100755
+--- a/src/TOOLSGUI/CMakeLists.txt
++++ b/src/TOOLSGUI/CMakeLists.txt
+@@ -52,6 +52,11 @@ SET(_link_LIBRARIES
+   qtx suit
+ )
++FIND_LIBRARY(GLAPI_DISPATCH_LIBRARY libGLdispatch.so)
++IF(GLAPI_DISPATCH_LIBRARY)
++  LIST(APPEND _link_LIBRARIES GLdispatch)
++ENDIF()
++
+ # --- headers ---
+ # header files / to be processed by moc
diff --git a/products/patches/GUI_Python_async.patch b/products/patches/GUI_Python_async.patch
new file mode 100644 (file)
index 0000000..9434217
--- /dev/null
@@ -0,0 +1,12 @@
+diff -rupN GUI/src/PyInterp/PyInterp_Request.h GUI_DEV/src/PyInterp/PyInterp_Request.h
+--- GUI/src/PyInterp/PyInterp_Request.h        2017-03-07 12:09:01.000000000 +0100
++++ GUI_DEV/src/PyInterp/PyInterp_Request.h    2017-11-17 15:50:09.204857698 +0100
+@@ -52,7 +52,7 @@ protected:
+ public:
+   // Constructor
+   PyInterp_Request( QObject* listener, bool sync = true )
+-    : myIsSync( sync ), myListener( listener ) {};
++    : myIsSync( sync ), myListener( listener ) { myIsSync = false; };
+   // Deletes a request
+   static void     Destroy( PyInterp_Request* );
diff --git a/products/patches/KERNEL-FC29.patch b/products/patches/KERNEL-FC29.patch
new file mode 100644 (file)
index 0000000..56ea512
--- /dev/null
@@ -0,0 +1,24 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0a3a3fc6..d90c555b 100755
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -92,6 +92,7 @@ FIND_PACKAGE(SalomeSWIG REQUIRED)
+ FIND_PACKAGE(SalomeLibXml2 REQUIRED)
+ FIND_PACKAGE(SalomeHDF5 REQUIRED COMPONENTS C)
+ FIND_PACKAGE(SalomeBoost REQUIRED)
++FIND_PACKAGE(SalomeXDR REQUIRED)
+ # Optional prerequisites
+ # ======================
+diff --git a/src/Communication/CMakeLists.txt b/src/Communication/CMakeLists.txt
+index 643dd6f4..c6656db3 100755
+--- a/src/Communication/CMakeLists.txt
++++ b/src/Communication/CMakeLists.txt
+@@ -18,6 +18,7 @@
+ #
+ INCLUDE_DIRECTORIES(
++  ${XDR_INCLUDE_DIR}
+   ${OMNIORB_INCLUDE_DIR}
+   ${PTHREAD_INCLUDE_DIR}
+   ${MPI_CXX_INCLUDE_PATH}
diff --git a/products/patches/KERNEL_libLauncher_Temporary.patch b/products/patches/KERNEL_libLauncher_Temporary.patch
new file mode 100644 (file)
index 0000000..013bc8d
--- /dev/null
@@ -0,0 +1,17 @@
+diff -Naur kernel_ori/src/Launcher/CMakeLists.txt kernel_new/src/Launcher/CMakeLists.txt
+--- kernel_ori/src/Launcher/CMakeLists.txt     2018-04-03 16:05:11.248706967 +0200
++++ kernel_new/src/Launcher/CMakeLists.txt     2018-04-03 16:14:49.988153390 +0200
+@@ -79,7 +79,12 @@
+ )
+ ADD_LIBRARY(Launcher ${Launcher_SOURCES})
+-TARGET_LINK_LIBRARIES(Launcher ResourcesManager ${LIBBATCH_LIBRARIES} ${LIBXML2_LIBS})
++
++# OP 03/04/2018 add the dependency to ${Boost_SYSTEM_LIBRARY}
++#TARGET_LINK_LIBRARIES(Launcher ResourcesManager ${LIBBATCH_LIBRARIES} ${LIBXML2_LIBS})
++TARGET_LINK_LIBRARIES(Launcher ResourcesManager ${LIBBATCH_LIBRARIES} ${LIBXML2_LIBS} ${Boost_SYSTEM_LIBRARY})
++# END OP
++
+ INSTALL(TARGETS Launcher EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
+ SET(TestLauncher_LIBS
diff --git a/products/patches/MEDCOUPLING-FC29.patch b/products/patches/MEDCOUPLING-FC29.patch
new file mode 100644 (file)
index 0000000..86df091
--- /dev/null
@@ -0,0 +1,16 @@
+diff --git a/src/MEDLoader/CMakeLists.txt b/src/MEDLoader/CMakeLists.txt
+index b54b36b5..5305c7b7 100644
+--- a/src/MEDLoader/CMakeLists.txt
++++ b/src/MEDLoader/CMakeLists.txt
+@@ -39,9 +39,11 @@ IF(WIN32)
+   ENDIF(MEDCOUPLING_MEDLOADER_USE_XDR)
+ ELSE(WIN32)
+   SET(MEDLOADER_XDR_INCLUDE_DIRS ${XDR_INCLUDE_DIRS})
++  SET(MEDLOADER_XDR_LIBRARIES ${XDR_LIBRARIES})
+ ENDIF(WIN32)
+ INCLUDE_DIRECTORIES(
++  ${XDR_INCLUDE_DIR}
+   ${MEDFILE_INCLUDE_DIRS}
+   ${HDF5_INCLUDE_DIRS}
+   ${MEDLOADER_XDR_INCLUDE_DIRS}
diff --git a/products/patches/OCCT-7.1.0_transfrom_pers.patch b/products/patches/OCCT-7.1.0_transfrom_pers.patch
new file mode 100644 (file)
index 0000000..baed517
--- /dev/null
@@ -0,0 +1,14 @@
+diff -Naur OCCT-7.1.0_SRC_orig/src/Graphic3d/Graphic3d_TransformPers.hxx OCCT-7.1.0_SRC_modif/src/Graphic3d/Graphic3d_TransformPers.hxx
+--- OCCT-7.1.0_SRC_orig/src/Graphic3d/Graphic3d_TransformPers.hxx      2016-12-22 12:32:39.000000000 +0300
++++ OCCT-7.1.0_SRC_modif/src/Graphic3d/Graphic3d_TransformPers.hxx     2017-01-20 16:22:16.000000000 +0300
+@@ -510,8 +510,8 @@
+   {
+     typename BVH_Box<T, 4>::BVH_VecNt& aCorner = anArrayOfCorners[anIt];
+     aCorner  = aTPers * aCorner;
+-    aCorner /= aCorner.w();
+-    theBoundingBox.Add (aCorner.xyz());
++    aCorner = aCorner / aCorner.w();
++    theBoundingBox.Add (typename BVH_Box<T, 3>::BVH_VecNt (aCorner.x(), aCorner.y(), aCorner.z()));
+   }
+ }
+
diff --git a/products/patches/PARAVIS-MEDReader-CMakeLists.patch b/products/patches/PARAVIS-MEDReader-CMakeLists.patch
new file mode 100644 (file)
index 0000000..e742b1b
--- /dev/null
@@ -0,0 +1,15 @@
+diff --git a/src/Plugins/MEDReader/CMakeLists.txt b/src/Plugins/MEDReader/CMakeLists.txt
+index 99d2cac..9fa9d4b 100644
+--- a/src/Plugins/MEDReader/CMakeLists.txt
++++ b/src/Plugins/MEDReader/CMakeLists.txt
+@@ -22,6 +22,10 @@ project(MEDReader)
+ find_package(ParaView REQUIRED)
++IF(SALOME_USE_MPI)
++    ADD_DEFINITIONS(-DMEDREADER_USE_MPI)
++ENDIF(SALOME_USE_MPI)
++
+ option(BUILD_SHARED_LIBS "Build shared libraries" ON)
+ enable_testing()
diff --git a/products/patches/ParaView-3.14.0.patch b/products/patches/ParaView-3.14.0.patch
new file mode 100755 (executable)
index 0000000..2dbd477
--- /dev/null
@@ -0,0 +1,57 @@
+diff -pruN ParaView-3.14.0_ori/Utilities/VisItBridge/databases/paraDIS/RC_cpp_lib/RCLibPoint.h ParaView-3.14.0_new/Utilities/VisItBridge/databases/paraDIS/RC_cpp_lib/RCLibPoint.h
+--- ParaView-3.14.0_ori/Utilities/VisItBridge/databases/paraDIS/RC_cpp_lib/RCLibPoint.h        2012-02-20 15:48:20.000000000 +0100
++++ ParaView-3.14.0_new/Utilities/VisItBridge/databases/paraDIS/RC_cpp_lib/RCLibPoint.h        2013-03-07 15:58:49.107887795 +0100
+@@ -6,6 +6,7 @@
+ #include <iomanip> 
+ #include <istream>
+ #include "DebugStream.h"
++#include "stringutil.h"
+ namespace rclib {
+   using namespace std;
+diff -pruN ParaView-3.14.0_ori/Utilities/Xdmf2/vtk/Testing/Cxx/XdmfTestVTKIO.cxx ParaView-3.14.0_new/Utilities/Xdmf2/vtk/Testing/Cxx/XdmfTestVTKIO.cxx
+--- ParaView-3.14.0_ori/Utilities/Xdmf2/vtk/Testing/Cxx/XdmfTestVTKIO.cxx      2012-02-20 15:48:26.000000000 +0100
++++ ParaView-3.14.0_new/Utilities/Xdmf2/vtk/Testing/Cxx/XdmfTestVTKIO.cxx      2013-03-11 14:59:58.629495196 +0100
+@@ -21,6 +21,7 @@
+ //files around for inspection. Otherwise it deletes the temporary files it
+ //creates and returns success.
++#include<unistd.h>
+ #include "vtkXdmfWriter.h"
+ #include "vtkCellData.h"
+diff -pruN ParaView-3.14.0_ori/VTK/CMakeLists.txt ParaView-3.14.0_new/VTK/CMakeLists.txt
+--- ParaView-3.14.0_ori/VTK/CMakeLists.txt     2012-02-20 15:49:50.000000000 +0100
++++ ParaView-3.14.0_new/VTK/CMakeLists.txt     2013-03-07 16:02:10.698126978 +0100
+@@ -758,7 +758,7 @@ VTK_DEPENDENT_OPTION(VTK_USE_MPI
+ VTK_DEPENDENT_OPTION(VTK_USE_MATROX_IMAGING
+                      "Use Matrox Imaging Library for video input." OFF
+                      "VTK_USE_RENDERING;WIN32" OFF)
+-VTK_DEPENDENT_OPTION(VTK_USE_GL2PS "Build VTK with gl2ps support." OFF
++VTK_DEPENDENT_OPTION(VTK_USE_GL2PS "Build VTK with gl2ps support." ON
+                      "VTK_USE_RENDERING" ON)
+ VTK_DEPENDENT_OPTION(VTK_USE_PARALLEL_BGL
+                      "Use the Parallel Boost Graph Library"
+diff -pruN ParaView-3.14.0_ori/VTK/Rendering/vtkFreeTypeTools.cxx ParaView-3.14.0_new/VTK/Rendering/vtkFreeTypeTools.cxx
+--- ParaView-3.14.0_ori/VTK/Rendering/vtkFreeTypeTools.cxx     2012-02-20 15:49:51.000000000 +0100
++++ ParaView-3.14.0_new/VTK/Rendering/vtkFreeTypeTools.cxx     2013-03-07 15:58:49.108887791 +0100
+@@ -31,6 +31,8 @@
+ // The embedded fonts
+ #include "fonts/vtkEmbeddedFonts.h"
++#include<stdint.h>
++
+ #ifdef FTGL_USE_NAMESPACE
+ using namespace ftgl;
+ #endif
+diff -pruN ParaView-3.14.0_ori/VTK/Rendering/vtkFreeTypeUtilities.cxx ParaView-3.14.0_new/VTK/Rendering/vtkFreeTypeUtilities.cxx
+--- ParaView-3.14.0_ori/VTK/Rendering/vtkFreeTypeUtilities.cxx 2012-02-20 15:49:51.000000000 +0100
++++ ParaView-3.14.0_new/VTK/Rendering/vtkFreeTypeUtilities.cxx 2013-03-07 15:58:49.109887787 +0100
+@@ -31,6 +31,7 @@
+ #include "fonts/vtkEmbeddedFonts.h"
+ #include <sys/stat.h>
++#include<stdint.h>
+ #ifdef FTGL_USE_NAMESPACE
+ using namespace ftgl;
diff --git a/products/patches/ParaView-4.2.0.patch b/products/patches/ParaView-4.2.0.patch
new file mode 100644 (file)
index 0000000..843a068
--- /dev/null
@@ -0,0 +1,1373 @@
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/CMakeLists.txt ParaView-4.2.0_SRC.new/CMakeLists.txt
+--- ParaView-4.2.0_SRC/CMakeLists.txt  2014-09-23 18:46:43.000000000 +0400
++++ ParaView-4.2.0_SRC.new/CMakeLists.txt      2014-12-19 15:39:41.000000000 +0300
+@@ -543,8 +543,8 @@
+   #----------------------------------------------------------------------------------
+   # Set some flags that affect VTK's modules.
+-  set (VTK_NO_PYTHON_THREADS 1 CACHE INTERNAL
+-                               "Disable Python Threads support" FORCE)
++  set (VTK_NO_PYTHON_THREADS ON CACHE BOOL 
++                               "Disable Python Threads support")
+   set(VTK_WRAP_PYTHON ${PARAVIEW_ENABLE_PYTHON}
+     CACHE INTERNAL "Should VTK Python wrapping be built?" FORCE)
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx
+--- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx   2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkPVPythonInformation.cxx       2014-12-19 15:39:41.000000000 +0300
+@@ -100,7 +100,9 @@
+ namespace {
+ bool hasModule(const char *module)
+ {
++  VTK_PY_GIL_ENSURE
+   vtkSmartPyObject mod(PyImport_ImportModule(module));
++  VTK_PY_GIL_RELEASE
+   bool result = mod;
+   return result;
+ }
+@@ -108,11 +110,13 @@
+ // Returns empty string on error.
+ std::string getModuleAttrAsString(const char *module, const char *attribute)
+ {
++  VTK_PY_GIL_ENSURE
+   vtkSmartPyObject mod(PyImport_ImportModule(module));
+   if (!mod)
+     {
+     std::ostringstream result;
+     result << "(module '" << module << "' not found)";
++    VTK_PY_GIL_RELEASE
+     return result.str();
+     }
+@@ -122,11 +126,13 @@
+     std::ostringstream result;
+     result << "('" << module << "' module found, missing '" << attribute
+            << "' attribute)";
++    VTK_PY_GIL_RELEASE
+     return result.str();
+     }
+   std::string result = PyBytes_AsString(attr);
++  VTK_PY_GIL_RELEASE
+   return result;
+ }
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkSession.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkSession.cxx
+--- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Core/vtkSession.cxx       2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Core/vtkSession.cxx   2014-12-19 15:39:41.000000000 +0300
+@@ -30,13 +30,15 @@
+ //----------------------------------------------------------------------------
+ void vtkSession::Activate()
+ {
+-  vtkProcessModule::GetProcessModule()->PushActiveSession(this);
++  if(vtkProcessModule::GetProcessModule())
++    vtkProcessModule::GetProcessModule()->PushActiveSession(this);
+ }
+ //----------------------------------------------------------------------------
+ void vtkSession::DeActivate()
+ {
+-  vtkProcessModule::GetProcessModule()->PopActiveSession(this);
++  if(vtkProcessModule::GetProcessModule())
++    vtkProcessModule::GetProcessModule()->PopActiveSession(this);
+ }
+ //----------------------------------------------------------------------------
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx
+--- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx   2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.cxx       2014-12-19 15:39:41.000000000 +0300
+@@ -172,6 +172,7 @@
+   if (geomFilter)
+     {
+     geomFilter->SetUseOutline(0);
++    geomFilter->SetTriangulate(0);
+     geomFilter->SetNonlinearSubdivisionLevel(1);
+     geomFilter->SetPassThroughCellIds(1);
+     geomFilter->SetPassThroughPointIds(1);
+@@ -236,7 +237,7 @@
+     vtkPVRenderView::MarkAsRedistributable(inInfo, this);
+     // Tell the view if this representation needs ordered compositing. We need
+-    // ordered compositing when rendering translucent geometry. 
++    // ordered compositing when rendering translucent geometry.
+     if (this->Actor->HasTranslucentPolygonalGeometry())
+       {
+       // We need to extend this condition to consider translucent LUTs once we
+@@ -270,7 +271,7 @@
+         this->LODOutlineFilter->Update();
+         // Pass along the LOD geometry to the view so that it can deliver it to
+         // the rendering node as and when needed.
+-        vtkPVRenderView::SetPieceLOD(inInfo, this, 
++        vtkPVRenderView::SetPieceLOD(inInfo, this,
+           this->LODOutlineFilter->GetOutputDataObject(0));
+         }
+       else
+@@ -290,7 +291,7 @@
+         // Pass along the LOD geometry to the view so that it can deliver it to
+         // the rendering node as and when needed.
+-        vtkPVRenderView::SetPieceLOD(inInfo, this, 
++        vtkPVRenderView::SetPieceLOD(inInfo, this,
+           this->Decimator->GetOutputDataObject(0));
+         }
+       }
+@@ -780,6 +781,19 @@
+ }
+ //----------------------------------------------------------------------------
++void vtkGeometryRepresentation::SetTriangulate(int val)
++{
++  if (vtkPVGeometryFilter::SafeDownCast(this->GeometryFilter))
++    {
++    vtkPVGeometryFilter::SafeDownCast(this->GeometryFilter)->SetTriangulate(val);
++    }
++
++  // since geometry filter needs to execute, we need to mark the representation
++  // modified.
++  this->MarkModified();
++}
++
++//----------------------------------------------------------------------------
+ void vtkGeometryRepresentation::SetNonlinearSubdivisionLevel(int val)
+ {
+   if (vtkPVGeometryFilter::SafeDownCast(this->GeometryFilter))
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h
+--- ParaView-4.2.0_SRC/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h     2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/ParaViewCore/ClientServerCore/Rendering/vtkGeometryRepresentation.h 2014-12-19 15:39:41.000000000 +0300
+@@ -19,7 +19,7 @@
+ // It handles non-polygonal datasets by extracting external surfaces. One can
+ // use this representation to show surface/wireframe/points/surface-with-edges.
+ // .SECTION Thanks
+-// The addition of a transformation matrix was supported by CEA/DIF 
++// The addition of a transformation matrix was supported by CEA/DIF
+ // Commissariat a l'Energie Atomique, Centre DAM Ile-De-France, Arpajon, France.
+ #ifndef __vtkGeometryRepresentation_h
+@@ -109,7 +109,7 @@
+   // Description:
+   // Returns true if this class would like to get ghost-cells if available for
+   // the connection whose information object is passed as the argument.
+-  static bool DoRequestGhostCells(vtkInformation* information); 
++  static bool DoRequestGhostCells(vtkInformation* information);
+   // Description:
+   // Representations that use geometry representation as the internal
+@@ -122,6 +122,7 @@
+   //***************************************************************************
+   // Forwarded to vtkPVGeometryFilter
+   virtual void SetUseOutline(int);
++  void SetTriangulate(int);
+   void SetNonlinearSubdivisionLevel(int);
+   //***************************************************************************
+@@ -145,7 +146,7 @@
+   virtual void SetPosition(double, double, double);
+   virtual void SetScale(double, double, double);
+   virtual void SetTexture(vtkTexture*);
+-  virtual void SetUserTransform(const double[16]); 
++  virtual void SetUserTransform(const double[16]);
+   //***************************************************************************
+   // Forwarded to Mapper and LODMapper.
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx
+--- ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx  2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Core/vtkSMTrace.cxx      2014-12-19 15:39:41.000000000 +0300
+@@ -69,6 +69,7 @@
+ #ifdef PARAVIEW_ENABLE_PYTHON
+   // ensure Python interpreter is initialized.
+   vtkPythonInterpreter::Initialize();
++  VTK_PY_GIL_ENSURE
+   this->Internals->TraceModule.TakeReference(PyImport_ImportModule("paraview.smtrace"));
+   if (!this->Internals->TraceModule)
+     {
+@@ -92,6 +93,7 @@
+       this->Internals->CreateItemFunction.TakeReference(NULL);
+       }
+     }
++  VTK_PY_GIL_RELEASE
+ #endif
+ }
+@@ -115,12 +117,15 @@
+ #ifdef PARAVIEW_ENABLE_PYTHON
+   vtkPythonInterpreter::Initialize();
++  VTK_PY_GIL_ENSURE
+   try
+     {
++
+     vtkSmartPyObject module(PyImport_ImportModule("paraview.smstate"));
+     if (!module || PyErr_Occurred())
+       {
+       vtkGenericWarningMacro("Failed to import paraview.smstate module.");
++      VTK_PY_GIL_RELEASE
+       throw 1;
+       }
+@@ -132,9 +137,12 @@
+     if (!result || PyErr_Occurred())
+       {
+       vtkGenericWarningMacro("Failed to generate state.");
++      VTK_PY_GIL_RELEASE
+       throw 1;
+       }
+-    return vtkStdString(PyString_AsString(result));
++    vtkStdString s(PyString_AsString(result));
++    VTK_PY_GIL_RELEASE
++    return s;
+     }
+   catch (int)
+     {
+@@ -144,6 +152,7 @@
+       PyErr_Clear();
+       }
+     }
++  VTK_PY_GIL_RELEASE
+ #endif
+   (void)propertiesToTraceOnCreate;
+   (void)skipHiddenRepresentations;
+@@ -164,9 +173,11 @@
+       }
+     else
+       {
++      VTK_PY_GIL_ENSURE
+       vtkSmartPyObject _start_trace_internal(
+         PyObject_CallMethod(vtkSMTrace::ActiveTracer->GetTraceModule(),
+           const_cast<char*>("_start_trace_internal"), NULL));
++      VTK_PY_GIL_RELEASE
+       vtkSMTrace::ActiveTracer->CheckForError();
+       }
+ #endif
+@@ -192,6 +203,7 @@
+   vtkSMTrace::ActiveTracer = NULL;
+ #ifdef PARAVIEW_ENABLE_PYTHON
++  VTK_PY_GIL_ENSURE
+   vtkSmartPyObject _stop_trace_internal(
+     PyObject_CallMethod(active->GetTraceModule(), const_cast<char*>("_stop_trace_internal"), NULL));
+   if (active->CheckForError() == false)
+@@ -199,14 +211,18 @@
+     // no error.
+     if (Py_None != _stop_trace_internal.GetPointer() && _stop_trace_internal.GetPointer() != NULL)
+       {
+-      return vtkStdString(PyString_AsString(_stop_trace_internal));
++       vtkStdString s(PyString_AsString(_stop_trace_internal));
++       VTK_PY_GIL_RELEASE
++       return s;
+       }
+     else
+       {
+       vtkGenericWarningMacro("Empty trace returned!!!");
++      VTK_PY_GIL_RELEASE
+       return vtkStdString();
+       }
+     }
++  VTK_PY_GIL_RELEASE
+ #endif
+   return vtkStdString();
+ }
+@@ -223,13 +239,17 @@
+ #ifdef PARAVIEW_ENABLE_PYTHON
+   vtkSMTrace* active = vtkSMTrace::ActiveTracer;
++  VTK_PY_GIL_ENSURE
+   vtkSmartPyObject get_current_trace_output(
+     PyObject_CallMethod(active->GetTraceModule(), const_cast<char*>("get_current_trace_output"), NULL));
+   if (active->CheckForError() == false && get_current_trace_output)
+     {
+     // no error.
+-    return vtkStdString(PyString_AsString(get_current_trace_output));
++    vtkStdString s(PyString_AsString(get_current_trace_output));
++    VTK_PY_GIL_RELEASE
++    return s;
+     }
++  VTK_PY_GIL_RELEASE
+ #endif
+   return vtkStdString();
+ }
+@@ -256,6 +276,7 @@
+ bool vtkSMTrace::CheckForError()
+ {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++  VTK_PY_GIL_ENSURE
+   PyObject *exception = PyErr_Occurred();
+   if (exception)
+     {
+@@ -264,12 +285,15 @@
+       // catch Untraceable exceptions. We can log them when debugging is
+       // enabled.
+       PyErr_Clear();
++      VTK_PY_GIL_RELEASE
+       return false;
+       }
+     PyErr_Print();
+     PyErr_Clear();
++    VTK_PY_GIL_RELEASE
+     return true;
+     }
++  VTK_PY_GIL_RELEASE
+ #endif
+   return false;
+ }
+@@ -336,6 +360,7 @@
+   if (vtkSMTrace::GetActiveTracer())
+     {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject keyObj(PyString_FromString(key));
+     vtkSmartPyObject valObj(vtkPythonUtil::GetObjectFromPointer(val));
+     assert(valObj && keyObj);
+@@ -343,6 +368,7 @@
+     int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj);
+     (void)ret;
+     assert(ret == 0);
++    VTK_PY_GIL_RELEASE
+ #endif
+     }
+   (void)key;
+@@ -358,6 +384,7 @@
+   if (vtkSMTrace::GetActiveTracer())
+     {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject keyObj(PyString_FromString(key));
+     vtkSmartPyObject valObj;
+     if (val == NULL)
+@@ -374,6 +401,7 @@
+     int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj);
+     (void)ret;
+     assert(ret == 0);
++    VTK_PY_GIL_RELEASE
+ #endif
+     }
+   (void)key;
+@@ -389,6 +417,7 @@
+   if (vtkSMTrace::GetActiveTracer())
+     {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject keyObj(PyString_FromString(key));
+     vtkSmartPyObject valObj(PyInt_FromLong(val));
+     assert(keyObj && valObj);
+@@ -396,6 +425,7 @@
+     int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj);
+     (void)ret;
+     assert(ret == 0);
++    VTK_PY_GIL_RELEASE
+ #endif
+     }
+   (void)key;
+@@ -411,6 +441,7 @@
+   if (vtkSMTrace::GetActiveTracer())
+     {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject keyObj(PyString_FromString(key));
+     vtkSmartPyObject valObj(PyFloat_FromDouble(val));
+     assert(keyObj && valObj);
+@@ -418,6 +449,7 @@
+     int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj);
+     (void)ret;
+     assert(ret == 0);
++    VTK_PY_GIL_RELEASE
+ #endif
+     }
+   (void)key;
+@@ -432,6 +464,7 @@
+   if (vtkSMTrace::GetActiveTracer())
+     {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject keyObj(PyString_FromString(key));
+     vtkSmartPyObject valObj(PyBool_FromLong(val? 1 : 0));
+     assert(keyObj && valObj);
+@@ -439,6 +472,7 @@
+     int ret = PyDict_SetItem(this->Internals->GetKWArgs(), keyObj, valObj);
+     (void)ret;
+     assert(ret == 0);
++    VTK_PY_GIL_RELEASE
+ #endif
+     }
+   (void)key;
+@@ -452,11 +486,13 @@
+   if (vtkSMTrace::GetActiveTracer())
+     {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject valObj(vtkPythonUtil::GetObjectFromPointer(val));
+     assert(valObj);
+     int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj);
+     (void)ret;
+     assert(ret == 0);
++    VTK_PY_GIL_RELEASE
+ #endif
+     }
+   (void)val;
+@@ -470,11 +506,13 @@
+   if (vtkSMTrace::GetActiveTracer())
+     {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject valObj(PyString_FromString(val));
+     assert(valObj);
+     int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj);
+     (void)ret;
+     assert(ret == 0);
++    VTK_PY_GIL_RELEASE
+ #endif
+     }
+   (void)val;
+@@ -487,11 +525,13 @@
+   if (vtkSMTrace::GetActiveTracer())
+     {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject valObj(PyInt_FromLong(val));
+     assert(valObj);
+     int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj);
+     (void)ret;
+     assert(ret == 0);
++    VTK_PY_GIL_RELEASE
+ #endif
+     }
+   (void)val;
+@@ -504,11 +544,13 @@
+   if (vtkSMTrace::GetActiveTracer())
+     {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject valObj(PyFloat_FromDouble(val));
+     assert(valObj);
+     int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj);
+     (void)ret;
+     assert(ret == 0);
++    VTK_PY_GIL_RELEASE
+ #endif
+     }
+   (void)val;
+@@ -521,11 +563,13 @@
+   if (vtkSMTrace::GetActiveTracer())
+     {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject valObj(PyBool_FromLong(val? 1 : 0));
+     assert(valObj);
+     int ret = PyList_Append(this->Internals->GetPositionalArgs(), valObj);
+     (void)ret;
+     assert(ret == 0);
++    VTK_PY_GIL_RELEASE
+ #endif
+     }
+   (void)val;
+@@ -557,9 +601,11 @@
+   vtkSMTrace* tracer = vtkSMTrace::GetActiveTracer();
+   if (tracer && this->Internals->PyItem)
+     {
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject reply(
+       PyObject_CallMethod(this->Internals->PyItem,
+         const_cast<char*>("finalize"), NULL));
++    VTK_PY_GIL_RELEASE
+     tracer->CheckForError();
+     tracer->InvokeEvent(vtkCommand::UpdateEvent);
+     }
+@@ -583,6 +629,7 @@
+   if (vtkSMTrace* tracer = vtkSMTrace::GetActiveTracer())
+     {
+ #ifdef PARAVIEW_ENABLE_PYTHON
++    VTK_PY_GIL_ENSURE
+     assert(tracer->GetTraceModule());
+     assert(tracer->GetCreateItemFunction());
+@@ -613,6 +660,7 @@
+     this->Internals->PyItem.TakeReference(
+       PyObject_Call(tracer->GetCreateItemFunction(), args, NULL));
+     tracer->CheckForError();
++    VTK_PY_GIL_RELEASE
+ #endif
+     }
+   (void)arguments;
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx
+--- ParaView-4.2.0_SRC/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx     2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/Rendering/vtkSMPVRepresentationProxy.cxx 2014-12-19 15:39:41.000000000 +0300
+@@ -276,7 +276,7 @@
+ {
+   if (!info)
+     {
+-    vtkWarningMacro("Could not determine array range.");
++    // vtkWarningMacro("Could not determine array range.");
+     return false;
+     }
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml
+--- ParaView-4.2.0_SRC/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml        2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml    2014-12-19 15:39:41.000000000 +0300
+@@ -2044,16 +2044,14 @@
+       <IntVectorProperty command="SetStereoRender"
+                          default_values="0"
+                          name="StereoRender"
+-                         number_of_elements="1"
+-                         is_internal="1">
++                         number_of_elements="1">
+         <BooleanDomain name="bool" />
+       </IntVectorProperty>
+       <IntVectorProperty command="SetStereoType"
+                          default_values="3"
+                          name="StereoType"
+                          panel_visibility="never"
+-                         number_of_elements="1"
+-                         is_internal="1">
++                         number_of_elements="1">
+         <EnumerationDomain name="enum">
+           <Entry text="Crystal Eyes"
+                  value="1" />
+@@ -3139,6 +3137,8 @@
+                       panel_visibility="advanced" />
+             <Property name="UserTransform"
+                       panel_visibility="never" />
++            <Property name="Triangulate"
++                      panel_visibility="advanced" />
+             <Property name="NonlinearSubdivisionLevel"
+                       panel_visibility="advanced" />
+             <Property name="BlockVisibility"
+@@ -8229,6 +8229,15 @@
+           <!--<Entry value="2" text="Phong" />-->
+         </EnumerationDomain>
+       </IntVectorProperty>
++      <IntVectorProperty command="SetTriangulate"
++                         default_values="0"
++                         name="Triangulate"
++                         number_of_elements="1">
++        <BooleanDomain name="bool" />
++        <Documentation>Triangulate the geometry internally to avoid rendering
++        issues of non-convex polygons. This feature has a processing and memory
++        cost, it should be enabled only when needed.</Documentation>
++      </IntVectorProperty>
+       <IntVectorProperty command="SetNonlinearSubdivisionLevel"
+                          default_values="1"
+                          name="NonlinearSubdivisionLevel"
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Default/vtkPVImageReader.h ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Default/vtkPVImageReader.h
+--- ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Default/vtkPVImageReader.h   2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Default/vtkPVImageReader.h       2014-12-19 15:39:41.000000000 +0300
+@@ -19,27 +19,15 @@
+ #include "vtkPVVTKExtensionsDefaultModule.h" //needed for exports
+-#ifdef PARAVIEW_USE_MPI
+-#include "vtkMPIImageReader.h"
+-#else
+ #include "vtkImageReader.h"
+-#endif
+-class VTKPVVTKEXTENSIONSDEFAULT_EXPORT vtkPVImageReader : public
+-#ifdef PARAVIEW_USE_MPI
+-vtkMPIImageReader
+-#else
+-vtkImageReader
+-#endif
++class VTKPVVTKEXTENSIONSDEFAULT_EXPORT vtkPVImageReader : public vtkImageReader
+ {
+ public:
+   static vtkPVImageReader* New();
+-#ifdef PARAVIEW_USE_MPI
+-  vtkTypeMacro(vtkPVImageReader, vtkMPIImageReader);
+-#else
++
+   vtkTypeMacro(vtkPVImageReader, vtkImageReader);
+-#endif
+   void PrintSelf(ostream& os, vtkIndent indent);
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx
+--- ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx    2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx        2014-12-19 15:39:41.000000000 +0300
+@@ -64,6 +64,7 @@
+ #include "vtkStructuredGrid.h"
+ #include "vtkStructuredGridOutlineFilter.h"
+ #include "vtkTimerLog.h"
++#include "vtkTriangleFilter.h"
+ #include "vtkUniformGrid.h"
+ #include "vtkUnsignedCharArray.h"
+ #include "vtkUnsignedIntArray.h"
+@@ -78,8 +79,6 @@
+ #include <set>
+ #include <algorithm>
+-#define VTK_CREATE(type, name) \
+-  vtkSmartPointer<type> name = vtkSmartPointer<type>::New()
+ vtkStandardNewMacro(vtkPVGeometryFilter);
+ vtkCxxSetObjectMacro(vtkPVGeometryFilter, Controller, vtkMultiProcessController);
+@@ -149,6 +148,7 @@
+   this->UseOutline = 1;
+   this->UseStrips = 0;
+   this->GenerateCellNormals = 1;
++  this->Triangulate = false;
+   this->NonlinearSubdivisionLevel = 1;
+   this->DataSetSurfaceFilter = vtkDataSetSurfaceFilter::New();
+@@ -1348,8 +1348,8 @@
+     {
+     this->OutlineFlag = 0;
+-    bool handleSubdivision = false;
+-    if (this->NonlinearSubdivisionLevel > 0)
++    bool handleSubdivision = (this->Triangulate != 0);
++    if (!handleSubdivision && (this->NonlinearSubdivisionLevel > 0))
+       {
+       // Check to see if the data actually has nonlinear cells.  Handling
+       // nonlinear cells adds unnecessary work if we only have linear cells.
+@@ -1445,6 +1445,16 @@
+       this->DataSetSurfaceFilter->UnstructuredGridExecute(input, output, updateghostlevel);
+       }
++    if (this->Triangulate && (output->GetNumberOfPolys() > 0))
++      {
++      // Triangulate the polygonal mesh if requested to avoid rendering
++      // issues of non-convex polygons.
++      vtkNew<vtkTriangleFilter> triangleFilter;
++      triangleFilter->SetInputData(output);
++      triangleFilter->Update();
++      output->ShallowCopy(triangleFilter->GetOutput());
++      }
++
+     if (handleSubdivision)
+       {
+       // Restore state of DataSetSurfaceFilter.
+@@ -1456,9 +1466,9 @@
+       // Now use vtkPVRecoverGeometryWireframe to create an edge flag attribute
+       // that will cause the wireframe to be rendered correctly.
+-      VTK_CREATE(vtkPolyData, nextStageInput);
++      vtkNew<vtkPolyData> nextStageInput;
+       nextStageInput->ShallowCopy(output);  // Yes output is correct.
+-      this->RecoverWireframeFilter->SetInputData(nextStageInput);
++      this->RecoverWireframeFilter->SetInputData(nextStageInput.Get());
+       // Observe the progress of the internal filter.
+       // TODO: Make the consecutive internal filter execution have monotonically
+@@ -1489,7 +1499,7 @@
+           return;
+           }
+         vtkIdType numPts = polyPtIds2FacePtIds->GetNumberOfTuples();
+-        VTK_CREATE(vtkIdTypeArray, polyPtIds2OriginalPtIds);
++        vtkNew<vtkIdTypeArray> polyPtIds2OriginalPtIds;
+         polyPtIds2OriginalPtIds->SetName("vtkOriginalPointIds");
+         polyPtIds2OriginalPtIds->SetNumberOfComponents(1);
+         polyPtIds2OriginalPtIds->SetNumberOfTuples(numPts);
+@@ -1503,7 +1513,7 @@
+             }
+           polyPtIds2OriginalPtIds->SetValue(polyPtId, originalPtId);
+           }
+-        output->GetPointData()->AddArray(polyPtIds2OriginalPtIds);
++        output->GetPointData()->AddArray(polyPtIds2OriginalPtIds.Get());
+         }
+       }
+@@ -1518,7 +1528,7 @@
+ //----------------------------------------------------------------------------
+ void vtkPVGeometryFilter::PolyDataExecute(
+-  vtkPolyData* input, vtkPolyData* out, int doCommunicate)
++  vtkPolyData* input, vtkPolyData* output, int doCommunicate)
+ {
+   if (!this->UseOutline)
+     {
+@@ -1533,54 +1543,90 @@
+       inCopy->RemoveGhostCells(1);
+       stripper->SetInputData(inCopy);
+       stripper->Update();
+-      out->CopyStructure(stripper->GetOutput());
+-      out->GetPointData()->ShallowCopy(stripper->GetOutput()->GetPointData());
+-      out->GetCellData()->ShallowCopy(stripper->GetOutput()->GetCellData());
++      output->CopyStructure(stripper->GetOutput());
++      output->GetPointData()->ShallowCopy(stripper->GetOutput()->GetPointData());
++      output->GetCellData()->ShallowCopy(stripper->GetOutput()->GetCellData());
+       inCopy->Delete();
+       stripper->Delete();
+       }
+     else
+       {
+-      out->ShallowCopy(input);
++      output->ShallowCopy(input);
+       if (this->PassThroughCellIds)
+         {
+-        vtkIdTypeArray *originalCellIds = vtkIdTypeArray::New();
++        vtkNew<vtkIdTypeArray> originalCellIds;
+         originalCellIds->SetName("vtkOriginalCellIds");
+         originalCellIds->SetNumberOfComponents(1);
+-        vtkCellData *outputCD = out->GetCellData();
+-        outputCD->AddArray(originalCellIds);
+-        vtkIdType numTup = out->GetNumberOfCells();
++        vtkNew<vtkIdTypeArray> originalFaceIds;
++        originalFaceIds->SetName(vtkPVRecoverGeometryWireframe::ORIGINAL_FACE_IDS());
++        originalFaceIds->SetNumberOfComponents(1);
++        vtkCellData *outputCD = output->GetCellData();
++        outputCD->AddArray(originalCellIds.Get());
++        if (this->Triangulate)
++          {
++          outputCD->AddArray(originalFaceIds.Get());
++          }
++        vtkIdType numTup = output->GetNumberOfCells();
+         originalCellIds->SetNumberOfValues(numTup);
++        originalFaceIds->SetNumberOfValues(numTup);
+         for (vtkIdType cId = 0; cId < numTup; cId++)
+           {
+           originalCellIds->SetValue(cId, cId);
++          originalFaceIds->SetValue(cId, cId);
+           }
+-        originalCellIds->Delete();
+-        originalCellIds = NULL;
+         }
+       if (this->PassThroughPointIds)
+         {
+-        vtkIdTypeArray *originalPointIds = vtkIdTypeArray::New();
++        vtkNew<vtkIdTypeArray> originalPointIds;
+         originalPointIds->SetName("vtkOriginalPointIds");
+         originalPointIds->SetNumberOfComponents(1);
+-        vtkPointData *outputPD = out->GetPointData();
+-        outputPD->AddArray(originalPointIds);
+-        vtkIdType numTup = out->GetNumberOfPoints();
++        vtkPointData *outputPD = output->GetPointData();
++        outputPD->AddArray(originalPointIds.Get());
++        vtkIdType numTup = output->GetNumberOfPoints();
+         originalPointIds->SetNumberOfValues(numTup);
+         for (vtkIdType pId = 0; pId < numTup; pId++)
+           {
+           originalPointIds->SetValue(pId, pId);
+           }
+-        originalPointIds->Delete();
+-        originalPointIds = NULL;
+         }
+-      out->RemoveGhostCells(1);
++
++      output->RemoveGhostCells(1);
++
++      if (this->Triangulate)
++        {
++        // Triangulate the polygonal mesh.
++        vtkNew<vtkTriangleFilter> triangleFilter;
++        triangleFilter->SetInputData(output);
++        triangleFilter->Update();
++
++        // Now use vtkPVRecoverGeometryWireframe to create an edge flag attribute
++        // that will cause the wireframe to be rendered correctly.
++        this->RecoverWireframeFilter->SetInputData(triangleFilter->GetOutput());
++
++        // Observe the progress of the internal filter.
++        // TODO: Make the consecutive internal filter execution have monotonically
++        // increasing progress rather than restarting for every internal filter.
++        this->RecoverWireframeFilter->AddObserver(
++          vtkCommand::ProgressEvent,
++          this->InternalProgressObserver);
++        this->RecoverWireframeFilter->Update();
++        // The internal filter finished.  Remove the observer.
++        this->RecoverWireframeFilter->RemoveObserver(
++          this->InternalProgressObserver);
++
++        this->RecoverWireframeFilter->SetInputData(NULL);
++
++        // Get what should be the final output.
++        output->ShallowCopy(this->RecoverWireframeFilter->GetOutput());
++
++        output->GetCellData()->RemoveArray(vtkPVRecoverGeometryWireframe::ORIGINAL_FACE_IDS());
++        }
+       }
+     return;
+     }
+   this->OutlineFlag = 1;
+-  this->DataSetExecute(input, out, doCommunicate);
++  this->DataSetExecute(input, output, doCommunicate);
+ }
+ //----------------------------------------------------------------------------
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h
+--- ParaView-4.2.0_SRC/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h      2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.h  2014-12-19 15:39:41.000000000 +0300
+@@ -85,6 +85,13 @@
+   vtkBooleanMacro(GenerateCellNormals, int);
+   // Description:
++  // Whether to triangulate mesh for rendering. This parameter avoid
++  // rendering issues of non-convex polygons.
++  vtkSetMacro(Triangulate, int);
++  vtkGetMacro(Triangulate, int);
++  vtkBooleanMacro(Triangulate, int);
++
++  // Description:
+   // Nonlinear faces are approximated with flat polygons.  This parameter
+   // controls how many times to subdivide nonlinear surface cells.  Higher
+   // subdivisions generate closer approximations but take more memory and
+@@ -101,8 +108,7 @@
+   // Description:
+   // If on, the output polygonal dataset will have a celldata array that
+   // holds the cell index of the original 3D cell that produced each output
+-  // cell. This is useful for picking. The default is off to conserve
+-  // memory.
++  // cell. This is useful for picking but it takes memory. The default is on.
+   void SetPassThroughCellIds(int);
+   vtkGetMacro(PassThroughCellIds,int);
+   vtkBooleanMacro(PassThroughCellIds,int);
+@@ -110,8 +116,7 @@
+   // Description:
+   // If on, the output polygonal dataset will have a pointdata array that
+   // holds the point index of the original vertex that produced each output
+-  // vertex. This is useful for picking. The default is off to conserve
+-  // memory.
++  // vertex. This is useful for picking but it takes memory. The default is on.
+   void SetPassThroughPointIds(int);
+   vtkGetMacro(PassThroughPointIds,int);
+   vtkBooleanMacro(PassThroughPointIds,int);
+@@ -176,7 +181,7 @@
+   virtual vtkExecutive* CreateDefaultExecutive();
+   // Description:
+-  // Produce geometry for a block in the dataset. 
++  // Produce geometry for a block in the dataset.
+   // This does not handle producing outlines. Call only when this->UseOutline ==
+   // 0; \c extractface mask it is used to determine external faces.
+   void ExecuteAMRBlock(vtkUniformGrid* input,
+@@ -250,6 +255,7 @@
+   int UseOutline;
+   int UseStrips;
+   int GenerateCellNormals;
++  int Triangulate;
+   int NonlinearSubdivisionLevel;
+   vtkMultiProcessController* Controller;
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Qt/Components/pqPropertiesPanel.cxx ParaView-4.2.0_SRC.new/Qt/Components/pqPropertiesPanel.cxx
+--- ParaView-4.2.0_SRC/Qt/Components/pqPropertiesPanel.cxx     2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/Qt/Components/pqPropertiesPanel.cxx 2014-12-19 15:39:41.000000000 +0300
+@@ -383,6 +383,14 @@
+   this->Internals->Ui.DisplayButton->setVisible(has_multiples_types && has_display);
+   this->Internals->Ui.ViewButton->setVisible(has_multiples_types && has_view);
++  // added to avoid unwanted save restore buttons
++  this->Internals->Ui.PropertiesSaveAsDefaults->setVisible(has_source);
++  this->Internals->Ui.PropertiesRestoreDefaults->setVisible(has_source);
++  this->Internals->Ui.DisplaySaveAsDefaults->setVisible(has_display);
++  this->Internals->Ui.DisplayRestoreDefaults->setVisible(has_display);
++  this->Internals->Ui.ViewSaveAsDefaults->setVisible(has_view);
++  this->Internals->Ui.ViewRestoreDefaults->setVisible(has_view);
++  
+   this->updatePanel();
+ }
+@@ -593,14 +601,15 @@
+ }
+ //-----------------------------------------------------------------------------
+-void pqPropertiesPanel::updateViewPanel (pqView* _view)
++void pqPropertiesPanel::updateViewPanel (pqView* argView)
+ {
++  pqView* _view = argView;
+   if ( (this->PanelMode & pqPropertiesPanel::VIEW_PROPERTIES) == 0)
+     {
+     _view = NULL;
+     }
+-  if (this->Internals->View != _view)
++  if (this->Internals->View != argView)
+     {
+     // The view has changed.
+     if (this->Internals->View)
+@@ -611,8 +620,8 @@
+         delete this->Internals->ViewWidgets;
+         }
+       }
+-    this->Internals->View = _view;
+-    emit this->viewChanged(_view);
++    this->Internals->View = argView;
++    emit this->viewChanged(argView);
+     if (_view)
+       {
+       // create the widgets for this view
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Qt/Python/pqPythonShell.cxx ParaView-4.2.0_SRC.new/Qt/Python/pqPythonShell.cxx
+--- ParaView-4.2.0_SRC/Qt/Python/pqPythonShell.cxx     2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/Qt/Python/pqPythonShell.cxx 2014-12-19 15:40:01.000000000 +0300
+@@ -118,6 +118,7 @@
+   /// string list.
+   QStringList getPythonAttributes(const QString& pythonObjectName)
+     {
++    VTK_PY_GIL_ENSURE
+     if (this->Interpreter == NULL ||
+       this->Interpreter->GetInteractiveConsoleLocalsPyObject() == NULL)
+       {
+@@ -191,7 +192,7 @@
+         }
+       Py_DECREF(object);
+       }
+-
++    VTK_PY_GIL_RELEASE
+     return results;
+     }
+ };
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Qt/Python/pqPythonSyntaxHighlighter.cxx ParaView-4.2.0_SRC.new/Qt/Python/pqPythonSyntaxHighlighter.cxx
+--- ParaView-4.2.0_SRC/Qt/Python/pqPythonSyntaxHighlighter.cxx 2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/Qt/Python/pqPythonSyntaxHighlighter.cxx     2014-12-19 15:39:41.000000000 +0300
+@@ -65,6 +65,7 @@
+   this->Internals->TextEdit = textEdit;
+   this->Internals->TextEdit->installEventFilter(this);
+   vtkPythonInterpreter::Initialize();
++  VTK_PY_GIL_ENSURE
+   this->Internals->PygmentsModule.TakeReference(PyImport_ImportModule("pygments"));
+   if (this->Internals->PygmentsModule && this->Internals->TextEdit != NULL)
+   {
+@@ -99,6 +100,7 @@
+     this->connect(this->Internals->TextEdit.data(), SIGNAL(textChanged()),
+                   this, SLOT(rehighlightSyntax()));
+   }
++  VTK_PY_GIL_RELEASE
+   this->Internals->IsSyntaxHighlighting = false;
+   // Replace tabs with 4 spaces
+   this->Internals->ReplaceTabs = true;
+@@ -175,10 +177,12 @@
+     }
+     QString leadingWhitespace = text.left(leadingWhiteSpaceLength);
+     QString trailingWhitespace = text.right(trailingWhiteSpaceLength);
++    VTK_PY_GIL_ENSURE
+     vtkSmartPyObject args(Py_BuildValue("sOO",text.trimmed().toStdString().c_str(),
+                                        this->Internals->PythonLexer.GetPointer(),this->Internals->HtmlFormatter.GetPointer()));
+     vtkSmartPyObject resultingText(PyObject_Call(this->Internals->HighlightFunction,args,NULL));
+     const char *resultingTextAsCString = PyString_AsString(resultingText);
++    VTK_PY_GIL_RELEASE
+     QString pygmentsOutput(resultingTextAsCString);
+     // the first span tag always should follow the pre tag like this; <pre ...><span
+     int startOfPre = pygmentsOutput.indexOf(">",pygmentsOutput.indexOf("<pre"))+1;
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Velodyne/VelodyneReader.C ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Velodyne/VelodyneReader.C
+--- ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Velodyne/VelodyneReader.C       2014-09-23 18:46:46.000000000 +0400
++++ ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Velodyne/VelodyneReader.C   2014-12-19 15:39:41.000000000 +0300
+@@ -2,7 +2,7 @@
+ // This code was contributed to the VisIt project by Corvid Technologies
+ // on February 10, 2010.
+ //
+-
++#define H5Eset_auto_vers 2
+ #include <string.h>
+ #include <cstdlib>
+@@ -16,7 +16,6 @@
+ #endif
+ #include <VelodyneReader.h>
+-
+ #include <visit-hdf5.h>
+ #include <set>
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Vs/VsFilter.C ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Vs/VsFilter.C
+--- ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Vs/VsFilter.C   2014-09-23 18:46:46.000000000 +0400
++++ ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Vs/VsFilter.C       2014-12-19 15:39:41.000000000 +0300
+@@ -1,3 +1,7 @@
++#define H5Gopen_vers 2
++#define H5Dopen_vers 2
++#define H5Eset_auto_vers 2
++#define H5Aiterate_vers 2
+ #include <vtk_hdf5.h>
+ #include <visit-hdf5.h>
+ #if HDF5_VERSION_GE(1,8,1)
+@@ -146,11 +150,7 @@
+       
+       // Get info of the linked object.
+       H5O_info_t objinfo;
+-#ifndef H5_USE_16_API
+       hid_t obj_id = H5Oopen(locId, name, H5P_DEFAULT);
+-#else
+-      hid_t obj_id = H5Oopen(locId, name);        
+-#endif
+       
+       if (obj_id < 0) {
+         VsLog::errorLog() <<"VsFilter::visitLinks() - unable to get id for external object " <<name <<std::endl;
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Vs/VsH5File.C ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Vs/VsH5File.C
+--- ParaView-4.2.0_SRC/Utilities/VisItBridge/databases/Vs/VsH5File.C   2014-09-23 18:46:46.000000000 +0400
++++ ParaView-4.2.0_SRC.new/Utilities/VisItBridge/databases/Vs/VsH5File.C       2014-12-19 15:39:41.000000000 +0300
+@@ -4,7 +4,7 @@
+  *  Created on: Apr 27, 2010
+  *      Author: mdurant
+  */
+-
++#define H5Eset_auto_vers 2
+ #include "VsH5File.h"
+ #include "VsLog.h"
+ #include "VsFilter.h"
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/CMake/vtkModuleTop.cmake ParaView-4.2.0_SRC.new/VTK/CMake/vtkModuleTop.cmake
+--- ParaView-4.2.0_SRC/VTK/CMake/vtkModuleTop.cmake    2014-09-23 18:47:10.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/CMake/vtkModuleTop.cmake        2014-12-19 15:39:41.000000000 +0300
+@@ -476,6 +476,7 @@
+   get_property(VTK_TARGETS GLOBAL PROPERTY VTK_TARGETS)
+   if(VTK_TARGETS)
+     install(EXPORT ${VTK_INSTALL_EXPORT_NAME}  DESTINATION ${VTK_INSTALL_PACKAGE_DIR})
++    install(EXPORT ${VTK_INSTALL_EXPORT_NAME}  DESTINATION ${VTK_INSTALL_PACKAGE_DIR} FILE VTKTargets.cmake)
+   else()
+     set(CMAKE_CONFIGURABLE_FILE_CONTENT "# No targets!")
+     configure_file(${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx ParaView-4.2.0_SRC.new/VTK/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx
+--- ParaView-4.2.0_SRC/VTK/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx     2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/Rendering/Matplotlib/vtkMatplotlibMathTextUtilities.cxx 2014-12-19 15:39:41.000000000 +0300
+@@ -48,7 +48,7 @@
+ //----------------------------------------------------------------------------
+ vtkMatplotlibMathTextUtilities::Availablity
+ vtkMatplotlibMathTextUtilities::MPLMathTextAvailable =
+-vtkMatplotlibMathTextUtilities::NOT_TESTED;
++vtkMatplotlibMathTextUtilities::UNAVAILABLE;
+ // A macro that is used in New() to print warnings if VTK_MATPLOTLIB_DEBUG
+ // is defined in the environment. Use vtkGenericWarningMacro to allow this to
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/ThirdParty/verdict/vtkverdict/V_TetMetric.cpp ParaView-4.2.0_SRC.new/VTK/ThirdParty/verdict/vtkverdict/V_TetMetric.cpp
+--- ParaView-4.2.0_SRC/VTK/ThirdParty/verdict/vtkverdict/V_TetMetric.cpp       2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/ThirdParty/verdict/vtkverdict/V_TetMetric.cpp   2014-12-19 15:39:41.000000000 +0300
+@@ -373,7 +373,7 @@
+           coordinates[3][1] - coordinates[0][1],
+           coordinates[3][2] - coordinates[0][2] );
+   
+-  double detTet = ab % ( ac * ad );
++  double detTet = fabs( ab % ( ac * ad ) );
+   
+   if( detTet < VERDICT_DBL_MIN ) 
+     return (double)VERDICT_DBL_MAX;
+@@ -413,7 +413,7 @@
+   D = bd.length();
+   
+   double aspect_ratio;
+-  aspect_ratio = normal_coeff * hm * ( A + B + C + D ) / fabs( detTet );
++  aspect_ratio = normal_coeff * hm * ( A + B + C + D ) / detTet;
+   
+   if( aspect_ratio > 0 )
+     return (double) VERDICT_MIN( aspect_ratio, VERDICT_DBL_MAX );
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Utilities/Python/vtkPython.h ParaView-4.2.0_SRC.new/VTK/Utilities/Python/vtkPython.h
+--- ParaView-4.2.0_SRC/VTK/Utilities/Python/vtkPython.h        2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/Utilities/Python/vtkPython.h    2014-12-19 15:39:41.000000000 +0300
+@@ -87,4 +87,14 @@
+ #error "Python.h is different version from what VTK was configured with!!"
+ #endif
++#ifdef VTK_NO_PYTHON_THREADS
++#  define VTK_PY_GIL_ENSURE
++#  define VTK_PY_GIL_RELEASE
++#else
++#  define VTK_PY_GIL_ENSURE  PyGILState_STATE _gstate_avoid_clash = PyGILState_Ensure();
++#  define VTK_PY_GIL_RELEASE PyGILState_Release(_gstate_avoid_clash);
++#
++#endif
++
++
+ #endif
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx
+--- ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx     2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInteractiveInterpreter.cxx 2014-12-19 15:39:41.000000000 +0300
+@@ -45,6 +45,7 @@
+   void CleanupPythonObjects()
+     {
++    VTK_PY_GIL_ENSURE
+     Py_XDECREF(this->InteractiveConsoleLocals);
+     Py_XDECREF(this->InteractiveConsole);
+     this->InteractiveConsole = NULL;
+@@ -54,6 +55,7 @@
+       const char* code = "import gc; gc.collect()\n";
+       vtkPythonInterpreter::RunSimpleString(code);
+       }
++    VTK_PY_GIL_RELEASE
+     }
+   PyObject* GetInteractiveConsole()
+@@ -65,6 +67,7 @@
+     vtkPythonInterpreter::Initialize();
++    VTK_PY_GIL_ENSURE
+     // set up the code.InteractiveConsole instance that we'll use.
+     const char* code = "import code\n"
+       "__vtkConsoleLocals={'__name__':'__vtkconsole__','__doc__':None}\n"
+@@ -83,6 +86,7 @@
+       {
+       vtkGenericWarningMacro(
+         "Failed to locate the InteractiveConsole/InteractiveConsoleLocals object.");
++      VTK_PY_GIL_RELEASE
+       return NULL;
+       }
+     Py_INCREF(this->InteractiveConsole);
+@@ -105,7 +109,7 @@
+       PySys_SetObject(const_cast<char*>("ps2"), ps2 = PyString_FromString("... "));
+       Py_XDECREF(ps2);
+       }
+-
++    VTK_PY_GIL_RELEASE
+     return this->InteractiveConsole;
+     }
+ };
+@@ -167,6 +171,7 @@
+     i++;
+     }
++  VTK_PY_GIL_ENSURE
+   bool ret_value = false;
+   PyObject *res = PyObject_CallMethod(console,
+     const_cast<char*>("push"), const_cast<char*>("z"), buffer.c_str());
+@@ -179,6 +184,7 @@
+       }
+     Py_DECREF(res);
+     }
++  VTK_PY_GIL_RELEASE
+   return ret_value;
+ }
+@@ -190,12 +196,14 @@
+   this->Internals->GetInteractiveConsole(); //ensure the console is initialized
++  VTK_PY_GIL_ENSURE
+   PyObject* context = this->Internals->GetInteractiveConsoleLocalsPyObject();
+   PyObject* result = PyRun_String(const_cast<char*>(script), Py_file_input, context, context);
+   if (result == NULL)
+     {
+     PyErr_Print();
++    VTK_PY_GIL_RELEASE
+     return -1;
+     }
+@@ -204,6 +212,7 @@
+     {
+     PyErr_Clear();
+     }
++  VTK_PY_GIL_RELEASE
+   return 0;
+ }
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx
+--- ParaView-4.2.0_SRC/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx        2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx    2014-12-19 15:39:54.000000000 +0300
+@@ -60,10 +60,12 @@
+   inline void vtkPrependPythonPath(const char* pathtoadd)
+     {
++    VTK_PY_GIL_ENSURE
+     PyObject* path = PySys_GetObject(const_cast<char*>("path"));
+     PyObject* newpath = PyString_FromString(pathtoadd);
+     PyList_Insert(path, 0, newpath);
+     Py_DECREF(newpath);
++    VTK_PY_GIL_RELEASE
+     }
+ }
+@@ -107,7 +109,6 @@
+ //----------------------------------------------------------------------------
+ bool vtkPythonInterpreter::Initialize(int initsigs /*=0*/)
+ {
+-  vtkPythonInterpreter::InitializedOnce = true;
+   if (Py_IsInitialized() == 0)
+     {
+ #if (VTK_PYTHON_MAJOR_VERSION > 2) ||\
+@@ -117,11 +118,26 @@
+     (void)initsigs;
+     Py_Initialize();
+ #endif
+-
+ #ifdef SIGINT
+     // Put default SIGINT handler back after Py_Initialize/Py_InitializeEx.
+     signal(SIGINT, SIG_DFL);
+ #endif
++    }
++
++  if (! vtkPythonInterpreter::InitializedOnce)
++    {
++#ifndef VTK_NO_PYTHON_THREADS
++    int threadInit = PyEval_ThreadsInitialized();
++    PyEval_InitThreads(); // safe to call this multiple time
++#endif
++    // At this point we have GIL, or we are mono-thread.
++    // Access to the static below is safe:
++    vtkPythonInterpreter::InitializedOnce = true;
++
++#ifndef VTK_NO_PYTHON_THREADS
++    if(!threadInit)
++      PyEval_SaveThread(); // release GIL
++#endif
+     // HACK: Calling PyRun_SimpleString for the first time for some reason results in
+     // a "\n" message being generated which is causing the error dialog to
+     // popup. So we flush that message out of the system before setting up the
+@@ -134,15 +150,17 @@
+     vtkPythonStdStreamCaptureHelper* wrapperErr =
+       NewPythonStdStreamCaptureHelper(true);
+-    // Redirect Python's stdout and stderr and stdin
+-    PySys_SetObject(const_cast<char*>("stdout"),
++    // Redirect Python's stdout and stderr and stdin - GIL protected operation
++    VTK_PY_GIL_ENSURE
++    int ret1 = PySys_SetObject(const_cast<char*>("stdout"),
+       reinterpret_cast<PyObject*>(wrapperOut));
+-    PySys_SetObject(const_cast<char*>("stderr"),
++    int ret2 = PySys_SetObject(const_cast<char*>("stderr"),
+       reinterpret_cast<PyObject*>(wrapperErr));
+-    PySys_SetObject(const_cast<char*>("stdin"),
++    int ret3 = PySys_SetObject(const_cast<char*>("stdin"),
+       reinterpret_cast<PyObject*>(wrapperOut));
+     Py_DECREF(wrapperOut);
+     Py_DECREF(wrapperErr);
++    VTK_PY_GIL_RELEASE
+     for (size_t cc=0; cc < PythonPaths.size(); cc++)
+       {
+@@ -162,6 +180,7 @@
+   if (Py_IsInitialized() != 0)
+     {
+     NotifyInterpreters(vtkCommand::ExitEvent);
++    VTK_PY_GIL_ENSURE
+     Py_Finalize();
+     }
+ }
+@@ -221,7 +240,9 @@
+     vtkPythonInterpreter::SetProgramName(argv[0]);
+     }
+   vtkPythonInterpreter::Initialize(1);
++  VTK_PY_GIL_ENSURE
+   return Py_Main(argc, argv);
++  // Py_Main already does a finalize etc ...
+ }
+ //----------------------------------------------------------------------------
+@@ -235,7 +256,9 @@
+   buffer.erase(std::remove(buffer.begin(), buffer.end(), '\r'), buffer.end());
+   // The cast is necessary because PyRun_SimpleString() hasn't always been const-correct
++  VTK_PY_GIL_ENSURE
+   PyRun_SimpleString(const_cast<char*>(buffer.c_str()));
++  VTK_PY_GIL_RELEASE
+ }
+ //----------------------------------------------------------------------------
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx
+--- ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx    2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkPythonCommand.cxx        2014-12-19 15:39:41.000000000 +0300
+@@ -30,14 +30,18 @@
+   vtkPythonUtil::UnRegisterPythonCommand(this);
+   if (this->obj && Py_IsInitialized())
+     {
++    VTK_PY_GIL_ENSURE
+     Py_DECREF(this->obj);
++    VTK_PY_GIL_RELEASE
+     }
+   this->obj = NULL;
+ }
+ void vtkPythonCommand::SetObject(PyObject *o)
+ {
++  VTK_PY_GIL_ENSURE
+   Py_INCREF(o);
++  VTK_PY_GIL_RELEASE
+   this->obj = o;
+ }
+@@ -92,11 +96,11 @@
+   // If a threadstate has been set using vtkPythonCommand::SetThreadState,
+   // then swap it in here.  See the email to vtk-developers@vtk.org from
+   // June 18, 2009 with subject "Py_NewInterpreter and vtkPythonCallback issue"
+-  PyThreadState* prevThreadState = NULL;
+-  if (this->ThreadState)
+-    {
+-    prevThreadState = PyThreadState_Swap(this->ThreadState);
+-    }
++//  PyThreadState* prevThreadState = NULL;
++//  if (this->ThreadState)
++//    {
++//    prevThreadState = PyThreadState_Swap(this->ThreadState);
++//    }
+   PyObject * obj2 = NULL;
+   if (ptr && ptr->GetReferenceCount() > 0)
+@@ -237,10 +241,10 @@
+     }
+   // If we did the swap near the top of this function then swap back now.
+-  if (this->ThreadState)
+-    {
+-    PyThreadState_Swap(prevThreadState);
+-    }
++//  if (this->ThreadState)
++//    {
++//    PyThreadState_Swap(prevThreadState);
++//    }
+ #ifndef VTK_NO_PYTHON_THREADS
+ #if (PY_MAJOR_VERSION > 2) || \
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx
+--- ParaView-4.2.0_SRC/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx    2014-09-23 18:47:11.000000000 +0400
++++ ParaView-4.2.0_SRC.new/VTK/Wrapping/PythonCore/vtkSmartPyObject.cxx        2014-12-19 15:39:41.000000000 +0300
+@@ -30,37 +30,52 @@
+ vtkSmartPyObject::vtkSmartPyObject(const vtkSmartPyObject &other) :
+   Object(other.Object)
+ {
++  VTK_PY_GIL_ENSURE
+   Py_XINCREF(this->Object);
++  VTK_PY_GIL_RELEASE
+ }
+ //--------------------------------------------------------------------
+ vtkSmartPyObject::~vtkSmartPyObject()
+ {
+-  Py_XDECREF(this->Object);
++  if (Py_IsInitialized())
++    {
++    VTK_PY_GIL_ENSURE
++    Py_XDECREF(this->Object);
++    VTK_PY_GIL_RELEASE
++    }
++  else
++    Py_XDECREF(this->Object);
+ }
+ //--------------------------------------------------------------------
+ vtkSmartPyObject &vtkSmartPyObject::operator=(const vtkSmartPyObject &other)
+ {
++  VTK_PY_GIL_ENSURE
+   Py_XDECREF(this->Object);
+   this->Object = other.Object;
+   Py_XINCREF(this->Object);
++  VTK_PY_GIL_RELEASE
+   return *this;
+ }
+ //--------------------------------------------------------------------
+ vtkSmartPyObject &vtkSmartPyObject::operator=(PyObject *obj)
+ {
++  VTK_PY_GIL_ENSURE
+   Py_XDECREF(this->Object);
+   this->Object = obj;
+   Py_XINCREF(this->Object);
++  VTK_PY_GIL_RELEASE
+   return *this;
+ }
+ //--------------------------------------------------------------------
+ void vtkSmartPyObject::TakeReference(PyObject *obj)
+ {
++  VTK_PY_GIL_ENSURE
+   Py_XDECREF(this->Object);
++  VTK_PY_GIL_RELEASE
+   this->Object = obj;
+ }
+@@ -99,6 +114,8 @@
+ //--------------------------------------------------------------------
+ PyObject *vtkSmartPyObject::GetAndIncreaseReferenceCount()
+ {
++  VTK_PY_GIL_ENSURE
+   Py_XINCREF(this->Object);
++  VTK_PY_GIL_RELEASE
+   return this->Object;
+ }
+diff -Naur --exclude=CVS --exclude=.git ParaView-4.2.0_SRC/Wrapping/Python/paraview/servermanager.py ParaView-4.2.0_SRC.new/Wrapping/Python/paraview/servermanager.py
+--- ParaView-4.2.0_SRC/Wrapping/Python/paraview/servermanager.py       2014-09-23 18:46:44.000000000 +0400
++++ ParaView-4.2.0_SRC.new/Wrapping/Python/paraview/servermanager.py   2014-12-19 15:39:41.000000000 +0300
+@@ -1092,7 +1092,7 @@
+         property = self.SMProperty
+         nElems = property.GetNumberOfElements()
+         if nElems%2 != 0:
+-            raise ValueError, "The SMProperty with XML label '%s' has a size that is not a multiple of 2." % property.GetXMLLabel()
++            nElems -= 1
+         self.__arrays = []
+         for i in range(0, nElems, 2):
+             if self.GetElement(i+1) != '0':
diff --git a/products/patches/ParaView-5.1.2-win.patch b/products/patches/ParaView-5.1.2-win.patch
new file mode 100755 (executable)
index 0000000..19e5a25
--- /dev/null
@@ -0,0 +1,34 @@
+diff -rupN ParaView/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.h ParaView_new/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.h\r
+--- ParaView/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.h Mon Nov  7 08:53:30 2016\r
++++ ParaView_new/ParaViewCore/ServerManager/Rendering/vtkSMTransferFunctionProxy.h     Wed May 31 14:29:46 2017\r
+@@ -25,6 +25,13 @@\r
+ #include "vtkPVServerManagerRenderingModule.h" // needed for export macro\r
+ #include "vtkSMProxy.h"\r
\r
++#ifndef nextafter_definition_h\r
++#define nextafter_definition_h\r
++#if _MSC_VER < 1800\r
++inline double nextafter(double x, double y) { return _nextafter(x, y); }\r
++#endif\r
++#endif\r
++\r
+ namespace Json\r
+ {\r
+   class Value;\r
+diff -rupN ParaView/Qt/Components/pqProxyWidget.h ParaView_new/Qt/Components/pqProxyWidget.h\r
+--- ParaView/Qt/Components/pqProxyWidget.h     Mon Nov  7 08:53:30 2016\r
++++ ParaView_new/Qt/Components/pqProxyWidget.h Wed May 31 14:29:56 2017\r
+@@ -35,6 +35,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI\r
+ #include "pqComponentsModule.h"\r
+ #include <QWidget>\r
\r
++#ifndef nextafter_definition_h\r
++#define nextafter_definition_h\r
++#if _MSC_VER < 1800\r
++inline double nextafter(double x, double y) { return _nextafter(x, y); }\r
++#endif\r
++#endif\r
++\r
+ class pqPropertyWidget;\r
+ class pqView;\r
+ class vtkSMProperty;\r
diff --git a/products/patches/ParaView-5.4.0-b5c4c893-0001-Fix-prob~stallation-of-VTKTargets.cmake-fi.patch b/products/patches/ParaView-5.4.0-b5c4c893-0001-Fix-prob~stallation-of-VTKTargets.cmake-fi.patch
new file mode 100644 (file)
index 0000000..2830ed5
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/VTK/CMake/vtkModuleTop.cmake     2015-12-16 20:17:55.000000000 +0300
++++ b/VTK/CMake/vtkModuleTop.cmake     2016-02-08 16:12:02.000000000 +0300
+@@ -503,6 +503,7 @@
+   get_property(VTK_TARGETS GLOBAL PROPERTY VTK_TARGETS)
+   if(VTK_TARGETS)
+     install(EXPORT ${VTK_INSTALL_EXPORT_NAME}  DESTINATION ${VTK_INSTALL_PACKAGE_DIR} FILE ${VTK_INSTALL_EXPORT_NAME}.cmake)
++    install(EXPORT ${VTK_INSTALL_EXPORT_NAME}  DESTINATION ${VTK_INSTALL_PACKAGE_DIR} FILE VTKTargets.cmake)
+   else()
+     set(CMAKE_CONFIGURABLE_FILE_CONTENT "# No targets!")
+     configure_file(${CMAKE_ROOT}/Modules/CMakeConfigurableFile.in
+
diff --git a/products/patches/ParaView-5.4.0-b5c4c893-vtkXOpenGLRenderWindow.cxx.patch b/products/patches/ParaView-5.4.0-b5c4c893-vtkXOpenGLRenderWindow.cxx.patch
new file mode 100644 (file)
index 0000000..5240a41
--- /dev/null
@@ -0,0 +1,28 @@
+--- orig/ParaView-5.4.0-463c0633_SRC/VTK/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx  2017-09-13 10:51:02.000000000 +0300
++++ ParaView-5.4.0-463c0633_SRC/VTK/Rendering/OpenGL2/vtkXOpenGLRenderWindow.cxx       2017-11-14 16:15:29.312760666 +0300
+@@ -402,10 +402,13 @@
+   }
+ }
++static bool ctxErrorOccurred = false;
++
+ extern "C"
+ {
+   int vtkXOGLContextCreationErrorHandler(Display*, XErrorEvent*)
+   {
++    ctxErrorOccurred = true;
+     return 1;
+   }
+ }
+@@ -584,6 +587,11 @@
+             GL_TRUE, context_attribs );
+         // Sync to ensure any errors generated are processed.
+         XSync( this->DisplayId, False );
++        if(ctxErrorOccurred)
++        {
++          this->Internal->ContextId = nullptr;
++          ctxErrorOccurred = false;
++        }
+       }
+       XSetErrorHandler(previousHandler);
+       if ( this->Internal->ContextId )
diff --git a/products/patches/ParaView-5.4.0-b5c4c893_temporaty_patch.patch b/products/patches/ParaView-5.4.0-b5c4c893_temporaty_patch.patch
new file mode 100644 (file)
index 0000000..e236015
--- /dev/null
@@ -0,0 +1,11 @@
+diff -Naur ParaView-5.4.0-b5c4c893_SRC_orig/CoProcessing/PythonCatalyst/module.cmake ParaView-5.4.0-b5c4c893_SRC_modif/CoProcessing/PythonCatalyst/module.cmake
+--- ParaView-5.4.0-b5c4c893_SRC_orig/CoProcessing/PythonCatalyst/module.cmake  2018-01-10 15:41:20.000000000 +0300
++++ ParaView-5.4.0-b5c4c893_SRC_modif/CoProcessing/PythonCatalyst/module.cmake 2018-01-11 18:52:49.000000000 +0300
+@@ -6,6 +6,7 @@
+     vtkIOImage
+     vtkTestingRendering
+     vtkPVCatalystTestDriver
++  EXCLUDE_FROM_WRAPPING
+   TEST_LABELS
+     PARAVIEW CATALYST
+ )
diff --git a/products/patches/ParaView-5.4.1_b5c4c89-3DGlyphs.patch b/products/patches/ParaView-5.4.1_b5c4c89-3DGlyphs.patch
new file mode 100644 (file)
index 0000000..fda2995
--- /dev/null
@@ -0,0 +1,140 @@
+diff -Naur ParaView_ori/CMakeLists.txt ParaView_new/CMakeLists.txt
+--- ParaView_ori/CMakeLists.txt        2018-01-11 09:32:16.000000000 +0100
++++ ParaView_new/CMakeLists.txt        2018-04-13 13:30:54.503629695 +0200
+@@ -213,6 +213,9 @@
+ option(PARAVIEW_USE_VISITBRIDGE "Build ParaView with VisIt readers." OFF)
+ option(PARAVIEW_USE_OPENTURNS "Build ParaView with OpenTURNS filters and density maps" OFF)
++# AC - OP spns 7810 Add option to disable 3D Glyphs representation
++option(PARAVIEW_USE_3DGLYPH "Build ParaView with 3D Glyph presentation" ON)
++
+ # NvPipe requires an NVIDIA GPU.
+ option(PARAVIEW_ENABLE_NVPIPE
+        "Build ParaView with NvPipe remoting. Requires CUDA and an NVIDIA GPU" OFF)
+diff -Naur ParaView_ori/ParaViewCore/ClientServerCore/Default/Testing/Cxx/ParaViewCoreClientServerCorePrintSelf.cxx ParaView_new/ParaViewCore/ClientServerCore/Default/Testing/Cxx/ParaViewCoreClientServerCorePrintSelf.cxx
+--- ParaView_ori/ParaViewCore/ClientServerCore/Default/Testing/Cxx/ParaViewCoreClientServerCorePrintSelf.cxx   2018-01-11 09:32:03.000000000 +0100
++++ ParaView_new/ParaViewCore/ClientServerCore/Default/Testing/Cxx/ParaViewCoreClientServerCorePrintSelf.cxx   2018-04-13 13:34:01.726070038 +0200
+@@ -9,7 +9,12 @@
+ #include "vtkDataLabelRepresentation.h"
+ #include "vtkGeometryRepresentation.h"
+ #include "vtkGeometryRepresentationWithFaces.h"
++
++// AC - OP spns 7810 Disable 3D Glyphs representation
++#ifdef PARAVIEW_USE_3DGLYPH
+ #include "vtkGlyph3DRepresentation.h"
++#endif
++
+ #include "vtkImageSliceMapper.h"
+ #include "vtkImageSliceRepresentation.h"
+ #include "vtkImageVolumeRepresentation.h"
+@@ -111,7 +116,12 @@
+   PRINT_SELF(vtkDataLabelRepresentation);
+   PRINT_SELF(vtkGeometryRepresentation);
+   PRINT_SELF(vtkGeometryRepresentationWithFaces);
++
++  // AC - OP spns 7810 Disable 3D Glyphs representation
++#ifdef PARAVIEW_USE_3DGLYPH
+   PRINT_SELF(vtkGlyph3DRepresentation);
++#endif
++  
+   PRINT_SELF(vtkImageSliceMapper);
+   PRINT_SELF(vtkImageSliceRepresentation);
+   PRINT_SELF(vtkImageVolumeRepresentation);
+diff -Naur ParaView_ori/ParaViewCore/ClientServerCore/Rendering/CMakeLists.txt ParaView_new/ParaViewCore/ClientServerCore/Rendering/CMakeLists.txt
+--- ParaView_ori/ParaViewCore/ClientServerCore/Rendering/CMakeLists.txt        2018-01-11 09:32:16.000000000 +0100
++++ ParaView_new/ParaViewCore/ClientServerCore/Rendering/CMakeLists.txt        2018-04-13 13:39:53.538166496 +0200
+@@ -28,6 +28,8 @@
+ #  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #
+ #==========================================================================
++
++# AC - OP spns #7810 Disable 3D Glyphs representation
+ set (Module_SRCS
+   vtk3DWidgetRepresentation.cxx
+   vtkAMROutlineRepresentation.cxx
+@@ -44,7 +46,6 @@
+   vtkGeometryRepresentation.cxx
+   vtkGeometryRepresentationWithFaces.cxx
+   vtkGeometrySliceRepresentation.cxx
+-  vtkGlyph3DRepresentation.cxx
+   vtkImageSliceRepresentation.cxx
+   vtkImageVolumeRepresentation.cxx
+   vtkMoleculeRepresentation.cxx
+@@ -104,7 +105,13 @@
+   vtkThreeSliceFilter.cxx
+   vtkUnstructuredGridVolumeRepresentation.cxx
+   vtkXYChartRepresentation.cxx
+-)
++  )
++
++if (PARAVIEW_USE_3DGLYPH)
++  list(APPEND Module_SRCS
++    vtkGlyph3DRepresentation.cxx)
++endif()
++    
+ list(APPEND Module_SRCS
+   vtkPointGaussianRepresentation.cxx)
+diff -Naur ParaView_ori/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml ParaView_new/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml
+--- ParaView_ori/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml      2018-01-11 09:32:16.000000000 +0100
++++ ParaView_new/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml      2018-04-13 13:47:59.330840906 +0200
+@@ -3608,9 +3608,12 @@
+       <RepresentationType subproxy="SurfaceRepresentation"
+                           subtype="Surface With Edges"
+                           text="Surface With Edges" />
++      <!-- AC - OP spns #7810 Disable 3D Glyphs representation -->
++#ifdef PARAVIEW_USE_3DGLYPH
+       <RepresentationType subproxy="Glyph3DRepresentation"
+                           subtype="Surface"
+                           text="3D Glyphs" />
++#endif
+       <StringVectorProperty command="GetRepresentationTypes"
+                             information_only="1"
+                             name="RepresentationTypesInfo"
+@@ -3785,6 +3788,8 @@
+           <Exception name="Visibility" />
+         </ShareProperties>
+       </SubProxy>
++      <!-- AC - OP spns #7810 Disable 3D Glyphs representation -->
++#ifdef PARAVIEW_USE_3DGLYPH
+       <SubProxy>
+         <Proxy name="Glyph3DRepresentation"
+                proxygroup="representations"
+@@ -3834,6 +3839,7 @@
+           <Exception name="Visibility" />
+         </ShareProperties>
+       </SubProxy>
++ #endif
+       <ProxyProperty name="DataAxesGrid"
+                      command="SetGridAxesRepresentation"
+                      panel_widget="proxy_editor">
+@@ -4792,6 +4798,8 @@
+       </DoubleVectorProperty>
+     </RepresentationProxy>
+     <!-- ================================================================== -->
++    <!-- AC - OP spns #7810 Disable 3D Glyphs representation -->
++#ifdef PARAVIEW_USE_3DGLYPH
+     <RepresentationProxy base_proxygroup="internal_representations"
+                          base_proxyname="SurfaceRepresentationBase"
+                          class="vtkGlyph3DRepresentation"
+@@ -4997,6 +5005,7 @@
+       </IntVectorProperty>
+       <!-- end of Glyph3DRepresentation -->
+     </RepresentationProxy>
++#endif
+     <!-- ================================================================== -->
+     <RepresentationProxy class="vtkDataLabelRepresentation"
+                          name="DataLabelRepresentation"
+diff -Naur ParaView_ori/vtkPVConfig.h.in ParaView_new/vtkPVConfig.h.in
+--- ParaView_ori/vtkPVConfig.h.in      2018-01-11 09:32:16.000000000 +0100
++++ ParaView_new/vtkPVConfig.h.in      2018-04-13 13:53:16.193719426 +0200
+@@ -49,6 +49,9 @@
+ //Build ParaView with enforced secure connection (--connect-id)
+ #cmakedefine PARAVIEW_ALWAYS_SECURE_CONNECTION
++// AC - OP spns #7810 Disable 3D Glyphs representation
++#cmakedefine PARAVIEW_USE_3DGLYPH
++
+ #define PARAVIEW_VERSION_MAJOR @PARAVIEW_VERSION_MAJOR@
+ #define PARAVIEW_VERSION_MINOR @PARAVIEW_VERSION_MINOR@
+ #define PARAVIEW_VERSION_PATCH @PARAVIEW_VERSION_PATCH@
diff --git a/products/patches/ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch b/products/patches/ParaView-5.6.0-bfaf7b82_StateStorage_bug.patch
new file mode 100644 (file)
index 0000000..0115740
--- /dev/null
@@ -0,0 +1,34 @@
+diff -Naur ParaView-5.6.0-bfaf7b82_SRC_orig/VTK/Rendering/OpenGL2/vtkStateStorage.h ParaView-5.6.0-bfaf7b82_SRC_modif/VTK/Rendering/OpenGL2/vtkStateStorage.h
+--- ParaView-5.6.0-bfaf7b82_SRC_orig/VTK/Rendering/OpenGL2/vtkStateStorage.h   2019-06-25 16:00:38.000000000 +0300
++++ ParaView-5.6.0-bfaf7b82_SRC_modif/VTK/Rendering/OpenGL2/vtkStateStorage.h  2019-07-12 11:32:00.000000000 +0300
+@@ -51,8 +51,11 @@
+ #include <algorithm>
+ #include <string>
++#include <vector>
+-#ifndef NDEBUG // a debug implementation
++// uncomment the folowing line to add in state debugging information
++//#define USE_STATE_DEBUGGING 1
++#ifdef USE_STATE_DEBUGGING
+ class VTKRENDERINGOPENGL2_EXPORT vtkStateStorage
+ {
+@@ -120,7 +123,7 @@
+   this->Storage.insert(this->Storage.end(), start, start + sizeof(T));
+ }
+-#else // release implementation
++#else // normal implementation
+ class VTKRENDERINGOPENGL2_EXPORT vtkStateStorage
+ {
+@@ -157,7 +160,7 @@
+   this->Storage.insert(this->Storage.end(), start, start + sizeof(T));
+ }
+-#endif // Release implementation
++#endif // normal implementation
+ #endif // vtkStateStorage_h
diff --git a/products/patches/ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch b/products/patches/ParaView-5.6.0_bfaf7b8-vtkm_visual_studio.patch
new file mode 100644 (file)
index 0000000..b9c7631
--- /dev/null
@@ -0,0 +1,12 @@
+diff -Naur ParaView-5.6.0-bfaf7b82_SRC/VTK/ThirdParty/vtkm/vtk-m/vtkm/worklet/contourtree_augmented/mesh_dem_meshtypes/CMakeLists.txt ParaView-5.6.0-bfaf7b82_SRC_new/VTK/ThirdParty/vtkm/vtk-m/vtkm/worklet/contourtree_augmented/mesh_dem_meshtypes/CMakeLists.txt
+--- ParaView-5.6.0-bfaf7b82_SRC/VTK/ThirdParty/vtkm/vtk-m/vtkm/worklet/contourtree_augmented/mesh_dem_meshtypes/CMakeLists.txt 2019-06-27 14:45:18.725749100 +0300
++++ ParaView-5.6.0-bfaf7b82_SRC_new/VTK/ThirdParty/vtkm/vtk-m/vtkm/worklet/contourtree_augmented/mesh_dem_meshtypes/CMakeLists.txt     2019-06-27 14:18:34.571736200 +0300
+@@ -86,7 +86,7 @@
+ #1. vtkm_declare_headers will do a flat install into the current respective
+ #   build directory
+ vtkm_get_kit_name(name dir_prefix)
+-vtkm_add_header_build_test(${name} ${dir_prefix} FALSE ${extra_headers})
++#vtkm_add_header_build_test(${name} ${dir_prefix} FALSE ${extra_headers})
+ vtkm_install_headers("${dir_prefix}/freudenthal_2D" freudenthal_2D/Types.h)
+ vtkm_install_headers("${dir_prefix}/freudenthal_3D" freudenthal_3D/Types.h)
+ vtkm_install_headers("${dir_prefix}/marchingcubes_3D" marchingcubes_3D/Types.h)
diff --git a/products/patches/ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch b/products/patches/ParaView-5.6.0_bfaf7b8_patch_against_multiple_py_sv_thr.patch
new file mode 100644 (file)
index 0000000..33059a2
--- /dev/null
@@ -0,0 +1,17 @@
+diff -ruN ParaView/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx ParaView_new/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx
+--- ParaView/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx  2019-05-28 08:19:55.673481437 +0200
++++ ParaView_new/VTK/Utilities/PythonInterpreter/vtkPythonInterpreter.cxx      2019-05-28 08:08:21.000000000 +0200
+@@ -260,8 +260,11 @@
+     vtkPythonInterpreter::InitializedOnce = true;
+ #ifdef VTK_PYTHON_FULL_THREADSAFE
+-    PyEval_InitThreads(); // safe to call this multiple time
+-    PyEval_SaveThread(); // release GIL
++    if(PyEval_ThreadsInitialized() == 0)
++    {
++      PyEval_InitThreads(); // safe to call this multiple time
++      PyEval_SaveThread(); // release GIL
++    }
+ #endif
+     // HACK: Calling PyRun_SimpleString for the first time for some reason results in
diff --git a/products/patches/PyQt-4.9.1.patch b/products/patches/PyQt-4.9.1.patch
new file mode 100755 (executable)
index 0000000..c023e1e
--- /dev/null
@@ -0,0 +1,51 @@
+diff -pruN PyQt-x11-gpl-4.9.1/sip/QtDBus/qpydbuspendingreply.sip PyQt-x11-gpl-4.9.1_new/sip/QtDBus/qpydbuspendingreply.sip
+--- PyQt-x11-gpl-4.9.1/sip/QtDBus/qpydbuspendingreply.sip      2012-02-10 11:35:14.000000000 +0100
++++ PyQt-x11-gpl-4.9.1_new/sip/QtDBus/qpydbuspendingreply.sip  2012-04-12 14:04:48.000000000 +0200
+@@ -23,6 +23,8 @@
+ // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
++%If (Qt_4_7_0 -)
++
+ class QPyDBusPendingReply : QDBusPendingCall /PyName=QDBusPendingReply/
+ {
+ %TypeHeaderCode
+@@ -47,3 +49,5 @@ public:
+     SIP_PYOBJECT value(SIP_PYOBJECT type /DocValue="None"/ = 0) const /HoldGIL/;
+ };
++
++%End
+diff -pruN PyQt-x11-gpl-4.9.1/sip/QtDBus/qpydbusreply.sip PyQt-x11-gpl-4.9.1_new/sip/QtDBus/qpydbusreply.sip
+--- PyQt-x11-gpl-4.9.1/sip/QtDBus/qpydbusreply.sip     2012-02-10 11:35:14.000000000 +0100
++++ PyQt-x11-gpl-4.9.1_new/sip/QtDBus/qpydbusreply.sip 2012-04-12 14:04:48.000000000 +0200
+@@ -23,6 +23,8 @@
+ // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
++%If (Qt_4_7_0 -)
++
+ class QPyDBusReply /PyName=QDBusReply/
+ {
+ %TypeHeaderCode
+@@ -241,3 +243,5 @@ template<TYPE>
+     return 0;
+ %End
+ };
++
++%End
+
+diff -pruN PyQt-x11-gpl-4.9.1_old/configure.py PyQt-x11-gpl-4.9.1_new/configure.py
+--- PyQt-x11-gpl-4.9.1_old/configure.py        2013-07-22 15:50:59.000000000 +0200
++++ PyQt-x11-gpl-4.9.1_new/configure.py        2013-07-22 15:42:12.000000000 +0200
+@@ -375,8 +375,8 @@ class ConfigurePyQt4:
+         check_module("QtWebKit", "qwebpage.h", "new QWebPage()")
+         check_module("QtXml", "qdom.h", "new QDomDocument()")
+         check_module("QtXmlPatterns", "qxmlname.h", "new QXmlName()")
+-        check_module("phonon", "phonon/videowidget.h",
+-                "new Phonon::VideoWidget()")
++        #check_module("phonon", "phonon/videowidget.h",
++        #        "new Phonon::VideoWidget()")
+         check_module("QtAssistant", "qassistantclient.h",
+                 "new QAssistantClient(\"foo\")", extra_lib_dirs=ass_lib_dirs,
+                 extra_libs=ass_libs)
diff --git a/products/patches/PyQt-GLdispatch.patch b/products/patches/PyQt-GLdispatch.patch
new file mode 100644 (file)
index 0000000..8c796e6
--- /dev/null
@@ -0,0 +1,21 @@
+--- PyQt_ref/configure.py      2019-06-17 13:05:36.317488870 +0200
++++ PyQt/configure.py  2019-06-18 10:04:22.726188342 +0200
+@@ -1901,6 +1901,18 @@
+         return False
++    ldout=get_command_output("ldconfig -p| grep 'libGLdispatch.so$'")
++    gld= ldout.read().strip().decode("utf-8") 
++    if not gld:
++      print("INFO: fine no need to link against libGLdispatch.so")
++    else:
++      print("INFO: adding libGLdispatch.so to the list of libraries...")
++      with open(mf, 'r') as f :
++        d = f.read()
++      d = d.replace('-lGL', '-lGL -lGLdispatch')
++      with open(mf, 'w') as f:
++        f.write(d)
++
+     # Restore the current directory.
+     if cwd is not None:
+         os.chdir(cwd)
diff --git a/products/patches/Python-3.6.5_windows.patch b/products/patches/Python-3.6.5_windows.patch
new file mode 100644 (file)
index 0000000..d9ad237
--- /dev/null
@@ -0,0 +1,979 @@
+--- Python_ref/Modules/_io/_iomodule.c
++++ Python/Modules/_io/_iomodule.c
+@@ -21,7 +21,8 @@
+ #endif /* HAVE_SYS_STAT_H */
+ #ifdef MS_WINDOWS
+-#include <consoleapi.h>
++#include <windows.h>
++ #include <consoleapi.h>
+ #endif
+ /* Various interned strings */
+--- Python_ref/PCbuild/_asyncio.vcxproj
++++ Python/PCbuild/_asyncio.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{384C224A-7474-476E-A01B-750EA7DE918C}</ProjectGuid>
+     <RootNamespace>_asyncio</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -74,4 +75,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_bz2.vcxproj
++++ Python/PCbuild/_bz2.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}</ProjectGuid>
+     <RootNamespace>bz2</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_bz2.vcxproj.filters
++++ Python/PCbuild/_bz2.vcxproj.filters
+@@ -45,4 +45,7 @@
+       <Filter>bzip2 1.0.6 Header Files</Filter>
+     </ClInclude>
+   </ItemGroup>
+-</Project>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_ctypes.vcxproj
++++ Python/PCbuild/_ctypes.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{0E9791DB-593A-465F-98BC-681011311618}</ProjectGuid>
+     <RootNamespace>_ctypes</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_ctypes.vcxproj.filters
++++ Python/PCbuild/_ctypes.vcxproj.filters
+@@ -62,4 +62,7 @@
+       <Filter>Source Files</Filter>
+     </CustomBuild>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_ctypes_test.vcxproj
++++ Python/PCbuild/_ctypes_test.vcxproj
+@@ -39,6 +39,7 @@
+     <RootNamespace>_ctypes_test</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_ctypes_test.vcxproj.filters
++++ Python/PCbuild/_ctypes_test.vcxproj.filters
+@@ -18,4 +18,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_decimal.vcxproj
++++ Python/PCbuild/_decimal.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{0E9791DB-593A-465F-98BC-681011311617}</ProjectGuid>
+     <RootNamespace>_decimal</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_decimal.vcxproj.filters
++++ Python/PCbuild/_decimal.vcxproj.filters
+@@ -113,4 +113,7 @@
+       <Filter>Source Files</Filter>
+     </CustomBuild>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_distutils_findvs.vcxproj
++++ Python/PCbuild/_distutils_findvs.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{41ADEDF9-11D8-474E-B4D7-BB82332C878E}</ProjectGuid>
+     <RootNamespace>_distutils_findvs</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -80,4 +81,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_elementtree.vcxproj
++++ Python/PCbuild/_elementtree.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{17E1E049-C309-4D79-843F-AE483C264AEA}</ProjectGuid>
+     <RootNamespace>_elementtree</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -104,4 +105,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_elementtree.vcxproj.filters
++++ Python/PCbuild/_elementtree.vcxproj.filters
+@@ -33,9 +33,6 @@
+     <ClInclude Include="..\Modules\expat\latin1tab.h">
+       <Filter>Header Files</Filter>
+     </ClInclude>
+-    <ClInclude Include="..\Modules\expat\loadlibrary.c">
+-      <Filter>Header Files</Filter>
+-    </ClInclude>
+     <ClInclude Include="..\Modules\expat\macconfig.h">
+       <Filter>Header Files</Filter>
+     </ClInclude>
+@@ -71,5 +68,9 @@
+     <ClCompile Include="..\Modules\expat\xmltok.c">
+       <Filter>Source Files</Filter>
+     </ClCompile>
++    <ClCompile Include="..\Modules\expat\loadlibrary.c" />
+   </ItemGroup>
+-</Project>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_freeze_importlib.vcxproj
++++ Python/PCbuild/_freeze_importlib.vcxproj
+@@ -39,6 +39,7 @@
+     <Keyword>Win32Proj</Keyword>
+     <RootNamespace>_freeze_importlib</RootNamespace>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -89,26 +90,21 @@
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+   <Target Name="_RebuildImportLib">
+-    <Exec Command='"$(TargetPath)" "%(None.FullPath)" "%(None.IntFile)"' />
+-    
++    <Exec Command="&quot;$(TargetPath)&quot; &quot;%(None.FullPath)&quot; &quot;%(None.IntFile)&quot;" />
+     <PropertyGroup>
+-      <_OldContent Condition="Exists($(OutTargetPath))"></_OldContent>
+-      <_NewContent Condition="Exists($(IntTargetPath))">$([System.IO.File]::ReadAllText($(IntTargetPath)).Replace(`&#x0D;&#x0A;`, `&#x0A;`))</_NewContent>
++      <_OldContent Condition="Exists($(OutTargetPath))">
++      </_OldContent>
++      <_NewContent Condition="Exists($(IntTargetPath))">$([System.IO.File]::ReadAllText($(IntTargetPath)).Replace(`
++`, `
++`))</_NewContent>
+     </PropertyGroup>
+-    
+-    <Copy SourceFiles="%(None.IntFile)"
+-          DestinationFiles="%(None.OutFile)"
+-          Condition="!Exists(%(None.OutFile)) or (Exists(%(None.IntFile)) and '$([System.IO.File]::ReadAllText(%(None.OutFile)).Replace(`&#x0D;&#x0A;`, `&#x0A;`))' != '$([System.IO.File]::ReadAllText(%(None.IntFile)).Replace(`&#x0D;&#x0A;`, `&#x0A;`))')">
++    <Copy SourceFiles="%(None.IntFile)" DestinationFiles="%(None.OutFile)" Condition="!Exists(%(None.OutFile)) or (Exists(%(None.IntFile)) and '$([System.IO.File]::ReadAllText(%(None.OutFile)).Replace(`&#xD;&#xA;`, `&#xA;`))' != '$([System.IO.File]::ReadAllText(%(None.IntFile)).Replace(`&#xD;&#xA;`, `&#xA;`))')">
+       <Output TaskParameter="CopiedFiles" ItemName="_Updated" />
+     </Copy>
+-    
+-    <Warning Text="@(_Updated->'%(Filename)%(Extension)',', ') updated. You will need to rebuild pythoncore to see the changes."
+-             Condition="'@(_Updated)' != '' and $(Configuration) == 'Debug'" />
+-    <Error Text="@(_Updated->'%(Filename)%(Extension)',', ') updated. You will need to rebuild pythoncore to see the changes."
+-           Condition="'@(_Updated)' != '' and $(Configuration) == 'Release'" />
++    <Warning Text="@(_Updated->'%(Filename)%(Extension)',', ') updated. You will need to rebuild pythoncore to see the changes." Condition="'@(_Updated)' != '' and $(Configuration) == 'Debug'" />
++    <Error Text="@(_Updated->'%(Filename)%(Extension)',', ') updated. You will need to rebuild pythoncore to see the changes." Condition="'@(_Updated)' != '' and $(Configuration) == 'Release'" />
+   </Target>
+-  <Target Name="RebuildImportLib" AfterTargets="AfterBuild" Condition="$(Configuration) == 'Debug' or $(Configuration) == 'Release'"
+-          DependsOnTargets="_RebuildImportLib">
++  <Target Name="RebuildImportLib" AfterTargets="AfterBuild" Condition="$(Configuration) == 'Debug' or $(Configuration) == 'Release'" DependsOnTargets="_RebuildImportLib">
+   </Target>
+   <Target Name="_CleanImportLib" BeforeTargets="CoreClean">
+     <ItemGroup>
+@@ -116,4 +112,4 @@
+       <Clean Include="$(IntDir)importlib_external.g.h" />
+     </ItemGroup>
+   </Target>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_freeze_importlib.vcxproj.filters
++++ Python/PCbuild/_freeze_importlib.vcxproj.filters
+@@ -23,5 +23,6 @@
+     <None Include="..\Lib\importlib\_bootstrap.py">
+       <Filter>Source Files</Filter>
+     </None>
++    <None Include="..\Lib\importlib\_bootstrap_external.py" />
+   </ItemGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_hashlib.vcxproj
++++ Python/PCbuild/_hashlib.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{447F05A8-F581-4CAC-A466-5AC7936E207E}</ProjectGuid>
+     <RootNamespace>_hashlib</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -90,4 +91,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_hashlib.vcxproj.filters
++++ Python/PCbuild/_hashlib.vcxproj.filters
+@@ -10,4 +10,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_lzma.vcxproj
++++ Python/PCbuild/_lzma.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{F9D71780-F393-11E0-BE50-0800200C9A66}</ProjectGuid>
+     <RootNamespace>lzma</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -87,4 +88,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_lzma.vcxproj.filters
++++ Python/PCbuild/_lzma.vcxproj.filters
+@@ -10,4 +10,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_msi.vcxproj
++++ Python/PCbuild/_msi.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{31FFC478-7B4A-43E8-9954-8D03E2187E9C}</ProjectGuid>
+     <RootNamespace>_msi</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_msi.vcxproj.filters
++++ Python/PCbuild/_msi.vcxproj.filters
+@@ -10,4 +10,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_multiprocessing.vcxproj
++++ Python/PCbuild/_multiprocessing.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{9E48B300-37D1-11DD-8C41-005056C00008}</ProjectGuid>
+     <RootNamespace>_multiprocessing</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_multiprocessing.vcxproj.filters
++++ Python/PCbuild/_multiprocessing.vcxproj.filters
+@@ -21,4 +21,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_overlapped.vcxproj
++++ Python/PCbuild/_overlapped.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}</ProjectGuid>
+     <RootNamespace>_overlapped</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_overlapped.vcxproj.filters
++++ Python/PCbuild/_overlapped.vcxproj.filters
+@@ -10,4 +10,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_socket.vcxproj
++++ Python/PCbuild/_socket.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{86937F53-C189-40EF-8CE8-8759D8E7D480}</ProjectGuid>
+     <RootNamespace>_socket</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_socket.vcxproj.filters
++++ Python/PCbuild/_socket.vcxproj.filters
+@@ -18,4 +18,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_sqlite3.vcxproj
++++ Python/PCbuild/_sqlite3.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{13CECB97-4119-4316-9D42-8534019A5A44}</ProjectGuid>
+     <RootNamespace>_sqlite3</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_sqlite3.vcxproj.filters
++++ Python/PCbuild/_sqlite3.vcxproj.filters
+@@ -66,4 +66,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_ssl.vcxproj
++++ Python/PCbuild/_ssl.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{C6E20F84-3247-4AD6-B051-B073268F73BA}</ProjectGuid>
+     <RootNamespace>_ssl</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -94,4 +95,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_ssl.vcxproj.filters
++++ Python/PCbuild/_ssl.vcxproj.filters
+@@ -10,4 +10,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_testbuffer.vcxproj
++++ Python/PCbuild/_testbuffer.vcxproj
+@@ -39,6 +39,7 @@
+     <RootNamespace>_testbuffer</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_testbuffer.vcxproj.filters
++++ Python/PCbuild/_testbuffer.vcxproj.filters
+@@ -10,4 +10,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_testcapi.vcxproj
++++ Python/PCbuild/_testcapi.vcxproj
+@@ -39,6 +39,7 @@
+     <RootNamespace>_testcapi</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_testcapi.vcxproj.filters
++++ Python/PCbuild/_testcapi.vcxproj.filters
+@@ -10,4 +10,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_testconsole.vcxproj
++++ Python/PCbuild/_testconsole.vcxproj
+@@ -39,6 +39,7 @@
+     <Keyword>Win32Proj</Keyword>
+     <RootNamespace>_testconsole</RootNamespace>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_testconsole.vcxproj.filters
++++ Python/PCbuild/_testconsole.vcxproj.filters
+@@ -15,8 +15,13 @@
+     </Filter>
+   </ItemGroup>
+   <ItemGroup>
+-    <ClCompile Include="..\Modules\_testmultiphase.c">
++    <ClCompile Include="..\PC\_testconsole.c">
+       <Filter>Source Files</Filter>
+     </ClCompile>
++  </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc">
++      <Filter>Resource Files</Filter>
++    </ResourceCompile>
+   </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_testembed.vcxproj
++++ Python/PCbuild/_testembed.vcxproj
+@@ -39,6 +39,7 @@
+     <Keyword>Win32Proj</Keyword>
+     <RootNamespace>_testembed</RootNamespace>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_testembed.vcxproj.filters
++++ Python/PCbuild/_testembed.vcxproj.filters
+@@ -19,4 +19,9 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc">
++      <Filter>Resource Files</Filter>
++    </ResourceCompile>
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_testimportmultiple.vcxproj
++++ Python/PCbuild/_testimportmultiple.vcxproj
+@@ -39,6 +39,7 @@
+     <RootNamespace>_testimportmultiple</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -80,4 +81,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_testimportmultiple.vcxproj.filters
++++ Python/PCbuild/_testimportmultiple.vcxproj.filters
+@@ -10,4 +10,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
+-</Project>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/_testmultiphase.vcxproj
++++ Python/PCbuild/_testmultiphase.vcxproj
+@@ -39,6 +39,7 @@
+     <Keyword>Win32Proj</Keyword>
+     <RootNamespace>_testmultiphase</RootNamespace>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/_testmultiphase.vcxproj.filters
++++ Python/PCbuild/_testmultiphase.vcxproj.filters
+@@ -19,4 +19,9 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc">
++      <Filter>Resource Files</Filter>
++    </ResourceCompile>
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/env.bat
++++ Python/PCbuild/env.bat
+@@ -9,7 +9,8 @@
+ echo Build environments: x86, amd64, x86_amd64
+ echo.
+-set VSTOOLS=%VS140COMNTOOLS%
++set VSTOOLS=%VS150COMNTOOLS%
++if "%VSTOOLS%"=="" set VSTOOLS=%VS140COMNTOOLS%
+ if "%VSTOOLS%"=="" set VSTOOLS=%VS120COMNTOOLS%
+ if "%VSTOOLS%"=="" set VSTOOLS=%VS110COMNTOOLS%
+ if "%VSTOOLS%"=="" set VSTOOLS=%VS100COMNTOOLS%
+--- Python_ref/PCbuild/libeay.vcxproj
++++ Python/PCbuild/libeay.vcxproj
+@@ -37,18 +37,15 @@
+   <PropertyGroup Label="Globals">
+     <ProjectGuid>{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}</ProjectGuid>
+     <RootNamespace>libeay</RootNamespace>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+-
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+-
+   <PropertyGroup Label="Configuration">
+     <ConfigurationType>StaticLibrary</ConfigurationType>
+   </PropertyGroup>
+-   
+   <Import Project="openssl.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+-
+   <Target Name="CreateBuildinfH" Inputs="$(MSBuildProjectFullPath)" Outputs="$(IntDir)\buildinf.h" AfterTargets="PrepareForBuild">
+     <PropertyGroup>
+       <_DATEValue>#define DATE "$([System.DateTime]::Now.ToString(`ddd MMM dd HH':'mm':'ss yyyy`))"</_DATEValue>
+@@ -56,25 +53,17 @@
+       <_PLATFORMValue Condition="$(Platform)=='Win32'">#define PLATFORM "VC-WIN32"</_PLATFORMValue>
+       <_PLATFORMValue Condition="$(Platform)=='x64'">#define PLATFORM "VC-WIN64A"</_PLATFORMValue>
+     </PropertyGroup>
+-    <WriteLinesToFile File="$(IntDir)\buildinf.h"
+-                      Lines="$(_DATEValue);$(_CFLAGSValue);$(_PLATFORMValue)"
+-                      Overwrite="true" />
+-    <Message Text="Updating buildinf.h:
+-    $(_DATEValue)
+-    $(_CFLAGSValue)
+-    $(_PLATFORMValue)" Importance="normal" />
++    <WriteLinesToFile File="$(IntDir)\buildinf.h" Lines="$(_DATEValue);$(_CFLAGSValue);$(_PLATFORMValue)" Overwrite="true" />
++    <Message Text="Updating buildinf.h:&#xD;&#xA;    $(_DATEValue)&#xD;&#xA;    $(_CFLAGSValue)&#xD;&#xA;    $(_PLATFORMValue)" Importance="normal" />
+   </Target>
+-
+   <Target Name="SuppressOriginalBuildinfH" Condition="Exists('$(opensslDir)crypto\buildinf.h')" BeforeTargets="PrepareForBuild">
+     <Move SourceFiles="$(opensslDir)crypto\buildinf.h" DestinationFiles="$(opensslDir)crypto\buildinf.h.orig" />
+   </Target>
+-
+   <ItemGroup>
+     <ClCompile Include="$(opensslDir)crypto\cversion.c">
+       <AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+     </ClCompile>
+   </ItemGroup>
+-  
+   <ItemGroup>
+     <!--
+     <ClCompile Include="$(opensslDir)apps\errstr.c" />
+@@ -847,7 +836,6 @@
+     <ClCompile Include="$(opensslDir)crypto\des\des_enc.c" />
+     <ClCompile Include="$(opensslDir)crypto\des\fcrypt_b.c" />
+   </ItemGroup>
+-    
+   <ItemGroup Condition="$(Platform) == 'Win32'">
+     <NasmCompile Include="$(opensslDir)tmp32\aes-586.asm" />
+     <NasmCompile Include="$(opensslDir)tmp32\aesni-x86.asm" />
+@@ -897,7 +885,6 @@
+     <NasmCompile Include="$(opensslDir)tmp64\x86_64-mont.asm" />
+     <NasmCompile Include="$(opensslDir)tmp64\x86_64-mont5.asm" />
+   </ItemGroup>
+-
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <Target Name="Clean" />
+   <Target Name="CleanAll">
+--- Python_ref/PCbuild/liblzma.vcxproj
++++ Python/PCbuild/liblzma.vcxproj
+@@ -38,11 +38,10 @@
+     <ProjectGuid>{12728250-16EC-4DC6-94D7-E21DD88947F8}</ProjectGuid>
+     <RootNamespace>liblzma</RootNamespace>
+     <SupportPGO>true</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+-
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+-
+   <PropertyGroup Label="Configuration">
+     <ConfigurationType>StaticLibrary</ConfigurationType>
+   </PropertyGroup>
+@@ -213,4 +212,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/pcbuild.sln
++++ Python/PCbuild/pcbuild.sln
+@@ -36,8 +36,6 @@
+ EndProject
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testimportmultiple", "_testimportmultiple.vcxproj", "{36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}"
+ EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcxproj", "{4946ECAC-2E69-4BF8-A90A-F5136F5094DF}"
+-EndProject
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bz2", "_bz2.vcxproj", "{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}"
+ EndProject
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcxproj", "{18CAE28C-B454-46C1-87A0-493D91D97F03}"
+@@ -79,12 +77,6 @@
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testembed", "_testembed.vcxproj", "{6DAC66D9-E703-4624-BE03-49112AB5AA62}"
+ EndProject
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testmultiphase", "_testmultiphase.vcxproj", "{16BFE6F0-22EF-40B5-B831-7E937119EF10}"
+-EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcl", "tcl.vcxproj", "{B5FD6F1D-129E-4BFF-9340-03606FAC7283}"
+-EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tix", "tix.vcxproj", "{C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}"
+-EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tk", "tk.vcxproj", "{7E85ECCF-A72C-4DA4-9E52-884508E80BA1}"
+ EndProject
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libeay", "libeay.vcxproj", "{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}"
+ EndProject
+--- Python_ref/PCbuild/pyexpat.vcxproj
++++ Python/PCbuild/pyexpat.vcxproj
+@@ -38,6 +38,7 @@
+     <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+     <ProjectGuid>{D06B6426-4762-44CC-8BAD-D79052507F2F}</ProjectGuid>
+     <RootNamespace>pyexpat</RootNamespace>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -85,4 +86,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/pyexpat.vcxproj.filters
++++ Python/PCbuild/pyexpat.vcxproj.filters
+@@ -33,4 +33,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
+-</Project>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/pylauncher.vcxproj
++++ Python/PCbuild/pylauncher.vcxproj
+@@ -39,6 +39,7 @@
+     <RootNamespace>pylauncher</RootNamespace>
+     <TargetName>py</TargetName>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -79,4 +80,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/pyshellext.vcxproj
++++ Python/PCbuild/pyshellext.vcxproj
+@@ -39,6 +39,7 @@
+     <RootNamespace>pyshellext</RootNamespace>
+     <TargetName>pyshellext</TargetName>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/python.vcxproj
++++ Python/PCbuild/python.vcxproj
+@@ -36,6 +36,7 @@
+   </ItemGroup>
+   <PropertyGroup Label="Globals">
+     <ProjectGuid>{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}</ProjectGuid>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -88,9 +89,7 @@
+       <UcrtName>ucrtbase</UcrtName>
+       <UcrtName Condition="'$(Configuration)' == 'Debug'">ucrtbased</UcrtName>
+     </PropertyGroup>
+-    <Exec Command='setlocal
+-set PYTHONPATH=$(PySourcePath)Lib
+-"$(OutDir)python$(PyDebugExt).exe" "$(PySourcePath)PC\validate_ucrtbase.py" $(UcrtName)' ContinueOnError="true" />
++    <Exec Command="setlocal&#xD;&#xA;set PYTHONPATH=$(PySourcePath)Lib&#xD;&#xA;&quot;$(OutDir)python$(PyDebugExt).exe&quot; &quot;$(PySourcePath)PC\validate_ucrtbase.py&quot; $(UcrtName)" ContinueOnError="true" />
+   </Target>
+   <Target Name="GeneratePythonBat" AfterTargets="AfterBuild">
+     <PropertyGroup>
+--- Python_ref/PCbuild/python3dll.vcxproj
++++ Python/PCbuild/python3dll.vcxproj
+@@ -40,6 +40,7 @@
+     <Keyword>Win32Proj</Keyword>
+     <TargetName>python3</TargetName>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -88,7 +89,6 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-  
+   <Target Name="BuildPython3_dDef" BeforeTargets="BuildStubDef" Inputs="..\PC\python3.def" Outputs="$(IntDir)python3_d.def" Condition="$(Configuration) == 'Debug'">
+     <ItemGroup>
+       <_DefLines Remove="@(_DefLines)" />
+@@ -111,7 +111,6 @@
+     <MakeDir Directories="$(IntDir)" />
+     <WriteLinesToFile File="$(IntDir)python3_d.def" Lines="@(_Lines->'%(New)')" Overwrite="true" />
+   </Target>
+-  
+   <Target Name="BuildStubDef" BeforeTargets="PreLinkEvent" Inputs="..\PC\python3.def" Outputs="$(IntDir)python3stub.def">
+     <ItemGroup>
+       <_DefLines Remove="@(_DefLines)" />
+--- Python_ref/PCbuild/pythoncore.vcxproj
++++ Python/PCbuild/pythoncore.vcxproj
+@@ -37,6 +37,7 @@
+   <PropertyGroup Label="Globals">
+     <ProjectGuid>{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}</ProjectGuid>
+     <RootNamespace>pythoncore</RootNamespace>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -433,4 +434,4 @@
+   <Target Name="_WarnAboutToolset" BeforeTargets="PrepareForBuild" Condition="$(PlatformToolset) != 'v140' and $(PlatformToolset) != 'v141'">
+     <Warning Text="Toolset $(PlatformToolset) is not used for official builds. Your build may have errors or incompatibilities." />
+   </Target>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/pythonw.vcxproj
++++ Python/PCbuild/pythonw.vcxproj
+@@ -37,6 +37,7 @@
+   <PropertyGroup Label="Globals">
+     <ProjectGuid>{F4229CC3-873C-49AE-9729-DD308ED4CD4A}</ProjectGuid>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/pythonw.vcxproj.filters
++++ Python/PCbuild/pythonw.vcxproj.filters
+@@ -9,9 +9,7 @@
+     </Filter>
+   </ItemGroup>
+   <ItemGroup>
+-    <ResourceCompile Include="..\PC\python_exe.rc">
+-      <Filter>Resource Files</Filter>
+-    </ResourceCompile>
++    <ResourceCompile Include="..\PC\pythonw_exe.rc" />
+   </ItemGroup>
+   <ItemGroup>
+     <ClCompile Include="..\PC\WinMain.c">
+--- Python_ref/PCbuild/pywlauncher.vcxproj
++++ Python/PCbuild/pywlauncher.vcxproj
+@@ -39,6 +39,7 @@
+     <RootNamespace>pywlauncher</RootNamespace>
+     <TargetName>pyw</TargetName>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/select.vcxproj
++++ Python/PCbuild/select.vcxproj
+@@ -37,6 +37,7 @@
+   <PropertyGroup Label="Globals">
+     <ProjectGuid>{18CAE28C-B454-46C1-87A0-493D91D97F03}</ProjectGuid>
+     <RootNamespace>select</RootNamespace>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/select.vcxproj.filters
++++ Python/PCbuild/select.vcxproj.filters
+@@ -10,4 +10,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/sqlite3.vcxproj
++++ Python/PCbuild/sqlite3.vcxproj
+@@ -39,6 +39,7 @@
+     <RootNamespace>sqlite3</RootNamespace>
+     <TargetExt>.pyd</TargetExt>
+     <SupportPGO>false</SupportPGO>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+@@ -86,4 +87,4 @@
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <ImportGroup Label="ExtensionTargets">
+   </ImportGroup>
+-</Project>
++</Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/sqlite3.vcxproj.filters
++++ Python/PCbuild/sqlite3.vcxproj.filters
+@@ -21,4 +21,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\sqlite3.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/ssleay.vcxproj
++++ Python/PCbuild/ssleay.vcxproj
+@@ -37,18 +37,15 @@
+   <PropertyGroup Label="Globals">
+     <ProjectGuid>{10615B24-73BF-4EFA-93AA-236916321317}</ProjectGuid>
+     <RootNamespace>ssleay</RootNamespace>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+-
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+-
+   <PropertyGroup Label="Configuration">
+     <ConfigurationType>StaticLibrary</ConfigurationType>
+   </PropertyGroup>
+-
+   <Import Project="openssl.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+-
+   <ItemGroup>
+     <!--
+     <ClCompile Include="$(opensslDir)ssl\bio_ssl.c" />
+@@ -109,7 +106,6 @@
+     <ClCompile Include="$(opensslDir)ssl\t1_srvr.c" />
+     <ClCompile Include="$(opensslDir)ssl\tls_srp.c" />
+   </ItemGroup>
+-  
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+   <Target Name="Clean" />
+   <Target Name="CleanAll">
+--- Python_ref/PCbuild/unicodedata.vcxproj
++++ Python/PCbuild/unicodedata.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{ECC7CEAC-A5E5-458E-BB9E-2413CC847881}</ProjectGuid>
+     <RootNamespace>unicodedata</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/unicodedata.vcxproj.filters
++++ Python/PCbuild/unicodedata.vcxproj.filters
+@@ -21,4 +21,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/winsound.vcxproj
++++ Python/PCbuild/winsound.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{28B5D777-DDF2-4B6B-B34F-31D938813856}</ProjectGuid>
+     <RootNamespace>winsound</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+--- Python_ref/PCbuild/winsound.vcxproj.filters
++++ Python/PCbuild/winsound.vcxproj.filters
+@@ -11,4 +11,7 @@
+       <Filter>Source Files</Filter>
+     </ClCompile>
+   </ItemGroup>
++  <ItemGroup>
++    <ResourceCompile Include="..\PC\python_nt.rc" />
++  </ItemGroup>
+ </Project>
+\ No newline at end of file
+--- Python_ref/PCbuild/xxlimited.vcxproj
++++ Python/PCbuild/xxlimited.vcxproj
+@@ -38,6 +38,7 @@
+     <ProjectGuid>{F749B822-B489-4CA5-A3AD-CE078F5F338A}</ProjectGuid>
+     <RootNamespace>xxlimited</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="python.props" />
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
diff --git a/products/patches/Python_SSL.patch b/products/patches/Python_SSL.patch
new file mode 100755 (executable)
index 0000000..9874c5e
--- /dev/null
@@ -0,0 +1,125 @@
+diff -rupN Python-2.6.6_old/Doc/library/ssl.rst Python-2.6.6_new/Doc/library/ssl.rst
+--- Python-2.6.6_old/Doc/library/ssl.rst       2010-05-16 16:17:51.000000000 +0200
++++ Python-2.6.6_new/Doc/library/ssl.rst       2014-09-09 15:06:41.137134815 +0200
+@@ -218,14 +218,6 @@ Functions, Constants, and Exceptions
+    Note that use of this setting requires a valid certificate validation file
+    also be passed as a value of the ``ca_certs`` parameter.
+-.. data:: PROTOCOL_SSLv2
+-
+-   Selects SSL version 2 as the channel encryption protocol.
+-
+-   .. warning::
+-
+-      SSL version 2 is insecure.  Its use is highly discouraged.
+-
+ .. data:: PROTOCOL_SSLv23
+    Selects SSL version 2 or 3 as the channel encryption protocol.  This is a
+diff -rupN Python-2.6.6_old/Lib/ssl.py Python-2.6.6_new/Lib/ssl.py
+--- Python-2.6.6_old/Lib/ssl.py        2010-04-28 00:05:18.000000000 +0200
++++ Python-2.6.6_new/Lib/ssl.py        2014-09-09 15:06:41.137134815 +0200
+@@ -49,7 +49,6 @@ CERT_REQUIRED - certificates are require
+ The following constants identify various SSL protocol variants:
+-PROTOCOL_SSLv2
+ PROTOCOL_SSLv3
+ PROTOCOL_SSLv23
+ PROTOCOL_TLSv1
+@@ -61,7 +60,7 @@ import _ssl             # if we can't im
+ from _ssl import SSLError
+ from _ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED
+-from _ssl import PROTOCOL_SSLv2, PROTOCOL_SSLv3, PROTOCOL_SSLv23, PROTOCOL_TLSv1
++from _ssl import PROTOCOL_SSLv3, PROTOCOL_SSLv23, PROTOCOL_TLSv1
+ from _ssl import RAND_status, RAND_egd, RAND_add
+ from _ssl import \
+      SSL_ERROR_ZERO_RETURN, \
+@@ -406,8 +405,6 @@ def get_protocol_name(protocol_code):
+         return "TLSv1"
+     elif protocol_code == PROTOCOL_SSLv23:
+         return "SSLv23"
+-    elif protocol_code == PROTOCOL_SSLv2:
+-        return "SSLv2"
+     elif protocol_code == PROTOCOL_SSLv3:
+         return "SSLv3"
+     else:
+diff -rupN Python-2.6.6_old/Lib/test/test_ssl.py Python-2.6.6_new/Lib/test/test_ssl.py
+--- Python-2.6.6_old/Lib/test/test_ssl.py      2010-08-02 21:56:05.000000000 +0200
++++ Python-2.6.6_new/Lib/test/test_ssl.py      2014-09-09 15:06:41.137134815 +0200
+@@ -58,7 +58,6 @@ class BasicTests(unittest.TestCase):
+                 raise
+     def test_constants(self):
+-        ssl.PROTOCOL_SSLv2
+         ssl.PROTOCOL_SSLv23
+         ssl.PROTOCOL_SSLv3
+         ssl.PROTOCOL_TLSv1
+@@ -829,19 +828,6 @@ else:
+             bad_cert_test(os.path.join(os.path.dirname(__file__) or os.curdir,
+                                        "badkey.pem"))
+-        def test_protocol_sslv2(self):
+-            """Connecting to an SSLv2 server with various client options"""
+-            if test_support.verbose:
+-                sys.stdout.write("\ntest_protocol_sslv2 disabled, "
+-                                 "as it fails on OpenSSL 1.0.0+")
+-            return
+-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True)
+-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True, ssl.CERT_OPTIONAL)
+-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv2, True, ssl.CERT_REQUIRED)
+-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv23, True)
+-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_SSLv3, False)
+-            try_protocol_combo(ssl.PROTOCOL_SSLv2, ssl.PROTOCOL_TLSv1, False)
+-
+         def test_protocol_sslv23(self):
+             """Connecting to an SSLv23 server with various client options"""
+             if test_support.verbose:
+@@ -877,7 +863,6 @@ else:
+             try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True)
+             try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True, ssl.CERT_OPTIONAL)
+             try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv3, True, ssl.CERT_REQUIRED)
+-            try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv2, False)
+             try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_SSLv23, False)
+             try_protocol_combo(ssl.PROTOCOL_SSLv3, ssl.PROTOCOL_TLSv1, False)
+@@ -890,7 +875,6 @@ else:
+             try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True)
+             try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True, ssl.CERT_OPTIONAL)
+             try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_TLSv1, True, ssl.CERT_REQUIRED)
+-            try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv2, False)
+             try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv3, False)
+             try_protocol_combo(ssl.PROTOCOL_TLSv1, ssl.PROTOCOL_SSLv23, False)
+diff -rupN Python-2.6.6_old/Modules/_ssl.c Python-2.6.6_new/Modules/_ssl.c
+--- Python-2.6.6_old/Modules/_ssl.c    2010-08-03 20:50:32.000000000 +0200
++++ Python-2.6.6_new/Modules/_ssl.c    2014-09-09 15:06:41.137134815 +0200
+@@ -62,8 +62,7 @@ enum py_ssl_cert_requirements {
+ };
+ enum py_ssl_version {
+-    PY_SSL_VERSION_SSL2,
+-    PY_SSL_VERSION_SSL3,
++    PY_SSL_VERSION_SSL3=1,
+     PY_SSL_VERSION_SSL23,
+     PY_SSL_VERSION_TLS1
+ };
+@@ -302,8 +301,6 @@ newPySSLObject(PySocketSockObject *Sock,
+         self->ctx = SSL_CTX_new(TLSv1_method()); /* Set up context */
+     else if (proto_version == PY_SSL_VERSION_SSL3)
+         self->ctx = SSL_CTX_new(SSLv3_method()); /* Set up context */
+-    else if (proto_version == PY_SSL_VERSION_SSL2)
+-        self->ctx = SSL_CTX_new(SSLv2_method()); /* Set up context */
+     else if (proto_version == PY_SSL_VERSION_SSL23)
+         self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */
+     PySSL_END_ALLOW_THREADS
+@@ -1687,8 +1684,6 @@ init_ssl(void)
+                             PY_SSL_CERT_REQUIRED);
+     /* protocol versions */
+-    PyModule_AddIntConstant(m, "PROTOCOL_SSLv2",
+-                            PY_SSL_VERSION_SSL2);
+     PyModule_AddIntConstant(m, "PROTOCOL_SSLv3",
+                             PY_SSL_VERSION_SSL3);
+     PyModule_AddIntConstant(m, "PROTOCOL_SSLv23",
diff --git a/products/patches/Python_zlib_detection.patch b/products/patches/Python_zlib_detection.patch
new file mode 100644 (file)
index 0000000..015d608
--- /dev/null
@@ -0,0 +1,12 @@
+diff -pruN Python-2.6.6_old/setup.py Python-2.6.6_new/setup.py
+--- Python-2.6.6_old/setup.py  2010-07-17 14:31:09.000000000 +0200
++++ Python-2.6.6_new/setup.py  2014-03-28 14:03:49.938705971 +0100
+@@ -409,7 +409,7 @@ class PyBuildExt(build_ext):
+         # be assumed that no additional -I,-L directives are needed.
+         lib_dirs = self.compiler.library_dirs + [
+             '/lib64', '/usr/lib64',
+-            '/lib', '/usr/lib',
++            '/lib', '/usr/lib', '/usr/lib/x86_64-linux-gnu'
+             ]
+         inc_dirs = self.compiler.include_dirs + ['/usr/include']
+         exts = []
diff --git a/products/patches/SALOME_PROFILE_NO_ENV.patch b/products/patches/SALOME_PROFILE_NO_ENV.patch
new file mode 100644 (file)
index 0000000..8069f56
--- /dev/null
@@ -0,0 +1,11 @@
+diff -rupN SALOME_PROFILE/CMakeLists.txt SALOME_PROFILE_new/CMakeLists.txt
+--- SALOME_PROFILE/CMakeLists.txt      2016-06-15 15:25:21.000000000 +0200
++++ SALOME_PROFILE_new/CMakeLists.txt  2016-06-15 15:26:46.000000000 +0200
+@@ -117,5 +117,5 @@ SALOME_INSTALL_SCRIPTS("${_salome_contex
+ SET(_salome_context_BASHRC
+    ${KERNEL_ROOT_DIR}/bin/salome/appliskel/.bashrc
+ )
+-FILE(TO_CMAKE_PATH $ENV{SALOME_PROFILE_ROOT_DIR} _SALOME_PROFILE_ROOT_DIR)
++FILE(TO_CMAKE_PATH ${CMAKE_INSTALL_PREFIX} _SALOME_PROFILE_ROOT_DIR)
+ SALOME_INSTALL_SCRIPTS("${_salome_context_BASHRC}" ${_SALOME_PROFILE_ROOT_DIR})
+Les fichiers binaires SALOME_PROFILE/.git/index et SALOME_PROFILE_new/.git/index sont différents
diff --git a/products/patches/SALOME_PROFILE_NO_ENV_master.patch b/products/patches/SALOME_PROFILE_NO_ENV_master.patch
new file mode 100644 (file)
index 0000000..35e303a
--- /dev/null
@@ -0,0 +1,10 @@
+diff -pruN SALOME_PROFILE_old/CMakeLists.txt SALOME_PROFILE_new/CMakeLists.txt
+--- SALOME_PROFILE_old/CMakeLists.txt  2016-07-22 16:03:52.503785372 +0200
++++ SALOME_PROFILE_new/CMakeLists.txt  2016-07-22 16:02:59.387785429 +0200
+@@ -120,5 +120,5 @@ SALOME_INSTALL_SCRIPTS("${_salome_contex
+ SET(_salome_context_BASHRC
+    ${KERNEL_ROOT_DIR}/bin/salome/appliskel/.bashrc
+ )
+-FILE(TO_CMAKE_PATH $ENV{SALOME_PROFILE_ROOT_DIR} _SALOME_PROFILE_ROOT_DIR)
++FILE(TO_CMAKE_PATH ${CMAKE_INSTALL_PREFIX} _SALOME_PROFILE_ROOT_DIR)
+ SALOME_INSTALL_SCRIPTS("${_salome_context_BASHRC}" ${_SALOME_PROFILE_ROOT_DIR})
diff --git a/products/patches/SALOME_PROFILE_NO_ENV_master_V2.patch b/products/patches/SALOME_PROFILE_NO_ENV_master_V2.patch
new file mode 100644 (file)
index 0000000..bf7de11
--- /dev/null
@@ -0,0 +1,10 @@
+diff -rupN SALOME_PROFILE/CMakeLists.txt SALOME_PROFILE_nex/CMakeLists.txt
+--- SALOME_PROFILE/CMakeLists.txt      2016-10-11 14:02:19.428000000 +0200
++++ SALOME_PROFILE_nex/CMakeLists.txt  2016-10-11 14:04:28.644000000 +0200
+@@ -130,5 +130,5 @@ SALOME_INSTALL_SCRIPTS("${_salome_contex
+ SET(_salome_context_BASHRC
+    ${KERNEL_ROOT_DIR}/bin/salome/appliskel/.bashrc
+ )
+-FILE(TO_CMAKE_PATH $ENV{SALOME_PROFILE_ROOT_DIR} _SALOME_PROFILE_ROOT_DIR)
++FILE(TO_CMAKE_PATH ${CMAKE_INSTALL_PREFIX} _SALOME_PROFILE_ROOT_DIR)
+ SALOME_INSTALL_SCRIPTS("${_salome_context_BASHRC}" ${_SALOME_PROFILE_ROOT_DIR})
diff --git a/products/patches/boost-1.49.0.patch b/products/patches/boost-1.49.0.patch
new file mode 100755 (executable)
index 0000000..9d7b762
--- /dev/null
@@ -0,0 +1,260 @@
+diff -pruN boost-1.49.0_orig/boost/thread/xtime.hpp boost-1.49.0_new/boost/thread/xtime.hpp
+--- boost-1.49.0_orig/boost/thread/xtime.hpp   2008-06-18 15:01:08.000000000 +0200
++++ boost-1.49.0_new/boost/thread/xtime.hpp    2013-03-07 14:02:31.518463216 +0100
+@@ -20,7 +20,7 @@ namespace boost {
+ enum xtime_clock_types
+ {
+-    TIME_UTC=1
++    TIME_UTC_=1
+ //    TIME_TAI,
+ //    TIME_MONOTONIC,
+ //    TIME_PROCESS,
+@@ -68,7 +68,7 @@ inline xtime get_xtime(boost::system_tim
+ inline int xtime_get(struct xtime* xtp, int clock_type)
+ {
+-    if (clock_type == TIME_UTC)
++    if (clock_type == TIME_UTC_)
+     {
+         *xtp=get_xtime(get_system_time());
+         return clock_type;
+diff -pruN boost-1.49.0_orig/libs/container/test/util.hpp boost-1.49.0_new/libs/container/test/util.hpp
+--- boost-1.49.0_orig/libs/container/test/util.hpp     2011-08-26 20:26:44.000000000 +0200
++++ boost-1.49.0_new/libs/container/test/util.hpp      2013-03-07 14:13:49.056883734 +0100
+@@ -71,7 +71,7 @@ inline bool in_range(const boost::posix_
+ boost::xtime xsecs(int secs)
+ {
+    boost::xtime ret;
+-   boost::xtime_get(&ret, boost::TIME_UTC);
++   boost::xtime_get(&ret, boost::TIME_UTC_);
+    ret.sec += secs;
+    return ret;
+ }
+diff -pruN boost-1.49.0_orig/libs/interprocess/test/condition_test_template.hpp boost-1.49.0_new/libs/interprocess/test/condition_test_template.hpp
+--- boost-1.49.0_orig/libs/interprocess/test/condition_test_template.hpp       2011-12-26 18:39:43.000000000 +0100
++++ boost-1.49.0_new/libs/interprocess/test/condition_test_template.hpp        2013-03-07 14:16:06.196328748 +0100
+@@ -47,8 +47,8 @@ inline boost::xtime delay(int secs, int
+     const int NANOSECONDS_PER_MILLISECOND = 1000000;
+     boost::xtime xt;
+-    int ret = boost::xtime_get(&xt, boost::TIME_UTC);
+-    BOOST_INTERPROCES_CHECK(ret == static_cast<int>(boost::TIME_UTC));(void)ret;
++    int ret = boost::xtime_get(&xt, boost::TIME_UTC_);
++    BOOST_INTERPROCES_CHECK(ret == static_cast<int>(boost::TIME_UTC_));(void)ret;
+     nsecs += xt.nsec;
+     msecs += nsecs / NANOSECONDS_PER_MILLISECOND;
+     secs += msecs / MILLISECONDS_PER_SECOND;
+diff -pruN boost-1.49.0_orig/libs/interprocess/test/util.hpp boost-1.49.0_new/libs/interprocess/test/util.hpp
+--- boost-1.49.0_orig/libs/interprocess/test/util.hpp  2011-12-26 18:39:43.000000000 +0100
++++ boost-1.49.0_new/libs/interprocess/test/util.hpp   2013-03-07 14:15:10.436555867 +0100
+@@ -63,7 +63,7 @@ inline bool in_range(const boost::posix_
+ boost::xtime xsecs(int secs)
+ {
+    boost::xtime ret;
+-   boost::xtime_get(&ret, boost::TIME_UTC);
++   boost::xtime_get(&ret, boost::TIME_UTC_);
+    ret.sec += secs;
+    return ret;
+ }
+diff -pruN boost-1.49.0_orig/libs/spirit/classic/test/grammar_mt_tests.cpp boost-1.49.0_new/libs/spirit/classic/test/grammar_mt_tests.cpp
+--- boost-1.49.0_orig/libs/spirit/classic/test/grammar_mt_tests.cpp    2008-06-22 17:05:38.000000000 +0200
++++ boost-1.49.0_new/libs/spirit/classic/test/grammar_mt_tests.cpp     2013-03-07 14:19:10.475634881 +0100
+@@ -70,7 +70,7 @@ milli_sleep(unsigned long milliseconds)
+ {
+     static long const nanoseconds_per_second = 1000L*1000L*1000L;
+     boost::xtime xt;
+-    boost::xtime_get(&xt, boost::TIME_UTC);
++    boost::xtime_get(&xt, boost::TIME_UTC_);
+     xt.nsec+=1000*1000*milliseconds;
+     while (xt.nsec > nanoseconds_per_second)
+     {
+diff -pruN boost-1.49.0_orig/libs/spirit/classic/test/owi_mt_tests.cpp boost-1.49.0_new/libs/spirit/classic/test/owi_mt_tests.cpp
+--- boost-1.49.0_orig/libs/spirit/classic/test/owi_mt_tests.cpp        2008-06-22 17:05:38.000000000 +0200
++++ boost-1.49.0_new/libs/spirit/classic/test/owi_mt_tests.cpp 2013-03-07 14:19:37.571527875 +0100
+@@ -86,7 +86,7 @@ struct test_task
+             return test_size;
+         boost::xtime now;
+-        boost::xtime_get(&now, boost::TIME_UTC);
++        boost::xtime_get(&now, boost::TIME_UTC_);
+         unsigned long seconds = now.sec - start_time.sec;
+         if (seconds < 4)
+         {
+@@ -187,7 +187,7 @@ check_not_contained_in(
+ void concurrent_creation_of_objects()
+ {
+     {
+-        boost::xtime_get(&start_time, boost::TIME_UTC);
++        boost::xtime_get(&start_time, boost::TIME_UTC_);
+         boost::thread thread1(callable_ref(test1));
+         boost::thread thread2(callable_ref(test2));
+         boost::thread thread3(callable_ref(test3));
+diff -pruN boost-1.49.0_orig/libs/thread/example/starvephil.cpp boost-1.49.0_new/libs/thread/example/starvephil.cpp
+--- boost-1.49.0_orig/libs/thread/example/starvephil.cpp       2006-09-14 23:51:01.000000000 +0200
++++ boost-1.49.0_new/libs/thread/example/starvephil.cpp        2013-03-07 14:17:48.671959849 +0100
+@@ -50,7 +50,7 @@ public:
+                       << "very hot ..." << std::endl;
+         }
+         boost::xtime xt;
+-        boost::xtime_get(&xt, boost::TIME_UTC);
++        boost::xtime_get(&xt, boost::TIME_UTC_);
+         xt.sec += 3;
+         boost::thread::sleep(xt);
+         m_chickens += value;
+@@ -85,7 +85,7 @@ void chef()
+             std::cout << "(" << clock() << ") Chef: cooking ..." << std::endl;
+         }
+         boost::xtime xt;
+-        boost::xtime_get(&xt, boost::TIME_UTC);
++        boost::xtime_get(&xt, boost::TIME_UTC_);
+         xt.sec += 2;
+         boost::thread::sleep(xt);
+         {
+@@ -111,7 +111,7 @@ struct phil
+             if (m_id > 0)
+             {
+                 boost::xtime xt;
+-                boost::xtime_get(&xt, boost::TIME_UTC);
++                boost::xtime_get(&xt, boost::TIME_UTC_);
+                 xt.sec += 3;
+                 boost::thread::sleep(xt);
+             }
+diff -pruN boost-1.49.0_orig/libs/thread/example/tennis.cpp boost-1.49.0_new/libs/thread/example/tennis.cpp
+--- boost-1.49.0_orig/libs/thread/example/tennis.cpp   2009-10-19 11:18:13.000000000 +0200
++++ boost-1.49.0_new/libs/thread/example/tennis.cpp    2013-03-07 14:18:16.191855733 +0100
+@@ -104,7 +104,7 @@ int main(int argc, char* argv[])
+     boost::thread thrdb(thread_adapter(&player, (void*)PLAYER_B));
+     boost::xtime xt;
+-    boost::xtime_get(&xt, boost::TIME_UTC);
++    boost::xtime_get(&xt, boost::TIME_UTC_);
+     xt.sec += 1;
+     boost::thread::sleep(xt);
+     {
+diff -pruN boost-1.49.0_orig/libs/thread/example/xtime.cpp boost-1.49.0_new/libs/thread/example/xtime.cpp
+--- boost-1.49.0_orig/libs/thread/example/xtime.cpp    2006-09-14 23:51:01.000000000 +0200
++++ boost-1.49.0_new/libs/thread/example/xtime.cpp     2013-03-07 14:18:44.335741343 +0100
+@@ -10,7 +10,7 @@
+ int main(int argc, char* argv[])
+ {
+     boost::xtime xt;
+-    boost::xtime_get(&xt, boost::TIME_UTC);
++    boost::xtime_get(&xt, boost::TIME_UTC_);
+     xt.sec += 1;
+     boost::thread::sleep(xt); // Sleep for 1 second
+ }
+diff -pruN boost-1.49.0_orig/libs/thread/src/pthread/thread.cpp boost-1.49.0_new/libs/thread/src/pthread/thread.cpp
+--- boost-1.49.0_orig/libs/thread/src/pthread/thread.cpp       2012-01-03 18:31:50.000000000 +0100
++++ boost-1.49.0_new/libs/thread/src/pthread/thread.cpp        2013-03-07 14:17:25.457043685 +0100
+@@ -354,7 +354,7 @@ namespace boost
+                     cond.timed_wait(lock, xt);
+ #   endif
+                     xtime cur;
+-                    xtime_get(&cur, TIME_UTC);
++                    xtime_get(&cur, TIME_UTC_);
+                     if (xtime_cmp(xt, cur) <= 0)
+                         return;
+                 }
+@@ -369,7 +369,7 @@ namespace boost
+             BOOST_VERIFY(!pthread_yield());
+ #   else
+             xtime xt;
+-            xtime_get(&xt, TIME_UTC);
++            xtime_get(&xt, TIME_UTC_);
+             sleep(xt);
+ #   endif
+         }
+diff -pruN boost-1.49.0_orig/libs/thread/src/pthread/timeconv.inl boost-1.49.0_new/libs/thread/src/pthread/timeconv.inl
+--- boost-1.49.0_orig/libs/thread/src/pthread/timeconv.inl     2012-01-03 18:31:50.000000000 +0100
++++ boost-1.49.0_new/libs/thread/src/pthread/timeconv.inl      2013-03-07 14:07:58.805162006 +0100
+@@ -20,8 +20,8 @@ const int NANOSECONDS_PER_MICROSECOND =
+ inline void to_time(int milliseconds, boost::xtime& xt)
+ {
+     int res = 0;
+-    res = boost::xtime_get(&xt, boost::TIME_UTC);
+-    BOOST_ASSERT(res == boost::TIME_UTC); (void)res;
++    res = boost::xtime_get(&xt, boost::TIME_UTC_);
++    BOOST_ASSERT(res == boost::TIME_UTC_); (void)res;
+     xt.sec += (milliseconds / MILLISECONDS_PER_SECOND);
+     xt.nsec += ((milliseconds % MILLISECONDS_PER_SECOND) *
+@@ -56,8 +56,8 @@ inline void to_timespec_duration(const b
+ {
+     boost::xtime cur;
+     int res = 0;
+-    res = boost::xtime_get(&cur, boost::TIME_UTC);
+-    BOOST_ASSERT(res == boost::TIME_UTC); (void)res;
++    res = boost::xtime_get(&cur, boost::TIME_UTC_);
++    BOOST_ASSERT(res == boost::TIME_UTC_); (void)res;
+     if (boost::xtime_cmp(xt, cur) <= 0)
+     {
+@@ -87,8 +87,8 @@ inline void to_duration(boost::xtime xt,
+ {
+     boost::xtime cur;
+     int res = 0;
+-    res = boost::xtime_get(&cur, boost::TIME_UTC);
+-    BOOST_ASSERT(res == boost::TIME_UTC); (void)res;
++    res = boost::xtime_get(&cur, boost::TIME_UTC_);
++    BOOST_ASSERT(res == boost::TIME_UTC_); (void)res;
+     if (boost::xtime_cmp(xt, cur) <= 0)
+         milliseconds = 0;
+@@ -109,8 +109,8 @@ inline void to_microduration(boost::xtim
+ {
+     boost::xtime cur;
+     int res = 0;
+-    res = boost::xtime_get(&cur, boost::TIME_UTC);
+-    BOOST_ASSERT(res == boost::TIME_UTC); (void)res;
++    res = boost::xtime_get(&cur, boost::TIME_UTC_);
++    BOOST_ASSERT(res == boost::TIME_UTC_); (void)res;
+     if (boost::xtime_cmp(xt, cur) <= 0)
+         microseconds = 0;
+diff -pruN boost-1.49.0_orig/libs/thread/test/test_xtime.cpp boost-1.49.0_new/libs/thread/test/test_xtime.cpp
+--- boost-1.49.0_orig/libs/thread/test/test_xtime.cpp  2012-01-03 18:31:50.000000000 +0100
++++ boost-1.49.0_new/libs/thread/test/test_xtime.cpp   2013-03-07 14:16:32.014227186 +0100
+@@ -17,8 +17,8 @@ void test_xtime_cmp()
+ {
+     boost::xtime xt1, xt2, cur;
+     BOOST_CHECK_EQUAL(
+-        boost::xtime_get(&cur, boost::TIME_UTC),
+-        static_cast<int>(boost::TIME_UTC));
++        boost::xtime_get(&cur, boost::TIME_UTC_),
++        static_cast<int>(boost::TIME_UTC_));
+     xt1 = xt2 = cur;
+     xt1.nsec -= 1;
+@@ -42,14 +42,14 @@ void test_xtime_get()
+     boost::xtime orig, cur, old;
+     BOOST_CHECK_EQUAL(
+         boost::xtime_get(&orig,
+-            boost::TIME_UTC), static_cast<int>(boost::TIME_UTC));
++            boost::TIME_UTC_), static_cast<int>(boost::TIME_UTC_));
+     old = orig;
+     for (int x=0; x < 100; ++x)
+     {
+         BOOST_CHECK_EQUAL(
+-            boost::xtime_get(&cur, boost::TIME_UTC),
+-            static_cast<int>(boost::TIME_UTC));
++            boost::xtime_get(&cur, boost::TIME_UTC_),
++            static_cast<int>(boost::TIME_UTC_));
+         BOOST_CHECK(boost::xtime_cmp(cur, orig) >= 0);
+         BOOST_CHECK(boost::xtime_cmp(cur, old) >= 0);
+         old = cur;
+diff -pruN boost-1.49.0_orig/libs/thread/test/util.inl boost-1.49.0_new/libs/thread/test/util.inl
+--- boost-1.49.0_orig/libs/thread/test/util.inl        2008-11-03 23:29:39.000000000 +0100
++++ boost-1.49.0_new/libs/thread/test/util.inl 2013-03-07 14:17:01.047124728 +0100
+@@ -28,8 +28,8 @@ inline boost::xtime delay(int secs, int
+     const int NANOSECONDS_PER_MILLISECOND = 1000000;
+     boost::xtime xt;
+-    if (boost::TIME_UTC != boost::xtime_get (&xt, boost::TIME_UTC))
+-        BOOST_ERROR ("boost::xtime_get != boost::TIME_UTC");
++    if (boost::TIME_UTC_ != boost::xtime_get (&xt, boost::TIME_UTC_))
++        BOOST_ERROR ("boost::xtime_get != boost::TIME_UTC_");
+     nsecs += xt.nsec;
+     msecs += nsecs / NANOSECONDS_PER_MILLISECOND;
diff --git a/products/patches/boost-1.52.0-cstdint_missing_include.patch b/products/patches/boost-1.52.0-cstdint_missing_include.patch
new file mode 100644 (file)
index 0000000..03c8863
--- /dev/null
@@ -0,0 +1,13 @@
+diff -rupN boost-1.52.0/libs/context/src/fcontext.cpp boost-1.52.0_new/libs/context/src/fcontext.cpp
+--- boost-1.52.0/libs/context/src/fcontext.cpp 2012-09-18 11:06:47.000000000 +0200
++++ boost-1.52.0_new/libs/context/src/fcontext.cpp     2014-06-04 11:23:59.123944000 +0200
+@@ -9,6 +9,9 @@
+ #include <boost/context/fcontext.hpp>
+ #include <cstddef>
++extern "C" { 
++#include <stdint.h> 
++} 
+ #ifdef BOOST_HAS_ABI_HEADERS
+ #  include BOOST_ABI_PREFIX
diff --git a/products/patches/boost-1.52.0_recent_glibc_versions.patch b/products/patches/boost-1.52.0_recent_glibc_versions.patch
new file mode 100644 (file)
index 0000000..38cb7b2
--- /dev/null
@@ -0,0 +1,12 @@
+diff -rupN boost-1.52.0_old/boost/cstdint.hpp boost-1.52.0_new/boost/cstdint.hpp
+--- boost-1.52.0_old/boost/cstdint.hpp 2012-09-28 20:34:12.000000000 +0200
++++ boost-1.52.0_new/boost/cstdint.hpp 2014-05-07 14:07:44.109462857 +0200
+@@ -41,7 +41,7 @@
+ // so we disable use of stdint.h when GLIBC does not define __GLIBC_HAVE_LONG_LONG.
+ // See https://svn.boost.org/trac/boost/ticket/3548 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=10990
+ //
+-#if defined(BOOST_HAS_STDINT_H) && (!defined(__GLIBC__) || defined(__GLIBC_HAVE_LONG_LONG))
++#if defined(BOOST_HAS_STDINT_H) && (!defined(__GLIBC__) || defined(__GLIBC_HAVE_LONG_LONG) || (defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 17)))))
+ // The following #include is an implementation artifact; not part of interface.
+ # ifdef __hpux
diff --git a/products/patches/cppunit-1.13.2_windows.patch b/products/patches/cppunit-1.13.2_windows.patch
new file mode 100644 (file)
index 0000000..d46d036
--- /dev/null
@@ -0,0 +1,3248 @@
+--- cppunit_ref/src/DllPlugInTester/DllPlugInTester.vcxproj
++++ cppunit/src/DllPlugInTester/DllPlugInTester.vcxproj
+@@ -1,775 +1,788 @@
+-<?xml version="1.0" encoding="utf-8"?>
+-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+-  <ItemGroup Label="ProjectConfigurations">
+-    <ProjectConfiguration Include="Debug Static|Win32">
+-      <Configuration>Debug Static</Configuration>
+-      <Platform>Win32</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Debug Static|x64">
+-      <Configuration>Debug Static</Configuration>
+-      <Platform>x64</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Debug Unicode|Win32">
+-      <Configuration>Debug Unicode</Configuration>
+-      <Platform>Win32</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Debug Unicode|x64">
+-      <Configuration>Debug Unicode</Configuration>
+-      <Platform>x64</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Debug|Win32">
+-      <Configuration>Debug</Configuration>
+-      <Platform>Win32</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Debug|x64">
+-      <Configuration>Debug</Configuration>
+-      <Platform>x64</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Release Static|Win32">
+-      <Configuration>Release Static</Configuration>
+-      <Platform>Win32</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Release Static|x64">
+-      <Configuration>Release Static</Configuration>
+-      <Platform>x64</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Release Unicode|Win32">
+-      <Configuration>Release Unicode</Configuration>
+-      <Platform>Win32</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Release Unicode|x64">
+-      <Configuration>Release Unicode</Configuration>
+-      <Platform>x64</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Release|Win32">
+-      <Configuration>Release</Configuration>
+-      <Platform>Win32</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Release|x64">
+-      <Configuration>Release</Configuration>
+-      <Platform>x64</Platform>
+-    </ProjectConfiguration>
+-  </ItemGroup>
+-  <PropertyGroup Label="Globals">
+-    <SccProjectName />
+-    <SccLocalPath />
+-    <ProjectGuid>{26047E59-ECD5-9E22-A3E3-D624038A5572}</ProjectGuid>
+-  </PropertyGroup>
+-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|Win32'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|x64'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'" Label="Configuration">
+-    <ConfigurationType>Application</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+-  <ImportGroup Label="ExtensionSettings">
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|Win32'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|x64'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <PropertyGroup Label="UserMacros" />
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">
+-    <OutDir>.\ReleaseUnicode\</OutDir>
+-    <IntDir>.\ReleaseUnicode\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-    <TargetName>$(ProjectName)u</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">
+-    <OutDir>.\ReleaseUnicode\</OutDir>
+-    <IntDir>.\ReleaseUnicode\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-    <TargetName>$(ProjectName)u</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|Win32'">
+-    <OutDir>.\Debug\</OutDir>
+-    <IntDir>.\Debug\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-    <TargetName>$(ProjectName)d</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|x64'">
+-    <OutDir>.\Debug\</OutDir>
+-    <IntDir>.\Debug\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-    <TargetName>$(ProjectName)d</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
+-    <OutDir>.\Release\</OutDir>
+-    <IntDir>.\Release\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'">
+-    <OutDir>.\Release\</OutDir>
+-    <IntDir>.\Release\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+-    <OutDir>.\DebugDll\</OutDir>
+-    <IntDir>.\DebugDll\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-    <TargetName>DllPlugInTesterd_dll</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+-    <OutDir>.\DebugDll\</OutDir>
+-    <IntDir>.\DebugDll\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-    <TargetName>DllPlugInTesterd_dll</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+-    <OutDir>.\ReleaseDll\</OutDir>
+-    <IntDir>.\ReleaseDll\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-    <TargetName>$(ProjectName)_dll</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+-    <OutDir>.\ReleaseDll\</OutDir>
+-    <IntDir>.\ReleaseDll\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-    <TargetName>$(ProjectName)_dll</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">
+-    <OutDir>.\DebugUnicode\</OutDir>
+-    <IntDir>.\DebugUnicode\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-    <TargetName>$(ProjectName)ud</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">
+-    <OutDir>.\DebugUnicode\</OutDir>
+-    <IntDir>.\DebugUnicode\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-    <TargetName>$(ProjectName)ud</TargetName>
+-  </PropertyGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+-      <StringPooling>true</StringPooling>
+-      <FunctionLevelLinking>true</FunctionLevelLinking>
+-      <Optimization>MinSpace</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\ReleaseUnicode\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\ReleaseUnicode\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\ReleaseUnicode\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\ReleaseUnicode\</ProgramDataBaseFileName>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\ReleaseUnicode\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\ReleaseUnicode\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>ReleaseUnicode\DllPlugInTesteru.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+-      <StringPooling>true</StringPooling>
+-      <FunctionLevelLinking>true</FunctionLevelLinking>
+-      <Optimization>MinSpace</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\ReleaseUnicode\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\ReleaseUnicode\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\ReleaseUnicode\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\ReleaseUnicode\</ProgramDataBaseFileName>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\ReleaseUnicode\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\ReleaseUnicode\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>ReleaseUnicode\DllPlugInTesteru.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|Win32'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+-      <FunctionLevelLinking>false</FunctionLevelLinking>
+-      <Optimization>Disabled</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <MinimalRebuild>true</MinimalRebuild>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\Debug\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\Debug\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
+-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy $(TargetPath) ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\Debug\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\Debug\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <GenerateDebugInformation>true</GenerateDebugInformation>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>Debug\DllPlugInTesterd.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|x64'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+-      <FunctionLevelLinking>false</FunctionLevelLinking>
+-      <Optimization>Disabled</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\Debug\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\Debug\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
+-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy $(TargetPath) ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\Debug\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\Debug\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <GenerateDebugInformation>true</GenerateDebugInformation>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>Debug\DllPlugInTesterd.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+-      <StringPooling>true</StringPooling>
+-      <FunctionLevelLinking>true</FunctionLevelLinking>
+-      <Optimization>MinSpace</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\Release\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\Release\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\Release\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy $(TargetPath) ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\Release\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\Release\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>.\Release\DllPlugInTester.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+-      <StringPooling>true</StringPooling>
+-      <FunctionLevelLinking>true</FunctionLevelLinking>
+-      <Optimization>MinSpace</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\Release\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\Release\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\Release\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy $(TargetPath) ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\Release\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\Release\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>.\Release\DllPlugInTester.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+-      <FunctionLevelLinking>false</FunctionLevelLinking>
+-      <Optimization>Disabled</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <MinimalRebuild>true</MinimalRebuild>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;CPPUNIT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\DebugDll\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\DebugDll\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\DebugDll\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\DebugDll\</ProgramDataBaseFileName>
+-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\DebugDll\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\DebugDll\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <GenerateDebugInformation>true</GenerateDebugInformation>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>DebugDll\DllPlugInTesterd_dll.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd_dll.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+-      <FunctionLevelLinking>false</FunctionLevelLinking>
+-      <Optimization>Disabled</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;CPPUNIT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\DebugDll\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\DebugDll\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\DebugDll\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\DebugDll\</ProgramDataBaseFileName>
+-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\DebugDll\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\DebugDll\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <GenerateDebugInformation>true</GenerateDebugInformation>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>DebugDll\DllPlugInTesterd_dll.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd_dll.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+-      <StringPooling>true</StringPooling>
+-      <FunctionLevelLinking>true</FunctionLevelLinking>
+-      <Optimization>MinSpace</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;CPPUNIT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\ReleaseDll\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\ReleaseDll\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\ReleaseDll\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\ReleaseDll\</ProgramDataBaseFileName>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\ReleaseDll\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\ReleaseDll\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>ReleaseDll\DllPlugInTester_dll.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit_dll.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+-      <StringPooling>true</StringPooling>
+-      <FunctionLevelLinking>true</FunctionLevelLinking>
+-      <Optimization>MinSpace</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;CPPUNIT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\ReleaseDll\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\ReleaseDll\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\ReleaseDll\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\ReleaseDll\</ProgramDataBaseFileName>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\ReleaseDll\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\ReleaseDll\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>ReleaseDll\DllPlugInTester_dll.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit_dll.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+-      <FunctionLevelLinking>false</FunctionLevelLinking>
+-      <Optimization>Disabled</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <MinimalRebuild>true</MinimalRebuild>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\DebugUnicode\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\DebugUnicode\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\DebugUnicode\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\DebugUnicode\</ProgramDataBaseFileName>
+-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\DebugUnicode\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\DebugUnicode\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <GenerateDebugInformation>true</GenerateDebugInformation>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>DebugUnicode\DllPlugInTesterud.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+-      <FunctionLevelLinking>false</FunctionLevelLinking>
+-      <Optimization>Disabled</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\DebugUnicode\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\DebugUnicode\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
+-      <PrecompiledHeader>
+-      </PrecompiledHeader>
+-      <ObjectFileName>.\DebugUnicode\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\DebugUnicode\</ProgramDataBaseFileName>
+-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <TypeLibraryName>.\DebugUnicode\DllPlugInTester.tlb</TypeLibraryName>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\DebugUnicode\DllPlugInTester.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <GenerateDebugInformation>true</GenerateDebugInformation>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>DebugUnicode\DllPlugInTesterud.exe</OutputFile>
+-      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemGroup>
+-    <ClCompile Include="CommandLineParser.cpp" />
+-    <ClCompile Include="DllPlugInTester.cpp" />
+-  </ItemGroup>
+-  <ItemGroup>
+-    <ClInclude Include="CommandLineParser.h" />
+-  </ItemGroup>
+-  <ItemGroup>
+-    <CustomBuild Include="Makefile.am">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-  </ItemGroup>
+-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+-  <ImportGroup Label="ExtensionTargets">
+-  </ImportGroup>
++<?xml version="1.0" encoding="utf-8"?>
++<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
++  <ItemGroup Label="ProjectConfigurations">
++    <ProjectConfiguration Include="Debug Static|Win32">
++      <Configuration>Debug Static</Configuration>
++      <Platform>Win32</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Debug Static|x64">
++      <Configuration>Debug Static</Configuration>
++      <Platform>x64</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Debug Unicode|Win32">
++      <Configuration>Debug Unicode</Configuration>
++      <Platform>Win32</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Debug Unicode|x64">
++      <Configuration>Debug Unicode</Configuration>
++      <Platform>x64</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Debug|Win32">
++      <Configuration>Debug</Configuration>
++      <Platform>Win32</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Debug|x64">
++      <Configuration>Debug</Configuration>
++      <Platform>x64</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Release Static|Win32">
++      <Configuration>Release Static</Configuration>
++      <Platform>Win32</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Release Static|x64">
++      <Configuration>Release Static</Configuration>
++      <Platform>x64</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Release Unicode|Win32">
++      <Configuration>Release Unicode</Configuration>
++      <Platform>Win32</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Release Unicode|x64">
++      <Configuration>Release Unicode</Configuration>
++      <Platform>x64</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Release|Win32">
++      <Configuration>Release</Configuration>
++      <Platform>Win32</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Release|x64">
++      <Configuration>Release</Configuration>
++      <Platform>x64</Platform>
++    </ProjectConfiguration>
++  </ItemGroup>
++  <PropertyGroup Label="Globals">
++    <SccProjectName />
++    <SccLocalPath />
++    <ProjectGuid>{26047E59-ECD5-9E22-A3E3-D624038A5572}</ProjectGuid>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
++  </PropertyGroup>
++  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|Win32'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|x64'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'" Label="Configuration">
++    <ConfigurationType>Application</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
++  <ImportGroup Label="ExtensionSettings">
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|Win32'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|x64'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <PropertyGroup Label="UserMacros" />
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">
++    <OutDir>.\ReleaseUnicode\</OutDir>
++    <IntDir>.\ReleaseUnicode\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++    <TargetName>$(ProjectName)u</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">
++    <OutDir>.\ReleaseUnicode\</OutDir>
++    <IntDir>.\ReleaseUnicode\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++    <TargetName>$(ProjectName)u</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|Win32'">
++    <OutDir>.\Debug\</OutDir>
++    <IntDir>.\Debug\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++    <TargetName>$(ProjectName)d</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|x64'">
++    <OutDir>.\Debug\</OutDir>
++    <IntDir>.\Debug\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++    <TargetName>$(ProjectName)d</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
++    <OutDir>.\Release\</OutDir>
++    <IntDir>.\Release\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'">
++    <OutDir>.\Release\</OutDir>
++    <IntDir>.\Release\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++    <OutDir>.\DebugDll\</OutDir>
++    <IntDir>.\DebugDll\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++    <TargetName>DllPlugInTesterd_dll</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++    <OutDir>.\DebugDll\</OutDir>
++    <IntDir>.\DebugDll\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++    <TargetName>DllPlugInTesterd_dll</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++    <OutDir>.\ReleaseDll\</OutDir>
++    <IntDir>.\ReleaseDll\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++    <TargetName>$(ProjectName)_dll</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++    <OutDir>.\ReleaseDll\</OutDir>
++    <IntDir>.\ReleaseDll\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++    <TargetName>$(ProjectName)_dll</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">
++    <OutDir>.\DebugUnicode\</OutDir>
++    <IntDir>.\DebugUnicode\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++    <TargetName>$(ProjectName)ud</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">
++    <OutDir>.\DebugUnicode\</OutDir>
++    <IntDir>.\DebugUnicode\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++    <TargetName>$(ProjectName)ud</TargetName>
++  </PropertyGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
++      <StringPooling>true</StringPooling>
++      <FunctionLevelLinking>true</FunctionLevelLinking>
++      <Optimization>MinSpace</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <DebugInformationFormat>OldStyle</DebugInformationFormat>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\ReleaseUnicode\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\ReleaseUnicode\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\ReleaseUnicode\</ObjectFileName>
++      <ProgramDataBaseFileName>.\ReleaseUnicode\</ProgramDataBaseFileName>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\ReleaseUnicode\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\ReleaseUnicode\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>ReleaseUnicode\DllPlugInTesteru.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
++      <StringPooling>true</StringPooling>
++      <FunctionLevelLinking>true</FunctionLevelLinking>
++      <Optimization>MinSpace</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <DebugInformationFormat>OldStyle</DebugInformationFormat>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\ReleaseUnicode\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\ReleaseUnicode\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\ReleaseUnicode\</ObjectFileName>
++      <ProgramDataBaseFileName>.\ReleaseUnicode\</ProgramDataBaseFileName>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\ReleaseUnicode\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\ReleaseUnicode\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>ReleaseUnicode\DllPlugInTesteru.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|Win32'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
++      <FunctionLevelLinking>false</FunctionLevelLinking>
++      <Optimization>Disabled</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <MinimalRebuild>true</MinimalRebuild>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\Debug\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\Debug\</ObjectFileName>
++      <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
++      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy $(TargetPath) ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\Debug\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\Debug\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <GenerateDebugInformation>true</GenerateDebugInformation>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>Debug\DllPlugInTesterd.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Static|x64'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
++      <FunctionLevelLinking>false</FunctionLevelLinking>
++      <Optimization>Disabled</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\Debug\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\Debug\</ObjectFileName>
++      <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
++      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy $(TargetPath) ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\Debug\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\Debug\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <GenerateDebugInformation>true</GenerateDebugInformation>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>Debug\DllPlugInTesterd.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|Win32'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
++      <StringPooling>true</StringPooling>
++      <FunctionLevelLinking>true</FunctionLevelLinking>
++      <Optimization>MinSpace</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <DebugInformationFormat>OldStyle</DebugInformationFormat>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\Release\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\Release\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\Release\</ObjectFileName>
++      <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy $(TargetPath) ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\Release\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\Release\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>.\Release\DllPlugInTester.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Static|x64'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
++      <StringPooling>true</StringPooling>
++      <FunctionLevelLinking>true</FunctionLevelLinking>
++      <Optimization>MinSpace</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <DebugInformationFormat>OldStyle</DebugInformationFormat>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\Release\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\Release\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\Release\</ObjectFileName>
++      <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy $(TargetPath) ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\Release\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\Release\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>.\Release\DllPlugInTester.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
++      <FunctionLevelLinking>false</FunctionLevelLinking>
++      <Optimization>Disabled</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <MinimalRebuild>true</MinimalRebuild>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;CPPUNIT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\DebugDll\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\DebugDll\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\DebugDll\</ObjectFileName>
++      <ProgramDataBaseFileName>.\DebugDll\</ProgramDataBaseFileName>
++      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\DebugDll\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\DebugDll\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <GenerateDebugInformation>true</GenerateDebugInformation>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>DebugDll\DllPlugInTesterd_dll.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd_dll.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
++      <FunctionLevelLinking>false</FunctionLevelLinking>
++      <Optimization>Disabled</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;CPPUNIT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\DebugDll\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\DebugDll\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\DebugDll\</ObjectFileName>
++      <ProgramDataBaseFileName>.\DebugDll\</ProgramDataBaseFileName>
++      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\DebugDll\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\DebugDll\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <GenerateDebugInformation>true</GenerateDebugInformation>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>DebugDll\DllPlugInTesterd_dll.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd_dll.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
++      <StringPooling>true</StringPooling>
++      <FunctionLevelLinking>true</FunctionLevelLinking>
++      <Optimization>MinSpace</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <DebugInformationFormat>OldStyle</DebugInformationFormat>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;CPPUNIT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\ReleaseDll\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\ReleaseDll\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\ReleaseDll\</ObjectFileName>
++      <ProgramDataBaseFileName>.\ReleaseDll\</ProgramDataBaseFileName>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\ReleaseDll\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\ReleaseDll\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>ReleaseDll\DllPlugInTester_dll.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit_dll.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
++      <StringPooling>true</StringPooling>
++      <FunctionLevelLinking>true</FunctionLevelLinking>
++      <Optimization>MinSpace</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <DebugInformationFormat>OldStyle</DebugInformationFormat>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;CPPUNIT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\ReleaseDll\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\ReleaseDll\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\ReleaseDll\</ObjectFileName>
++      <ProgramDataBaseFileName>.\ReleaseDll\</ProgramDataBaseFileName>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\ReleaseDll\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\ReleaseDll\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>ReleaseDll\DllPlugInTester_dll.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunit_dll.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
++      <FunctionLevelLinking>false</FunctionLevelLinking>
++      <Optimization>Disabled</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <MinimalRebuild>true</MinimalRebuild>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\DebugUnicode\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\DebugUnicode\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\DebugUnicode\</ObjectFileName>
++      <ProgramDataBaseFileName>.\DebugUnicode\</ProgramDataBaseFileName>
++      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\DebugUnicode\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\DebugUnicode\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <GenerateDebugInformation>true</GenerateDebugInformation>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>DebugUnicode\DllPlugInTesterud.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
++      <FunctionLevelLinking>false</FunctionLevelLinking>
++      <Optimization>Disabled</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\DebugUnicode\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\DebugUnicode\DllPlugInTester.pch</PrecompiledHeaderOutputFile>
++      <PrecompiledHeader>
++      </PrecompiledHeader>
++      <ObjectFileName>.\DebugUnicode\</ObjectFileName>
++      <ProgramDataBaseFileName>.\DebugUnicode\</ProgramDataBaseFileName>
++      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).exe</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <TypeLibraryName>.\DebugUnicode\DllPlugInTester.tlb</TypeLibraryName>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\DebugUnicode\DllPlugInTester.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <GenerateDebugInformation>true</GenerateDebugInformation>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>DebugUnicode\DllPlugInTesterud.exe</OutputFile>
++      <AdditionalLibraryDirectories>../../lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;cppunitd.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemGroup>
++    <ClCompile Include="CommandLineParser.cpp" />
++    <ClCompile Include="DllPlugInTester.cpp" />
++  </ItemGroup>
++  <ItemGroup>
++    <ClInclude Include="CommandLineParser.h" />
++  </ItemGroup>
++  <ItemGroup>
++    <CustomBuild Include="Makefile.am">
++      <FileType>Document</FileType>
++    </CustomBuild>
++  </ItemGroup>
++  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
++  <ImportGroup Label="ExtensionTargets">
++  </ImportGroup>
+ </Project>
+\ No newline at end of file
+--- /dev/null
++++ cppunit/src/DllPlugInTester/DllPlugInTester.vcxproj.user
+@@ -0,0 +1,4 @@
++<?xml version="1.0" encoding="utf-8"?>
++<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
++  <PropertyGroup />
++</Project>
+\ No newline at end of file
+--- cppunit_ref/src/cppunit/cppunit.vcxproj
++++ cppunit/src/cppunit/cppunit.vcxproj
+@@ -1,399 +1,404 @@
+-<?xml version="1.0" encoding="utf-8"?>
+-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+-  <ItemGroup Label="ProjectConfigurations">
+-    <ProjectConfiguration Include="Debug|Win32">
+-      <Configuration>Debug</Configuration>
+-      <Platform>Win32</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Debug|x64">
+-      <Configuration>Debug</Configuration>
+-      <Platform>x64</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Release|Win32">
+-      <Configuration>Release</Configuration>
+-      <Platform>Win32</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Release|x64">
+-      <Configuration>Release</Configuration>
+-      <Platform>x64</Platform>
+-    </ProjectConfiguration>
+-  </ItemGroup>
+-  <PropertyGroup Label="Globals">
+-    <SccProjectName />
+-    <SccLocalPath />
+-    <ProjectGuid>{338B9353-C5CC-FCA6-A584-73425CEDD569}</ProjectGuid>
+-  </PropertyGroup>
+-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+-    <ConfigurationType>StaticLibrary</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+-    <ConfigurationType>StaticLibrary</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+-    <ConfigurationType>StaticLibrary</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+-    <ConfigurationType>StaticLibrary</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+-  <ImportGroup Label="ExtensionSettings">
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <PropertyGroup Label="UserMacros" />
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+-    <OutDir>.\Release\</OutDir>
+-    <IntDir>.\Release\</IntDir>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+-    <OutDir>.\Release\</OutDir>
+-    <IntDir>.\Release\</IntDir>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+-    <OutDir>.\Debug\</OutDir>
+-    <IntDir>.\Debug\</IntDir>
+-    <TargetName>$(ProjectName)d</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+-    <OutDir>.\Debug\</OutDir>
+-    <IntDir>.\Debug\</IntDir>
+-    <TargetName>$(ProjectName)d</TargetName>
+-  </PropertyGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+-      <StringPooling>true</StringPooling>
+-      <FunctionLevelLinking>true</FunctionLevelLinking>
+-      <Optimization>MaxSpeed</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>NDEBUG;_LIB;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\Release\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\Release\cppunit.pch</PrecompiledHeaderOutputFile>
+-      <ObjectFileName>.\Release\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).lib</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\Release\cppunit.bsc</OutputFile>
+-    </Bscmake>
+-    <Lib>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\Release\cppunit.lib</OutputFile>
+-    </Lib>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+-      <StringPooling>true</StringPooling>
+-      <FunctionLevelLinking>true</FunctionLevelLinking>
+-      <Optimization>MaxSpeed</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>NDEBUG;_LIB;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\Release\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\Release\cppunit.pch</PrecompiledHeaderOutputFile>
+-      <ObjectFileName>.\Release\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).lib</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\Release\cppunit.bsc</OutputFile>
+-    </Bscmake>
+-    <Lib>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\Release\cppunit.lib</OutputFile>
+-    </Lib>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+-      <FunctionLevelLinking>false</FunctionLevelLinking>
+-      <Optimization>Disabled</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <MinimalRebuild>true</MinimalRebuild>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>_DEBUG;_LIB;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\Debug\cppunit.pch</PrecompiledHeaderOutputFile>
+-      <ObjectFileName>.\Debug\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
+-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).lib</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\Debug\cppunit.bsc</OutputFile>
+-    </Bscmake>
+-    <Lib>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>Debug\$(TargetName).lib</OutputFile>
+-    </Lib>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+-      <FunctionLevelLinking>false</FunctionLevelLinking>
+-      <Optimization>Disabled</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>_DEBUG;_LIB;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\Debug\cppunit.pch</PrecompiledHeaderOutputFile>
+-      <ObjectFileName>.\Debug\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
+-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-    </ClCompile>
+-    <PostBuildEvent>
+-      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).lib</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\Debug\cppunit.bsc</OutputFile>
+-    </Bscmake>
+-    <Lib>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>Debug\$(TargetName).lib</OutputFile>
+-    </Lib>
+-  </ItemDefinitionGroup>
+-  <ItemGroup>
+-    <CustomBuild Include="..\..\ChangeLog">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\CodingGuideLines.txt" />
+-    <CustomBuild Include="..\..\doc\cookbook.dox">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\doc\FAQ">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\INSTALL-unix">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\INSTALL-WIN32.txt" />
+-    <CustomBuild Include="..\..\doc\Money.dox">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\NEWS">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\doc\other_documentation.dox">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\THANKS">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\TODO">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\configure.in">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\include\cppunit\Makefile.am">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="Makefile.am">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-  </ItemGroup>
+-  <ItemGroup>
+-    <ClCompile Include="BriefTestProgressListener.cpp" />
+-    <ClCompile Include="TestResultCollector.cpp" />
+-    <ClCompile Include="TestSuccessListener.cpp" />
+-    <ClCompile Include="TextTestProgressListener.cpp" />
+-    <ClCompile Include="TextTestResult.cpp" />
+-    <ClCompile Include="TextTestRunner.cpp" />
+-    <ClCompile Include="CompilerOutputter.cpp" />
+-    <ClCompile Include="TextOutputter.cpp" />
+-    <ClCompile Include="XmlOutputter.cpp">
+-      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level3</WarningLevel>
+-      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level3</WarningLevel>
+-    </ClCompile>
+-    <ClCompile Include="XmlOutputterHook.cpp" />
+-    <ClCompile Include="AdditionalMessage.cpp" />
+-    <ClCompile Include="Asserter.cpp" />
+-    <ClCompile Include="Exception.cpp" />
+-    <ClCompile Include="Message.cpp" />
+-    <ClCompile Include="SourceLine.cpp" />
+-    <ClCompile Include="SynchronizedObject.cpp" />
+-    <ClCompile Include="Test.cpp" />
+-    <ClCompile Include="TestAssert.cpp" />
+-    <ClCompile Include="TestCase.cpp" />
+-    <ClCompile Include="TestComposite.cpp" />
+-    <ClCompile Include="TestFailure.cpp" />
+-    <ClCompile Include="TestLeaf.cpp" />
+-    <ClCompile Include="TestPath.cpp" />
+-    <ClCompile Include="TestResult.cpp" />
+-    <ClCompile Include="TestRunner.cpp" />
+-    <ClCompile Include="TestSuite.cpp" />
+-    <ClCompile Include="TestFactoryRegistry.cpp" />
+-    <ClCompile Include="TestNamer.cpp" />
+-    <ClCompile Include="TestSuiteBuilderContext.cpp" />
+-    <ClCompile Include="TypeInfoHelper.cpp" />
+-    <ClCompile Include="RepeatedTest.cpp" />
+-    <ClCompile Include="TestCaseDecorator.cpp" />
+-    <ClCompile Include="TestDecorator.cpp" />
+-    <ClCompile Include="TestSetUp.cpp" />
+-    <ClCompile Include="BeOsDynamicLibraryManager.cpp" />
+-    <ClCompile Include="DynamicLibraryManager.cpp" />
+-    <ClCompile Include="DynamicLibraryManagerException.cpp" />
+-    <ClCompile Include="PlugInManager.cpp" />
+-    <ClCompile Include="PlugInParameters.cpp" />
+-    <ClCompile Include="ShlDynamicLibraryManager.cpp" />
+-    <ClCompile Include="TestPlugInDefaultImpl.cpp" />
+-    <ClCompile Include="UnixDynamicLibraryManager.cpp" />
+-    <ClCompile Include="Win32DynamicLibraryManager.cpp" />
+-    <ClCompile Include="StringTools.cpp" />
+-    <ClCompile Include="XmlDocument.cpp" />
+-    <ClCompile Include="XmlElement.cpp" />
+-    <ClCompile Include="DefaultProtector.cpp" />
+-    <ClCompile Include="Protector.cpp" />
+-    <ClCompile Include="ProtectorChain.cpp" />
+-  </ItemGroup>
+-  <ItemGroup>
+-    <ClInclude Include="..\..\include\cppunit\BriefTestProgressListener.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestResultCollector.h" />
+-    <ClInclude Include="..\..\include\cppunit\TextTestProgressListener.h" />
+-    <ClInclude Include="..\..\include\cppunit\TextTestResult.h" />
+-    <ClInclude Include="..\..\include\cppunit\ui\text\TestRunner.h" />
+-    <ClInclude Include="..\..\include\cppunit\TextTestRunner.h" />
+-    <ClInclude Include="..\..\include\cppunit\ui\text\TextTestRunner.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\config-bcb5.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\config-evc4.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\config-mac.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\config-msvc6.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\CppUnitApi.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\CppUnitDeque.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\CppUnitMap.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\CppUnitSet.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\CppUnitStack.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\CppUnitVector.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\FloatingPoint.h" />
+-    <ClInclude Include="..\..\include\cppunit\Portability.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\SelectDllLoader.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\SourcePrefix.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\Stream.h" />
+-    <ClInclude Include="..\..\include\cppunit\CompilerOutputter.h" />
+-    <ClInclude Include="..\..\include\cppunit\Outputter.h" />
+-    <ClInclude Include="..\..\include\cppunit\TextOutputter.h" />
+-    <ClInclude Include="..\..\include\cppunit\XmlOutputter.h" />
+-    <ClInclude Include="..\..\include\cppunit\XmlOutputterHook.h" />
+-    <ClInclude Include="..\..\include\cppunit\AdditionalMessage.h" />
+-    <ClInclude Include="..\..\include\cppunit\Asserter.h" />
+-    <ClInclude Include="..\..\include\cppunit\Exception.h" />
+-    <ClInclude Include="..\..\include\cppunit\Message.h" />
+-    <ClInclude Include="..\..\include\cppunit\SourceLine.h" />
+-    <ClInclude Include="..\..\include\cppunit\SynchronizedObject.h" />
+-    <ClInclude Include="..\..\include\cppunit\Test.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestAssert.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestCase.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestComposite.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestFailure.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestFixture.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestLeaf.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestListener.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestPath.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestResult.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestRunner.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestSuite.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\AutoRegisterSuite.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\HelperMacros.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestCaller.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestFactory.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestFactoryRegistry.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestFixtureFactory.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestNamer.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteBuilder.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteBuilderContext.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteFactory.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TypeInfoHelper.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\ExceptionTestCaseDecorator.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\Orthodox.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\RepeatedTest.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestCaseDecorator.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestDecorator.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestSetUp.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\DynamicLibraryManager.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\DynamicLibraryManagerException.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\PlugInManager.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\PlugInParameters.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\TestPlugIn.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\TestPlugInDefaultImpl.h" />
+-    <ClInclude Include="..\..\include\cppunit\tools\Algorithm.h" />
+-    <ClInclude Include="..\..\include\cppunit\tools\StringTools.h" />
+-    <ClInclude Include="..\..\include\cppunit\tools\XmlDocument.h" />
+-    <ClInclude Include="..\..\include\cppunit\tools\XmlElement.h" />
+-    <ClInclude Include="DefaultProtector.h" />
+-    <ClInclude Include="..\..\include\cppunit\Protector.h" />
+-    <ClInclude Include="ProtectorChain.h" />
+-    <ClInclude Include="ProtectorContext.h" />
+-  </ItemGroup>
+-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+-  <ImportGroup Label="ExtensionTargets">
+-  </ImportGroup>
++<?xml version="1.0" encoding="utf-8"?>
++<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
++  <ItemGroup Label="ProjectConfigurations">
++    <ProjectConfiguration Include="Debug|Win32">
++      <Configuration>Debug</Configuration>
++      <Platform>Win32</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Debug|x64">
++      <Configuration>Debug</Configuration>
++      <Platform>x64</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Release|Win32">
++      <Configuration>Release</Configuration>
++      <Platform>Win32</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Release|x64">
++      <Configuration>Release</Configuration>
++      <Platform>x64</Platform>
++    </ProjectConfiguration>
++  </ItemGroup>
++  <PropertyGroup Label="Globals">
++    <SccProjectName />
++    <SccLocalPath />
++    <ProjectGuid>{338B9353-C5CC-FCA6-A584-73425CEDD569}</ProjectGuid>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
++  </PropertyGroup>
++  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
++    <ConfigurationType>StaticLibrary</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
++    <ConfigurationType>StaticLibrary</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
++    <ConfigurationType>StaticLibrary</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
++    <ConfigurationType>StaticLibrary</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
++  <ImportGroup Label="ExtensionSettings">
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <PropertyGroup Label="UserMacros" />
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++    <OutDir>.\Release\</OutDir>
++    <IntDir>.\Release\</IntDir>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++    <OutDir>.\Release\</OutDir>
++    <IntDir>.\Release\</IntDir>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++    <OutDir>.\Debug\</OutDir>
++    <IntDir>.\Debug\</IntDir>
++    <TargetName>$(ProjectName)d</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++    <OutDir>.\Debug\</OutDir>
++    <IntDir>.\Debug\</IntDir>
++    <TargetName>$(ProjectName)d</TargetName>
++  </PropertyGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
++      <StringPooling>true</StringPooling>
++      <FunctionLevelLinking>true</FunctionLevelLinking>
++      <Optimization>MaxSpeed</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <DebugInformationFormat>OldStyle</DebugInformationFormat>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>NDEBUG;_LIB;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\Release\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\Release\cppunit.pch</PrecompiledHeaderOutputFile>
++      <ObjectFileName>.\Release\</ObjectFileName>
++      <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).lib</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\Release\cppunit.bsc</OutputFile>
++    </Bscmake>
++    <Lib>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\Release\cppunit.lib</OutputFile>
++    </Lib>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
++      <StringPooling>true</StringPooling>
++      <FunctionLevelLinking>true</FunctionLevelLinking>
++      <Optimization>MaxSpeed</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <DebugInformationFormat>OldStyle</DebugInformationFormat>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>NDEBUG;_LIB;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\Release\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\Release\cppunit.pch</PrecompiledHeaderOutputFile>
++      <ObjectFileName>.\Release\</ObjectFileName>
++      <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).lib</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\Release\cppunit.bsc</OutputFile>
++    </Bscmake>
++    <Lib>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\Release\cppunit.lib</OutputFile>
++    </Lib>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
++      <FunctionLevelLinking>false</FunctionLevelLinking>
++      <Optimization>Disabled</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <MinimalRebuild>true</MinimalRebuild>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>_DEBUG;_LIB;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\Debug\cppunit.pch</PrecompiledHeaderOutputFile>
++      <ObjectFileName>.\Debug\</ObjectFileName>
++      <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
++      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).lib</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\Debug\cppunit.bsc</OutputFile>
++    </Bscmake>
++    <Lib>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>Debug\$(TargetName).lib</OutputFile>
++    </Lib>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
++      <FunctionLevelLinking>false</FunctionLevelLinking>
++      <Optimization>Disabled</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>_DEBUG;_LIB;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\Debug\cppunit.pch</PrecompiledHeaderOutputFile>
++      <ObjectFileName>.\Debug\</ObjectFileName>
++      <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
++      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++    </ClCompile>
++    <PostBuildEvent>
++      <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).lib</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\Debug\cppunit.bsc</OutputFile>
++    </Bscmake>
++    <Lib>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>Debug\$(TargetName).lib</OutputFile>
++    </Lib>
++  </ItemDefinitionGroup>
++  <ItemGroup>
++    <CustomBuild Include="..\..\ChangeLog">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\CodingGuideLines.txt" />
++    <CustomBuild Include="..\..\doc\cookbook.dox">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\doc\FAQ">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\INSTALL-unix">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\INSTALL-WIN32.txt" />
++    <CustomBuild Include="..\..\doc\Money.dox">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\NEWS">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\doc\other_documentation.dox">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\THANKS">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\TODO">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\configure.in">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\include\cppunit\Makefile.am">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="Makefile.am">
++      <FileType>Document</FileType>
++    </CustomBuild>
++  </ItemGroup>
++  <ItemGroup>
++    <ClCompile Include="BriefTestProgressListener.cpp" />
++    <ClCompile Include="TestResultCollector.cpp" />
++    <ClCompile Include="TestSuccessListener.cpp" />
++    <ClCompile Include="TextTestProgressListener.cpp" />
++    <ClCompile Include="TextTestResult.cpp" />
++    <ClCompile Include="TextTestRunner.cpp" />
++    <ClCompile Include="CompilerOutputter.cpp" />
++    <ClCompile Include="TextOutputter.cpp" />
++    <ClCompile Include="XmlOutputter.cpp">
++      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Level3</WarningLevel>
++      <WarningLevel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Level3</WarningLevel>
++    </ClCompile>
++    <ClCompile Include="XmlOutputterHook.cpp" />
++    <ClCompile Include="AdditionalMessage.cpp" />
++    <ClCompile Include="Asserter.cpp" />
++    <ClCompile Include="Exception.cpp" />
++    <ClCompile Include="Message.cpp" />
++    <ClCompile Include="SourceLine.cpp" />
++    <ClCompile Include="SynchronizedObject.cpp" />
++    <ClCompile Include="Test.cpp" />
++    <ClCompile Include="TestAssert.cpp" />
++    <ClCompile Include="TestCase.cpp" />
++    <ClCompile Include="TestComposite.cpp" />
++    <ClCompile Include="TestFailure.cpp" />
++    <ClCompile Include="TestLeaf.cpp" />
++    <ClCompile Include="TestPath.cpp" />
++    <ClCompile Include="TestResult.cpp" />
++    <ClCompile Include="TestRunner.cpp" />
++    <ClCompile Include="TestSuite.cpp" />
++    <ClCompile Include="TestFactoryRegistry.cpp" />
++    <ClCompile Include="TestNamer.cpp" />
++    <ClCompile Include="TestSuiteBuilderContext.cpp" />
++    <ClCompile Include="TypeInfoHelper.cpp" />
++    <ClCompile Include="RepeatedTest.cpp" />
++    <ClCompile Include="TestCaseDecorator.cpp" />
++    <ClCompile Include="TestDecorator.cpp" />
++    <ClCompile Include="TestSetUp.cpp" />
++    <ClCompile Include="BeOsDynamicLibraryManager.cpp" />
++    <ClCompile Include="DynamicLibraryManager.cpp" />
++    <ClCompile Include="DynamicLibraryManagerException.cpp" />
++    <ClCompile Include="PlugInManager.cpp" />
++    <ClCompile Include="PlugInParameters.cpp" />
++    <ClCompile Include="ShlDynamicLibraryManager.cpp" />
++    <ClCompile Include="TestPlugInDefaultImpl.cpp" />
++    <ClCompile Include="UnixDynamicLibraryManager.cpp" />
++    <ClCompile Include="Win32DynamicLibraryManager.cpp" />
++    <ClCompile Include="StringTools.cpp" />
++    <ClCompile Include="XmlDocument.cpp" />
++    <ClCompile Include="XmlElement.cpp" />
++    <ClCompile Include="DefaultProtector.cpp" />
++    <ClCompile Include="Protector.cpp" />
++    <ClCompile Include="ProtectorChain.cpp" />
++  </ItemGroup>
++  <ItemGroup>
++    <ClInclude Include="..\..\include\cppunit\BriefTestProgressListener.h" />
++    <ClInclude Include="..\..\include\cppunit\TestResultCollector.h" />
++    <ClInclude Include="..\..\include\cppunit\TextTestProgressListener.h" />
++    <ClInclude Include="..\..\include\cppunit\TextTestResult.h" />
++    <ClInclude Include="..\..\include\cppunit\ui\text\TestRunner.h" />
++    <ClInclude Include="..\..\include\cppunit\TextTestRunner.h" />
++    <ClInclude Include="..\..\include\cppunit\ui\text\TextTestRunner.h" />
++    <ClInclude Include="..\..\include\cppunit\config\config-bcb5.h" />
++    <ClInclude Include="..\..\include\cppunit\config\config-evc4.h" />
++    <ClInclude Include="..\..\include\cppunit\config\config-mac.h" />
++    <ClInclude Include="..\..\include\cppunit\config\config-msvc6.h" />
++    <ClInclude Include="..\..\include\cppunit\config\CppUnitApi.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\CppUnitDeque.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\CppUnitMap.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\CppUnitSet.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\CppUnitStack.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\CppUnitVector.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\FloatingPoint.h" />
++    <ClInclude Include="..\..\include\cppunit\Portability.h" />
++    <ClInclude Include="..\..\include\cppunit\config\SelectDllLoader.h" />
++    <ClInclude Include="..\..\include\cppunit\config\SourcePrefix.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\Stream.h" />
++    <ClInclude Include="..\..\include\cppunit\CompilerOutputter.h" />
++    <ClInclude Include="..\..\include\cppunit\Outputter.h" />
++    <ClInclude Include="..\..\include\cppunit\TextOutputter.h" />
++    <ClInclude Include="..\..\include\cppunit\XmlOutputter.h" />
++    <ClInclude Include="..\..\include\cppunit\XmlOutputterHook.h" />
++    <ClInclude Include="..\..\include\cppunit\AdditionalMessage.h" />
++    <ClInclude Include="..\..\include\cppunit\Asserter.h" />
++    <ClInclude Include="..\..\include\cppunit\Exception.h" />
++    <ClInclude Include="..\..\include\cppunit\Message.h" />
++    <ClInclude Include="..\..\include\cppunit\SourceLine.h" />
++    <ClInclude Include="..\..\include\cppunit\SynchronizedObject.h" />
++    <ClInclude Include="..\..\include\cppunit\Test.h" />
++    <ClInclude Include="..\..\include\cppunit\TestAssert.h" />
++    <ClInclude Include="..\..\include\cppunit\TestCase.h" />
++    <ClInclude Include="..\..\include\cppunit\TestComposite.h" />
++    <ClInclude Include="..\..\include\cppunit\TestFailure.h" />
++    <ClInclude Include="..\..\include\cppunit\TestFixture.h" />
++    <ClInclude Include="..\..\include\cppunit\TestLeaf.h" />
++    <ClInclude Include="..\..\include\cppunit\TestListener.h" />
++    <ClInclude Include="..\..\include\cppunit\TestPath.h" />
++    <ClInclude Include="..\..\include\cppunit\TestResult.h" />
++    <ClInclude Include="..\..\include\cppunit\TestRunner.h" />
++    <ClInclude Include="..\..\include\cppunit\TestSuite.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\AutoRegisterSuite.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\HelperMacros.h" />
++    <ClInclude Include="..\..\include\cppunit\TestCaller.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestFactory.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestFactoryRegistry.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestFixtureFactory.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestNamer.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteBuilder.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteBuilderContext.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteFactory.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TypeInfoHelper.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\ExceptionTestCaseDecorator.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\Orthodox.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\RepeatedTest.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestCaseDecorator.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestDecorator.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestSetUp.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\DynamicLibraryManager.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\DynamicLibraryManagerException.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\PlugInManager.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\PlugInParameters.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\TestPlugIn.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\TestPlugInDefaultImpl.h" />
++    <ClInclude Include="..\..\include\cppunit\tools\Algorithm.h" />
++    <ClInclude Include="..\..\include\cppunit\tools\StringTools.h" />
++    <ClInclude Include="..\..\include\cppunit\tools\XmlDocument.h" />
++    <ClInclude Include="..\..\include\cppunit\tools\XmlElement.h" />
++    <ClInclude Include="DefaultProtector.h" />
++    <ClInclude Include="..\..\include\cppunit\Protector.h" />
++    <ClInclude Include="ProtectorChain.h" />
++    <ClInclude Include="ProtectorContext.h" />
++  </ItemGroup>
++  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
++  <ImportGroup Label="ExtensionTargets">
++  </ImportGroup>
+ </Project>
+\ No newline at end of file
+--- cppunit_ref/src/cppunit/cppunit_dll.vcxproj
++++ cppunit/src/cppunit/cppunit_dll.vcxproj
+@@ -1,432 +1,437 @@
+-<?xml version="1.0" encoding="utf-8"?>
+-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+-  <ItemGroup Label="ProjectConfigurations">
+-    <ProjectConfiguration Include="Debug|Win32">
+-      <Configuration>Debug</Configuration>
+-      <Platform>Win32</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Debug|x64">
+-      <Configuration>Debug</Configuration>
+-      <Platform>x64</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Release|Win32">
+-      <Configuration>Release</Configuration>
+-      <Platform>Win32</Platform>
+-    </ProjectConfiguration>
+-    <ProjectConfiguration Include="Release|x64">
+-      <Configuration>Release</Configuration>
+-      <Platform>x64</Platform>
+-    </ProjectConfiguration>
+-  </ItemGroup>
+-  <PropertyGroup Label="Globals">
+-    <SccProjectName />
+-    <SccLocalPath />
+-    <ProjectGuid>{EB329AF7-E267-3B00-09A4-FF1F909E4FB5}</ProjectGuid>
+-  </PropertyGroup>
+-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+-    <ConfigurationType>DynamicLibrary</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+-    <ConfigurationType>DynamicLibrary</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+-    <ConfigurationType>DynamicLibrary</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+-    <ConfigurationType>DynamicLibrary</ConfigurationType>
+-    <UseOfMfc>false</UseOfMfc>
+-    <CharacterSet>MultiByte</CharacterSet>
+-  </PropertyGroup>
+-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+-  <ImportGroup Label="ExtensionSettings">
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+-    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
+-  </ImportGroup>
+-  <PropertyGroup Label="UserMacros" />
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+-    <OutDir>.\DebugDll\</OutDir>
+-    <IntDir>.\DebugDll\</IntDir>
+-    <LinkIncremental>true</LinkIncremental>
+-    <TargetName>cppunitd_dll</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+-    <OutDir>.\DebugDll\</OutDir>
+-    <IntDir>.\DebugDll\</IntDir>
+-    <LinkIncremental>true</LinkIncremental>
+-    <TargetName>cppunitd_dll</TargetName>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+-    <OutDir>.\ReleaseDll\</OutDir>
+-    <IntDir>.\ReleaseDll\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-  </PropertyGroup>
+-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+-    <OutDir>.\ReleaseDll\</OutDir>
+-    <IntDir>.\ReleaseDll\</IntDir>
+-    <LinkIncremental>false</LinkIncremental>
+-  </PropertyGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+-      <FunctionLevelLinking>false</FunctionLevelLinking>
+-      <Optimization>Disabled</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <MinimalRebuild>true</MinimalRebuild>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CPPUNIT_BUILD_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\DebugDll\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\DebugDll\cppunit_dll.pch</PrecompiledHeaderOutputFile>
+-      <ObjectFileName>.\DebugDll\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\DebugDll\</ProgramDataBaseFileName>
+-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-    </ClCompile>
+-    <PostBuildEvent>
++<?xml version="1.0" encoding="utf-8"?>
++<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
++  <ItemGroup Label="ProjectConfigurations">
++    <ProjectConfiguration Include="Debug|Win32">
++      <Configuration>Debug</Configuration>
++      <Platform>Win32</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Debug|x64">
++      <Configuration>Debug</Configuration>
++      <Platform>x64</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Release|Win32">
++      <Configuration>Release</Configuration>
++      <Platform>Win32</Platform>
++    </ProjectConfiguration>
++    <ProjectConfiguration Include="Release|x64">
++      <Configuration>Release</Configuration>
++      <Platform>x64</Platform>
++    </ProjectConfiguration>
++  </ItemGroup>
++  <PropertyGroup Label="Globals">
++    <SccProjectName />
++    <SccLocalPath />
++    <ProjectGuid>{EB329AF7-E267-3B00-09A4-FF1F909E4FB5}</ProjectGuid>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
++  </PropertyGroup>
++  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
++    <ConfigurationType>DynamicLibrary</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
++    <ConfigurationType>DynamicLibrary</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
++    <ConfigurationType>DynamicLibrary</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
++    <ConfigurationType>DynamicLibrary</ConfigurationType>
++    <UseOfMfc>false</UseOfMfc>
++    <CharacterSet>MultiByte</CharacterSet>
++    <PlatformToolset>v141</PlatformToolset>
++  </PropertyGroup>
++  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
++  <ImportGroup Label="ExtensionSettings">
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
++    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
++    <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
++  </ImportGroup>
++  <PropertyGroup Label="UserMacros" />
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++    <OutDir>.\DebugDll\</OutDir>
++    <IntDir>.\DebugDll\</IntDir>
++    <LinkIncremental>true</LinkIncremental>
++    <TargetName>cppunitd_dll</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++    <OutDir>.\DebugDll\</OutDir>
++    <IntDir>.\DebugDll\</IntDir>
++    <LinkIncremental>true</LinkIncremental>
++    <TargetName>cppunitd_dll</TargetName>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++    <OutDir>.\ReleaseDll\</OutDir>
++    <IntDir>.\ReleaseDll\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++  </PropertyGroup>
++  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++    <OutDir>.\ReleaseDll\</OutDir>
++    <IntDir>.\ReleaseDll\</IntDir>
++    <LinkIncremental>false</LinkIncremental>
++  </PropertyGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
++      <FunctionLevelLinking>false</FunctionLevelLinking>
++      <Optimization>Disabled</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <MinimalRebuild>true</MinimalRebuild>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CPPUNIT_BUILD_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\DebugDll\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\DebugDll\cppunit_dll.pch</PrecompiledHeaderOutputFile>
++      <ObjectFileName>.\DebugDll\</ObjectFileName>
++      <ProgramDataBaseFileName>.\DebugDll\</ProgramDataBaseFileName>
++      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++    </ClCompile>
++    <PostBuildEvent>
+       <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).dll
+-copy "$(TargetDir)$(TargetName).lib" ..\..\lib\$(TargetName).lib</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <TypeLibraryName>.\DebugDll\cppunit_dll.tlb</TypeLibraryName>
+-      <MkTypLibCompatible>true</MkTypLibCompatible>
+-      <TargetEnvironment>Win32</TargetEnvironment>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\DebugDll\cppunit_dll.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <LinkDLL>true</LinkDLL>
+-      <GenerateDebugInformation>true</GenerateDebugInformation>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>DebugDll\cppunitd_dll.dll</OutputFile>
+-      <ImportLibrary>.\DebugDll\cppunitd_dll.lib</ImportLibrary>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
+-      <FunctionLevelLinking>false</FunctionLevelLinking>
+-      <Optimization>Disabled</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CPPUNIT_BUILD_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\DebugDll\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\DebugDll\cppunit_dll.pch</PrecompiledHeaderOutputFile>
+-      <ObjectFileName>.\DebugDll\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\DebugDll\</ProgramDataBaseFileName>
+-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+-    </ClCompile>
+-    <PostBuildEvent>
++copy "$(TargetDir)$(TargetName).lib" ..\..\lib\$(TargetName).lib</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <TypeLibraryName>.\DebugDll\cppunit_dll.tlb</TypeLibraryName>
++      <MkTypLibCompatible>true</MkTypLibCompatible>
++      <TargetEnvironment>Win32</TargetEnvironment>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\DebugDll\cppunit_dll.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <LinkDLL>true</LinkDLL>
++      <GenerateDebugInformation>true</GenerateDebugInformation>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>DebugDll\cppunitd_dll.dll</OutputFile>
++      <ImportLibrary>.\DebugDll\cppunitd_dll.lib</ImportLibrary>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>Default</InlineFunctionExpansion>
++      <FunctionLevelLinking>false</FunctionLevelLinking>
++      <Optimization>Disabled</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CPPUNIT_BUILD_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\DebugDll\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\DebugDll\cppunit_dll.pch</PrecompiledHeaderOutputFile>
++      <ObjectFileName>.\DebugDll\</ObjectFileName>
++      <ProgramDataBaseFileName>.\DebugDll\</ProgramDataBaseFileName>
++      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
++    </ClCompile>
++    <PostBuildEvent>
+       <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).dll
+-copy "$(TargetDir)$(TargetName).lib" ..\..\lib\$(TargetName).lib</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <TypeLibraryName>.\DebugDll\cppunit_dll.tlb</TypeLibraryName>
+-      <MkTypLibCompatible>true</MkTypLibCompatible>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\DebugDll\cppunit_dll.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <LinkDLL>true</LinkDLL>
+-      <GenerateDebugInformation>true</GenerateDebugInformation>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>DebugDll\cppunitd_dll.dll</OutputFile>
+-      <ImportLibrary>.\DebugDll\cppunitd_dll.lib</ImportLibrary>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+-      <StringPooling>true</StringPooling>
+-      <FunctionLevelLinking>true</FunctionLevelLinking>
+-      <Optimization>MaxSpeed</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CPPUNIT_BUILD_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\ReleaseDll\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\ReleaseDll\cppunit_dll.pch</PrecompiledHeaderOutputFile>
+-      <ObjectFileName>.\ReleaseDll\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\ReleaseDll\</ProgramDataBaseFileName>
+-    </ClCompile>
+-    <PostBuildEvent>
++copy "$(TargetDir)$(TargetName).lib" ..\..\lib\$(TargetName).lib</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <TypeLibraryName>.\DebugDll\cppunit_dll.tlb</TypeLibraryName>
++      <MkTypLibCompatible>true</MkTypLibCompatible>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\DebugDll\cppunit_dll.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <LinkDLL>true</LinkDLL>
++      <GenerateDebugInformation>true</GenerateDebugInformation>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>DebugDll\cppunitd_dll.dll</OutputFile>
++      <ImportLibrary>.\DebugDll\cppunitd_dll.lib</ImportLibrary>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
++      <StringPooling>true</StringPooling>
++      <FunctionLevelLinking>true</FunctionLevelLinking>
++      <Optimization>MaxSpeed</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <DebugInformationFormat>OldStyle</DebugInformationFormat>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CPPUNIT_BUILD_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\ReleaseDll\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\ReleaseDll\cppunit_dll.pch</PrecompiledHeaderOutputFile>
++      <ObjectFileName>.\ReleaseDll\</ObjectFileName>
++      <ProgramDataBaseFileName>.\ReleaseDll\</ProgramDataBaseFileName>
++    </ClCompile>
++    <PostBuildEvent>
+       <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).dll
+-copy "$(TargetDir)$(TargetName).lib" ..\..\lib\$(TargetName).lib</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <TypeLibraryName>.\ReleaseDll\cppunit_dll.tlb</TypeLibraryName>
+-      <MkTypLibCompatible>true</MkTypLibCompatible>
+-      <TargetEnvironment>Win32</TargetEnvironment>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\ReleaseDll\cppunit_dll.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <LinkDLL>true</LinkDLL>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>.\ReleaseDll\cppunit_dll.dll</OutputFile>
+-      <ImportLibrary>.\ReleaseDll\cppunit_dll.lib</ImportLibrary>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+-    <ClCompile>
+-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+-      <StringPooling>true</StringPooling>
+-      <FunctionLevelLinking>true</FunctionLevelLinking>
+-      <Optimization>MaxSpeed</Optimization>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <WarningLevel>Level3</WarningLevel>
+-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+-      <DebugInformationFormat>OldStyle</DebugInformationFormat>
+-      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CPPUNIT_BUILD_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <AssemblerListingLocation>.\ReleaseDll\</AssemblerListingLocation>
+-      <PrecompiledHeaderOutputFile>.\ReleaseDll\cppunit_dll.pch</PrecompiledHeaderOutputFile>
+-      <ObjectFileName>.\ReleaseDll\</ObjectFileName>
+-      <ProgramDataBaseFileName>.\ReleaseDll\</ProgramDataBaseFileName>
+-    </ClCompile>
+-    <PostBuildEvent>
++copy "$(TargetDir)$(TargetName).lib" ..\..\lib\$(TargetName).lib</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <TypeLibraryName>.\ReleaseDll\cppunit_dll.tlb</TypeLibraryName>
++      <MkTypLibCompatible>true</MkTypLibCompatible>
++      <TargetEnvironment>Win32</TargetEnvironment>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\ReleaseDll\cppunit_dll.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <LinkDLL>true</LinkDLL>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>.\ReleaseDll\cppunit_dll.dll</OutputFile>
++      <ImportLibrary>.\ReleaseDll\cppunit_dll.lib</ImportLibrary>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
++    <ClCompile>
++      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
++      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
++      <StringPooling>true</StringPooling>
++      <FunctionLevelLinking>true</FunctionLevelLinking>
++      <Optimization>MaxSpeed</Optimization>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <WarningLevel>Level3</WarningLevel>
++      <RuntimeTypeInfo>true</RuntimeTypeInfo>
++      <DebugInformationFormat>OldStyle</DebugInformationFormat>
++      <AdditionalIncludeDirectories>..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
++      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CPPUNIT_BUILD_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <AssemblerListingLocation>.\ReleaseDll\</AssemblerListingLocation>
++      <PrecompiledHeaderOutputFile>.\ReleaseDll\cppunit_dll.pch</PrecompiledHeaderOutputFile>
++      <ObjectFileName>.\ReleaseDll\</ObjectFileName>
++      <ProgramDataBaseFileName>.\ReleaseDll\</ProgramDataBaseFileName>
++    </ClCompile>
++    <PostBuildEvent>
+       <Command>copy "$(TargetPath)" ..\..\lib\$(TargetName).dll
+-copy "$(TargetDir)$(TargetName).lib" ..\..\lib\$(TargetName).lib</Command>
+-      <Message>Copying target to lib/</Message>
+-    </PostBuildEvent>
+-    <Midl>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-      <TypeLibraryName>.\ReleaseDll\cppunit_dll.tlb</TypeLibraryName>
+-      <MkTypLibCompatible>true</MkTypLibCompatible>
+-    </Midl>
+-    <ResourceCompile>
+-      <Culture>0x040c</Culture>
+-      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+-    </ResourceCompile>
+-    <Bscmake>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <OutputFile>.\ReleaseDll\cppunit_dll.bsc</OutputFile>
+-    </Bscmake>
+-    <Link>
+-      <SuppressStartupBanner>true</SuppressStartupBanner>
+-      <LinkDLL>true</LinkDLL>
+-      <SubSystem>Console</SubSystem>
+-      <OutputFile>.\ReleaseDll\cppunit_dll.dll</OutputFile>
+-      <ImportLibrary>.\ReleaseDll\cppunit_dll.lib</ImportLibrary>
+-      <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+-    </Link>
+-  </ItemDefinitionGroup>
+-  <ItemGroup>
+-    <ClCompile Include="DllMain.cpp" />
+-    <ClCompile Include="RepeatedTest.cpp" />
+-    <ClCompile Include="TestCaseDecorator.cpp" />
+-    <ClCompile Include="TestDecorator.cpp" />
+-    <ClCompile Include="TestSetUp.cpp" />
+-    <ClCompile Include="TestFactoryRegistry.cpp" />
+-    <ClCompile Include="TestNamer.cpp" />
+-    <ClCompile Include="TestSuiteBuilderContext.cpp" />
+-    <ClCompile Include="TypeInfoHelper.cpp" />
+-    <ClCompile Include="AdditionalMessage.cpp" />
+-    <ClCompile Include="Asserter.cpp" />
+-    <ClCompile Include="Exception.cpp" />
+-    <ClCompile Include="Message.cpp" />
+-    <ClCompile Include="SourceLine.cpp" />
+-    <ClCompile Include="SynchronizedObject.cpp" />
+-    <ClCompile Include="Test.cpp" />
+-    <ClCompile Include="TestAssert.cpp" />
+-    <ClCompile Include="TestCase.cpp" />
+-    <ClCompile Include="TestComposite.cpp" />
+-    <ClCompile Include="TestFailure.cpp" />
+-    <ClCompile Include="TestLeaf.cpp" />
+-    <ClCompile Include="TestPath.cpp" />
+-    <ClCompile Include="TestResult.cpp" />
+-    <ClCompile Include="TestRunner.cpp" />
+-    <ClCompile Include="TestSuite.cpp" />
+-    <ClCompile Include="CompilerOutputter.cpp" />
+-    <ClCompile Include="TestResultCollector.cpp" />
+-    <ClCompile Include="TextOutputter.cpp" />
+-    <ClCompile Include="XmlOutputter.cpp" />
+-    <ClCompile Include="XmlOutputterHook.cpp" />
+-    <ClCompile Include="TextTestRunner.cpp" />
+-    <ClCompile Include="BriefTestProgressListener.cpp" />
+-    <ClCompile Include="TestSuccessListener.cpp" />
+-    <ClCompile Include="TextTestProgressListener.cpp" />
+-    <ClCompile Include="TextTestResult.cpp" />
+-    <ClCompile Include="BeosDynamicLibraryManager.cpp" />
+-    <ClCompile Include="DynamicLibraryManager.cpp" />
+-    <ClCompile Include="DynamicLibraryManagerException.cpp" />
+-    <ClCompile Include="PlugInManager.cpp" />
+-    <ClCompile Include="PlugInParameters.cpp" />
+-    <ClCompile Include="TestPlugInDefaultImpl.cpp" />
+-    <ClCompile Include="UnixDynamicLibraryManager.cpp" />
+-    <ClCompile Include="Win32DynamicLibraryManager.cpp" />
+-    <ClCompile Include="StringTools.cpp" />
+-    <ClCompile Include="XmlDocument.cpp" />
+-    <ClCompile Include="XmlElement.cpp" />
+-    <ClCompile Include="DefaultProtector.cpp" />
+-    <ClCompile Include="Protector.cpp" />
+-    <ClCompile Include="ProtectorChain.cpp" />
+-  </ItemGroup>
+-  <ItemGroup>
+-    <ClInclude Include="..\..\include\cppunit\extensions\ExceptionTestCaseDecorator.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\Orthodox.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\RepeatedTest.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestCaseDecorator.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestDecorator.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestSetUp.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\AutoRegisterSuite.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\HelperMacros.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestCaller.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestFactory.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestFactoryRegistry.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestFixtureFactory.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestNamer.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteBuilder.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteBuilderContext.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteFactory.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\TypeInfoHelper.h" />
+-    <ClInclude Include="..\..\include\cppunit\AdditionalMessage.h" />
+-    <ClInclude Include="..\..\include\cppunit\Asserter.h" />
+-    <ClInclude Include="..\..\include\cppunit\Exception.h" />
+-    <ClInclude Include="..\..\include\cppunit\Message.h" />
+-    <ClInclude Include="..\..\include\cppunit\SourceLine.h" />
+-    <ClInclude Include="..\..\include\cppunit\SynchronizedObject.h" />
+-    <ClInclude Include="..\..\include\cppunit\Test.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestAssert.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestCase.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestComposite.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestFailure.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestFixture.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestLeaf.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestListener.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestPath.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestResult.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestRunner.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestSuite.h" />
+-    <ClInclude Include="..\..\include\cppunit\CompilerOutputter.h" />
+-    <ClInclude Include="..\..\include\cppunit\Outputter.h" />
+-    <ClInclude Include="..\..\include\cppunit\TestResultCollector.h" />
+-    <ClInclude Include="..\..\include\cppunit\TextOutputter.h" />
+-    <ClInclude Include="..\..\include\cppunit\XmlOutputter.h" />
+-    <ClInclude Include="..\..\include\cppunit\XmlOutputterHook.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\config-bcb5.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\config-mac.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\config-msvc6.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\CppUnitApi.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\CppUnitDeque.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\CppUnitMap.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\CppUnitSet.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\CppUnitStack.h" />
+-    <ClInclude Include="..\..\include\cppunit\portability\CppUnitVector.h" />
+-    <ClInclude Include="..\..\include\cppunit\Portability.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\SelectDllLoader.h" />
+-    <ClInclude Include="..\..\include\cppunit\config\SourcePrefix.h" />
+-    <ClInclude Include="..\..\include\cppunit\ui\text\TestRunner.h" />
+-    <ClInclude Include="..\..\include\cppunit\TextTestRunner.h" />
+-    <ClInclude Include="..\..\include\cppunit\ui\text\TextTestRunner.h" />
+-    <ClInclude Include="..\..\include\cppunit\BriefTestProgressListener.h" />
+-    <ClInclude Include="..\..\include\cppunit\TextTestProgressListener.h" />
+-    <ClInclude Include="..\..\include\cppunit\TextTestResult.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\DynamicLibraryManager.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\DynamicLibraryManagerException.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\PlugInManager.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\PlugInParameters.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\TestPlugIn.h" />
+-    <ClInclude Include="..\..\include\cppunit\plugin\TestPlugInDefaultImpl.h" />
+-    <ClInclude Include="..\..\include\cppunit\tools\StringTools.h" />
+-    <ClInclude Include="..\..\include\cppunit\tools\XmlDocument.h" />
+-    <ClInclude Include="..\..\include\cppunit\tools\XmlElement.h" />
+-    <ClInclude Include="DefaultProtector.h" />
+-    <ClInclude Include="..\..\include\cppunit\Protector.h" />
+-    <ClInclude Include="ProtectorChain.h" />
+-    <ClInclude Include="ProtectorContext.h" />
+-    <ClInclude Include="..\..\include\cppunit\extensions\XmlInputHelper.h" />
+-  </ItemGroup>
+-  <ItemGroup>
+-    <CustomBuild Include="..\..\ChangeLog">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\doc\cookbook.dox">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\doc\FAQ">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\NEWS">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\doc\other_documentation.dox">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\TODO">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="..\..\INSTALL-WIN32.txt" />
+-    <CustomBuild Include="..\..\include\cppunit\Makefile.am">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-    <CustomBuild Include="Makefile.am">
+-      <FileType>Document</FileType>
+-    </CustomBuild>
+-  </ItemGroup>
+-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+-  <ImportGroup Label="ExtensionTargets">
+-  </ImportGroup>
++copy "$(TargetDir)$(TargetName).lib" ..\..\lib\$(TargetName).lib</Command>
++      <Message>Copying target to lib/</Message>
++    </PostBuildEvent>
++    <Midl>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++      <TypeLibraryName>.\ReleaseDll\cppunit_dll.tlb</TypeLibraryName>
++      <MkTypLibCompatible>true</MkTypLibCompatible>
++    </Midl>
++    <ResourceCompile>
++      <Culture>0x040c</Culture>
++      <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
++    </ResourceCompile>
++    <Bscmake>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <OutputFile>.\ReleaseDll\cppunit_dll.bsc</OutputFile>
++    </Bscmake>
++    <Link>
++      <SuppressStartupBanner>true</SuppressStartupBanner>
++      <LinkDLL>true</LinkDLL>
++      <SubSystem>Console</SubSystem>
++      <OutputFile>.\ReleaseDll\cppunit_dll.dll</OutputFile>
++      <ImportLibrary>.\ReleaseDll\cppunit_dll.lib</ImportLibrary>
++      <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
++    </Link>
++  </ItemDefinitionGroup>
++  <ItemGroup>
++    <ClCompile Include="DllMain.cpp" />
++    <ClCompile Include="RepeatedTest.cpp" />
++    <ClCompile Include="TestCaseDecorator.cpp" />
++    <ClCompile Include="TestDecorator.cpp" />
++    <ClCompile Include="TestSetUp.cpp" />
++    <ClCompile Include="TestFactoryRegistry.cpp" />
++    <ClCompile Include="TestNamer.cpp" />
++    <ClCompile Include="TestSuiteBuilderContext.cpp" />
++    <ClCompile Include="TypeInfoHelper.cpp" />
++    <ClCompile Include="AdditionalMessage.cpp" />
++    <ClCompile Include="Asserter.cpp" />
++    <ClCompile Include="Exception.cpp" />
++    <ClCompile Include="Message.cpp" />
++    <ClCompile Include="SourceLine.cpp" />
++    <ClCompile Include="SynchronizedObject.cpp" />
++    <ClCompile Include="Test.cpp" />
++    <ClCompile Include="TestAssert.cpp" />
++    <ClCompile Include="TestCase.cpp" />
++    <ClCompile Include="TestComposite.cpp" />
++    <ClCompile Include="TestFailure.cpp" />
++    <ClCompile Include="TestLeaf.cpp" />
++    <ClCompile Include="TestPath.cpp" />
++    <ClCompile Include="TestResult.cpp" />
++    <ClCompile Include="TestRunner.cpp" />
++    <ClCompile Include="TestSuite.cpp" />
++    <ClCompile Include="CompilerOutputter.cpp" />
++    <ClCompile Include="TestResultCollector.cpp" />
++    <ClCompile Include="TextOutputter.cpp" />
++    <ClCompile Include="XmlOutputter.cpp" />
++    <ClCompile Include="XmlOutputterHook.cpp" />
++    <ClCompile Include="TextTestRunner.cpp" />
++    <ClCompile Include="BriefTestProgressListener.cpp" />
++    <ClCompile Include="TestSuccessListener.cpp" />
++    <ClCompile Include="TextTestProgressListener.cpp" />
++    <ClCompile Include="TextTestResult.cpp" />
++    <ClCompile Include="BeosDynamicLibraryManager.cpp" />
++    <ClCompile Include="DynamicLibraryManager.cpp" />
++    <ClCompile Include="DynamicLibraryManagerException.cpp" />
++    <ClCompile Include="PlugInManager.cpp" />
++    <ClCompile Include="PlugInParameters.cpp" />
++    <ClCompile Include="TestPlugInDefaultImpl.cpp" />
++    <ClCompile Include="UnixDynamicLibraryManager.cpp" />
++    <ClCompile Include="Win32DynamicLibraryManager.cpp" />
++    <ClCompile Include="StringTools.cpp" />
++    <ClCompile Include="XmlDocument.cpp" />
++    <ClCompile Include="XmlElement.cpp" />
++    <ClCompile Include="DefaultProtector.cpp" />
++    <ClCompile Include="Protector.cpp" />
++    <ClCompile Include="ProtectorChain.cpp" />
++  </ItemGroup>
++  <ItemGroup>
++    <ClInclude Include="..\..\include\cppunit\extensions\ExceptionTestCaseDecorator.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\Orthodox.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\RepeatedTest.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestCaseDecorator.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestDecorator.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestSetUp.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\AutoRegisterSuite.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\HelperMacros.h" />
++    <ClInclude Include="..\..\include\cppunit\TestCaller.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestFactory.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestFactoryRegistry.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestFixtureFactory.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestNamer.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteBuilder.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteBuilderContext.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TestSuiteFactory.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\TypeInfoHelper.h" />
++    <ClInclude Include="..\..\include\cppunit\AdditionalMessage.h" />
++    <ClInclude Include="..\..\include\cppunit\Asserter.h" />
++    <ClInclude Include="..\..\include\cppunit\Exception.h" />
++    <ClInclude Include="..\..\include\cppunit\Message.h" />
++    <ClInclude Include="..\..\include\cppunit\SourceLine.h" />
++    <ClInclude Include="..\..\include\cppunit\SynchronizedObject.h" />
++    <ClInclude Include="..\..\include\cppunit\Test.h" />
++    <ClInclude Include="..\..\include\cppunit\TestAssert.h" />
++    <ClInclude Include="..\..\include\cppunit\TestCase.h" />
++    <ClInclude Include="..\..\include\cppunit\TestComposite.h" />
++    <ClInclude Include="..\..\include\cppunit\TestFailure.h" />
++    <ClInclude Include="..\..\include\cppunit\TestFixture.h" />
++    <ClInclude Include="..\..\include\cppunit\TestLeaf.h" />
++    <ClInclude Include="..\..\include\cppunit\TestListener.h" />
++    <ClInclude Include="..\..\include\cppunit\TestPath.h" />
++    <ClInclude Include="..\..\include\cppunit\TestResult.h" />
++    <ClInclude Include="..\..\include\cppunit\TestRunner.h" />
++    <ClInclude Include="..\..\include\cppunit\TestSuite.h" />
++    <ClInclude Include="..\..\include\cppunit\CompilerOutputter.h" />
++    <ClInclude Include="..\..\include\cppunit\Outputter.h" />
++    <ClInclude Include="..\..\include\cppunit\TestResultCollector.h" />
++    <ClInclude Include="..\..\include\cppunit\TextOutputter.h" />
++    <ClInclude Include="..\..\include\cppunit\XmlOutputter.h" />
++    <ClInclude Include="..\..\include\cppunit\XmlOutputterHook.h" />
++    <ClInclude Include="..\..\include\cppunit\config\config-bcb5.h" />
++    <ClInclude Include="..\..\include\cppunit\config\config-mac.h" />
++    <ClInclude Include="..\..\include\cppunit\config\config-msvc6.h" />
++    <ClInclude Include="..\..\include\cppunit\config\CppUnitApi.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\CppUnitDeque.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\CppUnitMap.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\CppUnitSet.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\CppUnitStack.h" />
++    <ClInclude Include="..\..\include\cppunit\portability\CppUnitVector.h" />
++    <ClInclude Include="..\..\include\cppunit\Portability.h" />
++    <ClInclude Include="..\..\include\cppunit\config\SelectDllLoader.h" />
++    <ClInclude Include="..\..\include\cppunit\config\SourcePrefix.h" />
++    <ClInclude Include="..\..\include\cppunit\ui\text\TestRunner.h" />
++    <ClInclude Include="..\..\include\cppunit\TextTestRunner.h" />
++    <ClInclude Include="..\..\include\cppunit\ui\text\TextTestRunner.h" />
++    <ClInclude Include="..\..\include\cppunit\BriefTestProgressListener.h" />
++    <ClInclude Include="..\..\include\cppunit\TextTestProgressListener.h" />
++    <ClInclude Include="..\..\include\cppunit\TextTestResult.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\DynamicLibraryManager.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\DynamicLibraryManagerException.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\PlugInManager.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\PlugInParameters.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\TestPlugIn.h" />
++    <ClInclude Include="..\..\include\cppunit\plugin\TestPlugInDefaultImpl.h" />
++    <ClInclude Include="..\..\include\cppunit\tools\StringTools.h" />
++    <ClInclude Include="..\..\include\cppunit\tools\XmlDocument.h" />
++    <ClInclude Include="..\..\include\cppunit\tools\XmlElement.h" />
++    <ClInclude Include="DefaultProtector.h" />
++    <ClInclude Include="..\..\include\cppunit\Protector.h" />
++    <ClInclude Include="ProtectorChain.h" />
++    <ClInclude Include="ProtectorContext.h" />
++    <ClInclude Include="..\..\include\cppunit\extensions\XmlInputHelper.h" />
++  </ItemGroup>
++  <ItemGroup>
++    <CustomBuild Include="..\..\ChangeLog">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\doc\cookbook.dox">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\doc\FAQ">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\NEWS">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\doc\other_documentation.dox">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\TODO">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="..\..\INSTALL-WIN32.txt" />
++    <CustomBuild Include="..\..\include\cppunit\Makefile.am">
++      <FileType>Document</FileType>
++    </CustomBuild>
++    <CustomBuild Include="Makefile.am">
++      <FileType>Document</FileType>
++    </CustomBuild>
++  </ItemGroup>
++  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
++  <ImportGroup Label="ExtensionTargets">
++  </ImportGroup>
+ </Project>
+\ No newline at end of file
diff --git a/products/patches/doxygen-1.8.3.1.patch b/products/patches/doxygen-1.8.3.1.patch
new file mode 100755 (executable)
index 0000000..64930bd
--- /dev/null
@@ -0,0 +1,65 @@
+diff -Naur doxygen-1.8.3.1_SRC_INIT/src/resize.js doxygen-1.8.3.1_SRC_MODIF/src/resize.js
+--- doxygen-1.8.3.1_SRC_INIT/src/resize.js     2013-01-05 19:17:43.000000000 +0400
++++ doxygen-1.8.3.1_SRC_MODIF/src/resize.js    2013-03-15 18:23:33.000000000 +0400
+@@ -1,5 +1,6 @@
+ var cookie_namespace = 'doxygen'; 
+ var sidenav,navtree,content,header;
++var navrows = new Array();
+ function readCookie(cookie) 
+ {
+@@ -39,24 +40,42 @@
+   var windowWidth = $(window).width() + "px";
+   var sidenavWidth = $(sidenav).outerWidth();
+   content.css({marginLeft:parseInt(sidenavWidth)+6+"px"}); //account for 6px-wide handle-bar
++  for(var i = 1; i <= 4;i++) {                                                                                                                                                                                                                                           
++    if(navrows[i] != null)                                                                                                                                                                                                                                              
++    navrows[i].css({marginLeft:parseInt(sidenavWidth)+6+"px"}); //account for 6px-wide handle-bar                                                                                                                                                                   
++    navrows[i].css({width:windowWidth-parseInt(sidenavWidth) - 6 + "px"});                                                                                                                                                                                          
++  }                                                                                                                                                                                                                                                                               
+   writeCookie('width',sidenavWidth, null);
+ }
+ function restoreWidth(navWidth)
+ {
+-  var windowWidth = $(window).width() + "px";
++  var windowWidth = $(window).width() + "px";  
+   content.css({marginLeft:parseInt(navWidth)+6+"px"});
+   sidenav.css({width:navWidth + "px"});
++  for(var i = 1; i <= 4;i++) {                                                                                                                                                                                                                                             
++   if(navrows[i] != null)                                                                                                                                                                                                                                                 
++     navrows[i].css({marginLeft:parseInt(navWidth)+6+"px"});                                                                                                                                                                                                             
++     navrows[i].css({width:windowWidth-parseInt(navWidth) - 6 + "px"});                                                                                                                                                                                                  
++  }     
+ }
+ function resizeHeight() 
+ {
+   var headerHeight = header.outerHeight();
+   var footerHeight = footer.outerHeight();
++  var navrowsH = 0;                                                                                                                                                                                                                                                        
++  for(var i = 1; i <= 4;i++) {                                                                                                                                                                                                                                             
++   if(navrows[i] != null)                                                                                                                                                                                                                                                 
++     navrowsH = navrowsH + navrows[i].height();                                                                                                                                                                                                                          
++  }
+   var windowHeight = $(window).height() - headerHeight - footerHeight;
++  var treeH = windowHeight + navrowsH;
+   content.css({height:windowHeight + "px"});
+   navtree.css({height:windowHeight + "px"});
+   sidenav.css({height:windowHeight + "px",top: headerHeight+"px"});
++  navtree.css({height:treeH +"px"});
++  sidenav.css({height:treeH +"px", top: headerHeight+"px"});
+ }
+ function initResizable()
+@@ -66,6 +85,10 @@
+   content = $("#doc-content");
+   navtree = $("#nav-tree");
+   footer  = $("#nav-path");
++  for(var i = 1; i <= 4;i++) {                                                                                                                                                                                                                                             
++    navrows[i] = $("#navrow"+i);                                                                                                                                                                                                                                           
++  }
++    
+   $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } });
+   $(window).resize(function() { resizeHeight(); });
+   var width = readCookie('width');
diff --git a/products/patches/doxygen_compatibility_flex260.patch b/products/patches/doxygen_compatibility_flex260.patch
new file mode 100644 (file)
index 0000000..255e207
--- /dev/null
@@ -0,0 +1,77 @@
+diff -rupN doxygen_old/src/code.l doxygen_new/src/code.l
+--- doxygen_old/src/code.l     2013-01-05 16:17:40.000000000 +0100
++++ doxygen_new/src/code.l     2016-07-18 09:58:52.775994675 +0200
+@@ -3659,7 +3659,7 @@ void codeFreeScanner()
+ extern "C" { // some bogus code to keep the compiler happy
+   void codeYYdummy() { yy_flex_realloc(0,0); } 
+ }
+-#elif YY_FLEX_SUBMINOR_VERSION<33
++#elif YY_FLEX_MINOR_VERSION<6 && YY_FLEX_SUBMINOR_VERSION<33
+ #error "You seem to be using a version of flex newer than 2.5.4 but older than 2.5.33. These versions do NOT work with doxygen! Please use version <=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!"
+ #endif
+diff -rupN doxygen_old/src/commentscan.l doxygen_new/src/commentscan.l
+--- doxygen_old/src/commentscan.l      2013-01-18 22:14:15.000000000 +0100
++++ doxygen_new/src/commentscan.l      2016-07-18 10:01:12.471994525 +0200
+@@ -1049,8 +1049,8 @@ RCSTAG    "$"{ID}":"[^\n$]+"$"
+                                             // but we need to know the position in the input buffer where this 
+                                             // rule matched.
+                                             // for flex 2.5.33+ we should use YY_CURRENT_BUFFER_LVALUE
+-#if YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33
+-                                            inputPosition=prevPosition + (int)(yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);
++#if YY_FLEX_MINOR_VERSION>5 || YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33
++                                              inputPosition=prevPosition + (int)(yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf);
+ #else
+                                             inputPosition=prevPosition + (int)(yy_bp - yy_current_buffer->yy_ch_buf);
+ #endif
+@@ -1111,8 +1111,8 @@ RCSTAG    "$"{ID}":"[^\n$]+"$"
+                                           g_memberGroupHeader.resize(0);
+                                         parseMore=TRUE;
+                                           needNewEntry = TRUE;
+-#if YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33
+-                                        inputPosition=prevPosition + (int)(yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf) + strlen(yytext);
++#if YY_FLEX_MINOR_VERSION>5 || YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33                                         
++                                        inputPosition=prevPosition + (int)(yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf) + strlen(yytext);
+ #else
+                                         inputPosition=prevPosition + (int)(yy_bp - yy_current_buffer->yy_ch_buf) + strlen(yytext);
+ #endif
+diff -rupN doxygen_old/src/fortrancode.l doxygen_new/src/fortrancode.l
+--- doxygen_old/src/fortrancode.l      2013-01-15 21:14:20.000000000 +0100
++++ doxygen_new/src/fortrancode.l      2016-07-18 10:01:55.319994479 +0200
+@@ -1184,7 +1184,7 @@ void parseFortranCode(CodeOutputInterfac
+ extern "C" { // some bogus code to keep the compiler happy
+   void fcodeYYdummy() { yy_flex_realloc(0,0); } 
+ }
+-#elif YY_FLEX_SUBMINOR_VERSION<33
++#elif YY_FLEX_MINOR_VERSION<6 && YY_FLEX_SUBMINOR_VERSION<33
+ #error "You seem to be using a version of flex newer than 2.5.4 but older than 2.5.33. These versions do NOT work with doxygen! Please use version <=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!"
+ #else
+ extern "C" { // some bogus code to keep the compiler happy
+diff -rupN doxygen_old/src/pycode.l doxygen_new/src/pycode.l
+--- doxygen_old/src/pycode.l   2013-01-05 16:17:43.000000000 +0100
++++ doxygen_new/src/pycode.l   2016-07-18 10:19:39.687993338 +0200
+@@ -1502,11 +1502,9 @@ void parsePythonCode(CodeOutputInterface
+ }
+-#if !defined(YY_FLEX_SUBMINOR_VERSION) 
++#if YY_FLEX_MINOR_VERSION<6 && YY_FLEX_SUBMINOR_VERSION<33
+ extern "C" { // some bogus code to keep the compiler happy
+   void pycodeYYdummy() { yy_flex_realloc(0,0); } 
+ }
+-#elif YY_FLEX_SUBMINOR_VERSION<33
+-#error "You seem to be using a version of flex newer than 2.5.4. These are currently incompatible with 2.5.4, and do NOT work with doxygen! Please use version 2.5.4 or expect things to be parsed wrongly! A bug report has been submitted (#732132)."
+ #endif
+diff -rupN doxygen_old/src/vhdlcode.l doxygen_new/src/vhdlcode.l
+--- doxygen_old/src/vhdlcode.l 2013-01-05 16:17:44.000000000 +0100
++++ doxygen_new/src/vhdlcode.l 2016-07-18 10:03:28.055994379 +0200
+@@ -1606,7 +1606,7 @@ void codeFreeVhdlScanner()
+ extern "C" { // some bogus code to keep the compiler happy
+   void vhdlcodeYYdummy() { yy_flex_realloc(0,0); } 
+ }
+-#elif YY_FLEX_SUBMINOR_VERSION<33
++#elif YY_FLEX_MINOR_VERSION<6 && YY_FLEX_SUBMINOR_VERSION<33
+ #error "You seem to be using a version of flex newer than 2.5.4 but older than 2.5.33. These versions do NOT work with doxygen! Please use version <=2.5.4 or >=2.5.33 or expect things to be parsed wrongly!"
+ #endif
diff --git a/products/patches/embree-3.5.2-centos6.patch b/products/patches/embree-3.5.2-centos6.patch
new file mode 100644 (file)
index 0000000..cf8a96e
--- /dev/null
@@ -0,0 +1,16 @@
+diff -Naur embree_ref/common/sys/alloc.cpp embree/common/sys/alloc.cpp
+--- embree_ref/common/sys/alloc.cpp    2019-07-22 14:41:16.045958480 +0200
++++ embree/common/sys/alloc.cpp        2019-07-22 14:42:13.162987513 +0200
+@@ -22,7 +22,11 @@
+ ////////////////////////////////////////////////////////////////////////////////
+ /// All Platforms
+ ////////////////////////////////////////////////////////////////////////////////
+-  
++
++#ifndef MAP_HUGETLB
++#define MAP_HUGETLB     0x40000         /* create a huge page mapping */
++#endif
++ 
+ namespace embree
+ {
+   void* alignedMalloc(size_t size, size_t align) 
diff --git a/products/patches/enable-windows-plugin-compilation.patch b/products/patches/enable-windows-plugin-compilation.patch
new file mode 100755 (executable)
index 0000000..2b19284
--- /dev/null
@@ -0,0 +1,12 @@
+diff -pruN Python-ORIG/Lib/distutils/msvc9compiler.py Python-2.7.3/Lib/distutils/msvc9compiler.py\r
+--- Python-ORIG/Lib/distutils/msvc9compiler.py 2014-03-28 17:35:47.085774000 +0100\r
++++ Python-2.7.3/Lib/distutils/msvc9compiler.py        2014-03-28 17:37:20.646374000 +0100\r
+@@ -658,7 +658,7 @@ class MSVCCompiler(CCompiler) :\r
+             # will still consider the DLL up-to-date, but it will not have a\r
+             # manifest.  Maybe we should link to a temp file?  OTOH, that\r
+             # implies a build environment error that shouldn't go undetected.\r
+-            mfinfo = self.manifest_get_embed_info(target_desc, ld_args)\r
++            mfinfo = None\r
+             if mfinfo is not None:\r
+                 mffilename, mfid = mfinfo\r
+                 out_arg = '-outputresource:%s;%s' % (output_filename, mfid)\r
diff --git a/products/patches/freeimage-3.16.0_gcc6.patch b/products/patches/freeimage-3.16.0_gcc6.patch
new file mode 100644 (file)
index 0000000..614a853
--- /dev/null
@@ -0,0 +1,71 @@
+diff -Naur freeimage-3.16.0_SRC_orig/Source/LibRawLite/dcraw/dcraw.c freeimage-3.16.0_SRC_patched/Source/LibRawLite/dcraw/dcraw.c
+--- freeimage-3.16.0_SRC_orig/Source/LibRawLite/dcraw/dcraw.c  2014-02-07 23:48:10.000000000 +0400
++++ freeimage-3.16.0_SRC_patched/Source/LibRawLite/dcraw/dcraw.c       2016-10-14 12:05:37.481253676 +0300
+@@ -4072,22 +4072,22 @@
+     -2,+0,+0,-1,0,0x06, -2,+0,+0,+0,1,0x02, -2,+0,+0,+1,0,0x03,\r
+     -2,+1,-1,+0,0,0x04, -2,+1,+0,-1,1,0x04, -2,+1,+0,+0,0,0x06,\r
+     -2,+1,+0,+1,0,0x02, -2,+2,+0,+0,1,0x04, -2,+2,+0,+1,0,0x04,\r
+-    -1,-2,-1,+0,0,0x80, -1,-2,+0,-1,0,0x01, -1,-2,+1,-1,0,0x01,\r
+-    -1,-2,+1,+0,1,0x01, -1,-1,-1,+1,0,0x88, -1,-1,+1,-2,0,0x40,\r
++    -1,-2,-1,+0,0,(signed char)0x80, -1,-2,+0,-1,0,0x01, -1,-2,+1,-1,0,0x01,\r
++    -1,-2,+1,+0,1,0x01, -1,-1,-1,+1,0,(signed char)0x88, -1,-1,+1,-2,0,0x40,\r
+     -1,-1,+1,-1,0,0x22, -1,-1,+1,+0,0,0x33, -1,-1,+1,+1,1,0x11,\r
+     -1,+0,-1,+2,0,0x08, -1,+0,+0,-1,0,0x44, -1,+0,+0,+1,0,0x11,\r
+     -1,+0,+1,-2,1,0x40, -1,+0,+1,-1,0,0x66, -1,+0,+1,+0,1,0x22,\r
+     -1,+0,+1,+1,0,0x33, -1,+0,+1,+2,1,0x10, -1,+1,+1,-1,1,0x44,\r
+     -1,+1,+1,+0,0,0x66, -1,+1,+1,+1,0,0x22, -1,+1,+1,+2,0,0x10,\r
+     -1,+2,+0,+1,0,0x04, -1,+2,+1,+0,1,0x04, -1,+2,+1,+1,0,0x04,\r
+-    +0,-2,+0,+0,1,0x80, +0,-1,+0,+1,1,0x88, +0,-1,+1,-2,0,0x40,\r
++    +0,-2,+0,+0,1,(signed char)0x80, +0,-1,+0,+1,1,(signed char)0x88, +0,-1,+1,-2,0,0x40,\r
+     +0,-1,+1,+0,0,0x11, +0,-1,+2,-2,0,0x40, +0,-1,+2,-1,0,0x20,\r
+     +0,-1,+2,+0,0,0x30, +0,-1,+2,+1,1,0x10, +0,+0,+0,+2,1,0x08,\r
+     +0,+0,+2,-2,1,0x40, +0,+0,+2,-1,0,0x60, +0,+0,+2,+0,1,0x20,\r
+     +0,+0,+2,+1,0,0x30, +0,+0,+2,+2,1,0x10, +0,+1,+1,+0,0,0x44,\r
+     +0,+1,+1,+2,0,0x10, +0,+1,+2,-1,1,0x40, +0,+1,+2,+0,0,0x60,\r
+-    +0,+1,+2,+1,0,0x20, +0,+1,+2,+2,0,0x10, +1,-2,+1,+0,0,0x80,\r
+-    +1,-1,+1,+1,0,0x88, +1,+0,+1,+2,0,0x08, +1,+0,+2,-1,0,0x40,\r
++    +0,+1,+2,+1,0,0x20, +0,+1,+2,+2,0,0x10, +1,-2,+1,+0,0,(signed char)0x80,\r
++    +1,-1,+1,+1,0,(signed char)0x88, +1,+0,+1,+2,0,0x08, +1,+0,+2,-1,0,0x40,\r
+     +1,+0,+2,+1,0,0x10\r
+   }, chood[] = { -1,-1, -1,0, -1,+1, 0,+1, +1,+1, +1,0, +1,-1, 0,-1 };\r
+   ushort (*brow[5])[4], *pix;\r
+diff -Naur freeimage-3.16.0_SRC_orig/Source/LibRawLite/internal/dcraw_common.cpp freeimage-3.16.0_SRC_patched/Source/LibRawLite/internal/dcraw_common.cpp
+--- freeimage-3.16.0_SRC_orig/Source/LibRawLite/internal/dcraw_common.cpp      2014-02-07 23:48:10.000000000 +0400
++++ freeimage-3.16.0_SRC_patched/Source/LibRawLite/internal/dcraw_common.cpp   2016-10-14 12:06:27.540395171 +0300
+@@ -3782,22 +3782,22 @@
+     -2,+0,+0,-1,0,0x06, -2,+0,+0,+0,1,0x02, -2,+0,+0,+1,0,0x03,\r
+     -2,+1,-1,+0,0,0x04, -2,+1,+0,-1,1,0x04, -2,+1,+0,+0,0,0x06,\r
+     -2,+1,+0,+1,0,0x02, -2,+2,+0,+0,1,0x04, -2,+2,+0,+1,0,0x04,\r
+-    -1,-2,-1,+0,0,0x80, -1,-2,+0,-1,0,0x01, -1,-2,+1,-1,0,0x01,\r
+-    -1,-2,+1,+0,1,0x01, -1,-1,-1,+1,0,0x88, -1,-1,+1,-2,0,0x40,\r
++    -1,-2,-1,+0,0,(signed char)0x80, -1,-2,+0,-1,0,0x01, -1,-2,+1,-1,0,0x01,\r
++    -1,-2,+1,+0,1,0x01, -1,-1,-1,+1,0,(signed char)0x88, -1,-1,+1,-2,0,0x40,\r
+     -1,-1,+1,-1,0,0x22, -1,-1,+1,+0,0,0x33, -1,-1,+1,+1,1,0x11,\r
+     -1,+0,-1,+2,0,0x08, -1,+0,+0,-1,0,0x44, -1,+0,+0,+1,0,0x11,\r
+     -1,+0,+1,-2,1,0x40, -1,+0,+1,-1,0,0x66, -1,+0,+1,+0,1,0x22,\r
+     -1,+0,+1,+1,0,0x33, -1,+0,+1,+2,1,0x10, -1,+1,+1,-1,1,0x44,\r
+     -1,+1,+1,+0,0,0x66, -1,+1,+1,+1,0,0x22, -1,+1,+1,+2,0,0x10,\r
+     -1,+2,+0,+1,0,0x04, -1,+2,+1,+0,1,0x04, -1,+2,+1,+1,0,0x04,\r
+-    +0,-2,+0,+0,1,0x80, +0,-1,+0,+1,1,0x88, +0,-1,+1,-2,0,0x40,\r
++    +0,-2,+0,+0,1,(signed char)0x80, +0,-1,+0,+1,1,(signed char)0x88, +0,-1,+1,-2,0,0x40,\r
+     +0,-1,+1,+0,0,0x11, +0,-1,+2,-2,0,0x40, +0,-1,+2,-1,0,0x20,\r
+     +0,-1,+2,+0,0,0x30, +0,-1,+2,+1,1,0x10, +0,+0,+0,+2,1,0x08,\r
+     +0,+0,+2,-2,1,0x40, +0,+0,+2,-1,0,0x60, +0,+0,+2,+0,1,0x20,\r
+     +0,+0,+2,+1,0,0x30, +0,+0,+2,+2,1,0x10, +0,+1,+1,+0,0,0x44,\r
+     +0,+1,+1,+2,0,0x10, +0,+1,+2,-1,1,0x40, +0,+1,+2,+0,0,0x60,\r
+-    +0,+1,+2,+1,0,0x20, +0,+1,+2,+2,0,0x10, +1,-2,+1,+0,0,0x80,\r
+-    +1,-1,+1,+1,0,0x88, +1,+0,+1,+2,0,0x08, +1,+0,+2,-1,0,0x40,\r
++    +0,+1,+2,+1,0,0x20, +0,+1,+2,+2,0,0x10, +1,-2,+1,+0,0,(signed char)0x80,\r
++    +1,-1,+1,+1,0,(signed char)0x88, +1,+0,+1,+2,0,0x08, +1,+0,+2,-1,0,0x40,\r
+     +1,+0,+2,+1,0,0x10\r
+   }, chood[] = { -1,-1, -1,0, -1,+1, 0,+1, +1,+1, +1,0, +1,-1, 0,-1 };\r
+   ushort (*brow[5])[4], *pix;\r
+@@ -7380,7 +7380,7 @@
+       { 8035,435,-962,-6001,13872,2320,-1159,3065,5434 } },\r
+     { "Phase One P65", 0, 0,\r
+       { 8035,435,-962,-6001,13872,2320,-1159,3065,5434 } },\r
+-    { "Red One", 704, 0xffff,         /* DJC */\r
++    { "Red One", 704, (short int)0xffff,              /* DJC */\r
+       { 21014,-7891,-2613,-3056,12201,856,-2203,5125,8042 } },\r
+     { "Samsung EK-GN120", 0, 0, /* Adobe; Galaxy NX */\r
+         { 7557,-2522,-739,-4679,12949,1894,-840,1777,5311 } },\r
diff --git a/products/patches/freeimage-3.17.0_windows.patch b/products/patches/freeimage-3.17.0_windows.patch
new file mode 100644 (file)
index 0000000..ea8fc35
--- /dev/null
@@ -0,0 +1,39 @@
+diff -Naur freeimage-3.17.0_SRC_orig/Source/LibRawLite/dcraw/dcraw.c freeimage-3.17.0_SRC_modif/Source/LibRawLite/dcraw/dcraw.c
+--- freeimage-3.17.0_SRC_orig/Source/LibRawLite/dcraw/dcraw.c  2015-03-08 22:19:52.000000000 +0300
++++ freeimage-3.17.0_SRC_modif/Source/LibRawLite/dcraw/dcraw.c 2018-07-12 19:55:33.272414700 +0300
+@@ -75,7 +75,9 @@
+ #include <sys/utime.h>
+ #include <winsock2.h>
+ #pragma comment(lib, "ws2_32.lib")
++#if _MSC_VER<1900
+ #define snprintf _snprintf
++#endif
+ #define strcasecmp stricmp
+ #define strncasecmp strnicmp
+ //@end DEFINES
+diff -Naur freeimage-3.17.0_SRC_orig/Source/LibRawLite/internal/defines.h freeimage-3.17.0_SRC_modif/Source/LibRawLite/internal/defines.h
+--- freeimage-3.17.0_SRC_orig/Source/LibRawLite/internal/defines.h     2015-03-08 23:37:22.000000000 +0300
++++ freeimage-3.17.0_SRC_modif/Source/LibRawLite/internal/defines.h    2018-07-12 19:58:42.939216200 +0300
+@@ -55,7 +55,9 @@
+ #include <sys/utime.h>
+ #include <winsock2.h>
+ #pragma comment(lib, "ws2_32.lib")
++#if _MSC_VER<1900
+ #define snprintf _snprintf
++#endif
+ #define strcasecmp stricmp
+ #define strncasecmp strnicmp
+ #line 85 "dcraw/dcraw.c"
+diff -Naur freeimage-3.17.0_SRC_orig/Source/LibTIFF4/tif_config.h freeimage-3.17.0_SRC_modif/Source/LibTIFF4/tif_config.h
+--- freeimage-3.17.0_SRC_orig/Source/LibTIFF4/tif_config.h     2015-03-02 03:50:58.000000000 +0300
++++ freeimage-3.17.0_SRC_modif/Source/LibTIFF4/tif_config.h    2018-07-12 19:59:37.215683700 +0300
+@@ -81,7 +81,9 @@
+ #endif // BYTE_ORDER
+ #ifdef _WIN32
++#if _MSC_VER<1900
+ #define snprintf _snprintf
++#endif
+ #define lfind _lfind
+ #endif // _WIN32
diff --git a/products/patches/freeimage-3.18.0_windows.patch b/products/patches/freeimage-3.18.0_windows.patch
new file mode 100644 (file)
index 0000000..460b469
--- /dev/null
@@ -0,0 +1,132 @@
+--- freeimage-3.18.0_ref/FreeImage.2017.vcxproj
++++ freeimage-3.18.0/FreeImage.2017.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectName>FreeImage</ProjectName>
+     <ProjectGuid>{B39ED2B3-D53A-4077-B957-930979A3577D}</ProjectGuid>
+     <RootNamespace>FreeImage</RootNamespace>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+--- freeimage-3.18.0_ref/Source/FreeImageLib/FreeImageLib.2017.vcxproj
++++ freeimage-3.18.0/Source/FreeImageLib/FreeImageLib.2017.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectName>FreeImageLib</ProjectName>
+     <ProjectGuid>{9E219DF2-315D-478E-8A07-8960C377CE1E}</ProjectGuid>
+     <RootNamespace>FreeImageLib</RootNamespace>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+--- freeimage-3.18.0_ref/Source/LibJPEG/LibJPEG.2017.vcxproj
++++ freeimage-3.18.0/Source/LibJPEG/LibJPEG.2017.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectName>LibJPEG</ProjectName>
+     <ProjectGuid>{5E1D4E5F-E10C-4BA3-B663-F33014FD21D9}</ProjectGuid>
+     <RootNamespace>LibJPEG</RootNamespace>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+--- freeimage-3.18.0_ref/Source/LibJXR/LibJXR.2017.vcxproj
++++ freeimage-3.18.0/Source/LibJXR/LibJXR.2017.vcxproj
+@@ -23,7 +23,7 @@
+     <ProjectGuid>{244455E0-5F25-4451-9540-F317883E52A8}</ProjectGuid>
+     <RootNamespace>LibJXR</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+--- freeimage-3.18.0_ref/Source/LibOpenJPEG/LibOpenJPEG.2017.vcxproj
++++ freeimage-3.18.0/Source/LibOpenJPEG/LibOpenJPEG.2017.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectName>LibOpenJPEG</ProjectName>
+     <ProjectGuid>{E3536C28-A7F1-4B53-8E52-7D2232F9E098}</ProjectGuid>
+     <RootNamespace>LibOpenJPEG</RootNamespace>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+--- freeimage-3.18.0_ref/Source/LibPNG/LibPNG.2017.vcxproj
++++ freeimage-3.18.0/Source/LibPNG/LibPNG.2017.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectName>LibPNG</ProjectName>
+     <ProjectGuid>{7DB10B50-CE00-4D7A-B322-6824F05D2FCB}</ProjectGuid>
+     <RootNamespace>LibPNG</RootNamespace>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+--- freeimage-3.18.0_ref/Source/LibRawLite/LibRawLite.2017.vcxproj
++++ freeimage-3.18.0/Source/LibRawLite/LibRawLite.2017.vcxproj
+@@ -23,7 +23,7 @@
+     <ProjectGuid>{07F662C1-1323-42AB-B6AF-FBFD34A7437A}</ProjectGuid>
+     <RootNamespace>LibRawLite</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+--- freeimage-3.18.0_ref/Source/LibTIFF4/LibTIFF4.2017.vcxproj
++++ freeimage-3.18.0/Source/LibTIFF4/LibTIFF4.2017.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectName>LibTIFF4</ProjectName>
+     <ProjectGuid>{EC085CBD-E9C3-477F-9A97-CB9D5DA30E27}</ProjectGuid>
+     <RootNamespace>LibTIFF4</RootNamespace>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+--- freeimage-3.18.0_ref/Source/LibWebP/LibWebP.2017.vcxproj
++++ freeimage-3.18.0/Source/LibWebP/LibWebP.2017.vcxproj
+@@ -23,7 +23,7 @@
+     <ProjectGuid>{097D9F6C-FD0E-4CBC-9676-009012AAECA8}</ProjectGuid>
+     <RootNamespace>LibWebP</RootNamespace>
+     <Keyword>Win32Proj</Keyword>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+--- freeimage-3.18.0_ref/Source/OpenEXR/OpenEXR.2017.vcxproj
++++ freeimage-3.18.0/Source/OpenEXR/OpenEXR.2017.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectName>OpenEXR</ProjectName>
+     <ProjectGuid>{17A4874B-0606-4687-90B6-F91F8CB3B8AF}</ProjectGuid>
+     <RootNamespace>OpenEXR</RootNamespace>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+--- freeimage-3.18.0_ref/Source/ZLib/ZLib.2017.vcxproj
++++ freeimage-3.18.0/Source/ZLib/ZLib.2017.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectName>ZLib</ProjectName>
+     <ProjectGuid>{33134F61-C1AD-4B6F-9CEA-503A9F140C52}</ProjectGuid>
+     <RootNamespace>ZLib</RootNamespace>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+--- freeimage-3.18.0_ref/Wrapper/FreeImagePlus/FreeImagePlus.2017.vcxproj
++++ freeimage-3.18.0/Wrapper/FreeImagePlus/FreeImagePlus.2017.vcxproj
+@@ -22,7 +22,7 @@
+     <ProjectName>FreeImagePlus</ProjectName>
+     <ProjectGuid>{94F36908-A4E2-4533-939D-64FF6EADA5A1}</ProjectGuid>
+     <RootNamespace>FreeImagePlus</RootNamespace>
+-    <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
diff --git a/products/patches/freetype-2.4.11_ft_export_FD20.patch b/products/patches/freetype-2.4.11_ft_export_FD20.patch
new file mode 100644 (file)
index 0000000..7f582a1
--- /dev/null
@@ -0,0 +1,12 @@
+diff -rupN freetype-2.4.11/include/freetype/config/ftoption.h freetype-2.4.11_new/include/freetype/config/ftoption.h
+--- freetype-2.4.11/include/freetype/config/ftoption.h 2014-07-28 10:56:26.000000000 +0200
++++ freetype-2.4.11_new/include/freetype/config/ftoption.h     2014-12-19 11:20:43.838835547 +0100
+@@ -253,7 +253,7 @@ FT_BEGIN_HEADER
+   /*   them for certain configurations only.                               */
+   /*                                                                       */
+ /* #define FT_EXPORT(x)      extern x */
+-#define FT_EXPORT(x)      __declspec(dllexport) x
++/* #define FT_EXPORT(x)      __declspec(dllexport) x */
+ /* #define FT_EXPORT_DEF(x)  x */
diff --git a/products/patches/freetype-2.9.1_windows.patch b/products/patches/freetype-2.9.1_windows.patch
new file mode 100644 (file)
index 0000000..372103b
--- /dev/null
@@ -0,0 +1,32 @@
+--- freetype_orig/CMakeLists.txt
++++ freetype_fix/CMakeLists.txt
+@@ -234,6 +234,7 @@
+ endif ()
++
+ # Create the options file
+ file(READ "${PROJECT_SOURCE_DIR}/include/freetype/config/ftoption.h"
+   FTOPTION_H)
+@@ -415,11 +418,18 @@
+       PATTERN "internal" EXCLUDE
+       PATTERN "ftconfig.h" EXCLUDE
+       PATTERN "ftoption.h" EXCLUDE)
+-  install(
+-    FILES ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h
+-          ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h
++  if (UNIX)
++    install(
++      FILES ${PROJECT_BINARY_DIR}/include/freetype/config/ftconfig.h
++            ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h
+       DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2/freetype/config
+       COMPONENT headers)
++   elseif(WIN32)
++    install(
++      FILES ${PROJECT_BINARY_DIR}/include/freetype/config/ftoption.h
++      DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/freetype2/freetype/config
++      COMPONENT headers)
++   endif()
+ endif ()
+ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
diff --git a/products/patches/ftgl-2.1.3_no_doc.patch b/products/patches/ftgl-2.1.3_no_doc.patch
new file mode 100644 (file)
index 0000000..c2dbf96
--- /dev/null
@@ -0,0 +1,24 @@
+diff -pruN ftgl-2.1.3-rc5/configure.ac ftgl-2.1.3-rc5_NEW/configure.ac
+--- ftgl-2.1.3-rc5/configure.ac        2008-06-12 15:14:43.000000000 +0200
++++ ftgl-2.1.3-rc5_NEW/configure.ac    2015-11-13 10:27:03.946859667 +0100
+@@ -99,8 +99,6 @@ AC_CONFIG_FILES([
+ AC_CONFIG_FILES([
+   Makefile
+   demo/Makefile
+-  docs/Makefile
+-  docs/doxygen.cfg
+   msvc/Makefile
+   src/Makefile
+   test/Makefile
+diff -pruN ftgl-2.1.3-rc5/Makefile.am ftgl-2.1.3-rc5_NEW/Makefile.am
+--- ftgl-2.1.3-rc5/Makefile.am 2008-05-12 20:04:08.000000000 +0200
++++ ftgl-2.1.3-rc5_NEW/Makefile.am     2015-11-13 10:26:18.980788629 +0100
+@@ -1,7 +1,7 @@
+ ACLOCAL_AMFLAGS = -I m4
+-SUBDIRS = src test demo docs
++SUBDIRS = src test demo
+ DIST_SUBDIRS = $(SUBDIRS) msvc
+ pkgconfigdir = $(libdir)/pkgconfig
diff --git a/products/patches/geom-doc-gui.patch b/products/patches/geom-doc-gui.patch
new file mode 100644 (file)
index 0000000..4a6c08a
--- /dev/null
@@ -0,0 +1,14 @@
+--- GEOM_ref/doc/salome/gui/GEOM/CMakeLists.txt
++++ GEOM/doc/salome/gui/GEOM/CMakeLists.txt
+@@ -32,6 +32,11 @@
+ SALOME_ACCUMULATE_ENVIRONMENT(GEOM_PluginsList NOCHECK ${DOC_GEOM_PluginsList})
+ SET(geom_file "${CMAKE_CURRENT_SOURCE_DIR}/collect_geom_methods.py")
+ SET(plugins_cmd_options ${geom_file} -o tmp1/geomBuilder.py ${DOC_GEOM_PluginsList})
++IF(WIN32)
++  MESSAGE(STATUS "Environment variable SALOME_HAS_GLOBAL_ENV is set to: $ENV{SALOME_HAS_GLOBAL_ENV}")
++  set(ENV{SALOME_HAS_GLOBAL_ENV} "0")
++  MESSAGE(STATUS "Environment variable SALOME_HAS_GLOBAL_ENV is NOW set to: $ENV{SALOME_HAS_GLOBAL_ENV}")
++ENDIF(WIN32)
+ SALOME_GENERATE_ENVIRONMENT_SCRIPT(plugins_cmd env_script "${PYTHON_EXECUTABLE}" "${plugins_cmd_options}")
+ # Install a script
+ SALOME_INSTALL_SCRIPTS(collect_geom_methods.py ${SALOME_INSTALL_BINS})
diff --git a/products/patches/geom_8.5.0_xao_data_dir.patch b/products/patches/geom_8.5.0_xao_data_dir.patch
new file mode 100644 (file)
index 0000000..ff7057d
--- /dev/null
@@ -0,0 +1,12 @@
+# patch pour corriger XAO_DATA_DIR et ne plus utiliser ABSOLUTE_APPLI_PATH
+# correction attendue avec spns #11282
+diff --git a/src/XAO/tests/CTestTestfileInstall.cmake b/src/XAO/tests/CTestTestfileInstall.cmake
+index 443de45..9218488 100644
+--- a/src/XAO/tests/CTestTestfileInstall.cmake
++++ b/src/XAO/tests/CTestTestfileInstall.cmake
+@@ -20,4 +20,4 @@
+ ADD_TEST(GEOM_TestXAO python ${SALOME_TEST_DRIVER} ${TIMEOUT} TestXAO)
+ SET_TESTS_PROPERTIES(GEOM_TestXAO PROPERTIES
+     LABELS "${COMPONENT_NAME}"
+-    ENVIRONMENT "XAO_DATA_DIR=$ENV{ABSOLUTE_APPLI_PATH}/bin/salome/test/GEOM/xao/data")
++    ENVIRONMENT "XAO_DATA_DIR=$ENV{GEOM_ROOT_DIR}/bin/salome/test/xao/data")
diff --git a/products/patches/gl2ps-1.3.5-GLUT.patch b/products/patches/gl2ps-1.3.5-GLUT.patch
new file mode 100755 (executable)
index 0000000..a093adf
--- /dev/null
@@ -0,0 +1,31 @@
+--- gl2ps-1.3.5_ori/CMakeLists.txt     2011-09-13 13:23:12.000000000 +0200
++++ gl2ps-1.3.5_new/CMakeLists.txt     2017-08-03 15:01:39.968786620 +0200
+@@ -76,11 +76,14 @@ if(OPENGL_FOUND)
+   list(APPEND EXTERNAL_LIBRARIES ${OPENGL_LIBRARIES})
+ endif(OPENGL_FOUND)
+-find_package(GLUT)
+-if(GLUT_FOUND)
+-  list(APPEND EXTERNAL_INCLUDES ${GLUT_INCLUDE_DIR})
+-  list(APPEND EXTERNAL_LIBRARIES ${GLUT_LIBRARIES})
+-endif(GLUT_FOUND)
++# Add ENABLE_GLUT option
++if(ENABLE_GLUT)
++  find_package(GLUT)
++  if(GLUT_FOUND)
++    list(APPEND EXTERNAL_INCLUDES ${GLUT_INCLUDE_DIR})
++    list(APPEND EXTERNAL_LIBRARIES ${GLUT_LIBRARIES})
++  endif(GLUT_FOUND)
++endif(ENABLE_GLUT)
+ if(ENABLE_ZLIB)
+   find_package(ZLIB)
+@@ -100,6 +103,8 @@ if(ENABLE_PNG)
+   endif(PNG_FOUND)
+ endif(ENABLE_PNG)
++list(APPEND EXTERNAL_LIBRARIES "m")
++
+ include_directories(${EXTERNAL_INCLUDES})
+ if(OPENGL_FOUND)
diff --git a/products/patches/gl2ps-1.3.8-GLUT.patch b/products/patches/gl2ps-1.3.8-GLUT.patch
new file mode 100644 (file)
index 0000000..cc901a4
--- /dev/null
@@ -0,0 +1,34 @@
+--- gl2ps-1.3.8_ori/CMakeLists.txt     2012-11-27 20:41:06.000000000 +0100
++++ gl2ps-1.3.8_new/CMakeLists.txt     2017-08-03 15:16:23.254816871 +0200
+@@ -82,11 +82,14 @@ if(OPENGL_FOUND)
+   list(APPEND EXTERNAL_LIBRARIES ${OPENGL_LIBRARIES})
+ endif(OPENGL_FOUND)
+-find_package(GLUT)
+-if(GLUT_FOUND)
+-  list(APPEND EXTERNAL_INCLUDES ${GLUT_INCLUDE_DIR})
+-  list(APPEND EXTERNAL_LIBRARIES ${GLUT_LIBRARIES})
+-endif(GLUT_FOUND)
++# Add ENABLE_GLUT option
++if(ENABLE_GLUT)
++  find_package(GLUT)
++  if(GLUT_FOUND)
++    list(APPEND EXTERNAL_INCLUDES ${GLUT_INCLUDE_DIR})
++    list(APPEND EXTERNAL_LIBRARIES ${GLUT_LIBRARIES})
++  endif(GLUT_FOUND)
++endif(ENABLE_GLUT)
+ if(ENABLE_ZLIB)
+   find_package(ZLIB)
+@@ -140,9 +143,9 @@ install(FILES ${CMAKE_SOURCE_DIR}/gl2psT
+ if(GLUT_FOUND)
+   add_executable(gl2psTest WIN32 gl2psTest.c)
+-  target_link_libraries(gl2psTest lib ${EXTERNAL_LIBRARIES})
++  target_link_libraries(gl2psTest lib ${EXTERNAL_LIBRARIES} -lm)
+   add_executable(gl2psTestSimple WIN32 gl2psTestSimple.c)
+-  target_link_libraries(gl2psTestSimple lib ${EXTERNAL_LIBRARIES})
++  target_link_libraries(gl2psTestSimple lib ${EXTERNAL_LIBRARIES} -lm)
+ endif(GLUT_FOUND)
+ find_package(LATEX)
diff --git a/products/patches/gl2ps-1.3.8_link_libm_FD20.patch_orig b/products/patches/gl2ps-1.3.8_link_libm_FD20.patch_orig
new file mode 100755 (executable)
index 0000000..4c1fa9b
--- /dev/null
@@ -0,0 +1,15 @@
+diff -rupN gl2ps-1.3.8/CMakeLists.txt gl2ps-1.3.8_new/CMakeLists.txt
+--- gl2ps-1.3.8/CMakeLists.txt 2012-11-27 20:41:06.000000000 +0100
++++ gl2ps-1.3.8_new/CMakeLists.txt     2014-12-18 16:33:26.479069652 +0100
+@@ -140,9 +140,9 @@ install(FILES ${CMAKE_SOURCE_DIR}/gl2psT
+ if(GLUT_FOUND)
+   add_executable(gl2psTest WIN32 gl2psTest.c)
+-  target_link_libraries(gl2psTest lib ${EXTERNAL_LIBRARIES})
++  target_link_libraries(gl2psTest lib ${EXTERNAL_LIBRARIES} -lm)
+   add_executable(gl2psTestSimple WIN32 gl2psTestSimple.c)
+-  target_link_libraries(gl2psTestSimple lib ${EXTERNAL_LIBRARIES})
++  target_link_libraries(gl2psTestSimple lib ${EXTERNAL_LIBRARIES} -lm)
+ endif(GLUT_FOUND)
+ find_package(LATEX)
diff --git a/products/patches/gl2ps-1.3.9p1-GLUT.patch b/products/patches/gl2ps-1.3.9p1-GLUT.patch
new file mode 100644 (file)
index 0000000..51958a9
--- /dev/null
@@ -0,0 +1,22 @@
+--- gl2ps-1.3.9p1_ori/CMakeLists.txt   2015-10-19 00:01:33.000000000 +0200
++++ gl2ps-1.3.9p1_new/CMakeLists.txt   2017-08-03 15:26:40.967608544 +0200
+@@ -82,11 +82,14 @@ if(OPENGL_FOUND)
+   list(APPEND EXTERNAL_LIBRARIES ${OPENGL_LIBRARIES})
+ endif(OPENGL_FOUND)
+-find_package(GLUT)
+-if(GLUT_FOUND)
+-  list(APPEND EXTERNAL_INCLUDES ${GLUT_INCLUDE_DIR})
+-  list(APPEND EXTERNAL_LIBRARIES ${GLUT_LIBRARIES})
+-endif(GLUT_FOUND)
++# Add ENABLE_GLUT option
++if(ENABLE_GLUT)
++  find_package(GLUT)
++  if(GLUT_FOUND)
++    list(APPEND EXTERNAL_INCLUDES ${GLUT_INCLUDE_DIR})
++    list(APPEND EXTERNAL_LIBRARIES ${GLUT_LIBRARIES})
++  endif(GLUT_FOUND)
++endif(ENABLE_GLUT)
+ if(ENABLE_ZLIB)
+   find_package(ZLIB)
diff --git a/products/patches/gl2ps-1.3.9p1-no_static_lib.patch b/products/patches/gl2ps-1.3.9p1-no_static_lib.patch
new file mode 100644 (file)
index 0000000..3d5c953
--- /dev/null
@@ -0,0 +1,32 @@
+diff -Naur gl2ps-1.3.9p1_ori/CMakeLists.txt gl2ps-1.3.9p1_new/CMakeLists.txt
+--- gl2ps-1.3.9p1_ori/CMakeLists.txt   2018-07-24 13:02:20.946136823 +0200
++++ gl2ps-1.3.9p1_new/CMakeLists.txt   2018-07-24 13:14:17.534888077 +0200
+@@ -117,8 +117,11 @@
+ include_directories(${EXTERNAL_INCLUDES})
+ if(OPENGL_FOUND)
+-  add_library(lib STATIC gl2ps.c gl2ps.h)
+-  set_target_properties(lib PROPERTIES OUTPUT_NAME gl2ps)
++  # Do not generate static library on Windows
++  if(NOT WIN32)
++    add_library(lib STATIC gl2ps.c gl2ps.h)
++    set_target_properties(lib PROPERTIES OUTPUT_NAME gl2ps)
++  endif(NOT WIN32)
+   add_library(shared SHARED gl2ps.c gl2ps.h)
+   target_link_libraries(shared ${EXTERNAL_LIBRARIES})
+@@ -130,7 +133,13 @@
+     set_target_properties(shared PROPERTIES COMPILE_FLAGS "-DGL2PSDLL -DGL2PSDLL_EXPORTS")
+   endif(MSVC)
+-  install(TARGETS lib shared DESTINATION lib${LIB_SUFFIX})
++  # Do not generate static library on Windows
++  if(NOT WIN32)
++    install(TARGETS lib shared DESTINATION lib${LIB_SUFFIX})
++  else(NOT WIN32)
++    install(TARGETS shared DESTINATION lib${LIB_SUFFIX})
++  endif(NOT WIN32)
++
+ endif(OPENGL_FOUND)
+ if(WIN32)
diff --git a/products/patches/gl2ps-1.4.0-GLUT.patch b/products/patches/gl2ps-1.4.0-GLUT.patch
new file mode 100644 (file)
index 0000000..51958a9
--- /dev/null
@@ -0,0 +1,22 @@
+--- gl2ps-1.3.9p1_ori/CMakeLists.txt   2015-10-19 00:01:33.000000000 +0200
++++ gl2ps-1.3.9p1_new/CMakeLists.txt   2017-08-03 15:26:40.967608544 +0200
+@@ -82,11 +82,14 @@ if(OPENGL_FOUND)
+   list(APPEND EXTERNAL_LIBRARIES ${OPENGL_LIBRARIES})
+ endif(OPENGL_FOUND)
+-find_package(GLUT)
+-if(GLUT_FOUND)
+-  list(APPEND EXTERNAL_INCLUDES ${GLUT_INCLUDE_DIR})
+-  list(APPEND EXTERNAL_LIBRARIES ${GLUT_LIBRARIES})
+-endif(GLUT_FOUND)
++# Add ENABLE_GLUT option
++if(ENABLE_GLUT)
++  find_package(GLUT)
++  if(GLUT_FOUND)
++    list(APPEND EXTERNAL_INCLUDES ${GLUT_INCLUDE_DIR})
++    list(APPEND EXTERNAL_LIBRARIES ${GLUT_LIBRARIES})
++  endif(GLUT_FOUND)
++endif(ENABLE_GLUT)
+ if(ENABLE_ZLIB)
+   find_package(ZLIB)
diff --git a/products/patches/hdf5-1.10.3.patch b/products/patches/hdf5-1.10.3.patch
new file mode 100644 (file)
index 0000000..45ecfe0
--- /dev/null
@@ -0,0 +1,15 @@
+diff -Naur --exclude=CVS --exclude=.git hdf5-1.10.3_orig/src/CMakeLists.txt hdf5-1.10.3_patched/src/CMakeLists.txt\r
+--- hdf5-1.10.3_orig/src/CMakeLists.txt        2018-08-10 00:36:31.000000000 +0300\r
++++ hdf5-1.10.3_patched/src/CMakeLists.txt     2018-10-10 16:25:28.196773245 +0300\r
+@@ -954,9 +954,10 @@\r
+           $<$<BOOL:${HDF5_ENABLE_DEBUG_APIS}>:H5Z_DEBUG;H5T_DEBUG;H5ST_DEBUG;H5S_DEBUG;H5O_DEBUG;H5I_DEBUG;H5HL_DEBUG;H5F_DEBUG;H5D_DEBUG;H5B2_DEBUG;H5AC_DEBUG>\r
+   )\r
+   TARGET_C_PROPERTIES (${HDF5_LIBSH_TARGET} SHARED)\r
++  get_property(_threads_libs TARGET Threads::Threads PROPERTY INTERFACE_LINK_LIBRARIES)\r
+   target_link_libraries (${HDF5_LIBSH_TARGET}\r
+       PRIVATE ${LINK_LIBS} ${LINK_COMP_LIBS} "$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_LIBRARIES}>"\r
+-      PUBLIC $<$<NOT:$<PLATFORM_ID:Windows>>:${CMAKE_DL_LIBS}> $<$<BOOL:${HDF5_ENABLE_THREADSAFE}>:Threads::Threads>\r
++      PUBLIC $<$<NOT:$<PLATFORM_ID:Windows>>:${CMAKE_DL_LIBS}> $<$<BOOL:${HDF5_ENABLE_THREADSAFE}>:${_threads_libs}>\r
+   )\r
+   set_global_variable (HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_LIBSH_TARGET}")\r
+   H5_SET_LIB_OPTIONS (${HDF5_LIBSH_TARGET} ${HDF5_LIB_NAME} SHARED "LIB")\r
diff --git a/products/patches/hdf5-1.10.3.win_unicode.patch b/products/patches/hdf5-1.10.3.win_unicode.patch
new file mode 100644 (file)
index 0000000..db538e6
--- /dev/null
@@ -0,0 +1,36 @@
+diff -Naur hdf5-1.10.3_SRC_orig/src/H5FDwindows.c hdf5-1.10.3_SRC_modif/src/H5FDwindows.c
+--- hdf5-1.10.3_SRC_orig/src/H5FDwindows.c     2018-08-10 00:36:32.000000000 +0300
++++ hdf5-1.10.3_SRC_modif/src/H5FDwindows.c    2019-02-11 14:07:25.081398900 +0300
+@@ -24,6 +24,18 @@
+ #ifdef H5_HAVE_WINDOWS
++int _win_open(const char *name, int oflag,...)
++{
++    int fd = -1;
++    int size_needed = MultiByteToWideChar(CP_UTF8, 0, name, strlen(name), NULL, 0);
++    wchar_t* wname = (wchar_t*)malloc( sizeof(wchar_t)*(size_needed + 1) );
++    MultiByteToWideChar( CP_UTF8, 0, name, strlen(name), wname, size_needed );
++    wname[size_needed] = '\0';
++    fd=_wopen(wname, oflag);
++    free(wname);
++    return fd;
++}
++
\f
+ /*-------------------------------------------------------------------------
+  * Function:    H5Pset_fapl_windows
+diff -Naur hdf5-1.10.3_SRC_orig/src/H5win32defs.h hdf5-1.10.3_SRC_modif/src/H5win32defs.h
+--- hdf5-1.10.3_SRC_orig/src/H5win32defs.h     2018-08-10 00:36:32.000000000 +0300
++++ hdf5-1.10.3_SRC_modif/src/H5win32defs.h    2019-02-11 14:08:05.105749000 +0300
+@@ -54,7 +54,9 @@
+  * Also note that the variadic macro is using a VC++ extension
+  * where the comma is dropped if nothing is passed to the ellipsis.
+  */
+-#define HDopen(S,F,...)       _open(S, F | _O_BINARY, __VA_ARGS__)
++//#define HDopen(S,F,...)       _open(S, F | _O_BINARY, __VA_ARGS__)
++H5_DLL int _win_open(const char *name, int oflag,...);
++#define HDopen(S,F,...)       _win_open(S, F | _O_BINARY, __VA_ARGS__)
+ #define HDread(F,M,Z)       _read(F,M,Z)
+ #define HDrmdir(S)          _rmdir(S)
+ #define HDsetvbuf(F,S,M,Z)  setvbuf(F,S,M,(Z>1?Z:2))
diff --git a/products/patches/hdf5-1.10.3.win_unicode_new.patch b/products/patches/hdf5-1.10.3.win_unicode_new.patch
new file mode 100644 (file)
index 0000000..72861f9
--- /dev/null
@@ -0,0 +1,45 @@
+diff -Naur hdf5-1.10.3_SRC_orig/src/H5FDwindows.c hdf5-1.10.3_SRC_modif/src/H5FDwindows.c
+--- hdf5-1.10.3_SRC_orig/src/H5FDwindows.c     2018-08-10 00:36:32.000000000 +0300
++++ hdf5-1.10.3_SRC_modif/src/H5FDwindows.c    2020-05-08 16:55:38.043834500 +0300
+@@ -24,6 +24,27 @@
+ #ifdef H5_HAVE_WINDOWS
++int _win_open(const char *name, int oflag,...)
++{
++    int fd = -1;
++    int pmode = 0;
++    /* Get the mode, if O_CREAT was specified */
++    if(oflag & O_CREAT) {
++        va_list vl;
++
++        HDva_start(vl, oflag);
++        pmode = HDva_arg(vl, int);
++        HDva_end(vl);
++    }
++    int size_needed = MultiByteToWideChar(CP_UTF8, 0, name, strlen(name), NULL, 0);
++    wchar_t* wname = (wchar_t*)malloc( sizeof(wchar_t)*(size_needed + 1) );
++    MultiByteToWideChar( CP_UTF8, 0, name, strlen(name), wname, size_needed );
++    wname[size_needed] = '\0';
++    fd=_wopen(wname, oflag, pmode);
++    free(wname);
++    return fd;
++}
++
\f
+ /*-------------------------------------------------------------------------
+  * Function:    H5Pset_fapl_windows
+diff -Naur hdf5-1.10.3_SRC_orig/src/H5win32defs.h hdf5-1.10.3_SRC_modif/src/H5win32defs.h
+--- hdf5-1.10.3_SRC_orig/src/H5win32defs.h     2018-08-10 00:36:32.000000000 +0300
++++ hdf5-1.10.3_SRC_modif/src/H5win32defs.h    2020-05-08 16:53:04.239497600 +0300
+@@ -54,7 +54,9 @@
+  * Also note that the variadic macro is using a VC++ extension
+  * where the comma is dropped if nothing is passed to the ellipsis.
+  */
+-#define HDopen(S,F,...)       _open(S, F | _O_BINARY, __VA_ARGS__)
++//#define HDopen(S,F,...)       _open(S, F | _O_BINARY, __VA_ARGS__)
++H5_DLL int _win_open(const char *name, int oflag,...);
++#define HDopen(S,F,...)       _win_open(S, F | _O_BINARY, __VA_ARGS__)
+ #define HDread(F,M,Z)       _read(F,M,Z)
+ #define HDrmdir(S)          _rmdir(S)
+ #define HDsetvbuf(F,S,M,Z)  setvbuf(F,S,M,(Z>1?Z:2))
diff --git a/products/patches/hdf5_188_remove_c++_comment.patch b/products/patches/hdf5_188_remove_c++_comment.patch
new file mode 100644 (file)
index 0000000..32074ac
--- /dev/null
@@ -0,0 +1,11 @@
+diff -rupN hdf5-1.8.8_old/tools/lib/h5diff.c hdf5-1.8.8_new/tools/lib/h5diff.c
+--- hdf5-1.8.8_old/tools/lib/h5diff.c  2011-11-07 23:11:35.000000000 +0100
++++ hdf5-1.8.8_new/tools/lib/h5diff.c  2014-05-14 15:31:47.417957754 +0200
+@@ -644,7 +644,6 @@ hsize_t h5diff(const char *fname1,
+     char         filenames[2][MAX_FILENAME];
+     hsize_t      nfound = 0;
+     int i;
+-    //int i1, i2;
+     int l_ret;
+     const char * obj1fullname = NULL;
+     const char * obj2fullname = NULL;
diff --git a/products/patches/ispc-1.9.2-centos6.patch b/products/patches/ispc-1.9.2-centos6.patch
new file mode 100644 (file)
index 0000000..6554ba3
--- /dev/null
@@ -0,0 +1,20 @@
+--- ispc/Makefile      2017-11-11 00:07:30.000000000 +0100
++++ ispc_new/Makefile  2019-08-19 14:10:46.923713147 +0200
+@@ -78,7 +78,7 @@ ARM_ENABLED=0
+ NVPTX_ENABLED=0
+ # Add llvm bin to the path so any scripts run will go to the right llvm-config
+-LLVM_BIN= $(shell $(LLVM_CONFIG) --bindir)
++LLVM_BIN= $(shell $(LLVM_CONFIG) --bindir --system-libs)
+ export PATH:=$(LLVM_BIN):$(PATH)
+ ARCH_OS = $(shell uname)
+@@ -162,7 +162,7 @@ endif
+ CXX=clang++
+ OPT=-O2
+-WERROR=-Werror
++WERROR=
+ CXXFLAGS=$(OPT) $(LLVM_CXXFLAGS) -I. -Iobjs/ -I$(CLANG_INCLUDE)  \
+       $(LLVM_VERSION_DEF) \
+       -Wall \
diff --git a/products/patches/ispc-ispc-0621fcb.patch b/products/patches/ispc-ispc-0621fcb.patch
new file mode 100644 (file)
index 0000000..6edcae8
--- /dev/null
@@ -0,0 +1,11 @@
+--- ispc-ispc-0621fcb_orig/Makefile    2017-11-11 00:07:30.000000000 +0100
++++ ispc-ispc-0621fcb/Makefile 2019-01-04 09:56:16.477980636 +0100
+@@ -162,7 +162,7 @@
+ CXX=clang++
+ OPT=-O2
+-WERROR=-Werror
++WERROR=
+ CXXFLAGS=$(OPT) $(LLVM_CXXFLAGS) -I. -Iobjs/ -I$(CLANG_INCLUDE)  \
+       $(LLVM_VERSION_DEF) \
+       -Wall \
diff --git a/products/patches/ispc-makefile_WERROR.patch b/products/patches/ispc-makefile_WERROR.patch
new file mode 100644 (file)
index 0000000..5a1f757
--- /dev/null
@@ -0,0 +1,11 @@
+--- ispc_ref/Makefile  2017-11-11 00:07:30.000000000 +0100
++++ ispc/Makefile      2019-07-25 11:59:39.282850765 +0200
+@@ -162,7 +162,7 @@ endif
+ CXX=clang++
+ OPT=-O2
+-WERROR=-Werror
++WERROR=
+ CXXFLAGS=$(OPT) $(LLVM_CXXFLAGS) -I. -Iobjs/ -I$(CLANG_INCLUDE)  \
+       $(LLVM_VERSION_DEF) \
+       -Wall \
diff --git a/products/patches/kernel_orbmodule_safewakeup.patch b/products/patches/kernel_orbmodule_safewakeup.patch
new file mode 100644 (file)
index 0000000..31044d7
--- /dev/null
@@ -0,0 +1,15 @@
+diff --git a/bin/orbmodule.py b/bin/orbmodule.py
+old mode 100644
+new mode 100755
+index ddb8762..4b83fee
+--- a/bin/orbmodule.py
++++ b/bin/orbmodule.py
+@@ -69,7 +69,7 @@ class client:
+       # On lance le Naming Server (doit etre dans le PATH)
+       test = True
+-      if args['wake_up_session']:
++      if args != None and 'wake_up_session' in args and args['wake_up_session']:
+         test = False
+         pass
+       if test:
diff --git a/products/patches/kernel_setenv_161024.patch b/products/patches/kernel_setenv_161024.patch
new file mode 100644 (file)
index 0000000..c9af4e7
--- /dev/null
@@ -0,0 +1,26 @@
+diff -pruN KERNEL_orig/bin/setenv.py KERNEL/bin/setenv.py
+--- KERNEL_orig/bin/setenv.py
++++ KERNEL/bin/setenv.py
+@@ -242,9 +242,22 @@
+ # -----------------------------------------------------------------------------
++def optimize_environ():
++    """Optimize some variables in environment variables."""
++    for key, val in os.environ.items():
++        if key in ['PATH', 'PYTHONPATH', 'LIB']:
++            lst = []
++            for f in val.split(os.pathsep):
++                if os.path.exists(f) and f not in lst:
++                    lst.append(f)
++            os.environ[key] = os.pathsep.join(lst)  
++
++# -----------------------------------------------------------------------------
++
+ def main(silent=False, exeName=None):
+     args, modules_list, modules_root_dir = get_config(silent=silent, exeName=exeName)
+     set_env(args, modules_list, modules_root_dir, silent=silent)
++    optimize_environ()
+     return args
+ # -----------------------------------------------------------------------------
diff --git a/products/patches/lapack-3.8.0_windows.patch b/products/patches/lapack-3.8.0_windows.patch
new file mode 100644 (file)
index 0000000..a79a32c
--- /dev/null
@@ -0,0 +1,13 @@
+--- lapack/CMakeLists.txt
++++ lapack_fix/CMakeLists.txt
+@@ -67,6 +67,10 @@
+ # Delete libmtsk in linking sequence for Sun/Oracle Fortran Compiler.
+ # This library is not present in the Sun package SolarisStudio12.3-linux-x86-bin
+   string(REPLACE \;mtsk\; \; CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES "${CMAKE_Fortran_IMPLICIT_LINK_LIBRARIES}")
++elseif(WIN32)
++  if("${CMAKE_Fortran_COMPILER}" MATCHES "gfortran")
++    set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Wl,--allow-multiple-definition")
++  endif()
+ endif()
+ if(CMAKE_Fortran_COMPILER_ID STREQUAL "Compaq")
diff --git a/products/patches/lata-plugin_visit.patch b/products/patches/lata-plugin_visit.patch
new file mode 100644 (file)
index 0000000..ac5b03e
--- /dev/null
@@ -0,0 +1,37 @@
+diff -pruN lata_ref/plugin_visit/CMakeLists.txt.para lata/plugin_visit/CMakeLists.txt.para
+--- lata_ref/plugin_visit/CMakeLists.txt.para  2018-04-09 16:27:18.000000000 +0200
++++ lata/plugin_visit/CMakeLists.txt.para      2019-09-19 18:11:05.888036790 +0200
+@@ -6,10 +6,27 @@ IF( COMMAND CMAKE_POLICY )
+   CMAKE_POLICY( SET CMP0003 NEW )
+ ENDIF( COMMAND CMAKE_POLICY )
++OPTION(VisItBridgePlugin_SOURCE_DIR "Visit bridge plugin source directory" ".")
+ FIND_PACKAGE(ParaView REQUIRED)
+ message("${PARAVIEW_USE_FILE}")
+ INCLUDE(${PARAVIEW_USE_FILE})
++#set(VisItBridgePlugin_SOURCE_DIR ${vISiTR}/VisItLib)
++set(AVT_DATABASE_SOURCE_DIR ${VisItBridgePlugin_SOURCE_DIR}/avt/Database)
++set(AVT_PIPELINE_SOURCE_DIR ${VisItBridgePlugin_SOURCE_DIR}/avt/Pipeline)
++set(AVT_DBATTS_SOURCE_DIR ${VisItBridgePlugin_SOURCE_DIR}/avt/DBAtts)
++set(COMMON_EXCEPTIONS_SOURCE_DIR ${VisItBridgePlugin_SOURCE_DIR}/common/Exceptions)
++include(${VisItBridgePlugin_SOURCE_DIR}/CMake/VisItCommon.cmake)
++
++INCLUDE_DIRECTORIES(
++${AVT_DATABASE_SOURCE_DIR}/Database
++${AVT_DATABASE_SOURCE_DIR}/Formats
++${AVT_PIPELINE_SOURCE_DIR}/Data
++${AVT_DBATTS_SOURCE_DIR}/MetaData
++${COMMON_EXCEPTIONS_SOURCE_DIR}/Database
++)
++
++
+ SET(SOURCES
+ avtlataFileFormat.C
+ LataDB.C
+@@ -46,4 +63,4 @@ ADD_VISIT_PLUGIN_READER(VisItReaderlata
+   SERVER_SOURCES ${SOURCES}
+   )
+-TARGET_LINK_LIBRARIES(VisItReaderlata vtkVisItAVTAlgorithms)
++TARGET_LINK_LIBRARIES(VisItReaderlata)
diff --git a/products/patches/libxml2-2.9.1.patch b/products/patches/libxml2-2.9.1.patch
new file mode 100644 (file)
index 0000000..25f0e6e
--- /dev/null
@@ -0,0 +1,26 @@
+diff -Naur libxml2-2.9.0.orig/include/win32config.h libxml2-2.9.0/include/win32config.h
+--- libxml2-2.9.0.orig/include/win32config.h   2012-09-05 14:14:55.000000000 +0300
++++ libxml2-2.9.0/include/win32config.h        2017-01-17 16:24:17.021776800 +0300
+@@ -95,7 +95,9 @@
+ #if defined(_MSC_VER)
+ #define mkdir(p,m) _mkdir(p)
++#if _MSC_VER < 1900
+ #define snprintf _snprintf
++#endif
+ #if _MSC_VER < 1500
+ #define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
+ #endif
+diff -Naur libxml2-2.9.0.orig/win32/VC10/config.h libxml2-2.9.0/win32/VC10/config.h
+--- libxml2-2.9.0.orig/win32/VC10/config.h     2012-09-11 06:52:46.000000000 +0300
++++ libxml2-2.9.0/win32/VC10/config.h  2017-01-17 15:55:19.015090100 +0300
+@@ -96,7 +96,9 @@
+ #if defined(_MSC_VER)
+ #define mkdir(p,m) _mkdir(p)
++#if _MSC_VER < 1900 // Cannot define this in VS 2015 and above!
+ #define snprintf _snprintf
++#endif
+ #if _MSC_VER < 1500
+ #define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
+ #endif
diff --git a/products/patches/llvm-8.0.1-clang-FD32.patch b/products/patches/llvm-8.0.1-clang-FD32.patch
new file mode 100644 (file)
index 0000000..bc61ff1
--- /dev/null
@@ -0,0 +1,18 @@
+--- llvm_ref/include/llvm/Demangle/MicrosoftDemangleNodes.h    2019-01-08 22:05:51.000000000 +0100
++++ llvm/include/llvm/Demangle/MicrosoftDemangleNodes.h        2020-09-04 17:01:15.736563484 +0200
+@@ -4,6 +4,8 @@
+ #include "llvm/Demangle/Compiler.h"
+ #include "llvm/Demangle/StringView.h"
+ #include <array>
++#include <cstdint>
++#include <string>
+ class OutputStream;
+@@ -602,4 +604,4 @@
+ } // namespace ms_demangle
+ } // namespace llvm
+-#endif
+\ Pas de fin de ligne à la fin du fichier
++#endif
diff --git a/products/patches/matplotlib-1.4.3_fix_Cannot_connect_NavigationToolbar2QT.patch b/products/patches/matplotlib-1.4.3_fix_Cannot_connect_NavigationToolbar2QT.patch
new file mode 100644 (file)
index 0000000..630bb37
--- /dev/null
@@ -0,0 +1,33 @@
+diff -rupN ./lib/matplotlib/backends/backend_qt5.py_old ./lib/matplotlib/backends/backend_qt5.py
+--- ./lib/matplotlib/backends/backend_qt5.py_old       2017-12-13 08:34:28.995053982 +0100
++++ ./lib/matplotlib/backends/backend_qt5.py   2017-12-13 08:34:58.674133153 +0100
+@@ -475,10 +475,16 @@ class FigureManagerQT(FigureManagerBase)
+         self.window._destroying = False
++        # add text label to status bar
++        # fix https://github.com/matplotlib/matplotlib/issues/6858/ as 'matplotlib 2.0.2'
++        self.statusbar_label = QtWidgets.QLabel()
++        self.window.statusBar().addWidget(self.statusbar_label)
++
+         self.toolbar = self._get_toolbar(self.canvas, self.window)
+         if self.toolbar is not None:
+             self.window.addToolBar(self.toolbar)
+-            self.toolbar.message.connect(self._show_message)
++            # fix https://github.com/matplotlib/matplotlib/issues/6858/ as 'matplotlib 2.0.2'
++            self.toolbar.message.connect(self.statusbar_label.setText)
+             tbs_height = self.toolbar.sizeHint().height()
+         else:
+             tbs_height = 0
+@@ -502,10 +508,6 @@ class FigureManagerQT(FigureManagerBase)
+                 self.toolbar.update()
+         self.canvas.figure.add_axobserver(notify_axes_change)
+-    @QtCore.Slot()
+-    def _show_message(self, s):
+-        # Fixes a PySide segfault.
+-        self.window.statusBar().showMessage(s)
+     def full_screen_toggle(self):
+         if self.window.isFullScreen():
+
diff --git a/products/patches/matplotlib-1.4.3_no_auto_download.patch b/products/patches/matplotlib-1.4.3_no_auto_download.patch
new file mode 100644 (file)
index 0000000..4f27014
--- /dev/null
@@ -0,0 +1,12 @@
+diff -pruN matplotlib-1.4.3_OLD/setup.py matplotlib-1.4.3/setup.py
+--- matplotlib-1.4.3_OLD/setup.py      2015-11-19 10:20:21.819496459 +0100
++++ matplotlib-1.4.3/setup.py  2015-11-19 10:21:19.792938308 +0100
+@@ -7,7 +7,7 @@ from __future__ import print_function, a
+ # This needs to be the very first thing to use distribute
+ from distribute_setup import use_setuptools
+-use_setuptools()
++#use_setuptools()
+ import sys
diff --git a/products/patches/matplotlib_1_4_2_patch_freetype_detection_for_SAT.patch b/products/patches/matplotlib_1_4_2_patch_freetype_detection_for_SAT.patch
new file mode 100644 (file)
index 0000000..53f7dee
--- /dev/null
@@ -0,0 +1,43 @@
+diff -rupN matplotlib-1.4.2_old/setupext.py matplotlib-1.4.2_new/setupext.py
+--- matplotlib-1.4.2_old/setupext.py   2014-10-23 03:54:01.000000000 +0200
++++ matplotlib-1.4.2_new/setupext.py   2014-12-12 14:43:21.000000000 +0100
+@@ -448,6 +448,11 @@ class SetupPackage(object):
+                     "Requires %s %s or later.  Found %s." %
+                     (package, min_version, version))
++        if package=='freetype2':
++            include_dirs_hack = [os.path.join(os.environ['FREETYPE_ROOT_DIR'], 'include'),  os.path.join(os.environ['FREETYPE_ROOT_DIR'], 'include', 'freetype2') ]
++            check_include_file(include_dirs_hack, include_file, package)
++            return 'version %s' % version
++
+         ext = self.get_extension()
+         if ext is None:
+             ext = make_extension('test', [])
+@@ -984,18 +989,22 @@ class FreeType(SetupPackage):
+                 return '.'.join([major, minor, patch])
+     def add_flags(self, ext):
++        ## SALOME HACK
++        freetype_include_path = os.path.join(os.environ['FREETYPE_ROOT_DIR'], 'include')
++        freetype_include_freetype2_path = os.path.join(freetype_include_path, 'freetype2')
++        freetype_include_freetype2_freetype_path = os.path.join(freetype_include_path, 'freetype2', 'freetype')
++        freetype_lib_path = os.path.join(os.environ['FREETYPE_ROOT_DIR'], 'lib')
++
+         pkg_config.setup_extension(
+             ext, 'freetype2',
+-            default_include_dirs=[
+-                'include/freetype2', 'freetype2',
+-                'lib/freetype2/include',
++            default_include_dirs=[freetype_include_path, freetype_include_freetype2_path, freetype_include_freetype2_freetype_path,
++                'freetype2', 'lib/freetype2/include',
+                 'lib/freetype2/include/freetype2'],
+-            default_library_dirs=[
++            default_library_dirs=[ freetype_lib_path,
+                 'freetype2/lib'],
+             default_libraries=['freetype', 'z'])
+-
+ class FT2Font(SetupPackage):
+     name = 'ft2font'
diff --git a/products/patches/matplotlib_1_4_3_patch_freetype_detection_for_SAT.patch b/products/patches/matplotlib_1_4_3_patch_freetype_detection_for_SAT.patch
new file mode 100644 (file)
index 0000000..ab5dc2e
--- /dev/null
@@ -0,0 +1,48 @@
+diff -rupN matplotlib-1.4.3p1_old/setupext.py matplotlib-1.4.3p1_new/setupext.py
+--- matplotlib-1.4.3p1_old/setupext.py 2015-02-16 04:46:36.000000000 +0100
++++ matplotlib-1.4.3p1_new/setupext.py 2015-04-02 11:09:28.623280000 +0200
+@@ -446,8 +446,14 @@ class SetupPackage(object):
+                 raise CheckFailed(
+                     "Requires %s %s or later.  Found %s." %
+                     (package, min_version, version))
+-
+-        ext = self.get_extension()
++        # BEGIN SALOME patch
++        if package=='freetype2':
++            include_dirs_hack = [os.path.join(os.environ['FREETYPE_ROOT_DIR'], 'include'),  os.path.join(os.environ['FREETYPE_ROOT_DIR'], 'include', 'freetype2') ]
++            check_include_file(include_dirs_hack, include_file, package)
++            return 'version %s' % version
++        # END SALOME patch
++        
++        ext = self.get_extension()
+         if ext is None:
+             ext = make_extension('test', [])
+             pkg_config.setup_extension(ext, package)
+@@ -983,16 +989,22 @@ class FreeType(SetupPackage):
+                 return '.'.join([major, minor, patch])
+     def add_flags(self, ext):
++        ## BEGIN SALOME HACK
++        freetype_include_path = os.path.join(os.environ['FREETYPE_ROOT_DIR'], 'include')
++        freetype_include_freetype2_path = os.path.join(freetype_include_path, 'freetype2')
++        freetype_include_freetype2_freetype_path = os.path.join(freetype_include_path, 'freetype2', 'freetype')
++        freetype_lib_path = os.path.join(os.environ['FREETYPE_ROOT_DIR'], 'lib')
++
+         pkg_config.setup_extension(
+             ext, 'freetype2',
+-            default_include_dirs=[
+-                'include/freetype2', 'freetype2',
+-                'lib/freetype2/include',
+-                'lib/freetype2/include/freetype2'],
+-            default_library_dirs=[
++            default_include_dirs=[freetype_include_path, freetype_include_freetype2_path, freetype_include_freetype2_freetype_path,
++                 'freetype2', 'lib/freetype2/include',
++                 'lib/freetype2/include/freetype2'],
++            default_library_dirs=[ freetype_lib_path,
+                 'freetype2/lib'],
+             default_libraries=['freetype', 'z'])
++        ## END SALOME HACK
+ class FT2Font(SetupPackage):
diff --git a/products/patches/matplotlibrc-qt4.patch b/products/patches/matplotlibrc-qt4.patch
new file mode 100644 (file)
index 0000000..625103f
--- /dev/null
@@ -0,0 +1,514 @@
+diff -pruN matplotlib-1.4.3/matplotlibrc matplotlib-1.4.3_NEW/matplotlibrc
+--- matplotlib-1.4.3/matplotlibrc      1970-01-01 01:00:00.000000000 +0100
++++ matplotlib-1.4.3_NEW/matplotlibrc  2016-05-20 14:08:25.109809135 +0200
+@@ -0,0 +1,510 @@
++### MATPLOTLIBRC FORMAT
++
++# This is a sample matplotlib configuration file - you can find a copy
++# of it on your system in
++# site-packages/matplotlib/mpl-data/matplotlibrc.  If you edit it
++# there, please note that it will be overwritten in your next install.
++# If you want to keep a permanent local copy that will not be
++# overwritten, place it in the following location:
++# unix/linux:
++#     $HOME/.config/matplotlib/matplotlibrc or
++#     $XDG_CONFIG_HOME/matplotlib/matplotlibrc (if $XDG_CONFIG_HOME is set)
++# other platforms:
++#     $HOME/.matplotlib/matplotlibrc
++#
++# See http://matplotlib.org/users/customizing.html#the-matplotlibrc-file for
++# more details on the paths which are checked for the configuration file.
++#
++# This file is best viewed in a editor which supports python mode
++# syntax highlighting. Blank lines, or lines starting with a comment
++# symbol, are ignored, as are trailing comments.  Other lines must
++# have the format
++#    key : val # optional comment
++#
++# Colors: for the color values below, you can either use - a
++# matplotlib color string, such as r, k, or b - an rgb tuple, such as
++# (1.0, 0.5, 0.0) - a hex string, such as ff00ff or #ff00ff - a scalar
++# grayscale intensity such as 0.75 - a legal html color name, e.g., red,
++# blue, darkslategray
++
++#### CONFIGURATION BEGINS HERE
++
++# The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo
++# CocoaAgg MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG
++# Template.
++# You can also deploy your own backend outside of matplotlib by
++# referring to the module name (which must be in the PYTHONPATH) as
++# 'module://my_backend'.
++backend      : qt4agg
++
++# If you are using the Qt4Agg backend, you can choose here
++# to use the PyQt4 bindings or the newer PySide bindings to
++# the underlying Qt4 toolkit.
++#backend.qt4 : PyQt4        # PyQt4 | PySide
++
++# Note that this can be overridden by the environment variable
++# QT_API used by Enthought Tool Suite (ETS); valid values are
++# "pyqt" and "pyside".  The "pyqt" setting has the side effect of
++# forcing the use of Version 2 API for QString and QVariant.
++
++# The port to use for the web server in the WebAgg backend.
++# webagg.port : 8888
++
++# If webagg.port is unavailable, a number of other random ports will
++# be tried until one that is available is found.
++# webagg.port_retries : 50
++
++# When True, open the webbrowser to the plot that is shown
++# webagg.open_in_browser : True
++
++# When True, the figures rendered in the nbagg backend are created with
++# a transparent background.
++# nbagg.transparent : True
++
++# if you are running pyplot inside a GUI and your backend choice
++# conflicts, we will automatically try to find a compatible one for
++# you if backend_fallback is True
++#backend_fallback: True
++
++#interactive  : False
++#toolbar      : toolbar2   # None | toolbar2  ("classic" is deprecated)
++#timezone     : UTC        # a pytz timezone string, e.g., US/Central or Europe/Paris
++
++# Where your matplotlib data lives if you installed to a non-default
++# location.  This is where the matplotlib fonts, bitmaps, etc reside
++#datapath : /home/jdhunter/mpldata
++
++
++### LINES
++# See http://matplotlib.org/api/artist_api.html#module-matplotlib.lines for more
++# information on line properties.
++#lines.linewidth   : 1.0     # line width in points
++#lines.linestyle   : -       # solid line
++#lines.color       : blue    # has no affect on plot(); see axes.prop_cycle
++#lines.marker      : None    # the default marker
++#lines.markeredgewidth  : 0.5     # the line width around the marker symbol
++#lines.markersize  : 6            # markersize, in points
++#lines.dash_joinstyle : miter        # miter|round|bevel
++#lines.dash_capstyle : butt          # butt|round|projecting
++#lines.solid_joinstyle : miter       # miter|round|bevel
++#lines.solid_capstyle : projecting   # butt|round|projecting
++#lines.antialiased : True         # render lines in antialiased (no jaggies)
++
++#markers.fillstyle: full # full|left|right|bottom|top|none
++
++### PATCHES
++# Patches are graphical objects that fill 2D space, like polygons or
++# circles.  See
++# http://matplotlib.org/api/artist_api.html#module-matplotlib.patches
++# information on patch properties
++#patch.linewidth        : 1.0     # edge width in points
++#patch.facecolor        : blue
++#patch.edgecolor        : black
++#patch.antialiased      : True    # render patches in antialiased (no jaggies)
++
++### FONT
++#
++# font properties used by text.Text.  See
++# http://matplotlib.org/api/font_manager_api.html for more
++# information on font properties.  The 6 font properties used for font
++# matching are given below with their default values.
++#
++# The font.family property has five values: 'serif' (e.g., Times),
++# 'sans-serif' (e.g., Helvetica), 'cursive' (e.g., Zapf-Chancery),
++# 'fantasy' (e.g., Western), and 'monospace' (e.g., Courier).  Each of
++# these font families has a default list of font names in decreasing
++# order of priority associated with them.  When text.usetex is False,
++# font.family may also be one or more concrete font names.
++#
++# The font.style property has three values: normal (or roman), italic
++# or oblique.  The oblique style will be used for italic, if it is not
++# present.
++#
++# The font.variant property has two values: normal or small-caps.  For
++# TrueType fonts, which are scalable fonts, small-caps is equivalent
++# to using a font size of 'smaller', or about 83% of the current font
++# size.
++#
++# The font.weight property has effectively 13 values: normal, bold,
++# bolder, lighter, 100, 200, 300, ..., 900.  Normal is the same as
++# 400, and bold is 700.  bolder and lighter are relative values with
++# respect to the current weight.
++#
++# The font.stretch property has 11 values: ultra-condensed,
++# extra-condensed, condensed, semi-condensed, normal, semi-expanded,
++# expanded, extra-expanded, ultra-expanded, wider, and narrower.  This
++# property is not currently implemented.
++#
++# The font.size property is the default font size for text, given in pts.
++# 12pt is the standard value.
++#
++#font.family         : sans-serif
++#font.style          : normal
++#font.variant        : normal
++#font.weight         : medium
++#font.stretch        : normal
++# note that font.size controls default text sizes.  To configure
++# special text sizes tick labels, axes, labels, title, etc, see the rc
++# settings for axes and ticks. Special text sizes can be defined
++# relative to font.size, using the following values: xx-small, x-small,
++# small, medium, large, x-large, xx-large, larger, or smaller
++#font.size           : 12.0
++#font.serif          : Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
++#font.sans-serif     : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
++#font.cursive        : Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, cursive
++#font.fantasy        : Comic Sans MS, Chicago, Charcoal, Impact, Western, Humor Sans, fantasy
++#font.monospace      : Bitstream Vera Sans Mono, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace
++
++### TEXT
++# text properties used by text.Text.  See
++# http://matplotlib.org/api/artist_api.html#module-matplotlib.text for more
++# information on text properties
++
++#text.color          : black
++
++### LaTeX customizations. See http://wiki.scipy.org/Cookbook/Matplotlib/UsingTex
++#text.usetex         : False  # use latex for all text handling. The following fonts
++                              # are supported through the usual rc parameter settings:
++                              # new century schoolbook, bookman, times, palatino,
++                              # zapf chancery, charter, serif, sans-serif, helvetica,
++                              # avant garde, courier, monospace, computer modern roman,
++                              # computer modern sans serif, computer modern typewriter
++                              # If another font is desired which can loaded using the
++                              # LaTeX \usepackage command, please inquire at the
++                              # matplotlib mailing list
++#text.latex.unicode : False # use "ucs" and "inputenc" LaTeX packages for handling
++                            # unicode strings.
++#text.latex.preamble :  # IMPROPER USE OF THIS FEATURE WILL LEAD TO LATEX FAILURES
++                            # AND IS THEREFORE UNSUPPORTED. PLEASE DO NOT ASK FOR HELP
++                            # IF THIS FEATURE DOES NOT DO WHAT YOU EXPECT IT TO.
++                            # preamble is a comma separated list of LaTeX statements
++                            # that are included in the LaTeX document preamble.
++                            # An example:
++                            # text.latex.preamble : \usepackage{bm},\usepackage{euler}
++                            # The following packages are always loaded with usetex, so
++                            # beware of package collisions: color, geometry, graphicx,
++                            # type1cm, textcomp. Adobe Postscript (PSSNFS) font packages
++                            # may also be loaded, depending on your font settings
++
++#text.dvipnghack : None      # some versions of dvipng don't handle alpha
++                             # channel properly.  Use True to correct
++                             # and flush ~/.matplotlib/tex.cache
++                             # before testing and False to force
++                             # correction off.  None will try and
++                             # guess based on your dvipng version
++
++#text.hinting : auto   # May be one of the following:
++                       #   'none': Perform no hinting
++                       #   'auto': Use freetype's autohinter
++                       #   'native': Use the hinting information in the
++                       #             font file, if available, and if your
++                       #             freetype library supports it
++                       #   'either': Use the native hinting information,
++                       #             or the autohinter if none is available.
++                       # For backward compatibility, this value may also be
++                       # True === 'auto' or False === 'none'.
++#text.hinting_factor : 8 # Specifies the amount of softness for hinting in the
++                         # horizontal direction.  A value of 1 will hint to full
++                         # pixels.  A value of 2 will hint to half pixels etc.
++
++#text.antialiased : True # If True (default), the text will be antialiased.
++                         # This only affects the Agg backend.
++
++# The following settings allow you to select the fonts in math mode.
++# They map from a TeX font name to a fontconfig font pattern.
++# These settings are only used if mathtext.fontset is 'custom'.
++# Note that this "custom" mode is unsupported and may go away in the
++# future.
++#mathtext.cal : cursive
++#mathtext.rm  : serif
++#mathtext.tt  : monospace
++#mathtext.it  : serif:italic
++#mathtext.bf  : serif:bold
++#mathtext.sf  : sans
++#mathtext.fontset : cm # Should be 'cm' (Computer Modern), 'stix',
++                       # 'stixsans' or 'custom'
++#mathtext.fallback_to_cm : True  # When True, use symbols from the Computer Modern
++                                 # fonts when a symbol can not be found in one of
++                                 # the custom math fonts.
++
++#mathtext.default : it # The default font to use for math.
++                       # Can be any of the LaTeX font names, including
++                       # the special name "regular" for the same font
++                       # used in regular text.
++
++### AXES
++# default face and edge color, default tick sizes,
++# default fontsizes for ticklabels, and so on.  See
++# http://matplotlib.org/api/axes_api.html#module-matplotlib.axes
++#axes.hold           : True    # whether to clear the axes by default on
++#axes.facecolor      : white   # axes background color
++#axes.edgecolor      : black   # axes edge color
++#axes.linewidth      : 1.0     # edge linewidth
++#axes.grid           : False   # display grid or not
++#axes.titlesize      : large   # fontsize of the axes title
++#axes.labelsize      : medium  # fontsize of the x any y labels
++#axes.labelpad       : 5.0     # space between label and axis
++#axes.labelweight    : normal  # weight of the x and y labels
++#axes.labelcolor     : black
++#axes.axisbelow      : False   # whether axis gridlines and ticks are below
++                               # the axes elements (lines, text, etc)
++
++#axes.formatter.limits : -7, 7 # use scientific notation if log10
++                               # of the axis range is smaller than the
++                               # first or larger than the second
++#axes.formatter.use_locale : False # When True, format tick labels
++                                   # according to the user's locale.
++                                   # For example, use ',' as a decimal
++                                   # separator in the fr_FR locale.
++#axes.formatter.use_mathtext : False # When True, use mathtext for scientific
++                                     # notation.
++#axes.formatter.useoffset      : True    # If True, the tick label formatter
++                                         # will default to labeling ticks relative
++                                         # to an offset when the data range is very
++                                         # small compared to the minimum absolute
++                                         # value of the data.
++
++#axes.unicode_minus  : True    # use unicode for the minus symbol
++                               # rather than hyphen.  See
++                               # http://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes
++#axes.prop_cycle    : cycler('color', 'bgrcmyk')
++                                            # color cycle for plot lines
++                                            # as list of string colorspecs:
++                                            # single letter, long name, or
++                                            # web-style hex
++#axes.xmargin        : 0  # x margin.  See `axes.Axes.margins`
++#axes.ymargin        : 0  # y margin See `axes.Axes.margins`
++
++#polaraxes.grid      : True    # display grid on polar axes
++#axes3d.grid         : True    # display grid on 3d axes
++
++### TICKS
++# see http://matplotlib.org/api/axis_api.html#matplotlib.axis.Tick
++#xtick.major.size     : 4      # major tick size in points
++#xtick.minor.size     : 2      # minor tick size in points
++#xtick.major.width    : 0.5    # major tick width in points
++#xtick.minor.width    : 0.5    # minor tick width in points
++#xtick.major.pad      : 4      # distance to major tick label in points
++#xtick.minor.pad      : 4      # distance to the minor tick label in points
++#xtick.color          : k      # color of the tick labels
++#xtick.labelsize      : medium # fontsize of the tick labels
++#xtick.direction      : in     # direction: in, out, or inout
++
++#ytick.major.size     : 4      # major tick size in points
++#ytick.minor.size     : 2      # minor tick size in points
++#ytick.major.width    : 0.5    # major tick width in points
++#ytick.minor.width    : 0.5    # minor tick width in points
++#ytick.major.pad      : 4      # distance to major tick label in points
++#ytick.minor.pad      : 4      # distance to the minor tick label in points
++#ytick.color          : k      # color of the tick labels
++#ytick.labelsize      : medium # fontsize of the tick labels
++#ytick.direction      : in     # direction: in, out, or inout
++
++
++### GRIDS
++#grid.color       :   black   # grid color
++#grid.linestyle   :   :       # dotted
++#grid.linewidth   :   0.5     # in points
++#grid.alpha       :   1.0     # transparency, between 0.0 and 1.0
++
++### Legend
++#legend.fancybox      : False  # if True, use a rounded box for the
++                               # legend, else a rectangle
++#legend.isaxes        : True
++#legend.numpoints     : 2      # the number of points in the legend line
++#legend.fontsize      : large
++#legend.borderpad     : 0.5    # border whitespace in fontsize units
++#legend.markerscale   : 1.0    # the relative size of legend markers vs. original
++# the following dimensions are in axes coords
++#legend.labelspacing  : 0.5    # the vertical space between the legend entries in fraction of fontsize
++#legend.handlelength  : 2.     # the length of the legend lines in fraction of fontsize
++#legend.handleheight  : 0.7     # the height of the legend handle in fraction of fontsize
++#legend.handletextpad : 0.8    # the space between the legend line and legend text in fraction of fontsize
++#legend.borderaxespad : 0.5   # the border between the axes and legend edge in fraction of fontsize
++#legend.columnspacing : 2.    # the border between the axes and legend edge in fraction of fontsize
++#legend.shadow        : False
++#legend.frameon       : True   # whether or not to draw a frame around legend
++#legend.framealpha    : None    # opacity of of legend frame
++#legend.scatterpoints : 3 # number of scatter points
++
++### FIGURE
++# See http://matplotlib.org/api/figure_api.html#matplotlib.figure.Figure
++#figure.titlesize : medium     # size of the figure title
++#figure.titleweight : normal   # weight of the figure title
++#figure.figsize   : 8, 6    # figure size in inches
++#figure.dpi       : 80      # figure dots per inch
++#figure.facecolor : 0.75    # figure facecolor; 0.75 is scalar gray
++#figure.edgecolor : white   # figure edgecolor
++#figure.autolayout : False  # When True, automatically adjust subplot
++                            # parameters to make the plot fit the figure
++#figure.max_open_warning : 20  # The maximum number of figures to open through
++                               # the pyplot interface before emitting a warning.
++                               # If less than one this feature is disabled.
++
++# The figure subplot parameters.  All dimensions are a fraction of the
++# figure width or height
++#figure.subplot.left    : 0.125  # the left side of the subplots of the figure
++#figure.subplot.right   : 0.9    # the right side of the subplots of the figure
++#figure.subplot.bottom  : 0.1    # the bottom of the subplots of the figure
++#figure.subplot.top     : 0.9    # the top of the subplots of the figure
++#figure.subplot.wspace  : 0.2    # the amount of width reserved for blank space between subplots
++#figure.subplot.hspace  : 0.2    # the amount of height reserved for white space between subplots
++
++### IMAGES
++#image.aspect : equal             # equal | auto | a number
++#image.interpolation  : bilinear  # see help(imshow) for options
++#image.cmap   : jet               # gray | jet etc...
++#image.lut    : 256               # the size of the colormap lookup table
++#image.origin : upper             # lower | upper
++#image.resample  : False
++#image.composite_image : True     # When True, all the images on a set of axes are 
++                                  # combined into a single composite image before 
++                                  # saving a figure as a vector graphics file, 
++                                  # such as a PDF.
++
++### CONTOUR PLOTS
++#contour.negative_linestyle : dashed # dashed | solid
++#contour.corner_mask        : True   # True | False | legacy
++
++### ERRORBAR PLOTS
++#errorbar.capsize : 3             # length of end cap on error bars in pixels
++
++### Agg rendering
++### Warning: experimental, 2008/10/10
++#agg.path.chunksize : 0           # 0 to disable; values in the range
++                                  # 10000 to 100000 can improve speed slightly
++                                  # and prevent an Agg rendering failure
++                                  # when plotting very large data sets,
++                                  # especially if they are very gappy.
++                                  # It may cause minor artifacts, though.
++                                  # A value of 20000 is probably a good
++                                  # starting point.
++### SAVING FIGURES
++#path.simplify : True   # When True, simplify paths by removing "invisible"
++                        # points to reduce file size and increase rendering
++                        # speed
++#path.simplify_threshold : 0.1  # The threshold of similarity below which
++                                # vertices will be removed in the simplification
++                                # process
++#path.snap : True # When True, rectilinear axis-aligned paths will be snapped to
++                  # the nearest pixel when certain criteria are met.  When False,
++                  # paths will never be snapped.
++#path.sketch : None # May be none, or a 3-tuple of the form (scale, length,
++                    # randomness).
++                    # *scale* is the amplitude of the wiggle
++                    # perpendicular to the line (in pixels).  *length*
++                    # is the length of the wiggle along the line (in
++                    # pixels).  *randomness* is the factor by which
++                    # the length is randomly scaled.
++
++# the default savefig params can be different from the display params
++# e.g., you may want a higher resolution, or to make the figure
++# background white
++#savefig.dpi         : 100      # figure dots per inch
++#savefig.facecolor   : white    # figure facecolor when saving
++#savefig.edgecolor   : white    # figure edgecolor when saving
++#savefig.format      : png      # png, ps, pdf, svg
++#savefig.bbox        : standard # 'tight' or 'standard'.
++                                # 'tight' is incompatible with pipe-based animation
++                                # backends but will workd with temporary file based ones:
++                                # e.g. setting animation.writer to ffmpeg will not work,
++                                # use ffmpeg_file instead
++#savefig.pad_inches  : 0.1      # Padding to be used when bbox is set to 'tight'
++#savefig.jpeg_quality: 95       # when a jpeg is saved, the default quality parameter.
++#savefig.directory   : ~        # default directory in savefig dialog box,
++                                # leave empty to always use current working directory
++#savefig.transparent : False    # setting that controls whether figures are saved with a
++                                # transparent background by default
++
++# tk backend params
++#tk.window_focus   : False    # Maintain shell focus for TkAgg
++
++# ps backend params
++#ps.papersize      : letter   # auto, letter, legal, ledger, A0-A10, B0-B10
++#ps.useafm         : False    # use of afm fonts, results in small files
++#ps.usedistiller   : False    # can be: None, ghostscript or xpdf
++                                          # Experimental: may produce smaller files.
++                                          # xpdf intended for production of publication quality files,
++                                          # but requires ghostscript, xpdf and ps2eps
++#ps.distiller.res  : 6000      # dpi
++#ps.fonttype       : 3         # Output Type 3 (Type3) or Type 42 (TrueType)
++
++# pdf backend params
++#pdf.compression   : 6 # integer from 0 to 9
++                       # 0 disables compression (good for debugging)
++#pdf.fonttype       : 3         # Output Type 3 (Type3) or Type 42 (TrueType)
++
++# svg backend params
++#svg.image_inline : True       # write raster image data directly into the svg file
++#svg.image_noscale : False     # suppress scaling of raster data embedded in SVG
++#svg.fonttype : 'path'         # How to handle SVG fonts:
++#    'none': Assume fonts are installed on the machine where the SVG will be viewed.
++#    'path': Embed characters as paths -- supported by most SVG renderers
++#    'svgfont': Embed characters as SVG fonts -- supported only by Chrome,
++#               Opera and Safari
++
++# docstring params
++#docstring.hardcopy = False  # set this when you want to generate hardcopy docstring
++
++# Set the verbose flags.  This controls how much information
++# matplotlib gives you at runtime and where it goes.  The verbosity
++# levels are: silent, helpful, debug, debug-annoying.  Any level is
++# inclusive of all the levels below it.  If your setting is "debug",
++# you'll get all the debug and helpful messages.  When submitting
++# problems to the mailing-list, please set verbose to "helpful" or "debug"
++# and paste the output into your report.
++#
++# The "fileo" gives the destination for any calls to verbose.report.
++# These objects can a filename, or a filehandle like sys.stdout.
++#
++# You can override the rc default verbosity from the command line by
++# giving the flags --verbose-LEVEL where LEVEL is one of the legal
++# levels, e.g., --verbose-helpful.
++#
++# You can access the verbose instance in your code
++#   from matplotlib import verbose.
++#verbose.level  : silent      # one of silent, helpful, debug, debug-annoying
++#verbose.fileo  : sys.stdout  # a log filename, sys.stdout or sys.stderr
++
++# Event keys to interact with figures/plots via keyboard.
++# Customize these settings according to your needs.
++# Leave the field(s) empty if you don't need a key-map. (i.e., fullscreen : '')
++
++#keymap.fullscreen : f               # toggling
++#keymap.home : h, r, home            # home or reset mnemonic
++#keymap.back : left, c, backspace    # forward / backward keys to enable
++#keymap.forward : right, v           #   left handed quick navigation
++#keymap.pan : p                      # pan mnemonic
++#keymap.zoom : o                     # zoom mnemonic
++#keymap.save : s                     # saving current figure
++#keymap.quit : ctrl+w, cmd+w         # close the current figure
++#keymap.grid : g                     # switching on/off a grid in current axes
++#keymap.yscale : l                   # toggle scaling of y-axes ('log'/'linear')
++#keymap.xscale : L, k                # toggle scaling of x-axes ('log'/'linear')
++#keymap.all_axes : a                 # enable all axes
++
++# Control location of examples data files
++#examples.directory : ''   # directory to look in for custom installation
++
++###ANIMATION settings
++#animation.html : 'none'           # How to display the animation as HTML in
++                                   # the IPython notebook. 'html5' uses
++                                   # HTML5 video tag.
++#animation.writer : ffmpeg         # MovieWriter 'backend' to use
++#animation.codec : mpeg4           # Codec to use for writing movie
++#animation.bitrate: -1             # Controls size/quality tradeoff for movie.
++                                   # -1 implies let utility auto-determine
++#animation.frame_format: 'png'     # Controls frame format used by temp files
++#animation.ffmpeg_path: 'ffmpeg'   # Path to ffmpeg binary. Without full path
++                                   # $PATH is searched
++#animation.ffmpeg_args: ''         # Additional arguments to pass to ffmpeg
++#animation.avconv_path: 'avconv'   # Path to avconv binary. Without full path
++                                   # $PATH is searched
++#animation.avconv_args: ''         # Additional arguments to pass to avconv
++#animation.mencoder_path: 'mencoder'
++                                   # Path to mencoder binary. Without full path
++                                   # $PATH is searched
++#animation.mencoder_args: ''       # Additional arguments to pass to mencoder
++#animation.convert_path: 'convert' # Path to ImageMagick's convert binary.
++                                   # On Windows use the full path since convert
++                                   # is also the name of a system tool.
diff --git a/products/patches/med-4.0.0_unicode.patch b/products/patches/med-4.0.0_unicode.patch
new file mode 100644 (file)
index 0000000..690512c
--- /dev/null
@@ -0,0 +1,260 @@
+diff -Naur med-4.0.0_orig/CMakeLists.txt med-4.0.0_modif/CMakeLists.txt
+--- med-4.0.0_orig/CMakeLists.txt      2018-12-10 20:41:59.000000000 +0300
++++ med-4.0.0_modif/CMakeLists.txt     2019-02-26 19:14:45.310698300 +0300
+@@ -35,6 +35,7 @@
+ OPTION (MEDFILE_BUILD_STATIC_LIBS "Build MED-file static libraries" OFF)
+ OPTION (MEDFILE_INSTALL_DOC "Install pre-built documentation" ON)
+ OPTION (MEDFILE_BUILD_PYTHON "Build Python bindings (needs SWIG)" OFF)
++OPTION (MEDFILE_USE_UNICODE "Use unicode filenames" ON)
+ #-- Add an Option to toggle the generation of the API documentation
+ #-- Embedded documentation contains patched doxygen generated fortran documention
+@@ -50,6 +51,10 @@
+   ADD_SUBDIRECTORY(doc)
+ endif()
++IF(MEDFILE_USE_UNICODE)
++  ADD_DEFINITIONS(-DUNICODE)
++ENDIF()
++
+ # Option checking.
+ IF(MEDFILE_BUILD_SHARED_LIBS AND MEDFILE_BUILD_STATIC_LIBS)
+   MESSAGE(FATAL_ERROR "You can not build shared and static libraries at the same time! ")
+diff -Naur med-4.0.0_orig/include/med_misc.h med-4.0.0_modif/include/med_misc.h
+--- med-4.0.0_orig/include/med_misc.h  2018-12-10 13:17:52.000000000 +0300
++++ med-4.0.0_modif/include/med_misc.h 2019-02-26 18:05:01.054155600 +0300
+@@ -149,6 +149,9 @@
+                                      med_geometry_type * const smeshgeotype,
+                                      char * const              smeshgeotypename,
+                                      med_int * const           smeshnentity);
++extern MEDC_EXPORT
++int med_access(const char * const fichier, int mode);
++
+ /* Gestion des messages d'erreur */
+ /* extern MEDC_EXPORT */
+diff -Naur med-4.0.0_orig/src/2.3.6/ci/MEDmonter.c med-4.0.0_modif/src/2.3.6/ci/MEDmonter.c
+--- med-4.0.0_orig/src/2.3.6/ci/MEDmonter.c    2018-12-10 13:17:55.000000000 +0300
++++ med-4.0.0_modif/src/2.3.6/ci/MEDmonter.c   2019-02-26 18:15:57.706349300 +0300
+@@ -47,7 +47,7 @@
+    * On regarde si le fichier de nom "acces" existe
+    * Si ce n'est pas le cas => erreur
+    */
+-  if (access(acces,F_OK))
++  if (med_access(acces,F_OK))
+     return -1;
+   if ( (MED_MODE_ACCES = _MEDmodeAcces(fid) ) == MED_UNDEF_MODE_ACCES ) {
+diff -Naur med-4.0.0_orig/src/2.3.6/ci/MEDouvrir.c med-4.0.0_modif/src/2.3.6/ci/MEDouvrir.c
+--- med-4.0.0_orig/src/2.3.6/ci/MEDouvrir.c    2018-12-10 13:17:55.000000000 +0300
++++ med-4.0.0_modif/src/2.3.6/ci/MEDouvrir.c   2019-02-26 18:16:21.655051700 +0300
+@@ -49,7 +49,7 @@
+   switch(mode_acces)
+     {
+     case MED_LECTURE :
+-      if (access(nom,F_OK)) {
++      if (med_access(nom,F_OK)) {
+       MESSAGE("Impossible d'accéder aux fichier :");
+       SSCRUTE(nom);
+@@ -62,7 +62,7 @@
+       break;
+     case MED_LECTURE_ECRITURE : 
+-      if (access(nom,F_OK)) {
++      if (med_access(nom,F_OK)) {
+         if ((fid = _MEDfichierCreer(nom,mode_acces)) < 0)
+           return -1;
+       } else 
+@@ -71,7 +71,7 @@
+       break;
+     case MED_LECTURE_AJOUT    :
+-      if (access(nom,F_OK))
++      if (med_access(nom,F_OK))
+       {
+         if ((fid = _MEDfichierCreer(nom,mode_acces)) < 0)
+           return -1;
+diff -Naur med-4.0.0_orig/src/ci/MEDfileExist.c med-4.0.0_modif/src/ci/MEDfileExist.c
+--- med-4.0.0_orig/src/ci/MEDfileExist.c       2017-07-10 17:25:29.000000000 +0300
++++ med-4.0.0_modif/src/ci/MEDfileExist.c      2019-02-26 18:16:44.260571900 +0300
+@@ -74,7 +74,7 @@
+   /*
+    * On ouvre le fichier MED sous HDF
+    */ 
+-  if ( access(filename,F_OK) ) {
++  if ( med_access(filename,F_OK) ) {
+     
+     *fileexist = MED_FALSE;
+     *accessok  = MED_FALSE;
+@@ -107,13 +107,13 @@
+     // Join drive letter and directory name:
+     _makepath(_dirname, _drive, _direc, NULL, NULL);
+ #endif
+-    if ( access(_dirname,_mode) )  *accessok = MED_FALSE; else *accessok = MED_TRUE;
++    if ( med_access(_dirname,_mode) )  *accessok = MED_FALSE; else *accessok = MED_TRUE;
+     
+   } else {
+     
+     *fileexist = MED_TRUE;
+     (accessmode!=MED_ACC_RDONLY) && (_mode=_mode|W_OK);
+-    if ( access(filename,_mode) ) *accessok = MED_FALSE; else *accessok = MED_TRUE;
++    if ( med_access(filename,_mode) ) *accessok = MED_FALSE; else *accessok = MED_TRUE;
+     
+   }
+   
+diff -Naur med-4.0.0_orig/src/ci/MEDfileVersionOpen.c med-4.0.0_modif/src/ci/MEDfileVersionOpen.c
+--- med-4.0.0_orig/src/ci/MEDfileVersionOpen.c 2018-12-10 13:17:55.000000000 +0300
++++ med-4.0.0_modif/src/ci/MEDfileVersionOpen.c        2019-02-26 18:17:50.884971000 +0300
+@@ -62,7 +62,7 @@
+   switch(accessmode)
+     {
+     case MED_ACC_RDONLY :
+-      if (access(filename,F_OK)) {
++      if (med_access(filename,F_OK)) {
+       MED_ERR_(_ret,MED_ERR_EXIST,MED_ERR_FILE,filename);
+       goto ERROR;
+@@ -75,7 +75,7 @@
+       break;
+     case MED_ACC_RDWR :
+-      if (access(filename,F_OK)) {
++      if (med_access(filename,F_OK)) {
+       if ((_fid = _MEDfileCreate((char*) filename,accessmode,major,minor,release)) < 0) {
+         MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_FILE,filename);
+         goto ERROR;
+@@ -88,7 +88,7 @@
+       break;
+     case MED_ACC_RDEXT :
+-      if (access(filename,F_OK))
++      if (med_access(filename,F_OK))
+       {
+         if ((_fid = _MEDfileCreate((char*) filename,accessmode,major,minor,release)) < 0) {
+           MED_ERR_(_ret,MED_ERR_CREATE,MED_ERR_FILE,filename);
+diff -Naur med-4.0.0_orig/src/ci/MEDparFileOpen.c med-4.0.0_modif/src/ci/MEDparFileOpen.c
+--- med-4.0.0_orig/src/ci/MEDparFileOpen.c     2018-12-10 13:17:53.000000000 +0300
++++ med-4.0.0_modif/src/ci/MEDparFileOpen.c    2019-02-26 18:18:10.362058500 +0300
+@@ -62,7 +62,7 @@
+   switch(accessmode)
+     {
+     case MED_ACC_RDONLY :
+-      if (access(filename,F_OK)) {
++      if (med_access(filename,F_OK)) {
+       MED_ERR_(_fid,MED_ERR_DOESNTEXIST,MED_ERR_FILE,filename);
+       goto ERROR;
+@@ -75,7 +75,7 @@
+       break;
+     case MED_ACC_RDWR :
+-      if (access(filename,F_OK)) {
++      if (med_access(filename,F_OK)) {
+       if ((_fid = _MEDparFileCreate((char*) filename,accessmode, comm, info)) < 0) {
+         MED_ERR_(_fid,MED_ERR_CREATE,MED_ERR_FILE,filename);
+         goto ERROR;
+@@ -88,7 +88,7 @@
+       break;
+     case MED_ACC_RDEXT :
+-      if (access(filename,F_OK))
++      if (med_access(filename,F_OK))
+       {
+         if ((_fid = _MEDparFileCreate((char*) filename,accessmode, comm, info)) < 0) {
+           MED_ERR_(_fid,MED_ERR_CREATE,MED_ERR_FILE,filename);
+diff -Naur med-4.0.0_orig/src/ci/_MEDfileObjectsMount236.c med-4.0.0_modif/src/ci/_MEDfileObjectsMount236.c
+--- med-4.0.0_orig/src/ci/_MEDfileObjectsMount236.c    2018-12-10 13:17:54.000000000 +0300
++++ med-4.0.0_modif/src/ci/_MEDfileObjectsMount236.c   2019-02-26 18:18:20.374401600 +0300
+@@ -73,7 +73,7 @@
+   /*
+    * does the file exist ?
+    */
+-  if (access(mountfilename,F_OK)) {
++  if (med_access(mountfilename,F_OK)) {
+     MED_ERR_(_ret,MED_ERR_EXIST,MED_ERR_FILE,mountfilename);
+     goto ERROR;
+   }
+diff -Naur med-4.0.0_orig/src/ci/_MEDfileObjectsMount30.c med-4.0.0_modif/src/ci/_MEDfileObjectsMount30.c
+--- med-4.0.0_orig/src/ci/_MEDfileObjectsMount30.c     2018-12-10 13:17:55.000000000 +0300
++++ med-4.0.0_modif/src/ci/_MEDfileObjectsMount30.c    2019-02-26 18:18:29.115797700 +0300
+@@ -86,7 +86,7 @@
+     _id=chfid;
+   } else {
+     /* does the file exist ? */
+-    if (access(mountfilename,F_OK)) {
++    if (med_access(mountfilename,F_OK)) {
+       MED_ERR_(_ret,MED_ERR_EXIST,MED_ERR_FILE,mountfilename);
+       goto ERROR;
+     }
+diff -Naur med-4.0.0_orig/src/hdfi/_MEDmemFileOpen.c med-4.0.0_modif/src/hdfi/_MEDmemFileOpen.c
+--- med-4.0.0_orig/src/hdfi/_MEDmemFileOpen.c  2017-07-26 16:45:49.000000000 +0300
++++ med-4.0.0_modif/src/hdfi/_MEDmemFileOpen.c 2019-02-26 18:18:40.606423800 +0300
+@@ -421,7 +421,7 @@
+                                           (void *)(memfile)};
+   memfile->flags = accessmode;
+-  file_exist=!access(filename,F_OK);
++  file_exist=!med_access(filename,F_OK);
+   /*
+    * On inhibe le gestionnaire d'erreur HDF 5
+diff -Naur med-4.0.0_orig/src/misc/CMakeLists.txt med-4.0.0_modif/src/misc/CMakeLists.txt
+--- med-4.0.0_orig/src/misc/CMakeLists.txt     2017-11-06 19:19:17.000000000 +0300
++++ med-4.0.0_modif/src/misc/CMakeLists.txt    2019-02-26 19:19:26.331544200 +0300
+@@ -1,4 +1,5 @@
+ SET(misc_SOURCES
++  MEDaccess.c 
+   MEDsetFilter.c
+   MEDcstring.c
+   MED1cstring.c
+diff -Naur med-4.0.0_orig/src/misc/MEDaccess.c med-4.0.0_modif/src/misc/MEDaccess.c
+--- med-4.0.0_orig/src/misc/MEDaccess.c        1970-01-01 03:00:00.000000000 +0300
++++ med-4.0.0_modif/src/misc/MEDaccess.c       2019-03-07 15:15:56.880252400 +0300
+@@ -0,0 +1,46 @@
++/*  This file is part of MED.
++ *
++ *  COPYRIGHT (C) 1999 - 2019  EDF R&D, CEA/DEN
++ *  MED 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 3 of the License, or
++ *  (at your option) any later version.
++ *
++ *  MED 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 MED.  If not, see <http://www.gnu.org/licenses/>.
++ */
++
++#if defined(WIN32)
++#include <windows.h>
++#endif
++
++/******************************************************************************
++ *
++ * - Nom de la fonction : med_access
++ * - Description : 
++ * - Parametres :
++ *     - fichier    (IN) : nom du fichier.
++ *     - mode       (IN) : 
++ *
++ ******************************************************************************/
++int med_access(const char * const fichier, int mode) {
++  int ret;
++#if defined(WIN32) && defined(UNICODE)
++  int size_needed;
++  wchar_t* afilename = NULL;
++  size_needed = MultiByteToWideChar(CP_UTF8, 0, fichier, strlen(fichier), NULL, 0);
++  afilename = malloc((size_needed+1)*sizeof(wchar_t));
++  MultiByteToWideChar(CP_UTF8, 0, fichier, strlen(fichier), afilename, size_needed);
++  afilename[size_needed] = '\0';
++  ret = _waccess(afilename, mode);
++  free(afilename);
++#else
++  ret = access(fichier, mode);
++#endif 
++  return ret;
++}
diff --git a/products/patches/med-4.0.0alpha3.patch b/products/patches/med-4.0.0alpha3.patch
new file mode 100644 (file)
index 0000000..15c6f43
--- /dev/null
@@ -0,0 +1,21 @@
+diff -Naur --exclude=CVS --exclude=.git med-4.0.0alpha3_SRC.orig/config/cmake_files/FindMedfileHDF5.cmake med-4.0.0alpha3_SRC.patched/config/cmake_files/FindMedfileHDF5.cmake
+--- med-4.0.0alpha3_SRC.orig/config/cmake_files/FindMedfileHDF5.cmake  2018-10-18 17:54:13.943386900 +0300
++++ med-4.0.0alpha3_SRC.patched/config/cmake_files/FindMedfileHDF5.cmake       2018-10-18 17:15:02.000000000 +0300
+@@ -132,7 +132,16 @@
+   # As of HDF5-1.8.11 the following is still not set in the exported CONFIG
+   # of the official hdf5-config.cmake. We add it ourselves:
+   IF(NOT DEFINED HDF5_LIBRARIES)
+-    SET(HDF5_LIBRARIES "hdf5")
++    IF(NOT TARGET hdf5 AND NOT TARGET hdf5-static AND NOT TARGET hdf5-shared)
++      # Some HDF5 versions (e.g. 1.8.18) used hdf5::hdf5 etc
++      SET(_target_prefix "hdf5::")
++    ENDIF()
++    IF(MEDFILE_BUILD_SHARED_LIBS)
++      SET(_suffix "-shared")
++    ELSE()
++      SET(_suffix "-static")
++    ENDIF()
++    SET(HDF5_LIBRARIES "${_target_prefix}hdf5${_suffix}")
+   ENDIF()
+   
+   SET(HDF5_ROOT_DIR ${_tmp_ROOT_DIR})
diff --git a/products/patches/med-4.1.0_win_3x_files_support.patch b/products/patches/med-4.1.0_win_3x_files_support.patch
new file mode 100644 (file)
index 0000000..9093b57
--- /dev/null
@@ -0,0 +1,17 @@
+diff -Naur med-4.1.0_SRC_orig/src/hdfi/_MEDfileCreate.c med-4.1.0_SRC_modif/src/hdfi/_MEDfileCreate.c
+--- med-4.1.0_SRC_orig/src/hdfi/_MEDfileCreate.c       2020-03-11 12:36:37.000000000 +0300
++++ med-4.1.0_SRC_modif/src/hdfi/_MEDfileCreate.c      2020-05-19 16:07:30.195334400 +0300
+@@ -78,8 +78,11 @@
+     _h518medfileMMN[MED_FILE_H518_MAJOR  ]= _i8_major;
+     _h518medfileMMN[MED_FILE_H518_MINOR  ]= _i8_minor;
+     _h518medfileMMN[MED_FILE_H518_RELEASE]= _i8_release; /* 0 */
+-
+-    _fp = fopen(filename, "w");
++#if defined(WIN32)
++    _fp = fopen(filename, "wb");
++#else
++      _fp = fopen(filename, "w");
++#endif
+     if(!_fp) {
+       MED_ERR_(_fid,MED_ERR_CREATE,MED_ERR_FILE,filename);
+       ISCRUTE(major);ISCRUTE(minor);ISCRUTE(release);
diff --git a/products/patches/med_mode_non_debug.patch b/products/patches/med_mode_non_debug.patch
new file mode 100644 (file)
index 0000000..07df4fd
--- /dev/null
@@ -0,0 +1,15 @@
+diff --git a/configure.ac b/configure.ac
+index 17d50d2..62596f8 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -145,8 +145,8 @@ AC_LOCAL_INSTALL
+ dnl 
+ dnl libtool macro check for CC, LD, NM, LN_S, RANLIB, STRIP + pour les librairies dynamiques !
+-AC_ENABLE_DEBUG(yes)
+-AC_DISABLE_PRODUCTION
++dnl AC_ENABLE_DEBUG(yes)
++dnl AC_DISABLE_PRODUCTION
+ echo
+ echo ---------------------------------------------
diff --git a/products/patches/medcoupling-7.8.0-m4-files.patch b/products/patches/medcoupling-7.8.0-m4-files.patch
new file mode 100644 (file)
index 0000000..ebc06ba
--- /dev/null
@@ -0,0 +1,555 @@
+diff -rupN MEDCOUPLING_ori/adm_local/CMakeLists.txt MEDCOUPLING_new/adm_local/CMakeLists.txt
+--- MEDCOUPLING_ori/adm_local/CMakeLists.txt   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/adm_local/CMakeLists.txt   2017-01-04 16:00:47.096478000 +0100
+@@ -0,0 +1,20 @@
++# Copyright (C) 2012-2016  CEA/DEN, EDF 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
++#
++
++ADD_SUBDIRECTORY(unix)
+diff -rupN MEDCOUPLING_ori/adm_local/unix/CMakeLists.txt MEDCOUPLING_new/adm_local/unix/CMakeLists.txt
+--- MEDCOUPLING_ori/adm_local/unix/CMakeLists.txt      1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/adm_local/unix/CMakeLists.txt      2017-01-04 16:00:47.099483000 +0100
+@@ -0,0 +1,20 @@
++# Copyright (C) 2012-2016  CEA/DEN, EDF 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
++#
++
++ADD_SUBDIRECTORY(config_files)
+diff -rupN MEDCOUPLING_ori/adm_local/unix/config_files/check_MEDCOUPLING.m4 MEDCOUPLING_new/adm_local/unix/config_files/check_MEDCOUPLING.m4
+--- MEDCOUPLING_ori/adm_local/unix/config_files/check_MEDCOUPLING.m4   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/adm_local/unix/config_files/check_MEDCOUPLING.m4   2017-01-04 16:00:47.105477000 +0100
+@@ -0,0 +1,71 @@
++dnl Copyright (C) 2007-2016  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
++dnl
++dnl This library is free software; you can redistribute it and/or
++dnl modify it under the terms of the GNU Lesser General Public
++dnl License as published by the Free Software Foundation; either
++dnl version 2.1 of the License, or (at your option) any later version.
++dnl
++dnl This library is distributed in the hope that it will be useful,
++dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
++dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++dnl Lesser General Public License for more details.
++dnl
++dnl You should have received a copy of the GNU Lesser General Public
++dnl License along with this library; if not, write to the Free Software
++dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++dnl
++dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++dnl
++
++# Check availability of MEDCOUPLING binary distribution
++#
++# Author : Roman NIKOLAEV (OPEN CASCADE, 2016)
++#
++
++AC_DEFUN([CHECK_MEDCOUPLING],[
++AC_REQUIRE([AC_LINKER_OPTIONS])dnl
++
++AC_CHECKING(for MEDCOUPLING)
++
++MEDCOUPLING_ok=no
++
++MEDCOUPLING_LDFLAGS=""
++MEDCOUPLING_CXXFLAGS=""
++
++AC_ARG_WITH(medcoupling,
++          [  --with-medcoupling=DIR root directory path of MEDCOUPLING installation ],
++          MEDCOUPLING_DIR="$withval",MEDCOUPLING_DIR="")
++
++if test "x${MEDCOUPLING_DIR}" == "x" ; then
++  AC_MSG_RESULT(for \${MEDCOUPLING_ROOT_DIR}: ${MEDCOUPLING_ROOT_DIR})
++
++   # --with-medcoupling option is not used
++   if test "x${MEDCOUPLING_ROOT_DIR}" != "x" ; then
++    # MEDCOUPLING_ROOT_DIR environment variable defined
++      MEDCOUPLING_DIR=${MEDCOUPLING_ROOT_DIR}
++   fi
++
++fi
++
++if test -f ${MEDCOUPLING_DIR}/include/InterpKernelValue.hxx ; then
++   AC_MSG_RESULT(Using MEDCOUPLING module distribution in ${MEDCOUPLING_DIR})
++   MEDCOUPLING_ok=yes
++
++   AC_SUBST(MEDCOUPLING_ROOT_DIR)
++
++   MEDCOUPLING_LDFLAGS=-L${MEDCOUPLING_DIR}/lib${LIB_LOCATION_SUFFIX}
++   MEDCOUPLING_CXXFLAGS=-I${MEDCOUPLING_DIR}/include
++
++   AC_SUBST(MEDCOUPLING_LDFLAGS)
++   AC_SUBST(MEDCOUPLING_CXXFLAGS)
++
++else
++   AC_MSG_WARN("Cannot find MCOUPLING module sources")
++fi
++
++AC_MSG_RESULT(for MEDCOUPLING: $MEDCOUPLING_ok)
++
++])dnl
+diff -rupN MEDCOUPLING_ori/adm_local/unix/config_files/check_parmetis.m4 MEDCOUPLING_new/adm_local/unix/config_files/check_parmetis.m4
+--- MEDCOUPLING_ori/adm_local/unix/config_files/check_parmetis.m4      1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/adm_local/unix/config_files/check_parmetis.m4      2017-01-04 16:00:47.108474000 +0100
+@@ -0,0 +1,225 @@
++dnl Copyright (C) 2007-2016  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
++dnl
++dnl This library is free software; you can redistribute it and/or
++dnl modify it under the terms of the GNU Lesser General Public
++dnl License as published by the Free Software Foundation; either
++dnl version 2.1 of the License, or (at your option) any later version.
++dnl
++dnl This library is distributed in the hope that it will be useful,
++dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
++dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++dnl Lesser General Public License for more details.
++dnl
++dnl You should have received a copy of the GNU Lesser General Public
++dnl License along with this library; if not, write to the Free Software
++dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++dnl
++dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++dnl
++
++#for a future use...see further down AC_DEFUN([CHECK_PARMETISV4]
++
++#for use with ParMETIS V3
++AC_DEFUN([CHECK_PARMETIS],[
++AC_REQUIRE([AC_PROG_CC])dnl
++AC_REQUIRE([AC_PROG_CPP])dnl
++AC_REQUIRE([CHECK_MPI])dnl
++
++AC_CHECKING(for ParMETIS V3 Library)
++
++AC_LANG_SAVE
++AC_LANG_C
++
++PARMETIS_CPPFLAGS=""
++PARMETIS_LIBS=""
++ENABLE_PARMETIS="no"
++
++AC_CHECKING(for ParMETIS location)
++AC_ARG_WITH(parmetis,
++            [  --with-parmetis=DIR      root directory path to ParMETIS library installation ],
++            [PARMETISDIR="$withval"
++             AC_MSG_RESULT("select $withval as path to ParMETIS library")])
++
++if test "x${PARMETISDIR}" == "x" ; then
++  AC_MSG_RESULT(for \${PARMETIS_ROOT_DIR}: ${PARMETIS_ROOT_DIR})
++   # --with-parmetis option is not used
++   if test "x${PARMETIS_ROOT_DIR}" != "x" ; then
++      PARMETISDIR=${PARMETIS_ROOT_DIR}
++   fi
++fi
++
++AC_MSG_RESULT(\$PARMETISDIR = ${PARMETISDIR})
++
++CPPFLAGS_old="${CPPFLAGS}"
++LIBS_old=$LIBS
++
++if test "x${PARMETISDIR}" != "x" ; then
++  PARMETIS_CPPFLAGS="-DMED_ENABLE_PARMETIS -I${PARMETISDIR} ${MPI_INCLUDES}"
++  PARMETIS_LIBS="-L${PARMETISDIR} -lparmetis -lmetis ${MPI_LIBS}"
++fi
++
++parmetis_ok=no
++parmetis_headers_ok=no
++parmetis_binaries_ok=no
++
++dnl ParMETIS headers
++AC_CHECKING(for ParMETIS headers)
++CPPFLAGS="${CPPFLAGS_old} ${PARMETIS_CPPFLAGS}"
++
++parmetis_include_dir_ok=yes
++if test "x${PARMETISDIR}" != "x" ; then
++  AC_CHECK_FILE(${PARMETISDIR}/parmetis.h,
++                parmetis_include_dir_ok=yes,
++                parmetis_include_dir_ok=no)
++fi
++
++if test "x${parmetis_include_dir_ok}" = "xyes" ; then
++  AC_TRY_COMPILE([#include <parmetis.h>],
++                 [ParMETIS_V3_PartGeom(0,0,0,0,0)],
++                 parmetis_headers_ok=yes,
++                 parmetis_headers_ok=no)
++fi
++
++if test "x${parmetis_headers_ok}" = "xyes" ; then
++  AC_MSG_RESULT(\$PARMETIS_CPPFLAGS = ${PARMETIS_CPPFLAGS})
++fi
++AC_MSG_RESULT(for ParMETIS headers: $parmetis_headers_ok)
++
++if test "x${parmetis_headers_ok}" = "xyes" ; then
++  dnl ParMETIS binaries
++  AC_CHECKING(for ParMETIS binaries)
++  parmetis_lib_dir_ok=yes
++  AC_CHECK_FILE(${PARMETISDIR}/libparmetis.a,
++                parmetis_lib_dir_ok=yes,
++                parmetis_lib_dir_ok=no)
++
++  if test "x${parmetis_lib_dir_ok}" = "xyes" ; then
++    LIBS="${LIBS_old} ${PARMETIS_LIBS}"
++    AC_TRY_LINK([#include <parmetis.h>],
++                [ParMETIS_V3_PartGeom(0,0,0,0,0)],
++                parmetis_binaries_ok=yes,
++                parmetis_binaries_ok=no)
++  fi
++fi
++
++if test "x${parmetis_binaries_ok}" = "xyes" ; then
++  AC_MSG_RESULT(\$PARMETIS_LIBS = ${PARMETIS_LIBS})
++fi
++AC_MSG_RESULT(for ParMETIS binaries: $parmetis_binaries_ok)
++
++CPPFLAGS="${CPPFLAGS_old}"
++LIBS="${LIBS_old}"
++
++if test "x${parmetis_headers_ok}" = "xyes" ; then
++  if test "x${parmetis_binaries_ok}" = "xyes" ; then
++    parmetis_ok=yes
++    ENABLE_PARMETIS="yes"
++    # ParMETIS includes METIS, so we redefine METIS cppflags and libs
++    # And metis.h #include parmetis.h + mpi.h
++    metis_ok=yes
++    ENABLE_METIS="yes"
++    METISDIR=${PARMETISDIR}
++    METIS_CPPFLAGS="-DMED_ENABLE_METIS -I${METISDIR}/METISLib ${PARMETIS_CPPFLAGS}"
++    METIS_LIBS="-L${METISDIR} -lmetis ${MPI_LIBS}"
++  fi
++fi
++
++AC_MSG_RESULT(for ParMETIS: $parmetis_ok)
++
++AC_SUBST(ENABLE_PARMETIS)
++AC_SUBST(PARMETIS_CPPFLAGS)
++AC_SUBST(PARMETIS_LIBS)
++AC_SUBST(ENABLE_METIS)
++AC_SUBST(METIS_CPPFLAGS)
++AC_SUBST(METIS_LIBS)
++
++AC_LANG_RESTORE
++
++])dnl
++
++#for a future use...
++AC_DEFUN([CHECK_PARMETISV4],[
++AC_REQUIRE([AC_PROG_CC])dnl
++AC_REQUIRE([AC_PROG_CPP])dnl
++AC_REQUIRE([CHECK_MPI])dnl
++
++AC_CHECKING(for ParMETIS V4 Library)
++
++AC_LANG_SAVE
++AC_LANG_C
++
++PARMETIS_CPPFLAGS=""
++PARMETIS_LIBS=""
++ENABLE_PARMETIS="no"
++
++AC_CHECKING(for ParMETIS location)
++AC_ARG_WITH(parmetis,
++            [  --with-parmetis=DIR      root directory path to ParMETIS library installation ],
++            [PARMETISDIR="$withval"
++             AC_MSG_RESULT("select $withval as path to ParMETIS library")])
++
++AC_MSG_RESULT(\$PARMETISDIR = ${PARMETISDIR})
++
++CPPFLAGS_old="${CPPFLAGS}"
++LIBS_old=$LIBS
++
++if test "x${PARMETISDIR}" != "x" ; then
++  PARMETIS_CPPFLAGS="-DMED_ENABLE_PARMETIS -I${PARMETISDIR}/include ${MPI_INCLUDES}"
++  PARMETIS_LIBS="-L${PARMETISDIR}/lib -lparmetis -lmetis ${MPI_LIBS}"
++fi
++
++parmetis_ok=no
++parmetis_headers_ok=no
++parmetis_binaries_ok=no
++
++dnl ParMETIS headers
++AC_CHECKING(for ParMETIS headers)
++CPPFLAGS="${CPPFLAGS_old} ${PARMETIS_CPPFLAGS}"
++
++parmetis_include_dir_ok=yes
++if test "x${PARMETISDIR}" != "x" ; then
++  AC_CHECK_FILE(${PARMETISDIR}/include/parmetis.h,
++                parmetis_headers_ok=yes,
++                parmetis_headers_ok=no)
++fi
++
++if test "x${parmetis_headers_ok}" = "xyes" ; then
++  AC_MSG_RESULT(\$PARMETIS_CPPFLAGS = ${PARMETIS_CPPFLAGS})
++fi
++AC_MSG_RESULT(for ParMETIS headers: $parmetis_headers_ok)
++
++if test "x${parmetis_headers_ok}" = "xyes" ; then
++  dnl ParMETIS binaries
++  AC_CHECKING(for ParMETIS binaries)
++  AC_CHECK_FILE(${PARMETISDIR}/lib/libparmetis.a,
++                parmetis_binaries_ok=yes,
++                parmetis_binaries_ok=no)
++fi
++
++if test "x${parmetis_binaries_ok}" = "xyes" ; then
++  AC_MSG_RESULT(\$PARMETIS_LIBS = ${PARMETIS_LIBS})
++fi
++AC_MSG_RESULT(for ParMETIS binaries: $parmetis_binaries_ok)
++
++CPPFLAGS="${CPPFLAGS_old}"
++LIBS="${LIBS_old}"
++
++if test "x${parmetis_headers_ok}" = "xyes" ; then
++  if test "x${parmetis_binaries_ok}" = "xyes" ; then
++    parmetis_ok=yes
++    ENABLE_PARMETIS="yes"
++  fi
++fi
++
++AC_MSG_RESULT(for ParMETIS: $parmetis_ok)
++
++AC_SUBST(ENABLE_PARMETIS)
++AC_SUBST(PARMETIS_CPPFLAGS)
++AC_SUBST(PARMETIS_LIBS)
++
++AC_LANG_RESTORE
++
++])dnl
+diff -rupN MEDCOUPLING_ori/adm_local/unix/config_files/check_scotch.m4 MEDCOUPLING_new/adm_local/unix/config_files/check_scotch.m4
+--- MEDCOUPLING_ori/adm_local/unix/config_files/check_scotch.m4        1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/adm_local/unix/config_files/check_scotch.m4        2017-01-04 16:00:47.110484000 +0100
+@@ -0,0 +1,155 @@
++dnl Copyright (C) 2007-2016  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
++dnl
++dnl This library is free software; you can redistribute it and/or
++dnl modify it under the terms of the GNU Lesser General Public
++dnl License as published by the Free Software Foundation; either
++dnl version 2.1 of the License, or (at your option) any later version.
++dnl
++dnl This library is distributed in the hope that it will be useful,
++dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
++dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++dnl Lesser General Public License for more details.
++dnl
++dnl You should have received a copy of the GNU Lesser General Public
++dnl License along with this library; if not, write to the Free Software
++dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
++dnl
++dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
++dnl
++
++AC_DEFUN([CHECK_SCOTCH],[
++
++AC_CHECKING(for scotch)
++
++AC_LANG_SAVE
++AC_LANG_C
++
++dnl
++dnl default values
++dnl
++SCOTCH_CPPFLAGS="SCOTCH_CPPFLAGS_NOT_DEFINED"
++SCOTCH_LIBS="SCOTCH_LIBS_NOT_FOUND"
++SCOTCH_LIBSUFFIX="-not-defined"
++
++ENABLE_SCOTCH="no"
++
++AC_CHECKING(for scotch location)
++
++AC_ARG_WITH(scotch,
++            [  --with-scotch=DIR      root directory path to SCOTCH library installation ],
++            [SCOTCHDIR="$withval"
++             AC_MSG_RESULT([Select $withval as path to SCOTCH library])])
++
++if test "x${SCOTCHDIR}" == "x" ; then
++  AC_MSG_RESULT(for \${SCOTCH_ROOT_DIR}: ${SCOTCH_ROOT_DIR})
++   # --with-scotch option is not used
++   if test "x${SCOTCH_ROOT_DIR}" != "x" ; then
++      SCOTCHDIR=${SCOTCH_ROOT_DIR}
++   fi
++fi
++
++if test "x${SCOTCHDIR}" = "x" ; then
++  AC_MSG_WARN(SCOTCHDIR is not specified)
++  AC_MSG_NOTICE(Trying native scotch...)
++  SCOTCHDIR=/usr
++fi
++
++CPPFLAGS_old="${CPPFLAGS}"
++LIBS_old=$LIBS
++
++scotch_ok=no
++scotch_headers_ok=no
++scotch_binaries_ok=no
++
++dnl
++dnl SCOTCH headers
++dnl
++AC_CHECKING(for SCOTCH headers)
++
++for d in ${SCOTCHDIR}/include ${SCOTCHDIR}/include/scotch ${SCOTCHDIR}/bin ${SCOTCHDIR} ; do
++  dnl
++  dnl check scotch.h file availability
++  dnl
++  AC_CHECK_FILE([${d}/scotch.h],
++                [scotch_include_dir_ok=yes],
++                [scotch_include_dir_ok=no])
++
++  if test "x${scotch_include_dir_ok}" = "xyes" ; then
++    LOCAL_INCLUDES="-DMED_ENABLE_SCOTCH -I${d} ${MPI_INCLUDES}"
++    CPPFLAGS="${CPPFLAGS_old} ${LOCAL_INCLUDES} -std=c99"
++    AC_TRY_COMPILE([
++      #include <stdio.h>
++      #include <scotch.h>
++      ],
++      [SCOTCH_Graph* graph; SCOTCH_graphInit(graph)],
++      [scotch_headers_ok=yes],
++      [scotch_headers_ok=no])
++    if test "x${scotch_headers_ok}" = "xyes" ; then
++      break;
++    fi
++  fi
++done
++
++dnl
++dnl result for headers
++dnl
++AC_MSG_RESULT(for scotch headers: $scotch_headers_ok)
++
++dnl
++dnl SCOTCH libraries
++dnl
++if test "x${scotch_headers_ok}" = "xyes" ; then
++  AC_CHECKING(for scotch libraries)
++
++  for d in ${SCOTCHDIR}/lib ${SCOTCHDIR}/lib64 ${SCOTCHDIR}/lib/scotch ${SCOTCHDIR}/lib64/scotch ${SCOTCHDIR}/bin ${SCOTCHDIR} ; do
++    LOCAL_LIBS="-L${d} -lscotch -lscotcherr"
++    LIBS="${LIBS_old} ${LOCAL_LIBS}"
++    AC_TRY_LINK([
++      #include <stdio.h>
++      #include <scotch.h>
++      ],
++      [SCOTCH_Graph* graph; SCOTCH_graphInit(graph)],
++      [scotch_binaries_ok=yes],
++      [scotch_binaries_ok=no])
++    if test "x${scotch_binaries_ok}" = "xyes" ; then
++      break;
++    fi
++  done
++fi
++
++dnl
++dnl result for libraries
++dnl
++AC_MSG_RESULT(for scotch libraries: $scotch_binaries_ok)
++
++dnl
++dnl summary
++dnl
++if test "x${scotch_binaries_ok}" = "xyes" ; then
++  SCOTCH_CPPFLAGS=${LOCAL_INCLUDES}
++  SCOTCH_LIBS=${LOCAL_LIBS}
++  SCOTCH_LIBSUFFIX=""
++  ENABLE_SCOTCH="yes"
++  scotch_ok=yes
++  AC_MSG_RESULT(\$SCOTCH_CPPFLAGS  = ${SCOTCH_CPPFLAGS})
++  AC_MSG_RESULT(\$SCOTCH_LIBS      = ${SCOTCH_LIBS})
++  AC_MSG_RESULT(\$SCOTCH_LIBSUFFIX = ${SCOTCH_LIBSUFFIX})
++fi
++AC_MSG_RESULT(for scotch: $scotch_ok)
++
++CPPFLAGS="${CPPFLAGS_old}"
++LIBS="${LIBS_old}"
++
++AC_SUBST(SCOTCH_CPPFLAGS)
++AC_SUBST(SCOTCH_LIBSUFFIX)
++AC_SUBST(SCOTCH_LIBS)
++AC_SUBST(ENABLE_SCOTCH)
++
++AC_LANG_RESTORE
++
++])dnl
++
++
+diff -rupN MEDCOUPLING_ori/adm_local/unix/config_files/CMakeLists.txt MEDCOUPLING_new/adm_local/unix/config_files/CMakeLists.txt
+--- MEDCOUPLING_ori/adm_local/unix/config_files/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/adm_local/unix/config_files/CMakeLists.txt 2017-01-04 16:00:47.102538000 +0100
+@@ -0,0 +1,29 @@
++# Copyright (C) 2012-2016  CEA/DEN, EDF 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
++#
++
++SET(dist_admlocalm4_DATA
++    check_MEDCOUPLING.m4
++    check_parmetis.m4
++    check_scotch.m4
++)
++
++FOREACH(f ${dist_admlocalm4_DATA})
++  SET(DEST adm_local/unix/config_files)
++  INSTALL(FILES ${f} DESTINATION ${DEST})
++ENDFOREACH(f ${dist_admlocalm4_DATA})
+diff -rupN MEDCOUPLING_ori/CMakeLists.txt MEDCOUPLING_new/CMakeLists.txt
+--- MEDCOUPLING_ori/CMakeLists.txt     2017-01-17 09:39:14.489728365 +0100
++++ MEDCOUPLING_new/CMakeLists.txt     2017-01-04 16:25:17.608100119 +0100
+@@ -214,6 +214,7 @@ IF(WIN32)
+ ENDIF(WIN32)
+ ADD_SUBDIRECTORY(src)
++ADD_SUBDIRECTORY(adm_local)
+ ADD_SUBDIRECTORY(cmake_files)
+ IF(MEDCOUPLING_BUILD_DOC)
diff --git a/products/patches/medcoupling_abn780.patch b/products/patches/medcoupling_abn780.patch
new file mode 100644 (file)
index 0000000..0d958aa
--- /dev/null
@@ -0,0 +1,1413 @@
+diff -rupN MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox
+--- MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox        2017-01-23 09:08:42.640092940 +0100
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox 2017-01-23 09:10:56.995732061 +0100
+@@ -11,7 +11,8 @@ Before reading on, remember the definiti
+ - \subpage intersec-specifics
+ - \subpage interpkernelGeo2D
+-- \subpage barycoords (used in some P1 intersectors/locators) 
++- \subpage barycoords (used in some P1 intersectors/locators)
++- \subpage mapped_bary (used in some P1P1 intersectors) 
+ Some implementation details of the C++ code can also be found here: \ref interpkernel 
+diff -rupN MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox
+--- MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox 1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox  2017-01-23 09:10:56.995732061 +0100
+@@ -0,0 +1,61 @@
++/*!
++\page mapped_bary Mapped barycentric coordinates algorithm
++
++Mapped barycentric intersection type ('MappedBarycentric') can be selected in space dim 2 (resp. 3) when
++working with quadrangle only (resp. hexaedrons only).
++
++It can only be used for P1P1 projection: for any point P within the quadrangle or the hexaedron, the 
++set of reduced coordinates is computed (x, y, z all comprised between 0 and 1).
++Then the field value at P is computed using the usual form functions of finite element method 
++((1-x)*(1-y), x*(1-y), (1-x)*y and x*y in 2D for example). 
++
++The algorithm used to compute the reduced coordinates differs in dim 2 and dim 3.
++
++\section mapped_bary2d Dimension 2
++
++Let O, A, B, C the four points of the quadrangle, clockwise. Without loss of generality 
++O is assumed to be the origin.
++A point P within the quadrangle is identified with vector OP and simply denoted P.
++
++A suitable mapping is such that, if (x,y) is the couple of reduced coordinates (with x and y both in [0,1])
++ of a point P, then:
++\f[   \mathbf{P} = x\mathbf{C} + y\mathbf{A} + xy(\mathbf{B}- \mathbf{A}-\mathbf{C}) \f]
++
++This forms is the simplest one having a gradient which x component is constant in x, and similarly in y. 
++Furthermore the reduced coordinates 
++(0,0) (resp. (0,1), (1,0), and (1,1)) map to point O (resp. A, B, and C).
++
++Calling \f$\mathbf{N} = \mathbf{B}-\mathbf{A}-\mathbf{C}\f$ and developping for the 2 compos:
++
++\f[   p_x = C_x x + A_x y + N_x xy \f]
++\f[   p_y = C_y x + A_y y + N_y xy \f]
++
++Solving the first eq for x:
++\f[ x = \frac{p_x - y A_x }{C_x+yN_x}  \f]
++
++and injecting in second eq:
++\f[   (A_yN_x -N_yA_x)y^2 + (-p_yN_x -A_xC_y +A_yC_x+N_yp_x)y + (p_x C_y-p_yC_x)=0   \f] 
++solved in:
++\f[  y = \frac{-b \pm \sqrt{b^2 - 4 a c}}{2a} \f]
++where a, b and c are the coeffs of the 2nd order eq.
++
++This gives two possible couples of solution among which only one is in \f$[0,1]^2\f$.
++
++In case where \f$A_yN_x -N_yA_x = 0 \f$ we have a degenerated unique solution for $y$
++\f[ y = \frac{c}{b} \f]
++
++\subsection{Rectangle}
++
++Finally it is worth puting aside the case \f$\mathbf{N} = 0\f$ (rectangle), which boils down to solving an ordinary
++2-unknows system:
++\f[ x = \frac{p_x A_y - p_y A_x}{C_x A_y - C_y A_x}, y = \frac{C_x p_y-C_y p_x}{C_x A_y - C_y A_x} \f]
++
++
++\section mapped_bary3d Dimension 3  
++
++In three dimensions, adopting the same approach as above would lead to a 4th order equation to solve.
++A simpler approach has been chosen: the distance to each pair of parallel faces in the hexaedron is computed.   
++The ratios to the sum of the two distances is computed giving again a number between 0 and 1 for each of 
++the 3 directions.
++
++*/
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/CMakeLists.txt MEDCOUPLING_new/src/INTERP_KERNEL/CMakeLists.txt
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/CMakeLists.txt  2017-01-23 09:08:42.644093048 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/CMakeLists.txt   2017-01-23 09:10:57.060733806 +0100
+@@ -35,6 +35,7 @@ SET(interpkernel_SOURCES
+   Interpolation3DSurf.cxx
+   Interpolation3D.cxx
+   Interpolation2D3D.cxx
++  Interpolation3D1D.cxx
+   MeshElement.cxx
+   InterpKernelMeshQuality.cxx
+   InterpKernelCellSimplify.cxx
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.cxx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.cxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.cxx   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.cxx    2017-01-23 09:10:57.069734048 +0100
+@@ -0,0 +1,64 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#include "Interpolation3D1D.hxx"
++#include "Interpolation3D1D.txx"
++
++namespace INTERP_KERNEL
++{
++  /**
++   * \class Interpolation3D1D
++   * \brief Class used to calculate the interpolation between a 3D mesh and 1D mesh (in 3D space)
++   * Can be seen as a specialization of Interpolation3D, and allows notably the adjustment of bounind boxes.
++   * 
++   */
++
++  Interpolation3D1D::Interpolation3D1D()
++  {}
++
++  Interpolation3D1D::Interpolation3D1D(const InterpolationOptions& io):Interpolation<Interpolation3D1D>(io)
++  {}
++
++  /**
++   * Inspired from PlanarIntersector<MyMeshType,MyMatrix>::adjustBoundingBoxes
++   */
++  void Interpolation3D1D::adjustBoundingBoxes(std::vector<double>& bbox)
++  {
++    const int SPACE_DIM = 3;
++    const double adj = getBoundingBoxAdjustmentAbs();
++    const double adjRel = getBoundingBoxAdjustment();
++
++    long size = bbox.size()/(2*SPACE_DIM);
++    for (int i=0; i<size; i++)
++      {
++        double max=- std::numeric_limits<double>::max();
++        for(int idim=0; idim<SPACE_DIM; idim++)
++          {
++            double Dx=bbox[i*2*SPACE_DIM+1+2*idim]-bbox[i*2*SPACE_DIM+2*idim];
++            max=(max<Dx)?Dx:max;
++          }
++        for(int idim=0; idim<SPACE_DIM; idim++)
++          {
++            bbox[i*2*SPACE_DIM+2*idim  ] -= adjRel*max+adj;
++            bbox[i*2*SPACE_DIM+2*idim+1] += adjRel*max+adj;
++          }
++      }
++  }
++}
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.hxx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.hxx   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.hxx    2017-01-23 09:10:57.069734048 +0100
+@@ -0,0 +1,45 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : A Bruneton (CEA/DEN)
++
++#ifndef __INTERPOLATION3D1D_HXX__
++#define __INTERPOLATION3D1D_HXX__
++
++#include "INTERPKERNELDefines.hxx"
++#include "Interpolation.hxx"
++#include "NormalizedUnstructuredMesh.hxx"
++#include "InterpolationOptions.hxx"
++
++#include <vector>
++
++namespace INTERP_KERNEL
++{
++  class INTERPKERNEL_EXPORT Interpolation3D1D : public Interpolation<Interpolation3D1D>
++  {
++  public:
++    Interpolation3D1D();
++    Interpolation3D1D(const InterpolationOptions& io);
++    template<class MyMeshType, class MatrixType>
++    int interpolateMeshes(const MyMeshType& srcMesh, const MyMeshType& targetMesh, MatrixType& result, const std::string& method);
++  private:
++    void adjustBoundingBoxes(std::vector<double>& bbox);
++  };
++}
++
++#endif
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.txx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.txx   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.txx    2017-01-23 09:10:57.343741406 +0100
+@@ -0,0 +1,152 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (CEA/DEN)
++
++#ifndef __INTERPOLATION3D1D_TXX__
++#define __INTERPOLATION3D1D_TXX__
++
++#include "Interpolation3D1D.hxx"
++#include "Interpolation.txx"
++#include "MeshElement.txx"
++#include "PointLocator3DIntersectorP0P0.txx"
++#include "PointLocator3DIntersectorP0P1.txx"
++#include "PointLocator3DIntersectorP1P0.txx"
++#include "PointLocator3DIntersectorP1P1.txx"
++#include "Log.hxx"
++
++#include "BBTree.txx"
++
++namespace INTERP_KERNEL
++{
++  /**
++   *  Very similar to Interpolation3D::interpolateMeshes, except for the bounding boxes that can be
++   *  adjusted in a similar fashion as in InterpolationPlanar::performAdjustmentOfBB()
++   **/
++  template<class MyMeshType, class MatrixType>
++  int Interpolation3D1D::interpolateMeshes(const MyMeshType& srcMesh, const MyMeshType& targetMesh, MatrixType& result, const std::string& method)
++  {
++    if(InterpolationOptions::getIntersectionType() != PointLocator)
++      INTERP_KERNEL::Exception("Invalid 3D/1D intersection type specified : must be PointLocator.");
++
++    typedef typename MyMeshType::MyConnType ConnType;
++    // create MeshElement objects corresponding to each element of the two meshes
++    const unsigned long numSrcElems = srcMesh.getNumberOfElements();
++    const unsigned long numTargetElems = targetMesh.getNumberOfElements();
++
++    LOG(2, "Source mesh has " << numSrcElems << " elements and target mesh has " << numTargetElems << " elements ");
++
++    std::vector<MeshElement<ConnType>*> srcElems(numSrcElems);
++    std::vector<MeshElement<ConnType>*> targetElems(numTargetElems);
++
++    std::map<MeshElement<ConnType>*, int> indices;
++
++    for(unsigned long i = 0 ; i < numSrcElems ; ++i)
++      srcElems[i] = new MeshElement<ConnType>(i, srcMesh);       
++
++    for(unsigned long i = 0 ; i < numTargetElems ; ++i)
++      targetElems[i] = new MeshElement<ConnType>(i, targetMesh);
++
++    Intersector3D<MyMeshType,MatrixType>* intersector=0;
++    std::string methC = InterpolationOptions::filterInterpolationMethod(method);
++    if(methC=="P0P0")
++      { intersector=new PointLocator3DIntersectorP0P0<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else if(methC=="P0P1")
++      {  intersector=new PointLocator3DIntersectorP0P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else if(methC=="P1P0")
++      {  intersector=new PointLocator3DIntersectorP1P0<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else if(methC=="P1P1")
++      {  intersector=new PointLocator3DIntersectorP1P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else
++      throw Exception("Invalid method choosed must be in \"P0P0\", \"P0P1\", \"P1P0\" or \"P1P1\".");
++    // create empty maps for all source elements
++    result.resize(intersector->getNumberOfRowsOfResMatrix());
++
++    // create BBTree structure
++    // - get bounding boxes
++    std::vector<double> bboxes(6*numSrcElems);
++    int* srcElemIdx = new int[numSrcElems];
++    for(unsigned long i = 0; i < numSrcElems ; ++i)
++      {
++        // get source bboxes in right order
++        const BoundingBox* box = srcElems[i]->getBoundingBox();
++        bboxes[6*i+0] = box->getCoordinate(BoundingBox::XMIN);
++        bboxes[6*i+1] = box->getCoordinate(BoundingBox::XMAX);
++        bboxes[6*i+2] = box->getCoordinate(BoundingBox::YMIN);
++        bboxes[6*i+3] = box->getCoordinate(BoundingBox::YMAX);
++        bboxes[6*i+4] = box->getCoordinate(BoundingBox::ZMIN);
++        bboxes[6*i+5] = box->getCoordinate(BoundingBox::ZMAX);
++
++        srcElemIdx[i] = srcElems[i]->getIndex();
++      }
++
++    adjustBoundingBoxes(bboxes);
++    const double *bboxPtr=0;
++    if(numSrcElems>0)
++      bboxPtr=&bboxes[0];
++    BBTree<3,ConnType> tree(bboxPtr, srcElemIdx, 0, numSrcElems);
++
++    // for each target element, get source elements with which to calculate intersection
++    // - calculate intersection by calling intersectCells
++    for(unsigned long i = 0; i < numTargetElems; ++i)
++      {
++        const BoundingBox* box = targetElems[i]->getBoundingBox();
++        const int targetIdx = targetElems[i]->getIndex();
++
++        // get target bbox in right order
++        double targetBox[6];
++        targetBox[0] = box->getCoordinate(BoundingBox::XMIN);
++        targetBox[1] = box->getCoordinate(BoundingBox::XMAX);
++        targetBox[2] = box->getCoordinate(BoundingBox::YMIN);
++        targetBox[3] = box->getCoordinate(BoundingBox::YMAX);
++        targetBox[4] = box->getCoordinate(BoundingBox::ZMIN);
++        targetBox[5] = box->getCoordinate(BoundingBox::ZMAX);
++
++        std::vector<ConnType> intersectElems;
++
++        tree.getIntersectingElems(targetBox, intersectElems);
++
++        if ( !intersectElems.empty() )
++          intersector->intersectCells(targetIdx,intersectElems,result);
++      }
++
++    // free allocated memory
++    delete [] srcElemIdx;
++
++    int ret=intersector->getNumberOfColsOfResMatrix();
++
++    delete intersector;
++
++    for(unsigned long i = 0 ; i < numSrcElems ; ++i)
++      {
++        delete srcElems[i];
++      }
++    for(unsigned long i = 0 ; i < numTargetElems ; ++i)
++      {
++        delete targetElems[i];
++      }
++    return ret;
++
++  }
++}
++
++#endif
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D.txx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D.txx     2017-01-23 09:08:42.646093103 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D.txx      2017-01-23 09:10:57.343741406 +0100
+@@ -35,6 +35,7 @@
+ #include "PolyhedronIntersectorP1P1.txx"
+ #include "PointLocator3DIntersectorP1P1.txx"
+ #include "Barycentric3DIntersectorP1P1.txx"
++#include "MappedBarycentric3DIntersectorP1P1.txx"
+ #include "Log.hxx"
+ // If defined, use recursion to traverse the binary search tree, else use the BBTree class
+ //#define USE_RECURSIVE_BBOX_FILTER
+@@ -154,8 +155,11 @@ namespace INTERP_KERNEL
+           case Barycentric:
+             intersector=new Barycentric3DIntersectorP1P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
+             break;
++          case MappedBarycentric:
++            intersector=new MappedBarycentric3DIntersectorP1P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++            break;
+           default:
+-            throw INTERP_KERNEL::Exception("Invalid 3D intersection type for P1P1 interp specified : must be Triangle or PointLocator.");
++            throw INTERP_KERNEL::Exception("Invalid 3D intersection type for P1P1 interp specified : must be Triangle, PointLocator, Barycentric or MappedBarycentric.");
+           }
+       }
+     else
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationOptions.hxx MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationOptions.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationOptions.hxx        2017-01-23 09:08:42.646093103 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationOptions.hxx 2017-01-23 09:10:57.069734048 +0100
+@@ -28,7 +28,7 @@
+ namespace INTERP_KERNEL
+ {
+-  typedef enum { Triangulation, Convex, Geometric2D, PointLocator, Barycentric, BarycentricGeo2D } IntersectionType;
++  typedef enum { Triangulation, Convex, Geometric2D, PointLocator, Barycentric, BarycentricGeo2D, MappedBarycentric } IntersectionType;
+   
+   /*!
+    * Class defining the options for all interpolation algorithms used in the \ref remapper "remapper" and
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationPlanar.txx MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationPlanar.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationPlanar.txx 2017-01-23 09:08:42.646093103 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationPlanar.txx  2017-01-23 09:10:57.069734048 +0100
+@@ -40,6 +40,8 @@
+ #include "PlanarIntersectorP1P0PL.txx"
+ #include "PlanarIntersectorP1P1PL.hxx"
+ #include "PlanarIntersectorP1P1PL.txx"
++#include "MappedBarycentric2DIntersectorP1P1.hxx"
++#include "MappedBarycentric2DIntersectorP1P1.txx"
+ #include "VectorUtils.hxx"
+ #include "BBTree.txx"
+@@ -358,8 +360,16 @@ namespace INTERP_KERNEL
+                                                                            InterpolationOptions::getPrecision(),
+                                                                            InterpolationOptions::getOrientation());
+             break;
++          case MappedBarycentric:
++            intersector=new MappedBarycentric2DIntersectorP1P1<MyMeshType,MatrixType>(myMeshT, myMeshS, _dim_caracteristic,
++                                                                                     InterpolationOptions::getMaxDistance3DSurfIntersect(),
++                                                                                     InterpolationOptions::getMinDotBtwPlane3DSurfIntersect(),
++                                                                                     InterpolationOptions::getMedianPlane(),
++                                                                                     InterpolationOptions::getPrecision(),
++                                                                                     InterpolationOptions::getOrientation());
++            break;
+           default:
+-            throw INTERP_KERNEL::Exception("For P1P1 planar interpolation possibities are : Triangulation, Convex, Geometric2D, PointLocator !");
++            throw INTERP_KERNEL::Exception("For P1P1 planar interpolation possibities are : Triangulation, Convex, Geometric2D, PointLocator, MappedBarycentric !");
+           }
+       }
+     else
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationUtils.hxx MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationUtils.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationUtils.hxx  2017-01-23 09:08:42.646093103 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationUtils.hxx   2017-01-23 09:10:57.343741406 +0100
+@@ -23,6 +23,7 @@
+ #include "INTERPKERNELDefines.hxx"
+ #include "InterpKernelException.hxx"
++#include "VolSurfUser.hxx"
+ #include "NormalizedUnstructuredMesh.hxx"
+@@ -413,7 +414,7 @@ namespace INTERP_KERNEL
+   }
+   /*!
+-   * Calculate barycentric coordinates of a point p with respect to triangle or tetra verices.
++   * Calculate barycentric coordinates of a point p with respect to triangle or tetra vertices.
+    * This method makes 2 assumptions :
+    *    - this is a simplex
+    *    - spacedim == meshdim. For TRI3 and TRI6 spaceDim is expected to be equal to 2 and for TETRA4 spaceDim is expected to be equal to 3.
+@@ -535,6 +536,136 @@ namespace INTERP_KERNEL
+       }
+   }
++  /*!
++   * Calculate pseudo barycentric coordinates of a point p with respect to the quadrangle vertices.
++   * This method makes the assumption that:
++   *  - spacedim == meshdim (2 here).
++   *  - the point is within the quad
++   *  Quadratic elements are not supported yet.
++   *
++   *  A quadrangle can be described as 3 vectors, one point being taken as the origin.
++   *  Denoting A, B, C the three other points, any point P within the quad is written as
++   *    P = xA+ yC + xy(B-A-C)
++   *  This method solve those 2 equations (one per component) for x and y.
++   *
++
++          A------B
++          |      |
++          |      |
++          0------C
++   */
++  inline void quad_mapped_coords(const std::vector<const double*>& n, const double *p, double *bc)
++  {
++    double prec = 1.0e-14;
++    enum { _XX=0, _YY, _ZZ };
++
++    if(n.size() != 4)
++      throw INTERP_KERNEL::Exception("INTERP_KERNEL::quad_mapped_coords : unrecognized geometric type! Only QUAD4 supported.");
++
++    double A[2] = {n[1][_XX] - n[0][_XX],  n[1][_YY] - n[0][_YY]};
++    double B[2] = {n[2][_XX] - n[0][_XX],  n[2][_YY] - n[0][_YY]};
++    double C[2] = {n[3][_XX] - n[0][_XX],  n[3][_YY] - n[0][_YY]};
++    double N[2] = {B[_XX] - A[_XX] - C[_XX], B[_YY] - A[_YY] - C[_YY]};
++    double P[2] = {p[_XX] - n[0][_XX], p[_YY] - n[0][_YY]};
++
++    // degenerated case: a rectangle:
++    if (fabs(N[0]) < prec && fabs(N[1]) < prec)
++      {
++        double det = C[0]*A[1] -C[1]*A[0];
++        if (fabs(det) < prec)
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords() has a degenerated 2x2 system!");
++        bc[0] = (P[0]*A[1]-P[1]*A[0])/det;
++        bc[1] = (P[1]*C[0]-P[0]*C[1])/det;
++        return;
++      }
++    double b,c ,a = A[1]*N[0]-A[0]*N[1];
++    bool cas1;
++    if (fabs(a) > 1.0e-14)
++      {
++        b = A[1]*C[0]+N[1]*P[0]-N[0]*P[1]-A[0]*C[1];
++        c = P[0]*C[1] - P[1]*C[0];
++        cas1 = true;
++      }
++    else
++      {
++        a = -C[1]*N[0]+C[0]*N[1];
++        b = A[1]*C[0]-N[1]*P[0]+N[0]*P[1]-A[0]*C[1];
++        c = -P[0]*A[1] + P[1]*A[0];
++        cas1 = false;
++      }
++    double delta = b*b - 4.0*a*c;
++    if (delta < 0.0)
++      throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): imaginary solutions!");
++    bc[1] = 0.5*(-b+sqrt(delta))/a;
++    if (bc[1] < -prec || bc[1] > (1.0+prec))
++      bc[1] = 0.5*(-b-sqrt(delta))/a;
++    if (bc[1] < -prec || bc[1] > (1.0+prec))
++      throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): point doesn't seem to be in quad4!");
++    if (cas1)
++      {
++        double denom = C[0]+bc[1]*N[0];
++        if (fabs(denom) < prec)
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): point doesn't seem to be in quad4!");
++        bc[0] = (P[0]-bc[1]*A[0])/denom;
++        if (bc[0] < -prec || bc[0] > (1.0+prec))
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): point doesn't seem to be in quad4!");
++      }
++    else
++      {
++        bc[0] = bc[1];
++        double denom = A[1]+bc[0]*N[1];
++        if (fabs(denom) < prec)
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: cuboid_mapped_coord(): point doesn't seem to be in quad4!");
++        bc[1] = (P[1]-bc[0]*C[1])/denom;
++        if (bc[1] < -prec || bc[1] > (1.0+prec))
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: cuboid_mapped_coord(): point doesn't seem to be in quad4!");
++      }
++  }
++
++  /*!
++   * Doing as in quad_mapped_coords() would lead to a 4th order equation ... So go simpler here:
++   * orthogonal distance to each pair of parallel faces is computed. The ratio gives a number in [0,1]
++   *
++   * Conventions:
++   *   - for HEXA8, point F (5) is taken to be the origin (see med file ref connec):
++   *          0 ------ 3
++             /|       /|
++            / |      / |
++           1 ------ 2  |
++           |  |     |  |
++           |  |     |  |
++           |  4-----|- 7
++           | /      | /
++           5 ------ 6
++
++   *
++   */
++
++  inline void cuboid_mapped_coords(const std::vector<const double*>& n, const double *p, double *bc)
++  {
++    double prec = 1.0e-14;
++    enum { _XX=0, _YY };
++    if (n.size() != 8)
++      throw INTERP_KERNEL::Exception("INTERP_KERNEL::cuboid_mapped_coords: unrecognized geometric type! Only HEXA8 supported.");
++
++    double dx1, dx2, dy1, dy2, dz1, dz2;
++    dx1 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[4],n[5],n[1]);
++    dx2 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[7],n[3],n[2]);
++
++    dy1 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[5],n[6],n[2]);
++    dy2 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[4],n[0],n[3]);
++
++    dz1 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[5],n[4],n[7]);
++    dz2 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[1],n[2],n[3]);
++
++    if (dx1 < -prec || dx2 < -prec || dy1 < -prec || dy2 < -prec || dz1 < -prec || dz2 < -prec)
++      throw INTERP_KERNEL::Exception("INTERP_KERNEL::cuboid_mapped_coords: point outside HEXA8");
++
++    bc[0] = dx1+dx2 < prec ? 0.5 : dx1/(dx1+dx2);
++    bc[1] = dy1+dy2 < prec ? 0.5 : dy1/(dy1+dy2);
++    bc[2] = dz1+dz2 < prec ? 0.5 : dz1/(dz1+dz2);
++  }
++
+   /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
+   /*         calcul la surface d'un polygone.                 */
+   /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx   2017-01-23 09:10:57.071734102 +0100
+@@ -0,0 +1,44 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MappedBarycenter2DIntersectorP1P1_HXX__
++#define __MappedBarycenter2DIntersectorP1P1_HXX__
++
++#include "PlanarIntersector.hxx"
++
++namespace INTERP_KERNEL
++{
++  template<class MyMeshType, class MyMatrix>
++  class MappedBarycentric2DIntersectorP1P1 : public PlanarIntersector<MyMeshType,MyMatrix>
++  {
++   public:
++    static const int SPACEDIM=MyMeshType::MY_SPACEDIM;
++    static const int MESHDIM=MyMeshType::MY_MESHDIM;
++    typedef typename MyMeshType::MyConnType ConnType;
++    static const NumberingPolicy numPol=MyMeshType::My_numPol;
++  public:
++    MappedBarycentric2DIntersectorP1P1(const MyMeshType& meshT, const MyMeshType& meshS, double dimCaracteristic, double md3DSurf, double minDot3DSurf, double medianPlane, double precision, int orientation);
++    void intersectCells(ConnType icellT, const std::vector<ConnType>& icellsS, MyMatrix& res);
++    int getNumberOfRowsOfResMatrix() const;
++    int getNumberOfColsOfResMatrix() const;
++  };
++}
++
++#endif
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx   2017-01-23 09:10:57.071734102 +0100
+@@ -0,0 +1,111 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MappedBarycentric2DIntersectorP1P1_TXX__
++#define __MappedBarycentric2DIntersectorP1P1_TXX__
++
++#include "MappedBarycentric2DIntersectorP1P1.hxx"
++#include "PlanarIntersector.txx"
++#include "CellModel.hxx"
++
++#include "PointLocatorAlgos.txx"
++#include "MeshUtils.hxx"
++
++namespace INTERP_KERNEL
++{
++  template<class MyMeshType, class MyMatrix>
++  MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::MappedBarycentric2DIntersectorP1P1(const MyMeshType& meshT, const MyMeshType& meshS,
++                                                                        double dimCaracteristic, double md3DSurf, double minDot3DSurf,
++                                                                        double medianPlane, double precision, int orientation):
++    PlanarIntersector<MyMeshType,MyMatrix>(meshT,meshS,dimCaracteristic,precision,md3DSurf,minDot3DSurf,medianPlane,true,orientation,0)
++  {
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  void MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::intersectCells(ConnType icellT, const std::vector<ConnType>& icellsS, MyMatrix& res)
++  {
++    std::vector<double> CoordsT;
++    PlanarIntersector<MyMeshType,MyMatrix>::getRealTargetCoordinates(OTT<ConnType,numPol>::indFC(icellT),CoordsT);
++    int nbOfNodesT=CoordsT.size()/SPACEDIM;
++    for(typename std::vector<ConnType>::const_iterator iter=icellsS.begin();iter!=icellsS.end();iter++)
++      {
++        NormalizedCellType tS=PlanarIntersector<MyMeshType,MyMatrix>::_meshS.getTypeOfElement(OTT<ConnType,numPol>::indFC(*iter));
++        if(tS!=NORM_QUAD4)
++          throw INTERP_KERNEL::Exception("Invalid source cell detected for meshdim==2. Only QUAD4 supported !");
++        std::vector<double> CoordsS;
++        PlanarIntersector<MyMeshType,MyMatrix>::getRealSourceCoordinates(OTT<ConnType,numPol>::indFC(*iter),CoordsS);
++        std::vector<double> CoordsTTmp(CoordsT);
++        if(SPACEDIM==3)
++          PlanarIntersector<MyMeshType,MyMatrix>::projectionThis(&CoordsS[0],&CoordsTTmp[0],CoordsS.size()/SPACEDIM,nbOfNodesT);
++        const ConnType *startOfCellNodeConnT=PlanarIntersector<MyMeshType,MyMatrix>::_connectT+OTT<ConnType,numPol>::conn2C(PlanarIntersector<MyMeshType,MyMatrix>::_connIndexT[icellT]);
++        for(int nodeIdT=0;nodeIdT<nbOfNodesT;nodeIdT++)
++          {
++            typename MyMatrix::value_type& resRow=res[OTT<ConnType,numPol>::ind2C(startOfCellNodeConnT[nodeIdT])];
++            if( PointLocatorAlgos<MyMeshType>::isElementContainsPointAlg2D(&CoordsTTmp[nodeIdT*SPACEDIM],&CoordsS[0],4,PlanarIntersector<MyMeshType,MyMatrix>::_precision) )
++              {
++                double mco[2];  // mapped coordinates in the quad4
++                std::vector<const double*> coo(4);
++                coo[0]=&CoordsS[0]; coo[1]=&CoordsS[SPACEDIM]; coo[2]=&CoordsS[2*SPACEDIM]; coo[3]=&CoordsS[3*SPACEDIM];
++                quad_mapped_coords(coo,&CoordsTTmp[nodeIdT*SPACEDIM],mco);
++
++                // Now use the form function of the QUAD4 to map the field values
++                double resLoc[4];
++                // See QUAD4 standard connectivity and cuboid_mapped_coords() convention:
++                resLoc[0] = (1.-mco[0]) * (1.-mco[1]);
++                resLoc[1] = (1.-mco[0]) *   mco[1]   ;
++                resLoc[2] =  mco[0]     *   mco[1]   ;
++                resLoc[3] =  mco[0]     * (1.-mco[1]);
++
++                const ConnType *startOfCellNodeConnS=PlanarIntersector<MyMeshType,MyMatrix>::_connectS+OTT<ConnType,numPol>::conn2C(PlanarIntersector<MyMeshType,MyMatrix>::_connIndexS[*iter]);
++                for(int nodeIdS=0;nodeIdS<4;nodeIdS++)
++                  {
++                    if(fabs(resLoc[nodeIdS])>PlanarIntersector<MyMeshType,MyMatrix>::_precision)
++                      {
++                        ConnType curNodeSInCmode=OTT<ConnType,numPol>::coo2C(startOfCellNodeConnS[nodeIdS]);
++                        typename MyMatrix::value_type::const_iterator iterRes=resRow.find(OTT<ConnType,numPol>::indFC(curNodeSInCmode));
++                        if(iterRes==resRow.end())
++                          resRow.insert(std::make_pair(OTT<ConnType,numPol>::indFC(curNodeSInCmode),resLoc[nodeIdS]));
++                        else
++                          {
++                            double val=(*iterRes).second+resLoc[nodeIdS];
++                            resRow.erase(OTT<ConnType,numPol>::indFC(curNodeSInCmode));
++                            resRow.insert(std::make_pair(OTT<ConnType,numPol>::indFC(curNodeSInCmode),val));
++                          }
++                      }
++                  }
++              }
++          }
++      }
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  int MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::getNumberOfRowsOfResMatrix() const
++  {
++    return PlanarIntersector<MyMeshType,MyMatrix>::_meshT.getNumberOfNodes();
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  int MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::getNumberOfColsOfResMatrix() const
++  {
++    return PlanarIntersector<MyMeshType,MyMatrix>::_meshS.getNumberOfNodes();
++  }
++}
++
++#endif
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx   2017-01-23 09:10:57.071734102 +0100
+@@ -0,0 +1,46 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MappedBarycentric3DIntersectorP1P1_HXX__
++#define __MappedBarycentric3DIntersectorP1P1_HXX__
++
++#include "Intersector3DP1P1.hxx"
++#include "NormalizedUnstructuredMesh.hxx"
++
++namespace INTERP_KERNEL
++{
++  template<class MyMeshType, class MyMatrix>
++  class MappedBarycentric3DIntersectorP1P1 : public Intersector3DP1P1<MyMeshType,MyMatrix>
++  { 
++  public:
++    static const int SPACEDIM=MyMeshType::MY_SPACEDIM;
++    static const int MESHDIM=MyMeshType::MY_MESHDIM;
++    typedef typename MyMeshType::MyConnType ConnType;
++    static const NumberingPolicy numPol=MyMeshType::My_numPol;
++  public:
++    MappedBarycentric3DIntersectorP1P1(const MyMeshType& targetMesh, const MyMeshType& srcMesh, double precision);
++    ~MappedBarycentric3DIntersectorP1P1();
++    void intersectCells(ConnType targetCell, const std::vector<ConnType>& srcCells, MyMatrix& res);
++  protected:
++    double _precision;
++  };
++}
++
++#endif
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx   2017-01-23 09:10:57.071734102 +0100
+@@ -0,0 +1,113 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MAPPEDBARYCENTRIC3DINTERSECTORP1P1_TXX__
++#define __MAPPEDBARYCENTRIC3DINTERSECTORP1P1_TXX__
++
++#include "MappedBarycentric3DIntersectorP1P1.hxx"
++#include "Intersector3DP1P1.txx"
++#include "MeshUtils.hxx"
++
++namespace INTERP_KERNEL
++{
++
++  /**
++   * Constructor creating object from target cell global number 
++   * 
++   * @param targetMesh  mesh containing the target elements
++   * @param srcMesh     mesh containing the source elements
++   * @param policy      splitting policy to be used
++   */
++  template<class MyMeshType, class MyMatrix>
++  MappedBarycentric3DIntersectorP1P1<MyMeshType,MyMatrix>::MappedBarycentric3DIntersectorP1P1(const MyMeshType& targetMesh, const MyMeshType& srcMesh, double precision):
++    Intersector3DP1P1<MyMeshType,MyMatrix>(targetMesh,srcMesh),_precision(precision)
++  {
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  MappedBarycentric3DIntersectorP1P1<MyMeshType,MyMatrix>::~MappedBarycentric3DIntersectorP1P1()
++  {
++  }
++
++  /**
++   * @param targetCell in C mode.
++   * @param srcCells in C mode.
++   */
++  template<class MyMeshType, class MyMatrix>
++  void MappedBarycentric3DIntersectorP1P1<MyMeshType,MyMatrix>::intersectCells(ConnType targetCell, const std::vector<ConnType>& srcCells, MyMatrix& res)
++  {
++    std::vector<double> CoordsT;
++    const ConnType *startOfCellNodeConnT=Intersector3DP1P1<MyMeshType,MyMatrix>::getStartConnOfTargetCell(targetCell);
++    Intersector3DP1P1<MyMeshType,MyMatrix>::getRealTargetCoordinates(OTT<ConnType,numPol>::indFC(targetCell),CoordsT);
++    int nbOfNodesT=CoordsT.size()/SPACEDIM;
++    const double *coordsS=Intersector3DP1P1<MyMeshType,MyMatrix>::_src_mesh.getCoordinatesPtr();
++    for(int nodeIdT=0;nodeIdT<nbOfNodesT;nodeIdT++)
++      {
++        typename MyMatrix::value_type& resRow=res[OTT<ConnType,numPol>::ind2C(startOfCellNodeConnT[nodeIdT])];
++        if(!resRow.empty())
++          continue;
++        for(typename std::vector<ConnType>::const_iterator iterCellS=srcCells.begin();iterCellS!=srcCells.end();iterCellS++)
++          {
++            NormalizedCellType tS=Intersector3DP1P1<MyMeshType,MyMatrix>::_src_mesh.getTypeOfElement(OTT<ConnType,numPol>::indFC(*iterCellS));
++            if(tS!=NORM_HEXA8)
++              throw INTERP_KERNEL::Exception("Invalid source cell detected for meshdim==3. Only HEXA8 supported !");
++            const CellModel& cmTypeS=CellModel::GetCellModel(tS);
++            //
++            std::vector<ConnType> connOfCurCellS;
++            Intersector3DP1P1<MyMeshType,MyMatrix>::getConnOfSourceCell(OTT<ConnType,numPol>::indFC(*iterCellS),connOfCurCellS);
++            if( PointLocatorAlgos<MyMeshType>::isElementContainsPointAlg3D(&CoordsT[nodeIdT*SPACEDIM],&connOfCurCellS[0],connOfCurCellS.size(),coordsS,cmTypeS,_precision) )
++              {
++                double mco[3];  // mapped coordinates in the hexa8
++                std::vector<double> localCoordsS;
++                Intersector3DP1P1<MyMeshType,MyMatrix>::getRealSourceCoordinates(OTT<ConnType,numPol>::indFC(*iterCellS),localCoordsS);
++                std::vector<const double*> coo(8);
++                coo[0]=&localCoordsS[0]; coo[1]=&localCoordsS[3]; coo[2]=&localCoordsS[6]; coo[3]=&localCoordsS[9];
++                coo[4]=&localCoordsS[12]; coo[5]=&localCoordsS[15]; coo[6]=&localCoordsS[18]; coo[7]=&localCoordsS[21];
++                cuboid_mapped_coords(coo,&CoordsT[nodeIdT*SPACEDIM],mco);
++
++                // Now use the form function of the HEXA8 to map the field values
++                double resLoc[8];
++                // See HEXA8 standard connectivity and cuboid_mapped_coords() convention:
++                resLoc[5] = (1.-mco[0]) * (1.-mco[1]) * (1.-mco[2]);
++                resLoc[6] =  mco[0]     * (1.-mco[1]) * (1.-mco[2]);
++                resLoc[7] =  mco[0]     *   mco[1]    * (1.-mco[2]);
++                resLoc[4] = (1.-mco[0]) *   mco[1]    * (1.-mco[2]);
++
++                resLoc[1] = (1.-mco[0]) * (1.-mco[1]) * mco[2];
++                resLoc[2] =  mco[0]     * (1.-mco[1]) * mco[2];
++                resLoc[3] =  mco[0]     *   mco[1]    * mco[2];
++                resLoc[0] = (1.-mco[0]) *   mco[1]    * mco[2];
++
++                const ConnType *startOfCellNodeConnS=Intersector3DP1P1<MyMeshType,MyMatrix>::getStartConnOfSourceCell(*iterCellS);
++                for(int nodeIdS=0;nodeIdS<8;nodeIdS++)
++                  {
++                    if(fabs(resLoc[nodeIdS])>_precision)
++                      {
++                        ConnType curNodeSInCmode=OTT<ConnType,numPol>::coo2C(startOfCellNodeConnS[nodeIdS]);
++                        resRow.insert(std::make_pair(OTT<ConnType,numPol>::indFC(curNodeSInCmode),resLoc[nodeIdS]));
++                      }
++                  }
++              }
++          }
++      }
++  }
++}
++
++#endif
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.cxx MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.cxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.cxx 2017-01-23 09:08:42.647093130 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.cxx  2017-01-23 09:10:57.078734290 +0100
+@@ -28,6 +28,25 @@
+ namespace INTERP_KERNEL
+ {
++  /* Orthogonal distance from a point to a plane defined by three points p1, p2, p3.
++   * Returns a signed distance, the normal of the plane being defined by (p1-p2)x(p3-p2)
++   */
++  double OrthoDistanceFromPtToPlaneInSpaceDim3(const double *p, const double *p1, const double *p2, const double *p3)
++  {
++    double prec = 1.0e-14;
++    double T[2][3] = {{p1[0] - p2[0], p1[1] - p2[1], p1[2] - p2[2]},
++                      {p3[0] - p2[0], p3[1] - p2[1], p3[2] - p2[2]}};
++    double N[3] = {T[0][1]*T[1][2]-T[0][2]*T[1][1],
++                   T[0][2]*T[1][0]-T[0][0]*T[1][2],
++                   T[0][0]*T[1][1]-T[0][1]*T[1][0]};
++
++    double norm2 = N[0]*N[0] + N[1]*N[1] + N[2]*N[2];
++    if (norm2 < prec)
++      throw INTERP_KERNEL::Exception("OrthoDistanceFromPtToPlaneInSpaceDim3: degenerated normal vector!");
++    double num = N[0]*(p[0]-p1[0]) + N[1]*(p[1]-p1[1]) + N[2]*(p[2]-p1[2]);
++    return num/sqrt(norm2);
++  }
++
+   double SquareDistanceFromPtToSegInSpaceDim2(const double *pt, const double *pt0Seg2, const double *pt1Seg2, std::size_t &nbOfHint)
+   {
+     double dx=pt1Seg2[0]-pt0Seg2[0],dy=pt1Seg2[1]-pt0Seg2[1];
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.hxx MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.hxx 2017-01-23 09:08:42.647093130 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.hxx  2017-01-23 09:10:57.078734290 +0100
+@@ -39,6 +39,8 @@ namespace INTERP_KERNEL
+   template<class ConnType, NumberingPolicy numPolConn>
+   void computeBarycenter2(NormalizedCellType type, const ConnType *connec, int lgth, const double *coords, int spaceDim, double *res);
++  double INTERPKERNEL_EXPORT OrthoDistanceFromPtToPlaneInSpaceDim3(const double *p, const double *p1, const double *p2, const double *p3);
++
+   double INTERPKERNEL_EXPORT SquareDistanceFromPtToSegInSpaceDim2(const double *pt, const double *pt0Seg2, const double *pt1Seg2, std::size_t &nbOfHint);
+   double INTERPKERNEL_EXPORT DistanceFromPtToTriInSpaceDim3(const double *pt, const double *pt0Tri3, const double *pt1Tri3, const double *pt2Tri3);
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx MEDCOUPLING_new/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx
+--- MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx   2017-01-23 09:08:42.648093157 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx    2017-01-23 09:10:57.083734424 +0100
+@@ -342,5 +342,148 @@ namespace INTERP_TEST
+     CPPUNIT_ASSERT_DOUBLES_EQUAL( p[0], p2[0], 1e-12);
+     CPPUNIT_ASSERT_DOUBLES_EQUAL( p[1], p2[1], 1e-12);
+     CPPUNIT_ASSERT_DOUBLES_EQUAL( p[2], p2[2], 1e-12);
+-  }  
++  }
++
++  /* Conventions:
++  *   - for HEXA8, point 5 is taken to be the origin (see med file ref connec):
++  *          0 ------ 3
++            /|       /|
++           / |      / |
++          1 ------ 2  |
++          |  |     |  |
++          |  |     |  |
++          |  4-----|- 7
++          | /      | /
++          5 ------ 6
++   */
++  void UnitTetraIntersectionBaryTest::test_cuboid_mapped_coords_3D()
++  {
++    double nodes[8][3] = { { 0.0, 2.0, 4.0 }, //0
++                           { 0.0, 0.0, 4.0 },
++                           { 1.0, 0.0, 4.0 },
++                           { 1.0, 2.0, 4.0 },
++                           { 0.0, 2.0, 0.0 }, // 4
++                           { 0.0, 0.0, 0.0 },
++                           { 1.0, 0.0, 0.0 },
++                           { 1.0, 2.0, 0.0 }
++    };
++    // Translate cube:
++    for (int i=0; i < 8; ++i)
++      for (int j=0; j < 3; ++j)
++        nodes[i][j] += 15.0;
++
++    std::vector<const double*> n (8);
++    for (int i=0; i<8; i++)
++      n[i] = &nodes[i][0];
++
++    {
++        // middle point
++        double p[3] = { 15.5, 16.0, 17.0 }, bc[3];
++        cuboid_mapped_coords(n, p, bc);
++        CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[0], 1e-12);
++        CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[1], 1e-12);
++        CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[2], 1e-12);
++    }
++    {
++      // point 1
++      double p[3] = { 15.0, 15.0, 19.0 }, bc[3];
++      cuboid_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[1], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[2], 1e-12);
++    }
++    {
++      // point 7
++      double p[3] = { 16.0, 17.0, 15.0 }, bc[3];
++      cuboid_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[2], 1e-12);
++    }
++    {
++      // point 3
++      double p[3] = { 16.0, 17.0, 19.0 }, bc[3];
++      cuboid_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[2], 1e-12);
++    }
++    {
++      // point outside
++      double p[3] = { 2.0, 16.0, 18.0 }, bc[3];
++      CPPUNIT_ASSERT_THROW(cuboid_mapped_coords(n, p, bc), INTERP_KERNEL::Exception);
++    }
++
++  }
++
++  /* Convention
++      - for QUAD4, point 0 is taken to be the origin (again see med file ref connec):
++
++         1------2
++         |      |
++         |      |
++         0------3
++  */
++  void UnitTetraIntersectionBaryTest::test_quad_mapped_coords_2D()
++  {
++
++    double nodes[4][2] = { { 0.0, 0.0 },
++                           { 0.0, 1.0 },
++                           { 2.0, 3.0 },
++                           { 1.0, 0.0 } };
++
++    // Translate quad4:
++    for (int i=0; i < 4; ++i)
++      for (int j=0; j < 2; ++j)
++        nodes[i][j] += 15.0;
++
++    std::vector<const double*> n (4);
++    for (int i=0; i<4; i++)
++      n[i] = &nodes[i][0];
++
++    {
++      // middle point
++      double p[2] = { 15.75, 16.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[1], 1e-12);
++    }
++
++    {
++      // middle point of seg
++      double p[2] = { 15.5, 15.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[1], 1e-12);
++    }
++
++    {
++      // point 1
++      double p[2] = { 15.0, 16.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++    }
++    {
++      // point 2
++      double p[2] = { 17.0, 18.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++    }
++    {
++      // point 3
++      double p[2] = { 16.0, 15.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[1], 1e-12);
++    }
++    {
++      // point outside
++      double p[2] = { 18.0, 18.0 }, bc[2];
++      CPPUNIT_ASSERT_THROW(quad_mapped_coords(n, p, bc), INTERP_KERNEL::Exception);
++    }
++  }
++
++
+ }
+diff -rupN MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx MEDCOUPLING_new/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx   2017-01-23 09:08:42.648093157 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx    2017-01-23 09:10:57.083734424 +0100
+@@ -52,6 +52,8 @@ namespace INTERP_TEST
+     CPPUNIT_TEST( test_UnitTetraIntersectionBary_11 );
+     CPPUNIT_TEST( test_TetraAffineTransform_reverseApply );
+     CPPUNIT_TEST( test_barycentric_coords );
++    CPPUNIT_TEST( test_cuboid_mapped_coords_3D );
++    CPPUNIT_TEST( test_quad_mapped_coords_2D );
+     CPPUNIT_TEST_SUITE_END();
+   public:
+     void test_UnitTetraIntersectionBary_1();
+@@ -69,6 +71,8 @@ namespace INTERP_TEST
+     void test_UnitTetraIntersectionBary_13();
+     void test_TetraAffineTransform_reverseApply();
+     void test_barycentric_coords();
++    void test_cuboid_mapped_coords_3D();
++    void test_quad_mapped_coords_2D();
+   };
+ }
+diff -rupN MEDCOUPLING_orig/src/MEDCoupling/MEDCouplingRemapper.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRemapper.cxx
+--- MEDCOUPLING_orig/src/MEDCoupling/MEDCouplingRemapper.cxx   2017-01-23 09:08:42.666093645 +0100
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRemapper.cxx    2017-01-23 09:10:57.368742077 +0100
+@@ -35,6 +35,7 @@
+ #include "Interpolation3DSurf.hxx"
+ #include "Interpolation2D1D.txx"
+ #include "Interpolation2D3D.txx"
++#include "Interpolation3D1D.txx"
+ #include "InterpolationCU.txx"
+ #include "InterpolationCC.txx"
+@@ -436,7 +437,7 @@ int MEDCouplingRemapper::prepareInterpKe
+         throw INTERP_KERNEL::Exception("Invalid interpolation requested between 3D and 1D ! Select PointLocator as intersection type !");
+       MEDCouplingNormalizedUnstructuredMesh<3,3> source_mesh_wrapper(src_mesh);
+       MEDCouplingNormalizedUnstructuredMesh<3,3> target_mesh_wrapper(target_mesh);
+-      INTERP_KERNEL::Interpolation3D interpolation(*this);
++      INTERP_KERNEL::Interpolation3D1D interpolation(*this);
+       nbCols=interpolation.interpolateMeshes(source_mesh_wrapper,target_mesh_wrapper,_matrix,method);
+     }
+   else if(srcMeshDim==1 && trgMeshDim==3 && srcSpaceDim==3)
+@@ -445,7 +446,7 @@ int MEDCouplingRemapper::prepareInterpKe
+         throw INTERP_KERNEL::Exception("Invalid interpolation requested between 3D and 1D ! Select PointLocator as intersection type !");
+       MEDCouplingNormalizedUnstructuredMesh<3,3> source_mesh_wrapper(src_mesh);
+       MEDCouplingNormalizedUnstructuredMesh<3,3> target_mesh_wrapper(target_mesh);
+-      INTERP_KERNEL::Interpolation3D interpolation(*this);
++      INTERP_KERNEL::Interpolation3D1D interpolation(*this);
+       std::vector<std::map<int,double> > matrixTmp;
+       std::string revMethod(BuildMethodFrom(trgMeth,srcMeth));
+       nbCols=interpolation.interpolateMeshes(target_mesh_wrapper,source_mesh_wrapper,matrixTmp,revMethod);
+diff -rupN MEDCOUPLING_orig/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py
+--- MEDCOUPLING_orig/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py   2017-01-23 09:08:42.691094322 +0100
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py    2017-01-23 09:10:57.400742936 +0100
+@@ -555,7 +555,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+     def testSwig2BarycentricP1P13D_1(self):
+         sCoo=DataArrayDouble([0.313,0.00218,6.90489,0.313,0.10692667,6.90489,0.313,0.10692667,6.96790167,0.313,0.00218,6.9773125,0.313,0.21167333,6.90489,0.313,0.21167333,6.95849083,0.313,0.31642,6.90489,0.313,0.31642,6.94908,0.313,0.09383333,7.04891667,0.313,0.00218,7.049735,0.313,0.18548667,7.04809833,0.313,0.27714,7.04728,0.313,0.05782667,7.133205,0.313,0.00218,7.1221575,0.313,0.11347333,7.1442525,0.313,0.16912,7.1553,0.313,0.02509333,7.19458,0.313,0.00218,7.19458,0.313,0.04800667,7.19458,0.313,0.07092,7.19458,0.31005609,0.00218,6.90460005,0.31005609,0.10692667,6.90460005,0.29776312,0.10692667,6.96640097,0.29592716,0.00218,6.97563097,0.31005609,0.21167333,6.90460005,0.29959908,0.21167333,6.95717096,0.31005609,0.31642,6.90460005,0.30143505,0.31642,6.94794095,0.28195788,0.09383333,7.04585928,0.28179823,0.00218,7.04666189,0.28211753,0.18548667,7.04505668,0.28227718,0.27714,7.04425407,0.26551404,0.05782667,7.12852804,0.2676693,0.00218,7.11769282,0.26335878,0.11347333,7.13936327,0.26120352,0.16912,7.15019849,0.25354037,0.02509333,7.18872374,0.25354037,0.00218,7.18872374,0.25354037,0.04800667,7.18872374,0.25354037,0.07092,7.18872374,0.30722531,0.00218,6.90374134,0.30722531,0.10692667,6.90374134,0.28311179,0.10692667,6.96195653,0.27951042,0.00218,6.97065101,0.30722531,0.21167333,6.90374134,0.28671316,0.21167333,6.95326205,0.30722531,0.31642,6.90374134,0.29031453,0.31642,6.94456758,0.25210869,0.09383333,7.03680463,0.25179553,0.00218,7.03756067,0.25242185,0.18548667,7.03604859,0.25273501,0.27714,7.03529255,0.21985294,0.05782667,7.1146769,0.22408063,0.00218,7.10447034,0.21562524,0.11347333,7.12488346,0.21139755,0.16912,7.13509002,0.19636574,0.02509333,7.17138,0.19636574,0.00218,7.17138,0.19636574,0.04800667,7.17138,0.19636574,0.07092,7.17138,0.30461645,0.00218,6.90234688,0.30461645,0.10692667,6.90234688,0.26960904,0.10692667,6.95473916,0.26438066,0.00218,6.96256398,0.30461645,0.21167333,6.90234688,0.27483742,0.21167333,6.94691434,0.30461645,0.31642,6.90234688,0.2800658,0.31642,6.93908952,0.22459952,0.09383333,7.02210067,0.22414487,0.00218,7.02278109,0.22505416,0.18548667,7.02142025,0.2255088,0.27714,7.02073983,0.17777143,0.05782667,7.09218386,0.18390909,0.00218,7.0829982,0.17163377,0.11347333,7.10136952,0.1654961,0.16912,7.11055518,0.1436733,0.02509333,7.14321531,0.1436733,0.00218,7.14321531,0.1436733,0.04800667,7.14321531,0.1436733,0.07092,7.14321531,0.30232976,0.00218,6.90047024,0.30232976,0.10692667,6.90047024,0.25777378,0.10692667,6.94502622,0.25111932,0.00218,6.95168068,0.30232976,0.21167333,6.90047024,0.26442825,0.21167333,6.93837175,0.30232976,0.31642,6.90047024,0.27108271,0.31642,6.93171729,0.20048753,0.09383333,7.00231247,0.19990888,0.00218,7.00289112,0.20106618,0.18548667,7.00173382,0.20164482,0.27714,7.00115518,0.14088667,0.05782667,7.06191333,0.14869844,0.00218,7.05410156,0.13307491,0.11347333,7.06972509,0.12526315,0.16912,7.07753685,0.097488,0.02509333,7.105312,0.097488,0.00218,7.105312,0.097488,0.04800667,7.105312,0.097488,0.07092,7.105312,0.30045312,0.00218,6.89818355,0.30045312,0.10692667,6.89818355,0.24806084,0.10692667,6.93319096,0.24023602,0.00218,6.93841934,0.30045312,0.21167333,6.89818355,0.25588566,0.21167333,6.92796258,0.30045312,0.31642,6.89818355,0.26371048,0.31642,6.9227342,0.18069933,0.09383333,6.97820048,0.18001891,0.00218,6.97865513,0.18137975,0.18548667,6.97774584,0.18206017,0.27714,6.9772912,0.11061614,0.05782667,7.02502857,0.1198018,0.00218,7.01889091,0.10143048,0.11347333,7.03116623,0.09224482,0.16912,7.0373039,0.05958469,0.02509333,7.0591267,0.05958469,0.00218,7.0591267,0.05958469,0.04800667,7.0591267,0.05958469,0.07092,7.0591267,0.29905866,0.00218,6.89557469,0.29905866,0.10692667,6.89557469,0.24084347,0.10692667,6.91968821,0.23214899,0.00218,6.92328958,0.29905866,0.21167333,6.89557469,0.24953795,0.21167333,6.91608684,0.29905866,0.31642,6.89557469,0.25823242,0.31642,6.91248547,0.16599537,0.09383333,6.95069131,0.16523933,0.00218,6.95100447,0.16675141,0.18548667,6.95037815,0.16750745,0.27714,6.95006499,0.0881231,0.05782667,6.98294706,0.09832966,0.00218,6.97871937,0.07791654,0.11347333,6.98717476,0.06770998,0.16912,6.99140245,0.03142,0.02509333,7.00643426,0.03142,0.00218,7.00643426,0.03142,0.04800667,7.00643426,0.03142,0.07092,7.00643426,0.29819995,0.00218,6.89274391,0.29819995,0.10692667,6.89274391,0.23639903,0.10692667,6.90503688,0.22716903,0.00218,6.90687284,0.29819995,0.21167333,6.89274391,0.24562904,0.21167333,6.90320092,0.29819995,0.31642,6.89274391,0.25485905,0.31642,6.90136495,0.15694072,0.09383333,6.92084212,0.15613811,0.00218,6.92100177,0.15774332,0.18548667,6.92068247,0.15854593,0.27714,6.92052282,0.07427196,0.05782667,6.93728596,0.08510718,0.00218,6.9351307,0.06343673,0.11347333,6.93944122,0.05260151,0.16912,6.94159648,0.01407626,0.02509333,6.94925963,0.01407626,0.00218,6.94925963,0.01407626,0.04800667,6.94925963,0.01407626,0.07092,6.94925963,0.29792818,0.00218,6.89054043,0.29792818,0.10692667,6.89054043,0.23499241,0.10692667,6.89363227,0.22559291,0.00218,6.89409403,0.29792818,0.21167333,6.89054043,0.24439191,0.21167333,6.8931705,0.29792818,0.31642,6.89054043,0.25379141,0.31642,6.89270873,0.154075,0.09383333,6.89760748,0.15325765,0.00218,6.89764764,0.15489234,0.18548667,6.89756733,0.15570969,0.27714,6.89752718,0.06988819,0.05782667,6.90174332,0.08092238,0.00218,6.90120124,0.058854,0.11347333,6.90228539,0.04781981,0.16912,6.90282747,0.00858712,0.02509333,6.90475485,0.00858712,0.00218,6.90475485,0.00858712,0.04800667,6.90475485,0.00858712,0.07092,6.90475485,0.29791,0.00218,6.820902,0.29791,0.10692667,6.820902,0.23489833,0.10692667,6.820902,0.2254875,0.00218,6.820902,0.29791,0.21167333,6.820902,0.24430917,0.21167333,6.820902,0.29791,0.31642,6.820902,0.25372,0.31642,6.820902,0.15388333,0.09383333,6.820902,0.153065,0.00218,6.820902,0.15470167,0.18548667,6.820902,0.15552,0.27714,6.820902,0.069595,0.05782667,6.820902,0.0806425,0.00218,6.820902,0.0585475,0.11347333,6.820902,0.0475,0.16912,6.820902,0.00822,0.02509333,6.820902,0.00822,0.00218,6.820902,0.00822,0.04800667,6.820902,0.00822,0.07092,6.820902],200,3)
+         sConn=DataArrayInt([0,1,2,3,20,21,22,23,1,4,5,2,21,24,25,22,4,6,7,5,24,26,27,25,3,2,8,9,23,22,28,29,2,5,10,8,22,25,30,28,5,7,11,10,25,27,31,30,9,8,12,13,29,28,32,33,8,10,14,12,28,30,34,32,10,11,15,14,30,31,35,34,13,12,16,17,33,32,36,37,12,14,18,16,32,34,38,36,14,15,19,18,34,35,39,38,20,21,22,23,40,41,42,43,21,24,25,22,41,44,45,42,24,26,27,25,44,46,47,45,23,22,28,29,43,42,48,49,22,25,30,28,42,45,50,48,25,27,31,30,45,47,51,50,29,28,32,33,49,48,52,53,28,30,34,32,48,50,54,52,30,31,35,34,50,51,55,54,33,32,36,37,53,52,56,57,32,34,38,36,52,54,58,56,34,35,39,38,54,55,59,58,40,41,42,43,60,61,62,63,41,44,45,42,61,64,65,62,44,46,47,45,64,66,67,65,43,42,48,49,63,62,68,69,42,45,50,48,62,65,70,68,45,47,51,50,65,67,71,70,49,48,52,53,69,68,72,73,48,50,54,52,68,70,74,72,50,51,55,54,70,71,75,74,53,52,56,57,73,72,76,77,52,54,58,56,72,74,78,76,54,55,59,58,74,75,79,78,60,61,62,63,80,81,82,83,61,64,65,62,81,84,85,82,64,66,67,65,84,86,87,85,63,62,68,69,83,82,88,89,62,65,70,68,82,85,90,88,65,67,71,70,85,87,91,90,69,68,72,73,89,88,92,93,68,70,74,72,88,90,94,92,70,71,75,74,90,91,95,94,73,72,76,77,93,92,96,97,72,74,78,76,92,94,98,96,74,75,79,78,94,95,99,98,80,81,82,83,100,101,102,103,81,84,85,82,101,104,105,102,84,86,87,85,104,106,107,105,83,82,88,89,103,102,108,109,82,85,90,88,102,105,110,108,85,87,91,90,105,107,111,110,89,88,92,93,109,108,112,113,88,90,94,92,108,110,114,112,90,91,95,94,110,111,115,114,93,92,96,97,113,112,116,117,92,94,98,96,112,114,118,116,94,95,99,98,114,115,119,118,100,101,102,103,120,121,122,123,101,104,105,102,121,124,125,122,104,106,107,105,124,126,127,125,103,102,108,109,123,122,128,129,102,105,110,108,122,125,130,128,105,107,111,110,125,127,131,130,109,108,112,113,129,128,132,133,108,110,114,112,128,130,134,132,110,111,115,114,130,131,135,134,113,112,116,117,133,132,136,137,112,114,118,116,132,134,138,136,114,115,119,118,134,135,139,138,120,121,122,123,140,141,142,143,121,124,125,122,141,144,145,142,124,126,127,125,144,146,147,145,123,122,128,129,143,142,148,149,122,125,130,128,142,145,150,148,125,127,131,130,145,147,151,150,129,128,132,133,149,148,152,153,128,130,134,132,148,150,154,152,130,131,135,134,150,151,155,154,133,132,136,137,153,152,156,157,132,134,138,136,152,154,158,156,134,135,139,138,154,155,159,158,140,141,142,143,160,161,162,163,141,144,145,142,161,164,165,162,144,146,147,145,164,166,167,165,143,142,148,149,163,162,168,169,142,145,150,148,162,165,170,168,145,147,151,150,165,167,171,170,149,148,152,153,169,168,172,173,148,150,154,152,168,170,174,172,150,151,155,154,170,171,175,174,153,152,156,157,173,172,176,177,152,154,158,156,172,174,178,176,154,155,159,158,174,175,179,178,160,161,162,163,180,181,182,183,161,164,165,162,181,184,185,182,164,166,167,165,184,186,187,185,163,162,168,169,183,182,188,189,162,165,170,168,182,185,190,188,165,167,171,170,185,187,191,190,169,168,172,173,189,188,192,193,168,170,174,172,188,190,194,192,170,171,175,174,190,191,195,194,173,172,176,177,193,192,196,197,172,174,178,176,192,194,198,196,174,175,179,178,194,195,199,198])
+-        s=MEDCoupling1SGTUMesh("target",NORM_HEXA8) ; s.setCoords(sCoo)
++        s=MEDCoupling1SGTUMesh("source",NORM_HEXA8) ; s.setCoords(sCoo)
+         s.setNodalConnectivity(sConn)
+         #
+         tCoo=DataArrayDouble([0.328,0.012,6.8598,0.328,0.168320184237353,6.8598,0.328,0.324640368474706,6.8598,0.328,0.0,6.8598,0.298,0.012,6.8598,0.1565,0.012,6.8598,0.180205346493166,0.144794653506834,6.8598,0.298,0.168320184237353,6.8598,0.0,0.012,6.8598,0.0916755774886107,0.233324422511389,6.8598,0.298,0.324640368474706,6.8598,0.298,0.0,6.8598,0.1565,0.0,6.8598,0.0,0.0,6.8598,0.328,0.012,7.2298,0.328,0.168320184237353,7.2298,0.328,0.324640368474706,7.2298,0.328,0.0,7.2298,0.298,0.012,7.2298,0.1565,0.012,7.2298,0.180205346493166,0.144794653506834,7.2298,0.298,0.168320184237353,7.2298,0.0,0.012,7.2298,0.0916755774886107,0.233324422511389,7.2298,0.298,0.324640368474706,7.2298,0.298,0.0,7.2298,0.1565,0.0,7.2298,0.0,0.0,7.2298],28,3)
+@@ -587,6 +587,130 @@ class MEDCouplingBasicsTest(unittest.Tes
+         self.assertAlmostEqual(0.3521445110626687 ,m[6][170],12)
+         pass
++    def testSwig2MappedBarycentricP1P12D_1(self):
++        """ Testing mapped barycentric P1P1 projection
++        (uses analytical mapping from square to arbitrary convex quadrangle)
++        """
++        n = 5
++        sCoo = DataArrayDouble(n,1)
++        sCoo.iota(0.0);     sCoo /= float(n-1)
++        m = MEDCouplingCMesh("target")
++        m.setCoordsAt(0, sCoo)
++        m.setCoordsAt(1, sCoo)
++        tgt = m.buildUnstructured()
++        coo = tgt.getCoords()
++        orig = coo.deepCpy();   orig[:,0] = 10.0; orig[:,1] = 15.0
++        pt_a = coo.deepCpy();   pt_a[:,0] = -0.3; pt_a[:,1] = 1.0
++        pt_b = coo.deepCpy();   pt_b[:,0] = 2.0;  pt_b[:,1] = 3.0
++        pt_c = coo.deepCpy();   pt_c[:,0] = 1.0;  pt_c[:,1] = 0.0
++        # P = x*C+y*A + xy(B-A-C) + ORIGIN
++        coo2 = coo[:,0]*pt_c + coo[:, 1]*pt_a + coo[:, 0]*coo[:, 1]*(pt_b - pt_a - pt_c) + orig
++
++        tgt.setCoords(coo2)
++
++        sCoo = DataArrayDouble([0.0,0.0,  -0.3,1.0,  2.0,3.0,  1.0,0.0],4,2)
++        sCoo[:,0] += 10.0;  sCoo[:,1] += 15.0;
++        sConn = DataArrayInt([0,1,2,3])
++        s = MEDCoupling1SGTUMesh("source",NORM_QUAD4) ; s.setCoords(sCoo)
++        s.setNodalConnectivity(sConn)
++        #
++        aRemapper=MEDCouplingRemapper()
++        aRemapper.setPrecision(1e-12)
++        aRemapper.setIntersectionType(MappedBarycentric)
++        self.assertEqual(aRemapper.prepare(s,tgt,'P1P1'),1)
++        srcField = MEDCouplingFieldDouble(ON_NODES, ONE_TIME)
++        srcField.setNature(ConservativeVolumic)
++        srcField.setMesh(s); srcField.setName("field")
++        srcField.setArray(DataArrayDouble([1.0,2.0,3.0,4.0]))
++        tgtF = aRemapper.transferField(srcField, 1e+300)
++        ref = [1.0, 1.75, 2.5, 3.25, 4.0, 1.25, 1.875, 2.5, 3.125, 3.75, 1.5, 2.0, 2.5, 3.0, 3.5, 1.75,
++         2.125, 2.5, 2.875, 3.25, 2.0, 2.25, 2.5, 2.75, 3.0]
++        val = tgtF.getArray().getValues()
++        for i, ref_v in enumerate(ref):
++            self.assertAlmostEqual(ref_v, val[i])
++        pass
++
++    def testSwig2MappedBarycentricP1P13_1(self):
++        """ Testing mapped barycentric P1P1 projection in 3D (uses orthogonal distances to 
++        HEXA8 faces).
++        Convention:
++              0 ------ 3
++             /|       /|
++            / |      / |
++           1 ------ 2  |
++           |  |     |  |
++           |  |     |  |
++           |  4-----|- 7
++           | /      | /
++           5 ------ 6
++        """
++        n = 5
++        sCoo = DataArrayDouble(n,1)
++        sCoo.iota(0.0)
++        sCoo /= float(n-1)
++        m = MEDCouplingCMesh("target")
++        m.setCoordsAt(0, sCoo)
++        m.setCoordsAt(1, sCoo)
++        m.setCoordsAt(2, sCoo)
++        tgt = m.buildUnstructured()
++        coo = tgt.getCoords()
++        pt_0 = coo.deepCpy(); pt_0[:,0] = -0.3; pt_0[:,1] = 1.0; pt_0[:,2] = 1.0
++        pt_1 = coo.deepCpy(); pt_1[:,0] = 0.0; pt_1[:,1] = 0.0; pt_1[:,2] = 1.0
++        pt_2 = coo.deepCpy(); pt_2[:,0] = 1.0; pt_2[:,1] = 0.0; pt_2[:,2] = 1.0
++        pt_3 = coo.deepCpy(); pt_3[:,0] = 2.0; pt_3[:,1] = 3.0; pt_3[:,2] = 1.0
++        
++        pt_4 = coo.deepCpy(); pt_4[:,0] = -0.3; pt_4[:,1] = 1.0; pt_4[:,2] = 0.0
++        orig = coo.deepCpy(); orig[:,0] = 10.0; orig[:,1] = 15.0; orig[:,2] = 20.0
++        pt_6 = coo.deepCpy(); pt_6[:,0] = 1.0; pt_6[:,1] = 0.0; pt_6[:,2] = 0.0 
++        pt_7 = coo.deepCpy(); pt_7[:,0] = 2.0; pt_7[:,1] = 3.0; pt_7[:,2] = 0.0
++        # P = x*p6 + y*p4 + z*p1 + xy*(p7-p6-p4) + xz*(p2-p1-p6) + yz*(p0-p4-p1) + xyz(p3-p7-p2-p0+p1+p6+p4)
++        x,y,z = coo[:,0],coo[:,1],coo[:,2]
++        coo2 = x*pt_6 + y*pt_4 + z*pt_1 + \
++               x*y*(pt_7 - pt_6 - pt_4) + x*z*(pt_2 - pt_1 - pt_6) + y*z*(pt_0 - pt_4 - pt_1) + \
++               x*y*z*(pt_3 - pt_7 - pt_2 - pt_0 + pt_6 + pt_1 + pt_4) + orig
++        tgt.setCoords(coo2)
++
++        sCoo = DataArrayDouble([-0.3,1.0,1.0,  0.0,0.0,1.0,  1.0,0.0,1.0,  2.0,3.0,1.0,
++                                -0.3,1.0,0.0,  0.0,0.0,0.0,  1.0,0.0,0.0,  2.0,3.0,0.0,],8,3)
++        sCoo[:, 0] += 10.0; sCoo[:, 1] += 15.0; sCoo[:, 2] += 20.0;
++        sConn = DataArrayInt([0,1,2,3,4, 5,6,7])
++        s = MEDCoupling1SGTUMesh("source",NORM_HEXA8) ; s.setCoords(sCoo)
++        s.setNodalConnectivity(sConn)
++        #
++        aRemapper=MEDCouplingRemapper()
++        aRemapper.setPrecision(1e-12)
++        aRemapper.setIntersectionType(MappedBarycentric)
++        self.assertEqual(aRemapper.prepare(s,tgt,'P1P1'),1)
++        srcField = MEDCouplingFieldDouble(ON_NODES, ONE_TIME)
++        srcField.setNature(ConservativeVolumic)
++        srcField.setMesh(s); srcField.setName("field")
++        srcField.setArray(DataArrayDouble([1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0]))
++        tgtF = aRemapper.transferField(srcField, 1e+300)
++#        print tgtF.getArray().getValues()
++        ref = [6.0, 6.251802698104413, 6.502397834044702, 6.7517940736426665, 7.0, 5.740554726834594,
++               6.1761835575796935, 6.6052985689637564, 7.009392769824465, 7.383488834310164,
++               5.487562931129931, 6.140664596972973, 6.720290674177548, 7.220534970454015, 7.651092836860121,
++               5.2407867837524345, 6.125759809889516, 6.82853486793175, 7.390880823876876, 7.848445254819061,
++               5.0, 6.12211344611157, 6.925740671133115, 7.529623182840827, 8.0, 5.0, 5.251802698104413,
++               5.502397834044702, 5.751794073642667, 6.0, 4.740554726834594, 5.1761835575796935,
++               5.6052985689637564, 6.009392769824465, 6.383488834310163, 4.487562931129931, 5.140664596972973,
++                5.720290674177548, 6.220534970454015, 6.651092836860121, 4.2407867837524345, 5.125759809889516,
++                5.828534867931749, 6.390880823876876, 6.848445254819061, 4.0, 5.122113446111569, 5.925740671133115,
++                6.529623182840827, 7.0, 4.0, 4.251802698104413, 4.502397834044702, 4.751794073642667, 5.0, 3.740554726834594,
++                4.176183557579693, 4.6052985689637564, 5.009392769824464, 5.383488834310164, 3.487562931129931,
++                4.140664596972973, 4.720290674177548, 5.220534970454015, 5.651092836860121, 3.240786783752434, 4.125759809889516, 4.82853486793175,
++                5.390880823876876, 5.848445254819061, 3.0, 4.122113446111569, 4.925740671133115, 5.529623182840827, 6.0, 3.0,
++                3.2518026981044135, 3.502397834044702, 3.7517940736426674, 4.0, 2.7405547268345933, 3.176183557579693,
++                3.6052985689637564, 4.009392769824465, 4.383488834310164, 2.487562931129931, 3.140664596972973, 3.7202906741775474, 4.220534970454015, 4.65109283686012, 2.2407867837524345, 3.1257598098895154, 3.828534867931749,
++                4.390880823876876, 4.848445254819061, 2.0, 3.1221134461115687, 3.9257406711331146, 4.529623182840826, 5.0, 2.0, 2.2518026981044135, 2.502397834044702, 2.7517940736426674, 3.0, 1.7405547268345936, 2.176183557579693, 2.6052985689637564,
++                3.0093927698244642, 3.3834888343101635, 1.4875629311299305, 2.1406645969729734, 2.720290674177548,
++                3.2205349704540143, 3.6510928368601205, 1.2407867837524345, 2.125759809889516, 2.8285348679317495, 3.390880823876876, 3.848445254819061, 1.0, 2.1221134461115687, 2.9257406711331146, 3.529623182840827, 4.0]
++
++        val = tgtF.getArray().getValues()
++        for i, ref_v in enumerate(ref):
++            self.assertAlmostEqual(ref_v, val[i])
++        pass
++
+     @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings(),"requires numpy AND scipy")
+     def testGetCrudeCSRMatrix1(self):
+         """ testing CSR matrix output using numpy/scipy.
+@@ -645,7 +769,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         self.assertAlmostEqual(m_1[2,3],0.3,12)
+         self.assertEqual(m_1.getnnz(),7)
+         pass
+-    
++
+     @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings(),"requires numpy AND scipy")
+     def testP0P1Bary_1(self):
+         a=MEDCouplingUMesh("a",2)
+@@ -712,7 +836,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         #
+         rem=MEDCouplingRemapper()
+         rem.setMaxDistance3DSurfIntersect(1e-12)
+-        rem.setMinDotBtwPlane3DSurfIntersect(0.99)# this line is important it is to tell to remapper to select only cells with very close orientation 
++        rem.setMinDotBtwPlane3DSurfIntersect(0.99)# this line is important it is to tell to remapper to select only cells with very close orientation
+         rem.prepare(skinAndNonConformCells,skinAndNonConformCells,"P0P0")
+         mat=rem.getCrudeCSRMatrix()
+         indptr=DataArrayInt(mat.indptr)
+@@ -785,7 +909,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         #
+         self.assertTrue(coarse.isEqual(trgField.getArray(),1e-12))
+         pass
+-    
++
+     @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings(),"requires numpy AND scipy")
+     def test1DPointLocator1(self):
+         """This test focuses on PointLocator for P1P1 in 1D and 2DCurve."""
+@@ -853,7 +977,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         diff=abs(m-mExp0)
+         self.assertAlmostEqual(diff.sum(),0.,14)
+         pass
+-    
++
+     def test3D2Dand2D3DPointLocator1(self):
+         """ Non regression test solving SIGSEGV when using 3D<->3Dsurf pointlocator."""
+         arrX=DataArrayDouble([0,1,2])
+@@ -894,7 +1018,37 @@ class MEDCouplingBasicsTest(unittest.Tes
+         rem.prepare(mt,ms,"P0P0")
+         self.assertEqual(rem.getCrudeMatrix(),[{0:1.},{1:1.}])
+         pass
+-    
++
++    def test3D1DPointLocatorBBoxAdjusted(self):
++        """ In case a 1D segment lies exactly on the interface between two 2D (or 3D) faces, the default
++        bounding box logic will make it non-intersecting with the surrounding 2D (or 3D) faces.
++        Test bounding box adjustment allowing to widen the BB to capture this.
++        """
++        m = MEDCouplingCMesh("source")
++        di, dd = DataArrayInt, DataArrayDouble
++        m.setCoordsAt(0, dd([0.0, 1.0, 2.0]))
++        m.setCoordsAt(1, dd([0.0, 1.0]))
++        m.setCoordsAt(2, dd([0.0, 1.0]))
++        m3d = m.buildUnstructured()
++        m1d = MEDCouplingUMesh("target", 1)
++        m1d.setCoords(dd([1.0,0.5,0.2  ,  1.0,0.5,0.8], 2,3))
++        m1d.setConnectivity(di([NORM_SEG2, 0, 1]), di([0,3]))
++
++        rem = MEDCouplingRemapper()
++        rem.setPrecision(1e-12)
++        rem.setIntersectionType(PointLocator)
++        rem.prepare(m3d, m1d,"P0P1")
++        self.assertEqual(rem.getCrudeMatrix(), [{0: 1.0, 1: 1.0}, {0: 1.0, 1: 1.0}])
++
++        rem = MEDCouplingRemapper()
++        rem.setPrecision(1e-12)
++        rem.setIntersectionType(PointLocator)
++        rem.setBoundingBoxAdjustment(0.0)
++        rem.setBoundingBoxAdjustmentAbs(0.0)
++        rem.prepare(m3d, m1d,"P0P1")
++        self.assertEqual(rem.getCrudeMatrix(), [{}, {}])
++        pass
++
+     def build2DSourceMesh_1(self):
+         sourceCoords=[-0.3,-0.3, 0.7,-0.3, -0.3,0.7, 0.7,0.7]
+         sourceConn=[0,3,1,0,2,3]
+@@ -907,7 +1061,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         myCoords.setValues(sourceCoords,4,2);
+         sourceMesh.setCoords(myCoords);
+         return sourceMesh;
+-    
++
+     def build2DTargetMesh_1(self):
+         targetCoords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7 ]
+         targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
+@@ -940,9 +1094,10 @@ class MEDCouplingBasicsTest(unittest.Tes
+         targetMesh.setCoords(myCoords);
+         return targetMesh;
+         pass
+-    
++
+     def setUp(self):
+         pass
+     pass
+-unittest.main()
++if __name__ == "__main__":
++  unittest.main()
+diff -rupN MEDCOUPLING_orig/src/MEDLoader/MEDFileField.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileField.cxx
+--- MEDCOUPLING_orig/src/MEDLoader/MEDFileField.cxx    2017-01-23 09:08:42.696094458 +0100
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileField.cxx     2017-01-23 09:10:57.406743098 +0100
+@@ -7357,9 +7357,8 @@ void MEDFileAnyTypeFieldMultiTSWithoutSD
+     {
+       std::vector< std::pair<int,int> > ts;
+       med_int numdt=0,numo=0;
+-      med_int meshIt=0,meshOrder=0;
+       med_float dt=0.0;
+-      MEDFILESAFECALLERRD0(MEDfieldComputingStepMeshInfo,(fid,_name.c_str(),i+1,&numdt,&numo,&dt,&meshIt,&meshOrder));
++      MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,_name.c_str(),i+1,&numdt,&numo,&dt));
+       switch(fieldTyp)
+       {
+         case MED_FLOAT64:
diff --git a/products/patches/medcoupling_abn780_co6.patch b/products/patches/medcoupling_abn780_co6.patch
new file mode 100644 (file)
index 0000000..8698c4d
--- /dev/null
@@ -0,0 +1,1413 @@
+diff -pruN MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox MEDCOUPLING_abn/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox
+--- MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox        2017-01-24 15:36:33.036650775 +0100
++++ MEDCOUPLING_abn/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox 2017-01-24 15:47:10.201683464 +0100
+@@ -11,7 +11,8 @@ Before reading on, remember the definiti
+ - \subpage intersec-specifics
+ - \subpage interpkernelGeo2D
+-- \subpage barycoords (used in some P1 intersectors/locators) 
++- \subpage barycoords (used in some P1 intersectors/locators)
++- \subpage mapped_bary (used in some P1P1 intersectors) 
+ Some implementation details of the C++ code can also be found here: \ref interpkernel 
+diff -pruN MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox MEDCOUPLING_abn/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox
+--- MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox 1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_abn/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox  2017-01-24 15:47:10.202683477 +0100
+@@ -0,0 +1,61 @@
++/*!
++\page mapped_bary Mapped barycentric coordinates algorithm
++
++Mapped barycentric intersection type ('MappedBarycentric') can be selected in space dim 2 (resp. 3) when
++working with quadrangle only (resp. hexaedrons only).
++
++It can only be used for P1P1 projection: for any point P within the quadrangle or the hexaedron, the 
++set of reduced coordinates is computed (x, y, z all comprised between 0 and 1).
++Then the field value at P is computed using the usual form functions of finite element method 
++((1-x)*(1-y), x*(1-y), (1-x)*y and x*y in 2D for example). 
++
++The algorithm used to compute the reduced coordinates differs in dim 2 and dim 3.
++
++\section mapped_bary2d Dimension 2
++
++Let O, A, B, C the four points of the quadrangle, clockwise. Without loss of generality 
++O is assumed to be the origin.
++A point P within the quadrangle is identified with vector OP and simply denoted P.
++
++A suitable mapping is such that, if (x,y) is the couple of reduced coordinates (with x and y both in [0,1])
++ of a point P, then:
++\f[   \mathbf{P} = x\mathbf{C} + y\mathbf{A} + xy(\mathbf{B}- \mathbf{A}-\mathbf{C}) \f]
++
++This forms is the simplest one having a gradient which x component is constant in x, and similarly in y. 
++Furthermore the reduced coordinates 
++(0,0) (resp. (0,1), (1,0), and (1,1)) map to point O (resp. A, B, and C).
++
++Calling \f$\mathbf{N} = \mathbf{B}-\mathbf{A}-\mathbf{C}\f$ and developping for the 2 compos:
++
++\f[   p_x = C_x x + A_x y + N_x xy \f]
++\f[   p_y = C_y x + A_y y + N_y xy \f]
++
++Solving the first eq for x:
++\f[ x = \frac{p_x - y A_x }{C_x+yN_x}  \f]
++
++and injecting in second eq:
++\f[   (A_yN_x -N_yA_x)y^2 + (-p_yN_x -A_xC_y +A_yC_x+N_yp_x)y + (p_x C_y-p_yC_x)=0   \f] 
++solved in:
++\f[  y = \frac{-b \pm \sqrt{b^2 - 4 a c}}{2a} \f]
++where a, b and c are the coeffs of the 2nd order eq.
++
++This gives two possible couples of solution among which only one is in \f$[0,1]^2\f$.
++
++In case where \f$A_yN_x -N_yA_x = 0 \f$ we have a degenerated unique solution for $y$
++\f[ y = \frac{c}{b} \f]
++
++\subsection{Rectangle}
++
++Finally it is worth puting aside the case \f$\mathbf{N} = 0\f$ (rectangle), which boils down to solving an ordinary
++2-unknows system:
++\f[ x = \frac{p_x A_y - p_y A_x}{C_x A_y - C_y A_x}, y = \frac{C_x p_y-C_y p_x}{C_x A_y - C_y A_x} \f]
++
++
++\section mapped_bary3d Dimension 3  
++
++In three dimensions, adopting the same approach as above would lead to a 4th order equation to solve.
++A simpler approach has been chosen: the distance to each pair of parallel faces in the hexaedron is computed.   
++The ratios to the sum of the two distances is computed giving again a number between 0 and 1 for each of 
++the 3 directions.
++
++*/
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/CMakeLists.txt MEDCOUPLING_abn/src/INTERP_KERNEL/CMakeLists.txt
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/CMakeLists.txt  2017-01-24 15:36:33.039650813 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/CMakeLists.txt   2017-01-24 15:47:10.283684498 +0100
+@@ -35,6 +35,7 @@ SET(interpkernel_SOURCES
+   Interpolation3DSurf.cxx
+   Interpolation3D.cxx
+   Interpolation2D3D.cxx
++  Interpolation3D1D.cxx
+   MeshElement.cxx
+   InterpKernelMeshQuality.cxx
+   InterpKernelCellSimplify.cxx
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.cxx MEDCOUPLING_abn/src/INTERP_KERNEL/Interpolation3D1D.cxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.cxx   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/Interpolation3D1D.cxx    2017-01-24 15:47:10.292684611 +0100
+@@ -0,0 +1,64 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#include "Interpolation3D1D.hxx"
++#include "Interpolation3D1D.txx"
++
++namespace INTERP_KERNEL
++{
++  /**
++   * \class Interpolation3D1D
++   * \brief Class used to calculate the interpolation between a 3D mesh and 1D mesh (in 3D space)
++   * Can be seen as a specialization of Interpolation3D, and allows notably the adjustment of bounind boxes.
++   * 
++   */
++
++  Interpolation3D1D::Interpolation3D1D()
++  {}
++
++  Interpolation3D1D::Interpolation3D1D(const InterpolationOptions& io):Interpolation<Interpolation3D1D>(io)
++  {}
++
++  /**
++   * Inspired from PlanarIntersector<MyMeshType,MyMatrix>::adjustBoundingBoxes
++   */
++  void Interpolation3D1D::adjustBoundingBoxes(std::vector<double>& bbox)
++  {
++    const int SPACE_DIM = 3;
++    const double adj = getBoundingBoxAdjustmentAbs();
++    const double adjRel = getBoundingBoxAdjustment();
++
++    long size = bbox.size()/(2*SPACE_DIM);
++    for (int i=0; i<size; i++)
++      {
++        double max=- std::numeric_limits<double>::max();
++        for(int idim=0; idim<SPACE_DIM; idim++)
++          {
++            double Dx=bbox[i*2*SPACE_DIM+1+2*idim]-bbox[i*2*SPACE_DIM+2*idim];
++            max=(max<Dx)?Dx:max;
++          }
++        for(int idim=0; idim<SPACE_DIM; idim++)
++          {
++            bbox[i*2*SPACE_DIM+2*idim  ] -= adjRel*max+adj;
++            bbox[i*2*SPACE_DIM+2*idim+1] += adjRel*max+adj;
++          }
++      }
++  }
++}
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.hxx MEDCOUPLING_abn/src/INTERP_KERNEL/Interpolation3D1D.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.hxx   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/Interpolation3D1D.hxx    2017-01-24 15:47:10.292684611 +0100
+@@ -0,0 +1,45 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : A Bruneton (CEA/DEN)
++
++#ifndef __INTERPOLATION3D1D_HXX__
++#define __INTERPOLATION3D1D_HXX__
++
++#include "INTERPKERNELDefines.hxx"
++#include "Interpolation.hxx"
++#include "NormalizedUnstructuredMesh.hxx"
++#include "InterpolationOptions.hxx"
++
++#include <vector>
++
++namespace INTERP_KERNEL
++{
++  class INTERPKERNEL_EXPORT Interpolation3D1D : public Interpolation<Interpolation3D1D>
++  {
++  public:
++    Interpolation3D1D();
++    Interpolation3D1D(const InterpolationOptions& io);
++    template<class MyMeshType, class MatrixType>
++    int interpolateMeshes(const MyMeshType& srcMesh, const MyMeshType& targetMesh, MatrixType& result, const std::string& method);
++  private:
++    void adjustBoundingBoxes(std::vector<double>& bbox);
++  };
++}
++
++#endif
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.txx MEDCOUPLING_abn/src/INTERP_KERNEL/Interpolation3D1D.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.txx   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/Interpolation3D1D.txx    2017-01-24 15:47:10.508687337 +0100
+@@ -0,0 +1,152 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (CEA/DEN)
++
++#ifndef __INTERPOLATION3D1D_TXX__
++#define __INTERPOLATION3D1D_TXX__
++
++#include "Interpolation3D1D.hxx"
++#include "Interpolation.txx"
++#include "MeshElement.txx"
++#include "PointLocator3DIntersectorP0P0.txx"
++#include "PointLocator3DIntersectorP0P1.txx"
++#include "PointLocator3DIntersectorP1P0.txx"
++#include "PointLocator3DIntersectorP1P1.txx"
++#include "Log.hxx"
++
++#include "BBTree.txx"
++
++namespace INTERP_KERNEL
++{
++  /**
++   *  Very similar to Interpolation3D::interpolateMeshes, except for the bounding boxes that can be
++   *  adjusted in a similar fashion as in InterpolationPlanar::performAdjustmentOfBB()
++   **/
++  template<class MyMeshType, class MatrixType>
++  int Interpolation3D1D::interpolateMeshes(const MyMeshType& srcMesh, const MyMeshType& targetMesh, MatrixType& result, const std::string& method)
++  {
++    if(InterpolationOptions::getIntersectionType() != PointLocator)
++      INTERP_KERNEL::Exception("Invalid 3D/1D intersection type specified : must be PointLocator.");
++
++    typedef typename MyMeshType::MyConnType ConnType;
++    // create MeshElement objects corresponding to each element of the two meshes
++    const unsigned long numSrcElems = srcMesh.getNumberOfElements();
++    const unsigned long numTargetElems = targetMesh.getNumberOfElements();
++
++    LOG(2, "Source mesh has " << numSrcElems << " elements and target mesh has " << numTargetElems << " elements ");
++
++    std::vector<MeshElement<ConnType>*> srcElems(numSrcElems);
++    std::vector<MeshElement<ConnType>*> targetElems(numTargetElems);
++
++    std::map<MeshElement<ConnType>*, int> indices;
++
++    for(unsigned long i = 0 ; i < numSrcElems ; ++i)
++      srcElems[i] = new MeshElement<ConnType>(i, srcMesh);       
++
++    for(unsigned long i = 0 ; i < numTargetElems ; ++i)
++      targetElems[i] = new MeshElement<ConnType>(i, targetMesh);
++
++    Intersector3D<MyMeshType,MatrixType>* intersector=0;
++    std::string methC = InterpolationOptions::filterInterpolationMethod(method);
++    if(methC=="P0P0")
++      { intersector=new PointLocator3DIntersectorP0P0<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else if(methC=="P0P1")
++      {  intersector=new PointLocator3DIntersectorP0P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else if(methC=="P1P0")
++      {  intersector=new PointLocator3DIntersectorP1P0<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else if(methC=="P1P1")
++      {  intersector=new PointLocator3DIntersectorP1P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else
++      throw Exception("Invalid method choosed must be in \"P0P0\", \"P0P1\", \"P1P0\" or \"P1P1\".");
++    // create empty maps for all source elements
++    result.resize(intersector->getNumberOfRowsOfResMatrix());
++
++    // create BBTree structure
++    // - get bounding boxes
++    std::vector<double> bboxes(6*numSrcElems);
++    int* srcElemIdx = new int[numSrcElems];
++    for(unsigned long i = 0; i < numSrcElems ; ++i)
++      {
++        // get source bboxes in right order
++        const BoundingBox* box = srcElems[i]->getBoundingBox();
++        bboxes[6*i+0] = box->getCoordinate(BoundingBox::XMIN);
++        bboxes[6*i+1] = box->getCoordinate(BoundingBox::XMAX);
++        bboxes[6*i+2] = box->getCoordinate(BoundingBox::YMIN);
++        bboxes[6*i+3] = box->getCoordinate(BoundingBox::YMAX);
++        bboxes[6*i+4] = box->getCoordinate(BoundingBox::ZMIN);
++        bboxes[6*i+5] = box->getCoordinate(BoundingBox::ZMAX);
++
++        srcElemIdx[i] = srcElems[i]->getIndex();
++      }
++
++    adjustBoundingBoxes(bboxes);
++    const double *bboxPtr=0;
++    if(numSrcElems>0)
++      bboxPtr=&bboxes[0];
++    BBTree<3,ConnType> tree(bboxPtr, srcElemIdx, 0, numSrcElems);
++
++    // for each target element, get source elements with which to calculate intersection
++    // - calculate intersection by calling intersectCells
++    for(unsigned long i = 0; i < numTargetElems; ++i)
++      {
++        const BoundingBox* box = targetElems[i]->getBoundingBox();
++        const int targetIdx = targetElems[i]->getIndex();
++
++        // get target bbox in right order
++        double targetBox[6];
++        targetBox[0] = box->getCoordinate(BoundingBox::XMIN);
++        targetBox[1] = box->getCoordinate(BoundingBox::XMAX);
++        targetBox[2] = box->getCoordinate(BoundingBox::YMIN);
++        targetBox[3] = box->getCoordinate(BoundingBox::YMAX);
++        targetBox[4] = box->getCoordinate(BoundingBox::ZMIN);
++        targetBox[5] = box->getCoordinate(BoundingBox::ZMAX);
++
++        std::vector<ConnType> intersectElems;
++
++        tree.getIntersectingElems(targetBox, intersectElems);
++
++        if ( !intersectElems.empty() )
++          intersector->intersectCells(targetIdx,intersectElems,result);
++      }
++
++    // free allocated memory
++    delete [] srcElemIdx;
++
++    int ret=intersector->getNumberOfColsOfResMatrix();
++
++    delete intersector;
++
++    for(unsigned long i = 0 ; i < numSrcElems ; ++i)
++      {
++        delete srcElems[i];
++      }
++    for(unsigned long i = 0 ; i < numTargetElems ; ++i)
++      {
++        delete targetElems[i];
++      }
++    return ret;
++
++  }
++}
++
++#endif
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D.txx MEDCOUPLING_abn/src/INTERP_KERNEL/Interpolation3D.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D.txx     2017-01-24 15:36:33.041650839 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/Interpolation3D.txx      2017-01-24 15:47:10.507687324 +0100
+@@ -35,6 +35,7 @@
+ #include "PolyhedronIntersectorP1P1.txx"
+ #include "PointLocator3DIntersectorP1P1.txx"
+ #include "Barycentric3DIntersectorP1P1.txx"
++#include "MappedBarycentric3DIntersectorP1P1.txx"
+ #include "Log.hxx"
+ // If defined, use recursion to traverse the binary search tree, else use the BBTree class
+ //#define USE_RECURSIVE_BBOX_FILTER
+@@ -154,8 +155,11 @@ namespace INTERP_KERNEL
+           case Barycentric:
+             intersector=new Barycentric3DIntersectorP1P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
+             break;
++          case MappedBarycentric:
++            intersector=new MappedBarycentric3DIntersectorP1P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++            break;
+           default:
+-            throw INTERP_KERNEL::Exception("Invalid 3D intersection type for P1P1 interp specified : must be Triangle or PointLocator.");
++            throw INTERP_KERNEL::Exception("Invalid 3D intersection type for P1P1 interp specified : must be Triangle, PointLocator, Barycentric or MappedBarycentric.");
+           }
+       }
+     else
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationOptions.hxx MEDCOUPLING_abn/src/INTERP_KERNEL/InterpolationOptions.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationOptions.hxx        2017-01-24 15:36:33.041650839 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/InterpolationOptions.hxx 2017-01-24 15:47:10.292684611 +0100
+@@ -28,7 +28,7 @@
+ namespace INTERP_KERNEL
+ {
+-  typedef enum { Triangulation, Convex, Geometric2D, PointLocator, Barycentric, BarycentricGeo2D } IntersectionType;
++  typedef enum { Triangulation, Convex, Geometric2D, PointLocator, Barycentric, BarycentricGeo2D, MappedBarycentric } IntersectionType;
+   
+   /*!
+    * Class defining the options for all interpolation algorithms used in the \ref remapper "remapper" and
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationPlanar.txx MEDCOUPLING_abn/src/INTERP_KERNEL/InterpolationPlanar.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationPlanar.txx 2017-01-24 15:36:33.042650851 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/InterpolationPlanar.txx  2017-01-24 15:47:10.292684611 +0100
+@@ -40,6 +40,8 @@
+ #include "PlanarIntersectorP1P0PL.txx"
+ #include "PlanarIntersectorP1P1PL.hxx"
+ #include "PlanarIntersectorP1P1PL.txx"
++#include "MappedBarycentric2DIntersectorP1P1.hxx"
++#include "MappedBarycentric2DIntersectorP1P1.txx"
+ #include "VectorUtils.hxx"
+ #include "BBTree.txx"
+@@ -358,8 +360,16 @@ namespace INTERP_KERNEL
+                                                                            InterpolationOptions::getPrecision(),
+                                                                            InterpolationOptions::getOrientation());
+             break;
++          case MappedBarycentric:
++            intersector=new MappedBarycentric2DIntersectorP1P1<MyMeshType,MatrixType>(myMeshT, myMeshS, _dim_caracteristic,
++                                                                                     InterpolationOptions::getMaxDistance3DSurfIntersect(),
++                                                                                     InterpolationOptions::getMinDotBtwPlane3DSurfIntersect(),
++                                                                                     InterpolationOptions::getMedianPlane(),
++                                                                                     InterpolationOptions::getPrecision(),
++                                                                                     InterpolationOptions::getOrientation());
++            break;
+           default:
+-            throw INTERP_KERNEL::Exception("For P1P1 planar interpolation possibities are : Triangulation, Convex, Geometric2D, PointLocator !");
++            throw INTERP_KERNEL::Exception("For P1P1 planar interpolation possibities are : Triangulation, Convex, Geometric2D, PointLocator, MappedBarycentric !");
+           }
+       }
+     else
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationUtils.hxx MEDCOUPLING_abn/src/INTERP_KERNEL/InterpolationUtils.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationUtils.hxx  2017-01-24 15:36:33.042650851 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/InterpolationUtils.hxx   2017-01-24 15:47:10.508687337 +0100
+@@ -23,6 +23,7 @@
+ #include "INTERPKERNELDefines.hxx"
+ #include "InterpKernelException.hxx"
++#include "VolSurfUser.hxx"
+ #include "NormalizedUnstructuredMesh.hxx"
+@@ -413,7 +414,7 @@ namespace INTERP_KERNEL
+   }
+   /*!
+-   * Calculate barycentric coordinates of a point p with respect to triangle or tetra verices.
++   * Calculate barycentric coordinates of a point p with respect to triangle or tetra vertices.
+    * This method makes 2 assumptions :
+    *    - this is a simplex
+    *    - spacedim == meshdim. For TRI3 and TRI6 spaceDim is expected to be equal to 2 and for TETRA4 spaceDim is expected to be equal to 3.
+@@ -535,6 +536,136 @@ namespace INTERP_KERNEL
+       }
+   }
++  /*!
++   * Calculate pseudo barycentric coordinates of a point p with respect to the quadrangle vertices.
++   * This method makes the assumption that:
++   *  - spacedim == meshdim (2 here).
++   *  - the point is within the quad
++   *  Quadratic elements are not supported yet.
++   *
++   *  A quadrangle can be described as 3 vectors, one point being taken as the origin.
++   *  Denoting A, B, C the three other points, any point P within the quad is written as
++   *    P = xA+ yC + xy(B-A-C)
++   *  This method solve those 2 equations (one per component) for x and y.
++   *
++
++          A------B
++          |      |
++          |      |
++          0------C
++   */
++  inline void quad_mapped_coords(const std::vector<const double*>& n, const double *p, double *bc)
++  {
++    double prec = 1.0e-14;
++    enum { _XX=0, _YY, _ZZ };
++
++    if(n.size() != 4)
++      throw INTERP_KERNEL::Exception("INTERP_KERNEL::quad_mapped_coords : unrecognized geometric type! Only QUAD4 supported.");
++
++    double A[2] = {n[1][_XX] - n[0][_XX],  n[1][_YY] - n[0][_YY]};
++    double B[2] = {n[2][_XX] - n[0][_XX],  n[2][_YY] - n[0][_YY]};
++    double C[2] = {n[3][_XX] - n[0][_XX],  n[3][_YY] - n[0][_YY]};
++    double N[2] = {B[_XX] - A[_XX] - C[_XX], B[_YY] - A[_YY] - C[_YY]};
++    double P[2] = {p[_XX] - n[0][_XX], p[_YY] - n[0][_YY]};
++
++    // degenerated case: a rectangle:
++    if (fabs(N[0]) < prec && fabs(N[1]) < prec)
++      {
++        double det = C[0]*A[1] -C[1]*A[0];
++        if (fabs(det) < prec)
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords() has a degenerated 2x2 system!");
++        bc[0] = (P[0]*A[1]-P[1]*A[0])/det;
++        bc[1] = (P[1]*C[0]-P[0]*C[1])/det;
++        return;
++      }
++    double b,c ,a = A[1]*N[0]-A[0]*N[1];
++    bool cas1;
++    if (fabs(a) > 1.0e-14)
++      {
++        b = A[1]*C[0]+N[1]*P[0]-N[0]*P[1]-A[0]*C[1];
++        c = P[0]*C[1] - P[1]*C[0];
++        cas1 = true;
++      }
++    else
++      {
++        a = -C[1]*N[0]+C[0]*N[1];
++        b = A[1]*C[0]-N[1]*P[0]+N[0]*P[1]-A[0]*C[1];
++        c = -P[0]*A[1] + P[1]*A[0];
++        cas1 = false;
++      }
++    double delta = b*b - 4.0*a*c;
++    if (delta < 0.0)
++      throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): imaginary solutions!");
++    bc[1] = 0.5*(-b+sqrt(delta))/a;
++    if (bc[1] < -prec || bc[1] > (1.0+prec))
++      bc[1] = 0.5*(-b-sqrt(delta))/a;
++    if (bc[1] < -prec || bc[1] > (1.0+prec))
++      throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): point doesn't seem to be in quad4!");
++    if (cas1)
++      {
++        double denom = C[0]+bc[1]*N[0];
++        if (fabs(denom) < prec)
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): point doesn't seem to be in quad4!");
++        bc[0] = (P[0]-bc[1]*A[0])/denom;
++        if (bc[0] < -prec || bc[0] > (1.0+prec))
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): point doesn't seem to be in quad4!");
++      }
++    else
++      {
++        bc[0] = bc[1];
++        double denom = A[1]+bc[0]*N[1];
++        if (fabs(denom) < prec)
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: cuboid_mapped_coord(): point doesn't seem to be in quad4!");
++        bc[1] = (P[1]-bc[0]*C[1])/denom;
++        if (bc[1] < -prec || bc[1] > (1.0+prec))
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: cuboid_mapped_coord(): point doesn't seem to be in quad4!");
++      }
++  }
++
++  /*!
++   * Doing as in quad_mapped_coords() would lead to a 4th order equation ... So go simpler here:
++   * orthogonal distance to each pair of parallel faces is computed. The ratio gives a number in [0,1]
++   *
++   * Conventions:
++   *   - for HEXA8, point F (5) is taken to be the origin (see med file ref connec):
++   *          0 ------ 3
++             /|       /|
++            / |      / |
++           1 ------ 2  |
++           |  |     |  |
++           |  |     |  |
++           |  4-----|- 7
++           | /      | /
++           5 ------ 6
++
++   *
++   */
++
++  inline void cuboid_mapped_coords(const std::vector<const double*>& n, const double *p, double *bc)
++  {
++    double prec = 1.0e-14;
++    enum { _XX=0, _YY };
++    if (n.size() != 8)
++      throw INTERP_KERNEL::Exception("INTERP_KERNEL::cuboid_mapped_coords: unrecognized geometric type! Only HEXA8 supported.");
++
++    double dx1, dx2, dy1, dy2, dz1, dz2;
++    dx1 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[4],n[5],n[1]);
++    dx2 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[7],n[3],n[2]);
++
++    dy1 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[5],n[6],n[2]);
++    dy2 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[4],n[0],n[3]);
++
++    dz1 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[5],n[4],n[7]);
++    dz2 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[1],n[2],n[3]);
++
++    if (dx1 < -prec || dx2 < -prec || dy1 < -prec || dy2 < -prec || dz1 < -prec || dz2 < -prec)
++      throw INTERP_KERNEL::Exception("INTERP_KERNEL::cuboid_mapped_coords: point outside HEXA8");
++
++    bc[0] = dx1+dx2 < prec ? 0.5 : dx1/(dx1+dx2);
++    bc[1] = dy1+dy2 < prec ? 0.5 : dy1/(dy1+dy2);
++    bc[2] = dz1+dz2 < prec ? 0.5 : dz1/(dz1+dz2);
++  }
++
+   /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
+   /*         calcul la surface d'un polygone.                 */
+   /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx MEDCOUPLING_abn/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx   2017-01-24 15:47:10.294684637 +0100
+@@ -0,0 +1,44 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MappedBarycenter2DIntersectorP1P1_HXX__
++#define __MappedBarycenter2DIntersectorP1P1_HXX__
++
++#include "PlanarIntersector.hxx"
++
++namespace INTERP_KERNEL
++{
++  template<class MyMeshType, class MyMatrix>
++  class MappedBarycentric2DIntersectorP1P1 : public PlanarIntersector<MyMeshType,MyMatrix>
++  {
++   public:
++    static const int SPACEDIM=MyMeshType::MY_SPACEDIM;
++    static const int MESHDIM=MyMeshType::MY_MESHDIM;
++    typedef typename MyMeshType::MyConnType ConnType;
++    static const NumberingPolicy numPol=MyMeshType::My_numPol;
++  public:
++    MappedBarycentric2DIntersectorP1P1(const MyMeshType& meshT, const MyMeshType& meshS, double dimCaracteristic, double md3DSurf, double minDot3DSurf, double medianPlane, double precision, int orientation);
++    void intersectCells(ConnType icellT, const std::vector<ConnType>& icellsS, MyMatrix& res);
++    int getNumberOfRowsOfResMatrix() const;
++    int getNumberOfColsOfResMatrix() const;
++  };
++}
++
++#endif
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx MEDCOUPLING_abn/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx   2017-01-24 15:47:10.294684637 +0100
+@@ -0,0 +1,111 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MappedBarycentric2DIntersectorP1P1_TXX__
++#define __MappedBarycentric2DIntersectorP1P1_TXX__
++
++#include "MappedBarycentric2DIntersectorP1P1.hxx"
++#include "PlanarIntersector.txx"
++#include "CellModel.hxx"
++
++#include "PointLocatorAlgos.txx"
++#include "MeshUtils.hxx"
++
++namespace INTERP_KERNEL
++{
++  template<class MyMeshType, class MyMatrix>
++  MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::MappedBarycentric2DIntersectorP1P1(const MyMeshType& meshT, const MyMeshType& meshS,
++                                                                        double dimCaracteristic, double md3DSurf, double minDot3DSurf,
++                                                                        double medianPlane, double precision, int orientation):
++    PlanarIntersector<MyMeshType,MyMatrix>(meshT,meshS,dimCaracteristic,precision,md3DSurf,minDot3DSurf,medianPlane,true,orientation,0)
++  {
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  void MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::intersectCells(ConnType icellT, const std::vector<ConnType>& icellsS, MyMatrix& res)
++  {
++    std::vector<double> CoordsT;
++    PlanarIntersector<MyMeshType,MyMatrix>::getRealTargetCoordinates(OTT<ConnType,numPol>::indFC(icellT),CoordsT);
++    int nbOfNodesT=CoordsT.size()/SPACEDIM;
++    for(typename std::vector<ConnType>::const_iterator iter=icellsS.begin();iter!=icellsS.end();iter++)
++      {
++        NormalizedCellType tS=PlanarIntersector<MyMeshType,MyMatrix>::_meshS.getTypeOfElement(OTT<ConnType,numPol>::indFC(*iter));
++        if(tS!=NORM_QUAD4)
++          throw INTERP_KERNEL::Exception("Invalid source cell detected for meshdim==2. Only QUAD4 supported !");
++        std::vector<double> CoordsS;
++        PlanarIntersector<MyMeshType,MyMatrix>::getRealSourceCoordinates(OTT<ConnType,numPol>::indFC(*iter),CoordsS);
++        std::vector<double> CoordsTTmp(CoordsT);
++        if(SPACEDIM==3)
++          PlanarIntersector<MyMeshType,MyMatrix>::projectionThis(&CoordsS[0],&CoordsTTmp[0],CoordsS.size()/SPACEDIM,nbOfNodesT);
++        const ConnType *startOfCellNodeConnT=PlanarIntersector<MyMeshType,MyMatrix>::_connectT+OTT<ConnType,numPol>::conn2C(PlanarIntersector<MyMeshType,MyMatrix>::_connIndexT[icellT]);
++        for(int nodeIdT=0;nodeIdT<nbOfNodesT;nodeIdT++)
++          {
++            typename MyMatrix::value_type& resRow=res[OTT<ConnType,numPol>::ind2C(startOfCellNodeConnT[nodeIdT])];
++            if( PointLocatorAlgos<MyMeshType>::isElementContainsPointAlg2D(&CoordsTTmp[nodeIdT*SPACEDIM],&CoordsS[0],4,PlanarIntersector<MyMeshType,MyMatrix>::_precision) )
++              {
++                double mco[2];  // mapped coordinates in the quad4
++                std::vector<const double*> coo(4);
++                coo[0]=&CoordsS[0]; coo[1]=&CoordsS[SPACEDIM]; coo[2]=&CoordsS[2*SPACEDIM]; coo[3]=&CoordsS[3*SPACEDIM];
++                quad_mapped_coords(coo,&CoordsTTmp[nodeIdT*SPACEDIM],mco);
++
++                // Now use the form function of the QUAD4 to map the field values
++                double resLoc[4];
++                // See QUAD4 standard connectivity and cuboid_mapped_coords() convention:
++                resLoc[0] = (1.-mco[0]) * (1.-mco[1]);
++                resLoc[1] = (1.-mco[0]) *   mco[1]   ;
++                resLoc[2] =  mco[0]     *   mco[1]   ;
++                resLoc[3] =  mco[0]     * (1.-mco[1]);
++
++                const ConnType *startOfCellNodeConnS=PlanarIntersector<MyMeshType,MyMatrix>::_connectS+OTT<ConnType,numPol>::conn2C(PlanarIntersector<MyMeshType,MyMatrix>::_connIndexS[*iter]);
++                for(int nodeIdS=0;nodeIdS<4;nodeIdS++)
++                  {
++                    if(fabs(resLoc[nodeIdS])>PlanarIntersector<MyMeshType,MyMatrix>::_precision)
++                      {
++                        ConnType curNodeSInCmode=OTT<ConnType,numPol>::coo2C(startOfCellNodeConnS[nodeIdS]);
++                        typename MyMatrix::value_type::const_iterator iterRes=resRow.find(OTT<ConnType,numPol>::indFC(curNodeSInCmode));
++                        if(iterRes==resRow.end())
++                          resRow.insert(std::make_pair(OTT<ConnType,numPol>::indFC(curNodeSInCmode),resLoc[nodeIdS]));
++                        else
++                          {
++                            double val=(*iterRes).second+resLoc[nodeIdS];
++                            resRow.erase(OTT<ConnType,numPol>::indFC(curNodeSInCmode));
++                            resRow.insert(std::make_pair(OTT<ConnType,numPol>::indFC(curNodeSInCmode),val));
++                          }
++                      }
++                  }
++              }
++          }
++      }
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  int MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::getNumberOfRowsOfResMatrix() const
++  {
++    return PlanarIntersector<MyMeshType,MyMatrix>::_meshT.getNumberOfNodes();
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  int MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::getNumberOfColsOfResMatrix() const
++  {
++    return PlanarIntersector<MyMeshType,MyMatrix>::_meshS.getNumberOfNodes();
++  }
++}
++
++#endif
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx MEDCOUPLING_abn/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx   2017-01-24 15:47:10.294684637 +0100
+@@ -0,0 +1,46 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MappedBarycentric3DIntersectorP1P1_HXX__
++#define __MappedBarycentric3DIntersectorP1P1_HXX__
++
++#include "Intersector3DP1P1.hxx"
++#include "NormalizedUnstructuredMesh.hxx"
++
++namespace INTERP_KERNEL
++{
++  template<class MyMeshType, class MyMatrix>
++  class MappedBarycentric3DIntersectorP1P1 : public Intersector3DP1P1<MyMeshType,MyMatrix>
++  { 
++  public:
++    static const int SPACEDIM=MyMeshType::MY_SPACEDIM;
++    static const int MESHDIM=MyMeshType::MY_MESHDIM;
++    typedef typename MyMeshType::MyConnType ConnType;
++    static const NumberingPolicy numPol=MyMeshType::My_numPol;
++  public:
++    MappedBarycentric3DIntersectorP1P1(const MyMeshType& targetMesh, const MyMeshType& srcMesh, double precision);
++    ~MappedBarycentric3DIntersectorP1P1();
++    void intersectCells(ConnType targetCell, const std::vector<ConnType>& srcCells, MyMatrix& res);
++  protected:
++    double _precision;
++  };
++}
++
++#endif
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx MEDCOUPLING_abn/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx   2017-01-24 15:47:10.294684637 +0100
+@@ -0,0 +1,113 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MAPPEDBARYCENTRIC3DINTERSECTORP1P1_TXX__
++#define __MAPPEDBARYCENTRIC3DINTERSECTORP1P1_TXX__
++
++#include "MappedBarycentric3DIntersectorP1P1.hxx"
++#include "Intersector3DP1P1.txx"
++#include "MeshUtils.hxx"
++
++namespace INTERP_KERNEL
++{
++
++  /**
++   * Constructor creating object from target cell global number 
++   * 
++   * @param targetMesh  mesh containing the target elements
++   * @param srcMesh     mesh containing the source elements
++   * @param policy      splitting policy to be used
++   */
++  template<class MyMeshType, class MyMatrix>
++  MappedBarycentric3DIntersectorP1P1<MyMeshType,MyMatrix>::MappedBarycentric3DIntersectorP1P1(const MyMeshType& targetMesh, const MyMeshType& srcMesh, double precision):
++    Intersector3DP1P1<MyMeshType,MyMatrix>(targetMesh,srcMesh),_precision(precision)
++  {
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  MappedBarycentric3DIntersectorP1P1<MyMeshType,MyMatrix>::~MappedBarycentric3DIntersectorP1P1()
++  {
++  }
++
++  /**
++   * @param targetCell in C mode.
++   * @param srcCells in C mode.
++   */
++  template<class MyMeshType, class MyMatrix>
++  void MappedBarycentric3DIntersectorP1P1<MyMeshType,MyMatrix>::intersectCells(ConnType targetCell, const std::vector<ConnType>& srcCells, MyMatrix& res)
++  {
++    std::vector<double> CoordsT;
++    const ConnType *startOfCellNodeConnT=Intersector3DP1P1<MyMeshType,MyMatrix>::getStartConnOfTargetCell(targetCell);
++    Intersector3DP1P1<MyMeshType,MyMatrix>::getRealTargetCoordinates(OTT<ConnType,numPol>::indFC(targetCell),CoordsT);
++    int nbOfNodesT=CoordsT.size()/SPACEDIM;
++    const double *coordsS=Intersector3DP1P1<MyMeshType,MyMatrix>::_src_mesh.getCoordinatesPtr();
++    for(int nodeIdT=0;nodeIdT<nbOfNodesT;nodeIdT++)
++      {
++        typename MyMatrix::value_type& resRow=res[OTT<ConnType,numPol>::ind2C(startOfCellNodeConnT[nodeIdT])];
++        if(!resRow.empty())
++          continue;
++        for(typename std::vector<ConnType>::const_iterator iterCellS=srcCells.begin();iterCellS!=srcCells.end();iterCellS++)
++          {
++            NormalizedCellType tS=Intersector3DP1P1<MyMeshType,MyMatrix>::_src_mesh.getTypeOfElement(OTT<ConnType,numPol>::indFC(*iterCellS));
++            if(tS!=NORM_HEXA8)
++              throw INTERP_KERNEL::Exception("Invalid source cell detected for meshdim==3. Only HEXA8 supported !");
++            const CellModel& cmTypeS=CellModel::GetCellModel(tS);
++            //
++            std::vector<ConnType> connOfCurCellS;
++            Intersector3DP1P1<MyMeshType,MyMatrix>::getConnOfSourceCell(OTT<ConnType,numPol>::indFC(*iterCellS),connOfCurCellS);
++            if( PointLocatorAlgos<MyMeshType>::isElementContainsPointAlg3D(&CoordsT[nodeIdT*SPACEDIM],&connOfCurCellS[0],connOfCurCellS.size(),coordsS,cmTypeS,_precision) )
++              {
++                double mco[3];  // mapped coordinates in the hexa8
++                std::vector<double> localCoordsS;
++                Intersector3DP1P1<MyMeshType,MyMatrix>::getRealSourceCoordinates(OTT<ConnType,numPol>::indFC(*iterCellS),localCoordsS);
++                std::vector<const double*> coo(8);
++                coo[0]=&localCoordsS[0]; coo[1]=&localCoordsS[3]; coo[2]=&localCoordsS[6]; coo[3]=&localCoordsS[9];
++                coo[4]=&localCoordsS[12]; coo[5]=&localCoordsS[15]; coo[6]=&localCoordsS[18]; coo[7]=&localCoordsS[21];
++                cuboid_mapped_coords(coo,&CoordsT[nodeIdT*SPACEDIM],mco);
++
++                // Now use the form function of the HEXA8 to map the field values
++                double resLoc[8];
++                // See HEXA8 standard connectivity and cuboid_mapped_coords() convention:
++                resLoc[5] = (1.-mco[0]) * (1.-mco[1]) * (1.-mco[2]);
++                resLoc[6] =  mco[0]     * (1.-mco[1]) * (1.-mco[2]);
++                resLoc[7] =  mco[0]     *   mco[1]    * (1.-mco[2]);
++                resLoc[4] = (1.-mco[0]) *   mco[1]    * (1.-mco[2]);
++
++                resLoc[1] = (1.-mco[0]) * (1.-mco[1]) * mco[2];
++                resLoc[2] =  mco[0]     * (1.-mco[1]) * mco[2];
++                resLoc[3] =  mco[0]     *   mco[1]    * mco[2];
++                resLoc[0] = (1.-mco[0]) *   mco[1]    * mco[2];
++
++                const ConnType *startOfCellNodeConnS=Intersector3DP1P1<MyMeshType,MyMatrix>::getStartConnOfSourceCell(*iterCellS);
++                for(int nodeIdS=0;nodeIdS<8;nodeIdS++)
++                  {
++                    if(fabs(resLoc[nodeIdS])>_precision)
++                      {
++                        ConnType curNodeSInCmode=OTT<ConnType,numPol>::coo2C(startOfCellNodeConnS[nodeIdS]);
++                        resRow.insert(std::make_pair(OTT<ConnType,numPol>::indFC(curNodeSInCmode),resLoc[nodeIdS]));
++                      }
++                  }
++              }
++          }
++      }
++  }
++}
++
++#endif
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.cxx MEDCOUPLING_abn/src/INTERP_KERNEL/VolSurfUser.cxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.cxx 2017-01-24 15:36:33.042650851 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/VolSurfUser.cxx  2017-01-24 15:47:10.301684725 +0100
+@@ -28,6 +28,25 @@
+ namespace INTERP_KERNEL
+ {
++  /* Orthogonal distance from a point to a plane defined by three points p1, p2, p3.
++   * Returns a signed distance, the normal of the plane being defined by (p1-p2)x(p3-p2)
++   */
++  double OrthoDistanceFromPtToPlaneInSpaceDim3(const double *p, const double *p1, const double *p2, const double *p3)
++  {
++    double prec = 1.0e-14;
++    double T[2][3] = {{p1[0] - p2[0], p1[1] - p2[1], p1[2] - p2[2]},
++                      {p3[0] - p2[0], p3[1] - p2[1], p3[2] - p2[2]}};
++    double N[3] = {T[0][1]*T[1][2]-T[0][2]*T[1][1],
++                   T[0][2]*T[1][0]-T[0][0]*T[1][2],
++                   T[0][0]*T[1][1]-T[0][1]*T[1][0]};
++
++    double norm2 = N[0]*N[0] + N[1]*N[1] + N[2]*N[2];
++    if (norm2 < prec)
++      throw INTERP_KERNEL::Exception("OrthoDistanceFromPtToPlaneInSpaceDim3: degenerated normal vector!");
++    double num = N[0]*(p[0]-p1[0]) + N[1]*(p[1]-p1[1]) + N[2]*(p[2]-p1[2]);
++    return num/sqrt(norm2);
++  }
++
+   double SquareDistanceFromPtToSegInSpaceDim2(const double *pt, const double *pt0Seg2, const double *pt1Seg2, std::size_t &nbOfHint)
+   {
+     double dx=pt1Seg2[0]-pt0Seg2[0],dy=pt1Seg2[1]-pt0Seg2[1];
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.hxx MEDCOUPLING_abn/src/INTERP_KERNEL/VolSurfUser.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.hxx 2017-01-24 15:36:33.042650851 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNEL/VolSurfUser.hxx  2017-01-24 15:47:10.301684725 +0100
+@@ -39,6 +39,8 @@ namespace INTERP_KERNEL
+   template<class ConnType, NumberingPolicy numPolConn>
+   void computeBarycenter2(NormalizedCellType type, const ConnType *connec, int lgth, const double *coords, int spaceDim, double *res);
++  double INTERPKERNEL_EXPORT OrthoDistanceFromPtToPlaneInSpaceDim3(const double *p, const double *p1, const double *p2, const double *p3);
++
+   double INTERPKERNEL_EXPORT SquareDistanceFromPtToSegInSpaceDim2(const double *pt, const double *pt0Seg2, const double *pt1Seg2, std::size_t &nbOfHint);
+   double INTERPKERNEL_EXPORT DistanceFromPtToTriInSpaceDim3(const double *pt, const double *pt0Tri3, const double *pt1Tri3, const double *pt2Tri3);
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx MEDCOUPLING_abn/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx
+--- MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx   2017-01-24 15:36:33.043650863 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx    2017-01-24 15:47:10.306684788 +0100
+@@ -342,5 +342,148 @@ namespace INTERP_TEST
+     CPPUNIT_ASSERT_DOUBLES_EQUAL( p[0], p2[0], 1e-12);
+     CPPUNIT_ASSERT_DOUBLES_EQUAL( p[1], p2[1], 1e-12);
+     CPPUNIT_ASSERT_DOUBLES_EQUAL( p[2], p2[2], 1e-12);
+-  }  
++  }
++
++  /* Conventions:
++  *   - for HEXA8, point 5 is taken to be the origin (see med file ref connec):
++  *          0 ------ 3
++            /|       /|
++           / |      / |
++          1 ------ 2  |
++          |  |     |  |
++          |  |     |  |
++          |  4-----|- 7
++          | /      | /
++          5 ------ 6
++   */
++  void UnitTetraIntersectionBaryTest::test_cuboid_mapped_coords_3D()
++  {
++    double nodes[8][3] = { { 0.0, 2.0, 4.0 }, //0
++                           { 0.0, 0.0, 4.0 },
++                           { 1.0, 0.0, 4.0 },
++                           { 1.0, 2.0, 4.0 },
++                           { 0.0, 2.0, 0.0 }, // 4
++                           { 0.0, 0.0, 0.0 },
++                           { 1.0, 0.0, 0.0 },
++                           { 1.0, 2.0, 0.0 }
++    };
++    // Translate cube:
++    for (int i=0; i < 8; ++i)
++      for (int j=0; j < 3; ++j)
++        nodes[i][j] += 15.0;
++
++    std::vector<const double*> n (8);
++    for (int i=0; i<8; i++)
++      n[i] = &nodes[i][0];
++
++    {
++        // middle point
++        double p[3] = { 15.5, 16.0, 17.0 }, bc[3];
++        cuboid_mapped_coords(n, p, bc);
++        CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[0], 1e-12);
++        CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[1], 1e-12);
++        CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[2], 1e-12);
++    }
++    {
++      // point 1
++      double p[3] = { 15.0, 15.0, 19.0 }, bc[3];
++      cuboid_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[1], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[2], 1e-12);
++    }
++    {
++      // point 7
++      double p[3] = { 16.0, 17.0, 15.0 }, bc[3];
++      cuboid_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[2], 1e-12);
++    }
++    {
++      // point 3
++      double p[3] = { 16.0, 17.0, 19.0 }, bc[3];
++      cuboid_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[2], 1e-12);
++    }
++    {
++      // point outside
++      double p[3] = { 2.0, 16.0, 18.0 }, bc[3];
++      CPPUNIT_ASSERT_THROW(cuboid_mapped_coords(n, p, bc), INTERP_KERNEL::Exception);
++    }
++
++  }
++
++  /* Convention
++      - for QUAD4, point 0 is taken to be the origin (again see med file ref connec):
++
++         1------2
++         |      |
++         |      |
++         0------3
++  */
++  void UnitTetraIntersectionBaryTest::test_quad_mapped_coords_2D()
++  {
++
++    double nodes[4][2] = { { 0.0, 0.0 },
++                           { 0.0, 1.0 },
++                           { 2.0, 3.0 },
++                           { 1.0, 0.0 } };
++
++    // Translate quad4:
++    for (int i=0; i < 4; ++i)
++      for (int j=0; j < 2; ++j)
++        nodes[i][j] += 15.0;
++
++    std::vector<const double*> n (4);
++    for (int i=0; i<4; i++)
++      n[i] = &nodes[i][0];
++
++    {
++      // middle point
++      double p[2] = { 15.75, 16.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[1], 1e-12);
++    }
++
++    {
++      // middle point of seg
++      double p[2] = { 15.5, 15.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[1], 1e-12);
++    }
++
++    {
++      // point 1
++      double p[2] = { 15.0, 16.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++    }
++    {
++      // point 2
++      double p[2] = { 17.0, 18.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++    }
++    {
++      // point 3
++      double p[2] = { 16.0, 15.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[1], 1e-12);
++    }
++    {
++      // point outside
++      double p[2] = { 18.0, 18.0 }, bc[2];
++      CPPUNIT_ASSERT_THROW(quad_mapped_coords(n, p, bc), INTERP_KERNEL::Exception);
++    }
++  }
++
++
+ }
+diff -pruN MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx MEDCOUPLING_abn/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx   2017-01-24 15:36:33.043650863 +0100
++++ MEDCOUPLING_abn/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx    2017-01-24 15:47:10.306684788 +0100
+@@ -52,6 +52,8 @@ namespace INTERP_TEST
+     CPPUNIT_TEST( test_UnitTetraIntersectionBary_11 );
+     CPPUNIT_TEST( test_TetraAffineTransform_reverseApply );
+     CPPUNIT_TEST( test_barycentric_coords );
++    CPPUNIT_TEST( test_cuboid_mapped_coords_3D );
++    CPPUNIT_TEST( test_quad_mapped_coords_2D );
+     CPPUNIT_TEST_SUITE_END();
+   public:
+     void test_UnitTetraIntersectionBary_1();
+@@ -69,6 +71,8 @@ namespace INTERP_TEST
+     void test_UnitTetraIntersectionBary_13();
+     void test_TetraAffineTransform_reverseApply();
+     void test_barycentric_coords();
++    void test_cuboid_mapped_coords_3D();
++    void test_quad_mapped_coords_2D();
+   };
+ }
+diff -pruN MEDCOUPLING_orig/src/MEDCoupling/MEDCouplingRemapper.cxx MEDCOUPLING_abn/src/MEDCoupling/MEDCouplingRemapper.cxx
+--- MEDCOUPLING_orig/src/MEDCoupling/MEDCouplingRemapper.cxx   2017-01-24 15:36:33.062651103 +0100
++++ MEDCOUPLING_abn/src/MEDCoupling/MEDCouplingRemapper.cxx    2017-01-24 15:47:10.526687563 +0100
+@@ -35,6 +35,7 @@
+ #include "Interpolation3DSurf.hxx"
+ #include "Interpolation2D1D.txx"
+ #include "Interpolation2D3D.txx"
++#include "Interpolation3D1D.txx"
+ #include "InterpolationCU.txx"
+ #include "InterpolationCC.txx"
+@@ -436,7 +437,7 @@ int MEDCouplingRemapper::prepareInterpKe
+         throw INTERP_KERNEL::Exception("Invalid interpolation requested between 3D and 1D ! Select PointLocator as intersection type !");
+       MEDCouplingNormalizedUnstructuredMesh<3,3> source_mesh_wrapper(src_mesh);
+       MEDCouplingNormalizedUnstructuredMesh<3,3> target_mesh_wrapper(target_mesh);
+-      INTERP_KERNEL::Interpolation3D interpolation(*this);
++      INTERP_KERNEL::Interpolation3D1D interpolation(*this);
+       nbCols=interpolation.interpolateMeshes(source_mesh_wrapper,target_mesh_wrapper,_matrix,method);
+     }
+   else if(srcMeshDim==1 && trgMeshDim==3 && srcSpaceDim==3)
+@@ -445,7 +446,7 @@ int MEDCouplingRemapper::prepareInterpKe
+         throw INTERP_KERNEL::Exception("Invalid interpolation requested between 3D and 1D ! Select PointLocator as intersection type !");
+       MEDCouplingNormalizedUnstructuredMesh<3,3> source_mesh_wrapper(src_mesh);
+       MEDCouplingNormalizedUnstructuredMesh<3,3> target_mesh_wrapper(target_mesh);
+-      INTERP_KERNEL::Interpolation3D interpolation(*this);
++      INTERP_KERNEL::Interpolation3D1D interpolation(*this);
+       std::vector<std::map<int,double> > matrixTmp;
+       std::string revMethod(BuildMethodFrom(trgMeth,srcMeth));
+       nbCols=interpolation.interpolateMeshes(target_mesh_wrapper,source_mesh_wrapper,matrixTmp,revMethod);
+diff -pruN MEDCOUPLING_orig/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py MEDCOUPLING_abn/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py
+--- MEDCOUPLING_orig/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py   2017-01-24 15:36:33.088651431 +0100
++++ MEDCOUPLING_abn/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py    2017-01-24 15:47:10.550687867 +0100
+@@ -555,7 +555,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+     def testSwig2BarycentricP1P13D_1(self):
+         sCoo=DataArrayDouble([0.313,0.00218,6.90489,0.313,0.10692667,6.90489,0.313,0.10692667,6.96790167,0.313,0.00218,6.9773125,0.313,0.21167333,6.90489,0.313,0.21167333,6.95849083,0.313,0.31642,6.90489,0.313,0.31642,6.94908,0.313,0.09383333,7.04891667,0.313,0.00218,7.049735,0.313,0.18548667,7.04809833,0.313,0.27714,7.04728,0.313,0.05782667,7.133205,0.313,0.00218,7.1221575,0.313,0.11347333,7.1442525,0.313,0.16912,7.1553,0.313,0.02509333,7.19458,0.313,0.00218,7.19458,0.313,0.04800667,7.19458,0.313,0.07092,7.19458,0.31005609,0.00218,6.90460005,0.31005609,0.10692667,6.90460005,0.29776312,0.10692667,6.96640097,0.29592716,0.00218,6.97563097,0.31005609,0.21167333,6.90460005,0.29959908,0.21167333,6.95717096,0.31005609,0.31642,6.90460005,0.30143505,0.31642,6.94794095,0.28195788,0.09383333,7.04585928,0.28179823,0.00218,7.04666189,0.28211753,0.18548667,7.04505668,0.28227718,0.27714,7.04425407,0.26551404,0.05782667,7.12852804,0.2676693,0.00218,7.11769282,0.26335878,0.11347333,7.13936327,0.26120352,0.16912,7.15019849,0.25354037,0.02509333,7.18872374,0.25354037,0.00218,7.18872374,0.25354037,0.04800667,7.18872374,0.25354037,0.07092,7.18872374,0.30722531,0.00218,6.90374134,0.30722531,0.10692667,6.90374134,0.28311179,0.10692667,6.96195653,0.27951042,0.00218,6.97065101,0.30722531,0.21167333,6.90374134,0.28671316,0.21167333,6.95326205,0.30722531,0.31642,6.90374134,0.29031453,0.31642,6.94456758,0.25210869,0.09383333,7.03680463,0.25179553,0.00218,7.03756067,0.25242185,0.18548667,7.03604859,0.25273501,0.27714,7.03529255,0.21985294,0.05782667,7.1146769,0.22408063,0.00218,7.10447034,0.21562524,0.11347333,7.12488346,0.21139755,0.16912,7.13509002,0.19636574,0.02509333,7.17138,0.19636574,0.00218,7.17138,0.19636574,0.04800667,7.17138,0.19636574,0.07092,7.17138,0.30461645,0.00218,6.90234688,0.30461645,0.10692667,6.90234688,0.26960904,0.10692667,6.95473916,0.26438066,0.00218,6.96256398,0.30461645,0.21167333,6.90234688,0.27483742,0.21167333,6.94691434,0.30461645,0.31642,6.90234688,0.2800658,0.31642,6.93908952,0.22459952,0.09383333,7.02210067,0.22414487,0.00218,7.02278109,0.22505416,0.18548667,7.02142025,0.2255088,0.27714,7.02073983,0.17777143,0.05782667,7.09218386,0.18390909,0.00218,7.0829982,0.17163377,0.11347333,7.10136952,0.1654961,0.16912,7.11055518,0.1436733,0.02509333,7.14321531,0.1436733,0.00218,7.14321531,0.1436733,0.04800667,7.14321531,0.1436733,0.07092,7.14321531,0.30232976,0.00218,6.90047024,0.30232976,0.10692667,6.90047024,0.25777378,0.10692667,6.94502622,0.25111932,0.00218,6.95168068,0.30232976,0.21167333,6.90047024,0.26442825,0.21167333,6.93837175,0.30232976,0.31642,6.90047024,0.27108271,0.31642,6.93171729,0.20048753,0.09383333,7.00231247,0.19990888,0.00218,7.00289112,0.20106618,0.18548667,7.00173382,0.20164482,0.27714,7.00115518,0.14088667,0.05782667,7.06191333,0.14869844,0.00218,7.05410156,0.13307491,0.11347333,7.06972509,0.12526315,0.16912,7.07753685,0.097488,0.02509333,7.105312,0.097488,0.00218,7.105312,0.097488,0.04800667,7.105312,0.097488,0.07092,7.105312,0.30045312,0.00218,6.89818355,0.30045312,0.10692667,6.89818355,0.24806084,0.10692667,6.93319096,0.24023602,0.00218,6.93841934,0.30045312,0.21167333,6.89818355,0.25588566,0.21167333,6.92796258,0.30045312,0.31642,6.89818355,0.26371048,0.31642,6.9227342,0.18069933,0.09383333,6.97820048,0.18001891,0.00218,6.97865513,0.18137975,0.18548667,6.97774584,0.18206017,0.27714,6.9772912,0.11061614,0.05782667,7.02502857,0.1198018,0.00218,7.01889091,0.10143048,0.11347333,7.03116623,0.09224482,0.16912,7.0373039,0.05958469,0.02509333,7.0591267,0.05958469,0.00218,7.0591267,0.05958469,0.04800667,7.0591267,0.05958469,0.07092,7.0591267,0.29905866,0.00218,6.89557469,0.29905866,0.10692667,6.89557469,0.24084347,0.10692667,6.91968821,0.23214899,0.00218,6.92328958,0.29905866,0.21167333,6.89557469,0.24953795,0.21167333,6.91608684,0.29905866,0.31642,6.89557469,0.25823242,0.31642,6.91248547,0.16599537,0.09383333,6.95069131,0.16523933,0.00218,6.95100447,0.16675141,0.18548667,6.95037815,0.16750745,0.27714,6.95006499,0.0881231,0.05782667,6.98294706,0.09832966,0.00218,6.97871937,0.07791654,0.11347333,6.98717476,0.06770998,0.16912,6.99140245,0.03142,0.02509333,7.00643426,0.03142,0.00218,7.00643426,0.03142,0.04800667,7.00643426,0.03142,0.07092,7.00643426,0.29819995,0.00218,6.89274391,0.29819995,0.10692667,6.89274391,0.23639903,0.10692667,6.90503688,0.22716903,0.00218,6.90687284,0.29819995,0.21167333,6.89274391,0.24562904,0.21167333,6.90320092,0.29819995,0.31642,6.89274391,0.25485905,0.31642,6.90136495,0.15694072,0.09383333,6.92084212,0.15613811,0.00218,6.92100177,0.15774332,0.18548667,6.92068247,0.15854593,0.27714,6.92052282,0.07427196,0.05782667,6.93728596,0.08510718,0.00218,6.9351307,0.06343673,0.11347333,6.93944122,0.05260151,0.16912,6.94159648,0.01407626,0.02509333,6.94925963,0.01407626,0.00218,6.94925963,0.01407626,0.04800667,6.94925963,0.01407626,0.07092,6.94925963,0.29792818,0.00218,6.89054043,0.29792818,0.10692667,6.89054043,0.23499241,0.10692667,6.89363227,0.22559291,0.00218,6.89409403,0.29792818,0.21167333,6.89054043,0.24439191,0.21167333,6.8931705,0.29792818,0.31642,6.89054043,0.25379141,0.31642,6.89270873,0.154075,0.09383333,6.89760748,0.15325765,0.00218,6.89764764,0.15489234,0.18548667,6.89756733,0.15570969,0.27714,6.89752718,0.06988819,0.05782667,6.90174332,0.08092238,0.00218,6.90120124,0.058854,0.11347333,6.90228539,0.04781981,0.16912,6.90282747,0.00858712,0.02509333,6.90475485,0.00858712,0.00218,6.90475485,0.00858712,0.04800667,6.90475485,0.00858712,0.07092,6.90475485,0.29791,0.00218,6.820902,0.29791,0.10692667,6.820902,0.23489833,0.10692667,6.820902,0.2254875,0.00218,6.820902,0.29791,0.21167333,6.820902,0.24430917,0.21167333,6.820902,0.29791,0.31642,6.820902,0.25372,0.31642,6.820902,0.15388333,0.09383333,6.820902,0.153065,0.00218,6.820902,0.15470167,0.18548667,6.820902,0.15552,0.27714,6.820902,0.069595,0.05782667,6.820902,0.0806425,0.00218,6.820902,0.0585475,0.11347333,6.820902,0.0475,0.16912,6.820902,0.00822,0.02509333,6.820902,0.00822,0.00218,6.820902,0.00822,0.04800667,6.820902,0.00822,0.07092,6.820902],200,3)
+         sConn=DataArrayInt([0,1,2,3,20,21,22,23,1,4,5,2,21,24,25,22,4,6,7,5,24,26,27,25,3,2,8,9,23,22,28,29,2,5,10,8,22,25,30,28,5,7,11,10,25,27,31,30,9,8,12,13,29,28,32,33,8,10,14,12,28,30,34,32,10,11,15,14,30,31,35,34,13,12,16,17,33,32,36,37,12,14,18,16,32,34,38,36,14,15,19,18,34,35,39,38,20,21,22,23,40,41,42,43,21,24,25,22,41,44,45,42,24,26,27,25,44,46,47,45,23,22,28,29,43,42,48,49,22,25,30,28,42,45,50,48,25,27,31,30,45,47,51,50,29,28,32,33,49,48,52,53,28,30,34,32,48,50,54,52,30,31,35,34,50,51,55,54,33,32,36,37,53,52,56,57,32,34,38,36,52,54,58,56,34,35,39,38,54,55,59,58,40,41,42,43,60,61,62,63,41,44,45,42,61,64,65,62,44,46,47,45,64,66,67,65,43,42,48,49,63,62,68,69,42,45,50,48,62,65,70,68,45,47,51,50,65,67,71,70,49,48,52,53,69,68,72,73,48,50,54,52,68,70,74,72,50,51,55,54,70,71,75,74,53,52,56,57,73,72,76,77,52,54,58,56,72,74,78,76,54,55,59,58,74,75,79,78,60,61,62,63,80,81,82,83,61,64,65,62,81,84,85,82,64,66,67,65,84,86,87,85,63,62,68,69,83,82,88,89,62,65,70,68,82,85,90,88,65,67,71,70,85,87,91,90,69,68,72,73,89,88,92,93,68,70,74,72,88,90,94,92,70,71,75,74,90,91,95,94,73,72,76,77,93,92,96,97,72,74,78,76,92,94,98,96,74,75,79,78,94,95,99,98,80,81,82,83,100,101,102,103,81,84,85,82,101,104,105,102,84,86,87,85,104,106,107,105,83,82,88,89,103,102,108,109,82,85,90,88,102,105,110,108,85,87,91,90,105,107,111,110,89,88,92,93,109,108,112,113,88,90,94,92,108,110,114,112,90,91,95,94,110,111,115,114,93,92,96,97,113,112,116,117,92,94,98,96,112,114,118,116,94,95,99,98,114,115,119,118,100,101,102,103,120,121,122,123,101,104,105,102,121,124,125,122,104,106,107,105,124,126,127,125,103,102,108,109,123,122,128,129,102,105,110,108,122,125,130,128,105,107,111,110,125,127,131,130,109,108,112,113,129,128,132,133,108,110,114,112,128,130,134,132,110,111,115,114,130,131,135,134,113,112,116,117,133,132,136,137,112,114,118,116,132,134,138,136,114,115,119,118,134,135,139,138,120,121,122,123,140,141,142,143,121,124,125,122,141,144,145,142,124,126,127,125,144,146,147,145,123,122,128,129,143,142,148,149,122,125,130,128,142,145,150,148,125,127,131,130,145,147,151,150,129,128,132,133,149,148,152,153,128,130,134,132,148,150,154,152,130,131,135,134,150,151,155,154,133,132,136,137,153,152,156,157,132,134,138,136,152,154,158,156,134,135,139,138,154,155,159,158,140,141,142,143,160,161,162,163,141,144,145,142,161,164,165,162,144,146,147,145,164,166,167,165,143,142,148,149,163,162,168,169,142,145,150,148,162,165,170,168,145,147,151,150,165,167,171,170,149,148,152,153,169,168,172,173,148,150,154,152,168,170,174,172,150,151,155,154,170,171,175,174,153,152,156,157,173,172,176,177,152,154,158,156,172,174,178,176,154,155,159,158,174,175,179,178,160,161,162,163,180,181,182,183,161,164,165,162,181,184,185,182,164,166,167,165,184,186,187,185,163,162,168,169,183,182,188,189,162,165,170,168,182,185,190,188,165,167,171,170,185,187,191,190,169,168,172,173,189,188,192,193,168,170,174,172,188,190,194,192,170,171,175,174,190,191,195,194,173,172,176,177,193,192,196,197,172,174,178,176,192,194,198,196,174,175,179,178,194,195,199,198])
+-        s=MEDCoupling1SGTUMesh("target",NORM_HEXA8) ; s.setCoords(sCoo)
++        s=MEDCoupling1SGTUMesh("source",NORM_HEXA8) ; s.setCoords(sCoo)
+         s.setNodalConnectivity(sConn)
+         #
+         tCoo=DataArrayDouble([0.328,0.012,6.8598,0.328,0.168320184237353,6.8598,0.328,0.324640368474706,6.8598,0.328,0.0,6.8598,0.298,0.012,6.8598,0.1565,0.012,6.8598,0.180205346493166,0.144794653506834,6.8598,0.298,0.168320184237353,6.8598,0.0,0.012,6.8598,0.0916755774886107,0.233324422511389,6.8598,0.298,0.324640368474706,6.8598,0.298,0.0,6.8598,0.1565,0.0,6.8598,0.0,0.0,6.8598,0.328,0.012,7.2298,0.328,0.168320184237353,7.2298,0.328,0.324640368474706,7.2298,0.328,0.0,7.2298,0.298,0.012,7.2298,0.1565,0.012,7.2298,0.180205346493166,0.144794653506834,7.2298,0.298,0.168320184237353,7.2298,0.0,0.012,7.2298,0.0916755774886107,0.233324422511389,7.2298,0.298,0.324640368474706,7.2298,0.298,0.0,7.2298,0.1565,0.0,7.2298,0.0,0.0,7.2298],28,3)
+@@ -587,6 +587,130 @@ class MEDCouplingBasicsTest(unittest.Tes
+         self.assertAlmostEqual(0.3521445110626687 ,m[6][170],12)
+         pass
++    def testSwig2MappedBarycentricP1P12D_1(self):
++        """ Testing mapped barycentric P1P1 projection
++        (uses analytical mapping from square to arbitrary convex quadrangle)
++        """
++        n = 5
++        sCoo = DataArrayDouble(n,1)
++        sCoo.iota(0.0);     sCoo /= float(n-1)
++        m = MEDCouplingCMesh("target")
++        m.setCoordsAt(0, sCoo)
++        m.setCoordsAt(1, sCoo)
++        tgt = m.buildUnstructured()
++        coo = tgt.getCoords()
++        orig = coo.deepCpy();   orig[:,0] = 10.0; orig[:,1] = 15.0
++        pt_a = coo.deepCpy();   pt_a[:,0] = -0.3; pt_a[:,1] = 1.0
++        pt_b = coo.deepCpy();   pt_b[:,0] = 2.0;  pt_b[:,1] = 3.0
++        pt_c = coo.deepCpy();   pt_c[:,0] = 1.0;  pt_c[:,1] = 0.0
++        # P = x*C+y*A + xy(B-A-C) + ORIGIN
++        coo2 = coo[:,0]*pt_c + coo[:, 1]*pt_a + coo[:, 0]*coo[:, 1]*(pt_b - pt_a - pt_c) + orig
++
++        tgt.setCoords(coo2)
++
++        sCoo = DataArrayDouble([0.0,0.0,  -0.3,1.0,  2.0,3.0,  1.0,0.0],4,2)
++        sCoo[:,0] += 10.0;  sCoo[:,1] += 15.0;
++        sConn = DataArrayInt([0,1,2,3])
++        s = MEDCoupling1SGTUMesh("source",NORM_QUAD4) ; s.setCoords(sCoo)
++        s.setNodalConnectivity(sConn)
++        #
++        aRemapper=MEDCouplingRemapper()
++        aRemapper.setPrecision(1e-12)
++        aRemapper.setIntersectionType(MappedBarycentric)
++        self.assertEqual(aRemapper.prepare(s,tgt,'P1P1'),1)
++        srcField = MEDCouplingFieldDouble(ON_NODES, ONE_TIME)
++        srcField.setNature(ConservativeVolumic)
++        srcField.setMesh(s); srcField.setName("field")
++        srcField.setArray(DataArrayDouble([1.0,2.0,3.0,4.0]))
++        tgtF = aRemapper.transferField(srcField, 1e+300)
++        ref = [1.0, 1.75, 2.5, 3.25, 4.0, 1.25, 1.875, 2.5, 3.125, 3.75, 1.5, 2.0, 2.5, 3.0, 3.5, 1.75,
++         2.125, 2.5, 2.875, 3.25, 2.0, 2.25, 2.5, 2.75, 3.0]
++        val = tgtF.getArray().getValues()
++        for i, ref_v in enumerate(ref):
++            self.assertAlmostEqual(ref_v, val[i])
++        pass
++
++    def testSwig2MappedBarycentricP1P13_1(self):
++        """ Testing mapped barycentric P1P1 projection in 3D (uses orthogonal distances to 
++        HEXA8 faces).
++        Convention:
++              0 ------ 3
++             /|       /|
++            / |      / |
++           1 ------ 2  |
++           |  |     |  |
++           |  |     |  |
++           |  4-----|- 7
++           | /      | /
++           5 ------ 6
++        """
++        n = 5
++        sCoo = DataArrayDouble(n,1)
++        sCoo.iota(0.0)
++        sCoo /= float(n-1)
++        m = MEDCouplingCMesh("target")
++        m.setCoordsAt(0, sCoo)
++        m.setCoordsAt(1, sCoo)
++        m.setCoordsAt(2, sCoo)
++        tgt = m.buildUnstructured()
++        coo = tgt.getCoords()
++        pt_0 = coo.deepCpy(); pt_0[:,0] = -0.3; pt_0[:,1] = 1.0; pt_0[:,2] = 1.0
++        pt_1 = coo.deepCpy(); pt_1[:,0] = 0.0; pt_1[:,1] = 0.0; pt_1[:,2] = 1.0
++        pt_2 = coo.deepCpy(); pt_2[:,0] = 1.0; pt_2[:,1] = 0.0; pt_2[:,2] = 1.0
++        pt_3 = coo.deepCpy(); pt_3[:,0] = 2.0; pt_3[:,1] = 3.0; pt_3[:,2] = 1.0
++        
++        pt_4 = coo.deepCpy(); pt_4[:,0] = -0.3; pt_4[:,1] = 1.0; pt_4[:,2] = 0.0
++        orig = coo.deepCpy(); orig[:,0] = 10.0; orig[:,1] = 15.0; orig[:,2] = 20.0
++        pt_6 = coo.deepCpy(); pt_6[:,0] = 1.0; pt_6[:,1] = 0.0; pt_6[:,2] = 0.0 
++        pt_7 = coo.deepCpy(); pt_7[:,0] = 2.0; pt_7[:,1] = 3.0; pt_7[:,2] = 0.0
++        # P = x*p6 + y*p4 + z*p1 + xy*(p7-p6-p4) + xz*(p2-p1-p6) + yz*(p0-p4-p1) + xyz(p3-p7-p2-p0+p1+p6+p4)
++        x,y,z = coo[:,0],coo[:,1],coo[:,2]
++        coo2 = x*pt_6 + y*pt_4 + z*pt_1 + \
++               x*y*(pt_7 - pt_6 - pt_4) + x*z*(pt_2 - pt_1 - pt_6) + y*z*(pt_0 - pt_4 - pt_1) + \
++               x*y*z*(pt_3 - pt_7 - pt_2 - pt_0 + pt_6 + pt_1 + pt_4) + orig
++        tgt.setCoords(coo2)
++
++        sCoo = DataArrayDouble([-0.3,1.0,1.0,  0.0,0.0,1.0,  1.0,0.0,1.0,  2.0,3.0,1.0,
++                                -0.3,1.0,0.0,  0.0,0.0,0.0,  1.0,0.0,0.0,  2.0,3.0,0.0,],8,3)
++        sCoo[:, 0] += 10.0; sCoo[:, 1] += 15.0; sCoo[:, 2] += 20.0;
++        sConn = DataArrayInt([0,1,2,3,4, 5,6,7])
++        s = MEDCoupling1SGTUMesh("source",NORM_HEXA8) ; s.setCoords(sCoo)
++        s.setNodalConnectivity(sConn)
++        #
++        aRemapper=MEDCouplingRemapper()
++        aRemapper.setPrecision(1e-12)
++        aRemapper.setIntersectionType(MappedBarycentric)
++        self.assertEqual(aRemapper.prepare(s,tgt,'P1P1'),1)
++        srcField = MEDCouplingFieldDouble(ON_NODES, ONE_TIME)
++        srcField.setNature(ConservativeVolumic)
++        srcField.setMesh(s); srcField.setName("field")
++        srcField.setArray(DataArrayDouble([1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0]))
++        tgtF = aRemapper.transferField(srcField, 1e+300)
++#        print tgtF.getArray().getValues()
++        ref = [6.0, 6.251802698104413, 6.502397834044702, 6.7517940736426665, 7.0, 5.740554726834594,
++               6.1761835575796935, 6.6052985689637564, 7.009392769824465, 7.383488834310164,
++               5.487562931129931, 6.140664596972973, 6.720290674177548, 7.220534970454015, 7.651092836860121,
++               5.2407867837524345, 6.125759809889516, 6.82853486793175, 7.390880823876876, 7.848445254819061,
++               5.0, 6.12211344611157, 6.925740671133115, 7.529623182840827, 8.0, 5.0, 5.251802698104413,
++               5.502397834044702, 5.751794073642667, 6.0, 4.740554726834594, 5.1761835575796935,
++               5.6052985689637564, 6.009392769824465, 6.383488834310163, 4.487562931129931, 5.140664596972973,
++                5.720290674177548, 6.220534970454015, 6.651092836860121, 4.2407867837524345, 5.125759809889516,
++                5.828534867931749, 6.390880823876876, 6.848445254819061, 4.0, 5.122113446111569, 5.925740671133115,
++                6.529623182840827, 7.0, 4.0, 4.251802698104413, 4.502397834044702, 4.751794073642667, 5.0, 3.740554726834594,
++                4.176183557579693, 4.6052985689637564, 5.009392769824464, 5.383488834310164, 3.487562931129931,
++                4.140664596972973, 4.720290674177548, 5.220534970454015, 5.651092836860121, 3.240786783752434, 4.125759809889516, 4.82853486793175,
++                5.390880823876876, 5.848445254819061, 3.0, 4.122113446111569, 4.925740671133115, 5.529623182840827, 6.0, 3.0,
++                3.2518026981044135, 3.502397834044702, 3.7517940736426674, 4.0, 2.7405547268345933, 3.176183557579693,
++                3.6052985689637564, 4.009392769824465, 4.383488834310164, 2.487562931129931, 3.140664596972973, 3.7202906741775474, 4.220534970454015, 4.65109283686012, 2.2407867837524345, 3.1257598098895154, 3.828534867931749,
++                4.390880823876876, 4.848445254819061, 2.0, 3.1221134461115687, 3.9257406711331146, 4.529623182840826, 5.0, 2.0, 2.2518026981044135, 2.502397834044702, 2.7517940736426674, 3.0, 1.7405547268345936, 2.176183557579693, 2.6052985689637564,
++                3.0093927698244642, 3.3834888343101635, 1.4875629311299305, 2.1406645969729734, 2.720290674177548,
++                3.2205349704540143, 3.6510928368601205, 1.2407867837524345, 2.125759809889516, 2.8285348679317495, 3.390880823876876, 3.848445254819061, 1.0, 2.1221134461115687, 2.9257406711331146, 3.529623182840827, 4.0]
++
++        val = tgtF.getArray().getValues()
++        for i, ref_v in enumerate(ref):
++            self.assertAlmostEqual(ref_v, val[i])
++        pass
++
+     @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings(),"requires numpy AND scipy")
+     def testGetCrudeCSRMatrix1(self):
+         """ testing CSR matrix output using numpy/scipy.
+@@ -645,7 +769,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         self.assertAlmostEqual(m_1[2,3],0.3,12)
+         self.assertEqual(m_1.getnnz(),7)
+         pass
+-    
++
+     @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings(),"requires numpy AND scipy")
+     def testP0P1Bary_1(self):
+         a=MEDCouplingUMesh("a",2)
+@@ -712,7 +836,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         #
+         rem=MEDCouplingRemapper()
+         rem.setMaxDistance3DSurfIntersect(1e-12)
+-        rem.setMinDotBtwPlane3DSurfIntersect(0.99)# this line is important it is to tell to remapper to select only cells with very close orientation 
++        rem.setMinDotBtwPlane3DSurfIntersect(0.99)# this line is important it is to tell to remapper to select only cells with very close orientation
+         rem.prepare(skinAndNonConformCells,skinAndNonConformCells,"P0P0")
+         mat=rem.getCrudeCSRMatrix()
+         indptr=DataArrayInt(mat.indptr)
+@@ -785,7 +909,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         #
+         self.assertTrue(coarse.isEqual(trgField.getArray(),1e-12))
+         pass
+-    
++
+     @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings(),"requires numpy AND scipy")
+     def test1DPointLocator1(self):
+         """This test focuses on PointLocator for P1P1 in 1D and 2DCurve."""
+@@ -853,7 +977,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         diff=abs(m-mExp0)
+         self.assertAlmostEqual(diff.sum(),0.,14)
+         pass
+-    
++
+     def test3D2Dand2D3DPointLocator1(self):
+         """ Non regression test solving SIGSEGV when using 3D<->3Dsurf pointlocator."""
+         arrX=DataArrayDouble([0,1,2])
+@@ -894,7 +1018,37 @@ class MEDCouplingBasicsTest(unittest.Tes
+         rem.prepare(mt,ms,"P0P0")
+         self.assertEqual(rem.getCrudeMatrix(),[{0:1.},{1:1.}])
+         pass
+-    
++
++    def test3D1DPointLocatorBBoxAdjusted(self):
++        """ In case a 1D segment lies exactly on the interface between two 2D (or 3D) faces, the default
++        bounding box logic will make it non-intersecting with the surrounding 2D (or 3D) faces.
++        Test bounding box adjustment allowing to widen the BB to capture this.
++        """
++        m = MEDCouplingCMesh("source")
++        di, dd = DataArrayInt, DataArrayDouble
++        m.setCoordsAt(0, dd([0.0, 1.0, 2.0]))
++        m.setCoordsAt(1, dd([0.0, 1.0]))
++        m.setCoordsAt(2, dd([0.0, 1.0]))
++        m3d = m.buildUnstructured()
++        m1d = MEDCouplingUMesh("target", 1)
++        m1d.setCoords(dd([1.0,0.5,0.2  ,  1.0,0.5,0.8], 2,3))
++        m1d.setConnectivity(di([NORM_SEG2, 0, 1]), di([0,3]))
++
++        rem = MEDCouplingRemapper()
++        rem.setPrecision(1e-12)
++        rem.setIntersectionType(PointLocator)
++        rem.prepare(m3d, m1d,"P0P1")
++        self.assertEqual(rem.getCrudeMatrix(), [{0: 1.0, 1: 1.0}, {0: 1.0, 1: 1.0}])
++
++        rem = MEDCouplingRemapper()
++        rem.setPrecision(1e-12)
++        rem.setIntersectionType(PointLocator)
++        rem.setBoundingBoxAdjustment(0.0)
++        rem.setBoundingBoxAdjustmentAbs(0.0)
++        rem.prepare(m3d, m1d,"P0P1")
++        self.assertEqual(rem.getCrudeMatrix(), [{}, {}])
++        pass
++
+     def build2DSourceMesh_1(self):
+         sourceCoords=[-0.3,-0.3, 0.7,-0.3, -0.3,0.7, 0.7,0.7]
+         sourceConn=[0,3,1,0,2,3]
+@@ -907,7 +1061,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         myCoords.setValues(sourceCoords,4,2);
+         sourceMesh.setCoords(myCoords);
+         return sourceMesh;
+-    
++
+     def build2DTargetMesh_1(self):
+         targetCoords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7 ]
+         targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
+@@ -940,9 +1094,10 @@ class MEDCouplingBasicsTest(unittest.Tes
+         targetMesh.setCoords(myCoords);
+         return targetMesh;
+         pass
+-    
++
+     def setUp(self):
+         pass
+     pass
+-unittest.main()
++if __name__ == "__main__":
++  unittest.main()
+diff -pruN MEDCOUPLING_orig/src/MEDLoader/MEDFileField.cxx MEDCOUPLING_abn/src/MEDLoader/MEDFileField.cxx
+--- MEDCOUPLING_orig/src/MEDLoader/MEDFileField.cxx    2017-01-24 15:36:33.092651480 +0100
++++ MEDCOUPLING_abn/src/MEDLoader/MEDFileField.cxx     2017-01-24 15:47:10.554687918 +0100
+@@ -7357,9 +7357,8 @@ void MEDFileAnyTypeFieldMultiTSWithoutSD
+     {
+       std::vector< std::pair<int,int> > ts;
+       med_int numdt=0,numo=0;
+-      med_int meshIt=0,meshOrder=0;
+       med_float dt=0.0;
+-      MEDFILESAFECALLERRD0(MEDfieldComputingStepMeshInfo,(fid,_name.c_str(),i+1,&numdt,&numo,&dt,&meshIt,&meshOrder));
++      MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,_name.c_str(),i+1,&numdt,&numo,&dt));
+       switch(fieldTyp)
+       {
+         case MED_FLOAT64:
diff --git a/products/patches/medcoupling_abn780b.patch b/products/patches/medcoupling_abn780b.patch
new file mode 100644 (file)
index 0000000..83a0177
--- /dev/null
@@ -0,0 +1,1454 @@
+diff -rupN -x git MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox
+--- MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox        2017-01-23 09:49:37.458001480 +0100
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/intersectors.dox 2017-01-23 09:50:14.164001480 +0100
+@@ -11,7 +11,8 @@ Before reading on, remember the definiti
+ - \subpage intersec-specifics
+ - \subpage interpkernelGeo2D
+-- \subpage barycoords (used in some P1 intersectors/locators) 
++- \subpage barycoords (used in some P1 intersectors/locators)
++- \subpage mapped_bary (used in some P1P1 intersectors) 
+ Some implementation details of the C++ code can also be found here: \ref interpkernel 
+diff -rupN -x git MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox
+--- MEDCOUPLING_orig/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox 1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox  2017-01-23 09:50:14.164001480 +0100
+@@ -0,0 +1,61 @@
++/*!
++\page mapped_bary Mapped barycentric coordinates algorithm
++
++Mapped barycentric intersection type ('MappedBarycentric') can be selected in space dim 2 (resp. 3) when
++working with quadrangle only (resp. hexaedrons only).
++
++It can only be used for P1P1 projection: for any point P within the quadrangle or the hexaedron, the 
++set of reduced coordinates is computed (x, y, z all comprised between 0 and 1).
++Then the field value at P is computed using the usual form functions of finite element method 
++((1-x)*(1-y), x*(1-y), (1-x)*y and x*y in 2D for example). 
++
++The algorithm used to compute the reduced coordinates differs in dim 2 and dim 3.
++
++\section mapped_bary2d Dimension 2
++
++Let O, A, B, C the four points of the quadrangle, clockwise. Without loss of generality 
++O is assumed to be the origin.
++A point P within the quadrangle is identified with vector OP and simply denoted P.
++
++A suitable mapping is such that, if (x,y) is the couple of reduced coordinates (with x and y both in [0,1])
++ of a point P, then:
++\f[   \mathbf{P} = x\mathbf{C} + y\mathbf{A} + xy(\mathbf{B}- \mathbf{A}-\mathbf{C}) \f]
++
++This forms is the simplest one having a gradient which x component is constant in x, and similarly in y. 
++Furthermore the reduced coordinates 
++(0,0) (resp. (0,1), (1,0), and (1,1)) map to point O (resp. A, B, and C).
++
++Calling \f$\mathbf{N} = \mathbf{B}-\mathbf{A}-\mathbf{C}\f$ and developping for the 2 compos:
++
++\f[   p_x = C_x x + A_x y + N_x xy \f]
++\f[   p_y = C_y x + A_y y + N_y xy \f]
++
++Solving the first eq for x:
++\f[ x = \frac{p_x - y A_x }{C_x+yN_x}  \f]
++
++and injecting in second eq:
++\f[   (A_yN_x -N_yA_x)y^2 + (-p_yN_x -A_xC_y +A_yC_x+N_yp_x)y + (p_x C_y-p_yC_x)=0   \f] 
++solved in:
++\f[  y = \frac{-b \pm \sqrt{b^2 - 4 a c}}{2a} \f]
++where a, b and c are the coeffs of the 2nd order eq.
++
++This gives two possible couples of solution among which only one is in \f$[0,1]^2\f$.
++
++In case where \f$A_yN_x -N_yA_x = 0 \f$ we have a degenerated unique solution for $y$
++\f[ y = \frac{c}{b} \f]
++
++\subsection{Rectangle}
++
++Finally it is worth puting aside the case \f$\mathbf{N} = 0\f$ (rectangle), which boils down to solving an ordinary
++2-unknows system:
++\f[ x = \frac{p_x A_y - p_y A_x}{C_x A_y - C_y A_x}, y = \frac{C_x p_y-C_y p_x}{C_x A_y - C_y A_x} \f]
++
++
++\section mapped_bary3d Dimension 3  
++
++In three dimensions, adopting the same approach as above would lead to a 4th order equation to solve.
++A simpler approach has been chosen: the distance to each pair of parallel faces in the hexaedron is computed.   
++The ratios to the sum of the two distances is computed giving again a number between 0 and 1 for each of 
++the 3 directions.
++
++*/
+diff -rupN -x git MEDCOUPLING_orig/.git/config MEDCOUPLING_new/.git/config
+--- MEDCOUPLING_orig/.git/config       2017-01-23 09:49:36.981001479 +0100
++++ MEDCOUPLING_new/.git/config        2017-01-23 09:50:14.725001479 +0100
+@@ -9,3 +9,6 @@
+ [branch "master"]
+       remote = origin
+       merge = refs/heads/master
++[branch "abn/backport"]
++      remote = origin
++      merge = refs/heads/abn/backport
+diff -rupN -x git MEDCOUPLING_orig/.git/HEAD MEDCOUPLING_new/.git/HEAD
+--- MEDCOUPLING_orig/.git/HEAD 2017-01-23 09:49:37.574001479 +0100
++++ MEDCOUPLING_new/.git/HEAD  2017-01-23 09:50:14.726001479 +0100
+@@ -1 +1 @@
+-f93666474947a2dce6782eddcd24fe1ba624c246
++ref: refs/heads/abn/backport
+Les fichiers binaires MEDCOUPLING_orig/.git/index et MEDCOUPLING_new/.git/index sont différents.
+diff -rupN -x git MEDCOUPLING_orig/.git/logs/HEAD MEDCOUPLING_new/.git/logs/HEAD
+--- MEDCOUPLING_orig/.git/logs/HEAD    2017-01-23 09:49:37.574001479 +0100
++++ MEDCOUPLING_new/.git/logs/HEAD     2017-01-23 09:50:14.726001479 +0100
+@@ -1,2 +1,2 @@
+-0000000000000000000000000000000000000000 6bf54bb729d4c6bcc4b0f635d6b6f9466ef80b21 S. Pomarede <support-salome@cea.fr> 1485161376 +0100        clone: from http://git.salome-platform.org/gitpub/tools/medcoupling.git
+-6bf54bb729d4c6bcc4b0f635d6b6f9466ef80b21 f93666474947a2dce6782eddcd24fe1ba624c246 S. Pomarede <support-salome@cea.fr> 1485161377 +0100        checkout: moving from master to V7_8_0
++0000000000000000000000000000000000000000 6bf54bb729d4c6bcc4b0f635d6b6f9466ef80b21 S. Pomarede <support-salome@cea.fr> 1485161414 +0100        clone: from http://git.salome-platform.org/gitpub/tools/medcoupling.git
++6bf54bb729d4c6bcc4b0f635d6b6f9466ef80b21 9f0e9109c8c30b224e9869e2a52b1f84dd5a73cb S. Pomarede <support-salome@cea.fr> 1485161414 +0100        checkout: moving from master to abn/backport
+diff -rupN -x git MEDCOUPLING_orig/.git/logs/refs/heads/abn/backport MEDCOUPLING_new/.git/logs/refs/heads/abn/backport
+--- MEDCOUPLING_orig/.git/logs/refs/heads/abn/backport 1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/.git/logs/refs/heads/abn/backport  2017-01-23 09:50:14.726001479 +0100
+@@ -0,0 +1 @@
++0000000000000000000000000000000000000000 9f0e9109c8c30b224e9869e2a52b1f84dd5a73cb S. Pomarede <support-salome@cea.fr> 1485161414 +0100        branch: Created from refs/remotes/origin/abn/backport
+diff -rupN -x git MEDCOUPLING_orig/.git/logs/refs/heads/master MEDCOUPLING_new/.git/logs/refs/heads/master
+--- MEDCOUPLING_orig/.git/logs/refs/heads/master       2017-01-23 09:49:36.981001479 +0100
++++ MEDCOUPLING_new/.git/logs/refs/heads/master        2017-01-23 09:50:14.087001491 +0100
+@@ -1 +1 @@
+-0000000000000000000000000000000000000000 6bf54bb729d4c6bcc4b0f635d6b6f9466ef80b21 S. Pomarede <support-salome@cea.fr> 1485161376 +0100        clone: from http://git.salome-platform.org/gitpub/tools/medcoupling.git
++0000000000000000000000000000000000000000 6bf54bb729d4c6bcc4b0f635d6b6f9466ef80b21 S. Pomarede <support-salome@cea.fr> 1485161414 +0100        clone: from http://git.salome-platform.org/gitpub/tools/medcoupling.git
+diff -rupN -x git MEDCOUPLING_orig/.git/refs/heads/abn/backport MEDCOUPLING_new/.git/refs/heads/abn/backport
+--- MEDCOUPLING_orig/.git/refs/heads/abn/backport      1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/.git/refs/heads/abn/backport       2017-01-23 09:50:14.726001479 +0100
+@@ -0,0 +1 @@
++9f0e9109c8c30b224e9869e2a52b1f84dd5a73cb
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/CMakeLists.txt MEDCOUPLING_new/src/INTERP_KERNEL/CMakeLists.txt
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/CMakeLists.txt  2017-01-23 09:49:37.463001480 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/CMakeLists.txt   2017-01-23 09:50:14.259001480 +0100
+@@ -35,6 +35,7 @@ SET(interpkernel_SOURCES
+   Interpolation3DSurf.cxx
+   Interpolation3D.cxx
+   Interpolation2D3D.cxx
++  Interpolation3D1D.cxx
+   MeshElement.cxx
+   InterpKernelMeshQuality.cxx
+   InterpKernelCellSimplify.cxx
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.cxx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.cxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.cxx   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.cxx    2017-01-23 09:50:14.278001479 +0100
+@@ -0,0 +1,64 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#include "Interpolation3D1D.hxx"
++#include "Interpolation3D1D.txx"
++
++namespace INTERP_KERNEL
++{
++  /**
++   * \class Interpolation3D1D
++   * \brief Class used to calculate the interpolation between a 3D mesh and 1D mesh (in 3D space)
++   * Can be seen as a specialization of Interpolation3D, and allows notably the adjustment of bounind boxes.
++   * 
++   */
++
++  Interpolation3D1D::Interpolation3D1D()
++  {}
++
++  Interpolation3D1D::Interpolation3D1D(const InterpolationOptions& io):Interpolation<Interpolation3D1D>(io)
++  {}
++
++  /**
++   * Inspired from PlanarIntersector<MyMeshType,MyMatrix>::adjustBoundingBoxes
++   */
++  void Interpolation3D1D::adjustBoundingBoxes(std::vector<double>& bbox)
++  {
++    const int SPACE_DIM = 3;
++    const double adj = getBoundingBoxAdjustmentAbs();
++    const double adjRel = getBoundingBoxAdjustment();
++
++    long size = bbox.size()/(2*SPACE_DIM);
++    for (int i=0; i<size; i++)
++      {
++        double max=- std::numeric_limits<double>::max();
++        for(int idim=0; idim<SPACE_DIM; idim++)
++          {
++            double Dx=bbox[i*2*SPACE_DIM+1+2*idim]-bbox[i*2*SPACE_DIM+2*idim];
++            max=(max<Dx)?Dx:max;
++          }
++        for(int idim=0; idim<SPACE_DIM; idim++)
++          {
++            bbox[i*2*SPACE_DIM+2*idim  ] -= adjRel*max+adj;
++            bbox[i*2*SPACE_DIM+2*idim+1] += adjRel*max+adj;
++          }
++      }
++  }
++}
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.hxx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.hxx   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.hxx    2017-01-23 09:50:14.278001479 +0100
+@@ -0,0 +1,45 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : A Bruneton (CEA/DEN)
++
++#ifndef __INTERPOLATION3D1D_HXX__
++#define __INTERPOLATION3D1D_HXX__
++
++#include "INTERPKERNELDefines.hxx"
++#include "Interpolation.hxx"
++#include "NormalizedUnstructuredMesh.hxx"
++#include "InterpolationOptions.hxx"
++
++#include <vector>
++
++namespace INTERP_KERNEL
++{
++  class INTERPKERNEL_EXPORT Interpolation3D1D : public Interpolation<Interpolation3D1D>
++  {
++  public:
++    Interpolation3D1D();
++    Interpolation3D1D(const InterpolationOptions& io);
++    template<class MyMeshType, class MatrixType>
++    int interpolateMeshes(const MyMeshType& srcMesh, const MyMeshType& targetMesh, MatrixType& result, const std::string& method);
++  private:
++    void adjustBoundingBoxes(std::vector<double>& bbox);
++  };
++}
++
++#endif
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.txx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D1D.txx   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D1D.txx    2017-01-23 09:50:14.595001480 +0100
+@@ -0,0 +1,152 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (CEA/DEN)
++
++#ifndef __INTERPOLATION3D1D_TXX__
++#define __INTERPOLATION3D1D_TXX__
++
++#include "Interpolation3D1D.hxx"
++#include "Interpolation.txx"
++#include "MeshElement.txx"
++#include "PointLocator3DIntersectorP0P0.txx"
++#include "PointLocator3DIntersectorP0P1.txx"
++#include "PointLocator3DIntersectorP1P0.txx"
++#include "PointLocator3DIntersectorP1P1.txx"
++#include "Log.hxx"
++
++#include "BBTree.txx"
++
++namespace INTERP_KERNEL
++{
++  /**
++   *  Very similar to Interpolation3D::interpolateMeshes, except for the bounding boxes that can be
++   *  adjusted in a similar fashion as in InterpolationPlanar::performAdjustmentOfBB()
++   **/
++  template<class MyMeshType, class MatrixType>
++  int Interpolation3D1D::interpolateMeshes(const MyMeshType& srcMesh, const MyMeshType& targetMesh, MatrixType& result, const std::string& method)
++  {
++    if(InterpolationOptions::getIntersectionType() != PointLocator)
++      INTERP_KERNEL::Exception("Invalid 3D/1D intersection type specified : must be PointLocator.");
++
++    typedef typename MyMeshType::MyConnType ConnType;
++    // create MeshElement objects corresponding to each element of the two meshes
++    const unsigned long numSrcElems = srcMesh.getNumberOfElements();
++    const unsigned long numTargetElems = targetMesh.getNumberOfElements();
++
++    LOG(2, "Source mesh has " << numSrcElems << " elements and target mesh has " << numTargetElems << " elements ");
++
++    std::vector<MeshElement<ConnType>*> srcElems(numSrcElems);
++    std::vector<MeshElement<ConnType>*> targetElems(numTargetElems);
++
++    std::map<MeshElement<ConnType>*, int> indices;
++
++    for(unsigned long i = 0 ; i < numSrcElems ; ++i)
++      srcElems[i] = new MeshElement<ConnType>(i, srcMesh);       
++
++    for(unsigned long i = 0 ; i < numTargetElems ; ++i)
++      targetElems[i] = new MeshElement<ConnType>(i, targetMesh);
++
++    Intersector3D<MyMeshType,MatrixType>* intersector=0;
++    std::string methC = InterpolationOptions::filterInterpolationMethod(method);
++    if(methC=="P0P0")
++      { intersector=new PointLocator3DIntersectorP0P0<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else if(methC=="P0P1")
++      {  intersector=new PointLocator3DIntersectorP0P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else if(methC=="P1P0")
++      {  intersector=new PointLocator3DIntersectorP1P0<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else if(methC=="P1P1")
++      {  intersector=new PointLocator3DIntersectorP1P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++      }
++    else
++      throw Exception("Invalid method choosed must be in \"P0P0\", \"P0P1\", \"P1P0\" or \"P1P1\".");
++    // create empty maps for all source elements
++    result.resize(intersector->getNumberOfRowsOfResMatrix());
++
++    // create BBTree structure
++    // - get bounding boxes
++    std::vector<double> bboxes(6*numSrcElems);
++    int* srcElemIdx = new int[numSrcElems];
++    for(unsigned long i = 0; i < numSrcElems ; ++i)
++      {
++        // get source bboxes in right order
++        const BoundingBox* box = srcElems[i]->getBoundingBox();
++        bboxes[6*i+0] = box->getCoordinate(BoundingBox::XMIN);
++        bboxes[6*i+1] = box->getCoordinate(BoundingBox::XMAX);
++        bboxes[6*i+2] = box->getCoordinate(BoundingBox::YMIN);
++        bboxes[6*i+3] = box->getCoordinate(BoundingBox::YMAX);
++        bboxes[6*i+4] = box->getCoordinate(BoundingBox::ZMIN);
++        bboxes[6*i+5] = box->getCoordinate(BoundingBox::ZMAX);
++
++        srcElemIdx[i] = srcElems[i]->getIndex();
++      }
++
++    adjustBoundingBoxes(bboxes);
++    const double *bboxPtr=0;
++    if(numSrcElems>0)
++      bboxPtr=&bboxes[0];
++    BBTree<3,ConnType> tree(bboxPtr, srcElemIdx, 0, numSrcElems);
++
++    // for each target element, get source elements with which to calculate intersection
++    // - calculate intersection by calling intersectCells
++    for(unsigned long i = 0; i < numTargetElems; ++i)
++      {
++        const BoundingBox* box = targetElems[i]->getBoundingBox();
++        const int targetIdx = targetElems[i]->getIndex();
++
++        // get target bbox in right order
++        double targetBox[6];
++        targetBox[0] = box->getCoordinate(BoundingBox::XMIN);
++        targetBox[1] = box->getCoordinate(BoundingBox::XMAX);
++        targetBox[2] = box->getCoordinate(BoundingBox::YMIN);
++        targetBox[3] = box->getCoordinate(BoundingBox::YMAX);
++        targetBox[4] = box->getCoordinate(BoundingBox::ZMIN);
++        targetBox[5] = box->getCoordinate(BoundingBox::ZMAX);
++
++        std::vector<ConnType> intersectElems;
++
++        tree.getIntersectingElems(targetBox, intersectElems);
++
++        if ( !intersectElems.empty() )
++          intersector->intersectCells(targetIdx,intersectElems,result);
++      }
++
++    // free allocated memory
++    delete [] srcElemIdx;
++
++    int ret=intersector->getNumberOfColsOfResMatrix();
++
++    delete intersector;
++
++    for(unsigned long i = 0 ; i < numSrcElems ; ++i)
++      {
++        delete srcElems[i];
++      }
++    for(unsigned long i = 0 ; i < numTargetElems ; ++i)
++      {
++        delete targetElems[i];
++      }
++    return ret;
++
++  }
++}
++
++#endif
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D.txx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/Interpolation3D.txx     2017-01-23 09:49:37.465001480 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3D.txx      2017-01-23 09:50:14.595001480 +0100
+@@ -35,6 +35,7 @@
+ #include "PolyhedronIntersectorP1P1.txx"
+ #include "PointLocator3DIntersectorP1P1.txx"
+ #include "Barycentric3DIntersectorP1P1.txx"
++#include "MappedBarycentric3DIntersectorP1P1.txx"
+ #include "Log.hxx"
+ // If defined, use recursion to traverse the binary search tree, else use the BBTree class
+ //#define USE_RECURSIVE_BBOX_FILTER
+@@ -154,8 +155,11 @@ namespace INTERP_KERNEL
+           case Barycentric:
+             intersector=new Barycentric3DIntersectorP1P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
+             break;
++          case MappedBarycentric:
++            intersector=new MappedBarycentric3DIntersectorP1P1<MyMeshType,MatrixType>(targetMesh, srcMesh, getPrecision());
++            break;
+           default:
+-            throw INTERP_KERNEL::Exception("Invalid 3D intersection type for P1P1 interp specified : must be Triangle or PointLocator.");
++            throw INTERP_KERNEL::Exception("Invalid 3D intersection type for P1P1 interp specified : must be Triangle, PointLocator, Barycentric or MappedBarycentric.");
+           }
+       }
+     else
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationOptions.hxx MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationOptions.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationOptions.hxx        2017-01-23 09:49:37.465001480 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationOptions.hxx 2017-01-23 09:50:14.280001479 +0100
+@@ -28,7 +28,7 @@
+ namespace INTERP_KERNEL
+ {
+-  typedef enum { Triangulation, Convex, Geometric2D, PointLocator, Barycentric, BarycentricGeo2D } IntersectionType;
++  typedef enum { Triangulation, Convex, Geometric2D, PointLocator, Barycentric, BarycentricGeo2D, MappedBarycentric } IntersectionType;
+   
+   /*!
+    * Class defining the options for all interpolation algorithms used in the \ref remapper "remapper" and
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationPlanar.txx MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationPlanar.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationPlanar.txx 2017-01-23 09:49:37.466001480 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationPlanar.txx  2017-01-23 09:50:14.280001479 +0100
+@@ -40,6 +40,8 @@
+ #include "PlanarIntersectorP1P0PL.txx"
+ #include "PlanarIntersectorP1P1PL.hxx"
+ #include "PlanarIntersectorP1P1PL.txx"
++#include "MappedBarycentric2DIntersectorP1P1.hxx"
++#include "MappedBarycentric2DIntersectorP1P1.txx"
+ #include "VectorUtils.hxx"
+ #include "BBTree.txx"
+@@ -358,8 +360,16 @@ namespace INTERP_KERNEL
+                                                                            InterpolationOptions::getPrecision(),
+                                                                            InterpolationOptions::getOrientation());
+             break;
++          case MappedBarycentric:
++            intersector=new MappedBarycentric2DIntersectorP1P1<MyMeshType,MatrixType>(myMeshT, myMeshS, _dim_caracteristic,
++                                                                                     InterpolationOptions::getMaxDistance3DSurfIntersect(),
++                                                                                     InterpolationOptions::getMinDotBtwPlane3DSurfIntersect(),
++                                                                                     InterpolationOptions::getMedianPlane(),
++                                                                                     InterpolationOptions::getPrecision(),
++                                                                                     InterpolationOptions::getOrientation());
++            break;
+           default:
+-            throw INTERP_KERNEL::Exception("For P1P1 planar interpolation possibities are : Triangulation, Convex, Geometric2D, PointLocator !");
++            throw INTERP_KERNEL::Exception("For P1P1 planar interpolation possibities are : Triangulation, Convex, Geometric2D, PointLocator, MappedBarycentric !");
+           }
+       }
+     else
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationUtils.hxx MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationUtils.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/InterpolationUtils.hxx  2017-01-23 09:49:37.466001480 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationUtils.hxx   2017-01-23 09:50:14.596001480 +0100
+@@ -23,6 +23,7 @@
+ #include "INTERPKERNELDefines.hxx"
+ #include "InterpKernelException.hxx"
++#include "VolSurfUser.hxx"
+ #include "NormalizedUnstructuredMesh.hxx"
+@@ -413,7 +414,7 @@ namespace INTERP_KERNEL
+   }
+   /*!
+-   * Calculate barycentric coordinates of a point p with respect to triangle or tetra verices.
++   * Calculate barycentric coordinates of a point p with respect to triangle or tetra vertices.
+    * This method makes 2 assumptions :
+    *    - this is a simplex
+    *    - spacedim == meshdim. For TRI3 and TRI6 spaceDim is expected to be equal to 2 and for TETRA4 spaceDim is expected to be equal to 3.
+@@ -535,6 +536,136 @@ namespace INTERP_KERNEL
+       }
+   }
++  /*!
++   * Calculate pseudo barycentric coordinates of a point p with respect to the quadrangle vertices.
++   * This method makes the assumption that:
++   *  - spacedim == meshdim (2 here).
++   *  - the point is within the quad
++   *  Quadratic elements are not supported yet.
++   *
++   *  A quadrangle can be described as 3 vectors, one point being taken as the origin.
++   *  Denoting A, B, C the three other points, any point P within the quad is written as
++   *    P = xA+ yC + xy(B-A-C)
++   *  This method solve those 2 equations (one per component) for x and y.
++   *
++
++          A------B
++          |      |
++          |      |
++          0------C
++   */
++  inline void quad_mapped_coords(const std::vector<const double*>& n, const double *p, double *bc)
++  {
++    double prec = 1.0e-14;
++    enum { _XX=0, _YY, _ZZ };
++
++    if(n.size() != 4)
++      throw INTERP_KERNEL::Exception("INTERP_KERNEL::quad_mapped_coords : unrecognized geometric type! Only QUAD4 supported.");
++
++    double A[2] = {n[1][_XX] - n[0][_XX],  n[1][_YY] - n[0][_YY]};
++    double B[2] = {n[2][_XX] - n[0][_XX],  n[2][_YY] - n[0][_YY]};
++    double C[2] = {n[3][_XX] - n[0][_XX],  n[3][_YY] - n[0][_YY]};
++    double N[2] = {B[_XX] - A[_XX] - C[_XX], B[_YY] - A[_YY] - C[_YY]};
++    double P[2] = {p[_XX] - n[0][_XX], p[_YY] - n[0][_YY]};
++
++    // degenerated case: a rectangle:
++    if (fabs(N[0]) < prec && fabs(N[1]) < prec)
++      {
++        double det = C[0]*A[1] -C[1]*A[0];
++        if (fabs(det) < prec)
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords() has a degenerated 2x2 system!");
++        bc[0] = (P[0]*A[1]-P[1]*A[0])/det;
++        bc[1] = (P[1]*C[0]-P[0]*C[1])/det;
++        return;
++      }
++    double b,c ,a = A[1]*N[0]-A[0]*N[1];
++    bool cas1;
++    if (fabs(a) > 1.0e-14)
++      {
++        b = A[1]*C[0]+N[1]*P[0]-N[0]*P[1]-A[0]*C[1];
++        c = P[0]*C[1] - P[1]*C[0];
++        cas1 = true;
++      }
++    else
++      {
++        a = -C[1]*N[0]+C[0]*N[1];
++        b = A[1]*C[0]-N[1]*P[0]+N[0]*P[1]-A[0]*C[1];
++        c = -P[0]*A[1] + P[1]*A[0];
++        cas1 = false;
++      }
++    double delta = b*b - 4.0*a*c;
++    if (delta < 0.0)
++      throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): imaginary solutions!");
++    bc[1] = 0.5*(-b+sqrt(delta))/a;
++    if (bc[1] < -prec || bc[1] > (1.0+prec))
++      bc[1] = 0.5*(-b-sqrt(delta))/a;
++    if (bc[1] < -prec || bc[1] > (1.0+prec))
++      throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): point doesn't seem to be in quad4!");
++    if (cas1)
++      {
++        double denom = C[0]+bc[1]*N[0];
++        if (fabs(denom) < prec)
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): point doesn't seem to be in quad4!");
++        bc[0] = (P[0]-bc[1]*A[0])/denom;
++        if (bc[0] < -prec || bc[0] > (1.0+prec))
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: quad_mapped_coords(): point doesn't seem to be in quad4!");
++      }
++    else
++      {
++        bc[0] = bc[1];
++        double denom = A[1]+bc[0]*N[1];
++        if (fabs(denom) < prec)
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: cuboid_mapped_coord(): point doesn't seem to be in quad4!");
++        bc[1] = (P[1]-bc[0]*C[1])/denom;
++        if (bc[1] < -prec || bc[1] > (1.0+prec))
++          throw INTERP_KERNEL::Exception("MappedBarycentric intersection type: cuboid_mapped_coord(): point doesn't seem to be in quad4!");
++      }
++  }
++
++  /*!
++   * Doing as in quad_mapped_coords() would lead to a 4th order equation ... So go simpler here:
++   * orthogonal distance to each pair of parallel faces is computed. The ratio gives a number in [0,1]
++   *
++   * Conventions:
++   *   - for HEXA8, point F (5) is taken to be the origin (see med file ref connec):
++   *          0 ------ 3
++             /|       /|
++            / |      / |
++           1 ------ 2  |
++           |  |     |  |
++           |  |     |  |
++           |  4-----|- 7
++           | /      | /
++           5 ------ 6
++
++   *
++   */
++
++  inline void cuboid_mapped_coords(const std::vector<const double*>& n, const double *p, double *bc)
++  {
++    double prec = 1.0e-14;
++    enum { _XX=0, _YY };
++    if (n.size() != 8)
++      throw INTERP_KERNEL::Exception("INTERP_KERNEL::cuboid_mapped_coords: unrecognized geometric type! Only HEXA8 supported.");
++
++    double dx1, dx2, dy1, dy2, dz1, dz2;
++    dx1 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[4],n[5],n[1]);
++    dx2 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[7],n[3],n[2]);
++
++    dy1 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[5],n[6],n[2]);
++    dy2 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[4],n[0],n[3]);
++
++    dz1 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[5],n[4],n[7]);
++    dz2 = OrthoDistanceFromPtToPlaneInSpaceDim3(p, n[1],n[2],n[3]);
++
++    if (dx1 < -prec || dx2 < -prec || dy1 < -prec || dy2 < -prec || dz1 < -prec || dz2 < -prec)
++      throw INTERP_KERNEL::Exception("INTERP_KERNEL::cuboid_mapped_coords: point outside HEXA8");
++
++    bc[0] = dx1+dx2 < prec ? 0.5 : dx1/(dx1+dx2);
++    bc[1] = dy1+dy2 < prec ? 0.5 : dy1/(dy1+dy2);
++    bc[2] = dz1+dz2 < prec ? 0.5 : dz1/(dz1+dz2);
++  }
++
+   /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
+   /*         calcul la surface d'un polygone.                 */
+   /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.hxx   2017-01-23 09:50:14.283001479 +0100
+@@ -0,0 +1,44 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MappedBarycenter2DIntersectorP1P1_HXX__
++#define __MappedBarycenter2DIntersectorP1P1_HXX__
++
++#include "PlanarIntersector.hxx"
++
++namespace INTERP_KERNEL
++{
++  template<class MyMeshType, class MyMatrix>
++  class MappedBarycentric2DIntersectorP1P1 : public PlanarIntersector<MyMeshType,MyMatrix>
++  {
++   public:
++    static const int SPACEDIM=MyMeshType::MY_SPACEDIM;
++    static const int MESHDIM=MyMeshType::MY_MESHDIM;
++    typedef typename MyMeshType::MyConnType ConnType;
++    static const NumberingPolicy numPol=MyMeshType::My_numPol;
++  public:
++    MappedBarycentric2DIntersectorP1P1(const MyMeshType& meshT, const MyMeshType& meshS, double dimCaracteristic, double md3DSurf, double minDot3DSurf, double medianPlane, double precision, int orientation);
++    void intersectCells(ConnType icellT, const std::vector<ConnType>& icellsS, MyMatrix& res);
++    int getNumberOfRowsOfResMatrix() const;
++    int getNumberOfColsOfResMatrix() const;
++  };
++}
++
++#endif
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric2DIntersectorP1P1.txx   2017-01-23 09:50:14.283001479 +0100
+@@ -0,0 +1,111 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MappedBarycentric2DIntersectorP1P1_TXX__
++#define __MappedBarycentric2DIntersectorP1P1_TXX__
++
++#include "MappedBarycentric2DIntersectorP1P1.hxx"
++#include "PlanarIntersector.txx"
++#include "CellModel.hxx"
++
++#include "PointLocatorAlgos.txx"
++#include "MeshUtils.hxx"
++
++namespace INTERP_KERNEL
++{
++  template<class MyMeshType, class MyMatrix>
++  MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::MappedBarycentric2DIntersectorP1P1(const MyMeshType& meshT, const MyMeshType& meshS,
++                                                                        double dimCaracteristic, double md3DSurf, double minDot3DSurf,
++                                                                        double medianPlane, double precision, int orientation):
++    PlanarIntersector<MyMeshType,MyMatrix>(meshT,meshS,dimCaracteristic,precision,md3DSurf,minDot3DSurf,medianPlane,true,orientation,0)
++  {
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  void MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::intersectCells(ConnType icellT, const std::vector<ConnType>& icellsS, MyMatrix& res)
++  {
++    std::vector<double> CoordsT;
++    PlanarIntersector<MyMeshType,MyMatrix>::getRealTargetCoordinates(OTT<ConnType,numPol>::indFC(icellT),CoordsT);
++    int nbOfNodesT=CoordsT.size()/SPACEDIM;
++    for(typename std::vector<ConnType>::const_iterator iter=icellsS.begin();iter!=icellsS.end();iter++)
++      {
++        NormalizedCellType tS=PlanarIntersector<MyMeshType,MyMatrix>::_meshS.getTypeOfElement(OTT<ConnType,numPol>::indFC(*iter));
++        if(tS!=NORM_QUAD4)
++          throw INTERP_KERNEL::Exception("Invalid source cell detected for meshdim==2. Only QUAD4 supported !");
++        std::vector<double> CoordsS;
++        PlanarIntersector<MyMeshType,MyMatrix>::getRealSourceCoordinates(OTT<ConnType,numPol>::indFC(*iter),CoordsS);
++        std::vector<double> CoordsTTmp(CoordsT);
++        if(SPACEDIM==3)
++          PlanarIntersector<MyMeshType,MyMatrix>::projectionThis(&CoordsS[0],&CoordsTTmp[0],CoordsS.size()/SPACEDIM,nbOfNodesT);
++        const ConnType *startOfCellNodeConnT=PlanarIntersector<MyMeshType,MyMatrix>::_connectT+OTT<ConnType,numPol>::conn2C(PlanarIntersector<MyMeshType,MyMatrix>::_connIndexT[icellT]);
++        for(int nodeIdT=0;nodeIdT<nbOfNodesT;nodeIdT++)
++          {
++            typename MyMatrix::value_type& resRow=res[OTT<ConnType,numPol>::ind2C(startOfCellNodeConnT[nodeIdT])];
++            if( PointLocatorAlgos<MyMeshType>::isElementContainsPointAlg2D(&CoordsTTmp[nodeIdT*SPACEDIM],&CoordsS[0],4,PlanarIntersector<MyMeshType,MyMatrix>::_precision) )
++              {
++                double mco[2];  // mapped coordinates in the quad4
++                std::vector<const double*> coo(4);
++                coo[0]=&CoordsS[0]; coo[1]=&CoordsS[SPACEDIM]; coo[2]=&CoordsS[2*SPACEDIM]; coo[3]=&CoordsS[3*SPACEDIM];
++                quad_mapped_coords(coo,&CoordsTTmp[nodeIdT*SPACEDIM],mco);
++
++                // Now use the form function of the QUAD4 to map the field values
++                double resLoc[4];
++                // See QUAD4 standard connectivity and cuboid_mapped_coords() convention:
++                resLoc[0] = (1.-mco[0]) * (1.-mco[1]);
++                resLoc[1] = (1.-mco[0]) *   mco[1]   ;
++                resLoc[2] =  mco[0]     *   mco[1]   ;
++                resLoc[3] =  mco[0]     * (1.-mco[1]);
++
++                const ConnType *startOfCellNodeConnS=PlanarIntersector<MyMeshType,MyMatrix>::_connectS+OTT<ConnType,numPol>::conn2C(PlanarIntersector<MyMeshType,MyMatrix>::_connIndexS[*iter]);
++                for(int nodeIdS=0;nodeIdS<4;nodeIdS++)
++                  {
++                    if(fabs(resLoc[nodeIdS])>PlanarIntersector<MyMeshType,MyMatrix>::_precision)
++                      {
++                        ConnType curNodeSInCmode=OTT<ConnType,numPol>::coo2C(startOfCellNodeConnS[nodeIdS]);
++                        typename MyMatrix::value_type::const_iterator iterRes=resRow.find(OTT<ConnType,numPol>::indFC(curNodeSInCmode));
++                        if(iterRes==resRow.end())
++                          resRow.insert(std::make_pair(OTT<ConnType,numPol>::indFC(curNodeSInCmode),resLoc[nodeIdS]));
++                        else
++                          {
++                            double val=(*iterRes).second+resLoc[nodeIdS];
++                            resRow.erase(OTT<ConnType,numPol>::indFC(curNodeSInCmode));
++                            resRow.insert(std::make_pair(OTT<ConnType,numPol>::indFC(curNodeSInCmode),val));
++                          }
++                      }
++                  }
++              }
++          }
++      }
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  int MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::getNumberOfRowsOfResMatrix() const
++  {
++    return PlanarIntersector<MyMeshType,MyMatrix>::_meshT.getNumberOfNodes();
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  int MappedBarycentric2DIntersectorP1P1<MyMeshType,MyMatrix>::getNumberOfColsOfResMatrix() const
++  {
++    return PlanarIntersector<MyMeshType,MyMatrix>::_meshS.getNumberOfNodes();
++  }
++}
++
++#endif
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.hxx   2017-01-23 09:50:14.283001479 +0100
+@@ -0,0 +1,46 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MappedBarycentric3DIntersectorP1P1_HXX__
++#define __MappedBarycentric3DIntersectorP1P1_HXX__
++
++#include "Intersector3DP1P1.hxx"
++#include "NormalizedUnstructuredMesh.hxx"
++
++namespace INTERP_KERNEL
++{
++  template<class MyMeshType, class MyMatrix>
++  class MappedBarycentric3DIntersectorP1P1 : public Intersector3DP1P1<MyMeshType,MyMatrix>
++  { 
++  public:
++    static const int SPACEDIM=MyMeshType::MY_SPACEDIM;
++    static const int MESHDIM=MyMeshType::MY_MESHDIM;
++    typedef typename MyMeshType::MyConnType ConnType;
++    static const NumberingPolicy numPol=MyMeshType::My_numPol;
++  public:
++    MappedBarycentric3DIntersectorP1P1(const MyMeshType& targetMesh, const MyMeshType& srcMesh, double precision);
++    ~MappedBarycentric3DIntersectorP1P1();
++    void intersectCells(ConnType targetCell, const std::vector<ConnType>& srcCells, MyMatrix& res);
++  protected:
++    double _precision;
++  };
++}
++
++#endif
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/MappedBarycentric3DIntersectorP1P1.txx   2017-01-23 09:50:14.283001479 +0100
+@@ -0,0 +1,113 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Adrien Bruneton (CEA/DEN)
++
++#ifndef __MAPPEDBARYCENTRIC3DINTERSECTORP1P1_TXX__
++#define __MAPPEDBARYCENTRIC3DINTERSECTORP1P1_TXX__
++
++#include "MappedBarycentric3DIntersectorP1P1.hxx"
++#include "Intersector3DP1P1.txx"
++#include "MeshUtils.hxx"
++
++namespace INTERP_KERNEL
++{
++
++  /**
++   * Constructor creating object from target cell global number 
++   * 
++   * @param targetMesh  mesh containing the target elements
++   * @param srcMesh     mesh containing the source elements
++   * @param policy      splitting policy to be used
++   */
++  template<class MyMeshType, class MyMatrix>
++  MappedBarycentric3DIntersectorP1P1<MyMeshType,MyMatrix>::MappedBarycentric3DIntersectorP1P1(const MyMeshType& targetMesh, const MyMeshType& srcMesh, double precision):
++    Intersector3DP1P1<MyMeshType,MyMatrix>(targetMesh,srcMesh),_precision(precision)
++  {
++  }
++
++  template<class MyMeshType, class MyMatrix>
++  MappedBarycentric3DIntersectorP1P1<MyMeshType,MyMatrix>::~MappedBarycentric3DIntersectorP1P1()
++  {
++  }
++
++  /**
++   * @param targetCell in C mode.
++   * @param srcCells in C mode.
++   */
++  template<class MyMeshType, class MyMatrix>
++  void MappedBarycentric3DIntersectorP1P1<MyMeshType,MyMatrix>::intersectCells(ConnType targetCell, const std::vector<ConnType>& srcCells, MyMatrix& res)
++  {
++    std::vector<double> CoordsT;
++    const ConnType *startOfCellNodeConnT=Intersector3DP1P1<MyMeshType,MyMatrix>::getStartConnOfTargetCell(targetCell);
++    Intersector3DP1P1<MyMeshType,MyMatrix>::getRealTargetCoordinates(OTT<ConnType,numPol>::indFC(targetCell),CoordsT);
++    int nbOfNodesT=CoordsT.size()/SPACEDIM;
++    const double *coordsS=Intersector3DP1P1<MyMeshType,MyMatrix>::_src_mesh.getCoordinatesPtr();
++    for(int nodeIdT=0;nodeIdT<nbOfNodesT;nodeIdT++)
++      {
++        typename MyMatrix::value_type& resRow=res[OTT<ConnType,numPol>::ind2C(startOfCellNodeConnT[nodeIdT])];
++        if(!resRow.empty())
++          continue;
++        for(typename std::vector<ConnType>::const_iterator iterCellS=srcCells.begin();iterCellS!=srcCells.end();iterCellS++)
++          {
++            NormalizedCellType tS=Intersector3DP1P1<MyMeshType,MyMatrix>::_src_mesh.getTypeOfElement(OTT<ConnType,numPol>::indFC(*iterCellS));
++            if(tS!=NORM_HEXA8)
++              throw INTERP_KERNEL::Exception("Invalid source cell detected for meshdim==3. Only HEXA8 supported !");
++            const CellModel& cmTypeS=CellModel::GetCellModel(tS);
++            //
++            std::vector<ConnType> connOfCurCellS;
++            Intersector3DP1P1<MyMeshType,MyMatrix>::getConnOfSourceCell(OTT<ConnType,numPol>::indFC(*iterCellS),connOfCurCellS);
++            if( PointLocatorAlgos<MyMeshType>::isElementContainsPointAlg3D(&CoordsT[nodeIdT*SPACEDIM],&connOfCurCellS[0],connOfCurCellS.size(),coordsS,cmTypeS,_precision) )
++              {
++                double mco[3];  // mapped coordinates in the hexa8
++                std::vector<double> localCoordsS;
++                Intersector3DP1P1<MyMeshType,MyMatrix>::getRealSourceCoordinates(OTT<ConnType,numPol>::indFC(*iterCellS),localCoordsS);
++                std::vector<const double*> coo(8);
++                coo[0]=&localCoordsS[0]; coo[1]=&localCoordsS[3]; coo[2]=&localCoordsS[6]; coo[3]=&localCoordsS[9];
++                coo[4]=&localCoordsS[12]; coo[5]=&localCoordsS[15]; coo[6]=&localCoordsS[18]; coo[7]=&localCoordsS[21];
++                cuboid_mapped_coords(coo,&CoordsT[nodeIdT*SPACEDIM],mco);
++
++                // Now use the form function of the HEXA8 to map the field values
++                double resLoc[8];
++                // See HEXA8 standard connectivity and cuboid_mapped_coords() convention:
++                resLoc[5] = (1.-mco[0]) * (1.-mco[1]) * (1.-mco[2]);
++                resLoc[6] =  mco[0]     * (1.-mco[1]) * (1.-mco[2]);
++                resLoc[7] =  mco[0]     *   mco[1]    * (1.-mco[2]);
++                resLoc[4] = (1.-mco[0]) *   mco[1]    * (1.-mco[2]);
++
++                resLoc[1] = (1.-mco[0]) * (1.-mco[1]) * mco[2];
++                resLoc[2] =  mco[0]     * (1.-mco[1]) * mco[2];
++                resLoc[3] =  mco[0]     *   mco[1]    * mco[2];
++                resLoc[0] = (1.-mco[0]) *   mco[1]    * mco[2];
++
++                const ConnType *startOfCellNodeConnS=Intersector3DP1P1<MyMeshType,MyMatrix>::getStartConnOfSourceCell(*iterCellS);
++                for(int nodeIdS=0;nodeIdS<8;nodeIdS++)
++                  {
++                    if(fabs(resLoc[nodeIdS])>_precision)
++                      {
++                        ConnType curNodeSInCmode=OTT<ConnType,numPol>::coo2C(startOfCellNodeConnS[nodeIdS]);
++                        resRow.insert(std::make_pair(OTT<ConnType,numPol>::indFC(curNodeSInCmode),resLoc[nodeIdS]));
++                      }
++                  }
++              }
++          }
++      }
++  }
++}
++
++#endif
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.cxx MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.cxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.cxx 2017-01-23 09:49:37.466001480 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.cxx  2017-01-23 09:50:14.296001479 +0100
+@@ -28,6 +28,25 @@
+ namespace INTERP_KERNEL
+ {
++  /* Orthogonal distance from a point to a plane defined by three points p1, p2, p3.
++   * Returns a signed distance, the normal of the plane being defined by (p1-p2)x(p3-p2)
++   */
++  double OrthoDistanceFromPtToPlaneInSpaceDim3(const double *p, const double *p1, const double *p2, const double *p3)
++  {
++    double prec = 1.0e-14;
++    double T[2][3] = {{p1[0] - p2[0], p1[1] - p2[1], p1[2] - p2[2]},
++                      {p3[0] - p2[0], p3[1] - p2[1], p3[2] - p2[2]}};
++    double N[3] = {T[0][1]*T[1][2]-T[0][2]*T[1][1],
++                   T[0][2]*T[1][0]-T[0][0]*T[1][2],
++                   T[0][0]*T[1][1]-T[0][1]*T[1][0]};
++
++    double norm2 = N[0]*N[0] + N[1]*N[1] + N[2]*N[2];
++    if (norm2 < prec)
++      throw INTERP_KERNEL::Exception("OrthoDistanceFromPtToPlaneInSpaceDim3: degenerated normal vector!");
++    double num = N[0]*(p[0]-p1[0]) + N[1]*(p[1]-p1[1]) + N[2]*(p[2]-p1[2]);
++    return num/sqrt(norm2);
++  }
++
+   double SquareDistanceFromPtToSegInSpaceDim2(const double *pt, const double *pt0Seg2, const double *pt1Seg2, std::size_t &nbOfHint)
+   {
+     double dx=pt1Seg2[0]-pt0Seg2[0],dy=pt1Seg2[1]-pt0Seg2[1];
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.hxx MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNEL/VolSurfUser.hxx 2017-01-23 09:49:37.466001480 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.hxx  2017-01-23 09:50:14.296001479 +0100
+@@ -39,6 +39,8 @@ namespace INTERP_KERNEL
+   template<class ConnType, NumberingPolicy numPolConn>
+   void computeBarycenter2(NormalizedCellType type, const ConnType *connec, int lgth, const double *coords, int spaceDim, double *res);
++  double INTERPKERNEL_EXPORT OrthoDistanceFromPtToPlaneInSpaceDim3(const double *p, const double *p1, const double *p2, const double *p3);
++
+   double INTERPKERNEL_EXPORT SquareDistanceFromPtToSegInSpaceDim2(const double *pt, const double *pt0Seg2, const double *pt1Seg2, std::size_t &nbOfHint);
+   double INTERPKERNEL_EXPORT DistanceFromPtToTriInSpaceDim3(const double *pt, const double *pt0Tri3, const double *pt1Tri3, const double *pt2Tri3);
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx MEDCOUPLING_new/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx
+--- MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx   2017-01-23 09:49:37.468001480 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx    2017-01-23 09:50:14.305001479 +0100
+@@ -342,5 +342,148 @@ namespace INTERP_TEST
+     CPPUNIT_ASSERT_DOUBLES_EQUAL( p[0], p2[0], 1e-12);
+     CPPUNIT_ASSERT_DOUBLES_EQUAL( p[1], p2[1], 1e-12);
+     CPPUNIT_ASSERT_DOUBLES_EQUAL( p[2], p2[2], 1e-12);
+-  }  
++  }
++
++  /* Conventions:
++  *   - for HEXA8, point 5 is taken to be the origin (see med file ref connec):
++  *          0 ------ 3
++            /|       /|
++           / |      / |
++          1 ------ 2  |
++          |  |     |  |
++          |  |     |  |
++          |  4-----|- 7
++          | /      | /
++          5 ------ 6
++   */
++  void UnitTetraIntersectionBaryTest::test_cuboid_mapped_coords_3D()
++  {
++    double nodes[8][3] = { { 0.0, 2.0, 4.0 }, //0
++                           { 0.0, 0.0, 4.0 },
++                           { 1.0, 0.0, 4.0 },
++                           { 1.0, 2.0, 4.0 },
++                           { 0.0, 2.0, 0.0 }, // 4
++                           { 0.0, 0.0, 0.0 },
++                           { 1.0, 0.0, 0.0 },
++                           { 1.0, 2.0, 0.0 }
++    };
++    // Translate cube:
++    for (int i=0; i < 8; ++i)
++      for (int j=0; j < 3; ++j)
++        nodes[i][j] += 15.0;
++
++    std::vector<const double*> n (8);
++    for (int i=0; i<8; i++)
++      n[i] = &nodes[i][0];
++
++    {
++        // middle point
++        double p[3] = { 15.5, 16.0, 17.0 }, bc[3];
++        cuboid_mapped_coords(n, p, bc);
++        CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[0], 1e-12);
++        CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[1], 1e-12);
++        CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[2], 1e-12);
++    }
++    {
++      // point 1
++      double p[3] = { 15.0, 15.0, 19.0 }, bc[3];
++      cuboid_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[1], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[2], 1e-12);
++    }
++    {
++      // point 7
++      double p[3] = { 16.0, 17.0, 15.0 }, bc[3];
++      cuboid_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[2], 1e-12);
++    }
++    {
++      // point 3
++      double p[3] = { 16.0, 17.0, 19.0 }, bc[3];
++      cuboid_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[2], 1e-12);
++    }
++    {
++      // point outside
++      double p[3] = { 2.0, 16.0, 18.0 }, bc[3];
++      CPPUNIT_ASSERT_THROW(cuboid_mapped_coords(n, p, bc), INTERP_KERNEL::Exception);
++    }
++
++  }
++
++  /* Convention
++      - for QUAD4, point 0 is taken to be the origin (again see med file ref connec):
++
++         1------2
++         |      |
++         |      |
++         0------3
++  */
++  void UnitTetraIntersectionBaryTest::test_quad_mapped_coords_2D()
++  {
++
++    double nodes[4][2] = { { 0.0, 0.0 },
++                           { 0.0, 1.0 },
++                           { 2.0, 3.0 },
++                           { 1.0, 0.0 } };
++
++    // Translate quad4:
++    for (int i=0; i < 4; ++i)
++      for (int j=0; j < 2; ++j)
++        nodes[i][j] += 15.0;
++
++    std::vector<const double*> n (4);
++    for (int i=0; i<4; i++)
++      n[i] = &nodes[i][0];
++
++    {
++      // middle point
++      double p[2] = { 15.75, 16.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[1], 1e-12);
++    }
++
++    {
++      // middle point of seg
++      double p[2] = { 15.5, 15.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.5, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[1], 1e-12);
++    }
++
++    {
++      // point 1
++      double p[2] = { 15.0, 16.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++    }
++    {
++      // point 2
++      double p[2] = { 17.0, 18.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[1], 1e-12);
++    }
++    {
++      // point 3
++      double p[2] = { 16.0, 15.0 }, bc[2];
++      quad_mapped_coords(n, p, bc);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 1.0, bc[0], 1e-12);
++      CPPUNIT_ASSERT_DOUBLES_EQUAL( 0.0, bc[1], 1e-12);
++    }
++    {
++      // point outside
++      double p[2] = { 18.0, 18.0 }, bc[2];
++      CPPUNIT_ASSERT_THROW(quad_mapped_coords(n, p, bc), INTERP_KERNEL::Exception);
++    }
++  }
++
++
+ }
+diff -rupN -x git MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx MEDCOUPLING_new/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx
+--- MEDCOUPLING_orig/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx   2017-01-23 09:49:37.468001480 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.hxx    2017-01-23 09:50:14.305001479 +0100
+@@ -52,6 +52,8 @@ namespace INTERP_TEST
+     CPPUNIT_TEST( test_UnitTetraIntersectionBary_11 );
+     CPPUNIT_TEST( test_TetraAffineTransform_reverseApply );
+     CPPUNIT_TEST( test_barycentric_coords );
++    CPPUNIT_TEST( test_cuboid_mapped_coords_3D );
++    CPPUNIT_TEST( test_quad_mapped_coords_2D );
+     CPPUNIT_TEST_SUITE_END();
+   public:
+     void test_UnitTetraIntersectionBary_1();
+@@ -69,6 +71,8 @@ namespace INTERP_TEST
+     void test_UnitTetraIntersectionBary_13();
+     void test_TetraAffineTransform_reverseApply();
+     void test_barycentric_coords();
++    void test_cuboid_mapped_coords_3D();
++    void test_quad_mapped_coords_2D();
+   };
+ }
+diff -rupN -x git MEDCOUPLING_orig/src/MEDCoupling/MEDCouplingRemapper.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRemapper.cxx
+--- MEDCOUPLING_orig/src/MEDCoupling/MEDCouplingRemapper.cxx   2017-01-23 09:49:37.490001480 +0100
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRemapper.cxx    2017-01-23 09:50:14.629001480 +0100
+@@ -35,6 +35,7 @@
+ #include "Interpolation3DSurf.hxx"
+ #include "Interpolation2D1D.txx"
+ #include "Interpolation2D3D.txx"
++#include "Interpolation3D1D.txx"
+ #include "InterpolationCU.txx"
+ #include "InterpolationCC.txx"
+@@ -436,7 +437,7 @@ int MEDCouplingRemapper::prepareInterpKe
+         throw INTERP_KERNEL::Exception("Invalid interpolation requested between 3D and 1D ! Select PointLocator as intersection type !");
+       MEDCouplingNormalizedUnstructuredMesh<3,3> source_mesh_wrapper(src_mesh);
+       MEDCouplingNormalizedUnstructuredMesh<3,3> target_mesh_wrapper(target_mesh);
+-      INTERP_KERNEL::Interpolation3D interpolation(*this);
++      INTERP_KERNEL::Interpolation3D1D interpolation(*this);
+       nbCols=interpolation.interpolateMeshes(source_mesh_wrapper,target_mesh_wrapper,_matrix,method);
+     }
+   else if(srcMeshDim==1 && trgMeshDim==3 && srcSpaceDim==3)
+@@ -445,7 +446,7 @@ int MEDCouplingRemapper::prepareInterpKe
+         throw INTERP_KERNEL::Exception("Invalid interpolation requested between 3D and 1D ! Select PointLocator as intersection type !");
+       MEDCouplingNormalizedUnstructuredMesh<3,3> source_mesh_wrapper(src_mesh);
+       MEDCouplingNormalizedUnstructuredMesh<3,3> target_mesh_wrapper(target_mesh);
+-      INTERP_KERNEL::Interpolation3D interpolation(*this);
++      INTERP_KERNEL::Interpolation3D1D interpolation(*this);
+       std::vector<std::map<int,double> > matrixTmp;
+       std::string revMethod(BuildMethodFrom(trgMeth,srcMeth));
+       nbCols=interpolation.interpolateMeshes(target_mesh_wrapper,source_mesh_wrapper,matrixTmp,revMethod);
+diff -rupN -x git MEDCOUPLING_orig/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py
+--- MEDCOUPLING_orig/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py   2017-01-23 09:49:37.520001480 +0100
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py    2017-01-23 09:50:14.666001480 +0100
+@@ -555,7 +555,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+     def testSwig2BarycentricP1P13D_1(self):
+         sCoo=DataArrayDouble([0.313,0.00218,6.90489,0.313,0.10692667,6.90489,0.313,0.10692667,6.96790167,0.313,0.00218,6.9773125,0.313,0.21167333,6.90489,0.313,0.21167333,6.95849083,0.313,0.31642,6.90489,0.313,0.31642,6.94908,0.313,0.09383333,7.04891667,0.313,0.00218,7.049735,0.313,0.18548667,7.04809833,0.313,0.27714,7.04728,0.313,0.05782667,7.133205,0.313,0.00218,7.1221575,0.313,0.11347333,7.1442525,0.313,0.16912,7.1553,0.313,0.02509333,7.19458,0.313,0.00218,7.19458,0.313,0.04800667,7.19458,0.313,0.07092,7.19458,0.31005609,0.00218,6.90460005,0.31005609,0.10692667,6.90460005,0.29776312,0.10692667,6.96640097,0.29592716,0.00218,6.97563097,0.31005609,0.21167333,6.90460005,0.29959908,0.21167333,6.95717096,0.31005609,0.31642,6.90460005,0.30143505,0.31642,6.94794095,0.28195788,0.09383333,7.04585928,0.28179823,0.00218,7.04666189,0.28211753,0.18548667,7.04505668,0.28227718,0.27714,7.04425407,0.26551404,0.05782667,7.12852804,0.2676693,0.00218,7.11769282,0.26335878,0.11347333,7.13936327,0.26120352,0.16912,7.15019849,0.25354037,0.02509333,7.18872374,0.25354037,0.00218,7.18872374,0.25354037,0.04800667,7.18872374,0.25354037,0.07092,7.18872374,0.30722531,0.00218,6.90374134,0.30722531,0.10692667,6.90374134,0.28311179,0.10692667,6.96195653,0.27951042,0.00218,6.97065101,0.30722531,0.21167333,6.90374134,0.28671316,0.21167333,6.95326205,0.30722531,0.31642,6.90374134,0.29031453,0.31642,6.94456758,0.25210869,0.09383333,7.03680463,0.25179553,0.00218,7.03756067,0.25242185,0.18548667,7.03604859,0.25273501,0.27714,7.03529255,0.21985294,0.05782667,7.1146769,0.22408063,0.00218,7.10447034,0.21562524,0.11347333,7.12488346,0.21139755,0.16912,7.13509002,0.19636574,0.02509333,7.17138,0.19636574,0.00218,7.17138,0.19636574,0.04800667,7.17138,0.19636574,0.07092,7.17138,0.30461645,0.00218,6.90234688,0.30461645,0.10692667,6.90234688,0.26960904,0.10692667,6.95473916,0.26438066,0.00218,6.96256398,0.30461645,0.21167333,6.90234688,0.27483742,0.21167333,6.94691434,0.30461645,0.31642,6.90234688,0.2800658,0.31642,6.93908952,0.22459952,0.09383333,7.02210067,0.22414487,0.00218,7.02278109,0.22505416,0.18548667,7.02142025,0.2255088,0.27714,7.02073983,0.17777143,0.05782667,7.09218386,0.18390909,0.00218,7.0829982,0.17163377,0.11347333,7.10136952,0.1654961,0.16912,7.11055518,0.1436733,0.02509333,7.14321531,0.1436733,0.00218,7.14321531,0.1436733,0.04800667,7.14321531,0.1436733,0.07092,7.14321531,0.30232976,0.00218,6.90047024,0.30232976,0.10692667,6.90047024,0.25777378,0.10692667,6.94502622,0.25111932,0.00218,6.95168068,0.30232976,0.21167333,6.90047024,0.26442825,0.21167333,6.93837175,0.30232976,0.31642,6.90047024,0.27108271,0.31642,6.93171729,0.20048753,0.09383333,7.00231247,0.19990888,0.00218,7.00289112,0.20106618,0.18548667,7.00173382,0.20164482,0.27714,7.00115518,0.14088667,0.05782667,7.06191333,0.14869844,0.00218,7.05410156,0.13307491,0.11347333,7.06972509,0.12526315,0.16912,7.07753685,0.097488,0.02509333,7.105312,0.097488,0.00218,7.105312,0.097488,0.04800667,7.105312,0.097488,0.07092,7.105312,0.30045312,0.00218,6.89818355,0.30045312,0.10692667,6.89818355,0.24806084,0.10692667,6.93319096,0.24023602,0.00218,6.93841934,0.30045312,0.21167333,6.89818355,0.25588566,0.21167333,6.92796258,0.30045312,0.31642,6.89818355,0.26371048,0.31642,6.9227342,0.18069933,0.09383333,6.97820048,0.18001891,0.00218,6.97865513,0.18137975,0.18548667,6.97774584,0.18206017,0.27714,6.9772912,0.11061614,0.05782667,7.02502857,0.1198018,0.00218,7.01889091,0.10143048,0.11347333,7.03116623,0.09224482,0.16912,7.0373039,0.05958469,0.02509333,7.0591267,0.05958469,0.00218,7.0591267,0.05958469,0.04800667,7.0591267,0.05958469,0.07092,7.0591267,0.29905866,0.00218,6.89557469,0.29905866,0.10692667,6.89557469,0.24084347,0.10692667,6.91968821,0.23214899,0.00218,6.92328958,0.29905866,0.21167333,6.89557469,0.24953795,0.21167333,6.91608684,0.29905866,0.31642,6.89557469,0.25823242,0.31642,6.91248547,0.16599537,0.09383333,6.95069131,0.16523933,0.00218,6.95100447,0.16675141,0.18548667,6.95037815,0.16750745,0.27714,6.95006499,0.0881231,0.05782667,6.98294706,0.09832966,0.00218,6.97871937,0.07791654,0.11347333,6.98717476,0.06770998,0.16912,6.99140245,0.03142,0.02509333,7.00643426,0.03142,0.00218,7.00643426,0.03142,0.04800667,7.00643426,0.03142,0.07092,7.00643426,0.29819995,0.00218,6.89274391,0.29819995,0.10692667,6.89274391,0.23639903,0.10692667,6.90503688,0.22716903,0.00218,6.90687284,0.29819995,0.21167333,6.89274391,0.24562904,0.21167333,6.90320092,0.29819995,0.31642,6.89274391,0.25485905,0.31642,6.90136495,0.15694072,0.09383333,6.92084212,0.15613811,0.00218,6.92100177,0.15774332,0.18548667,6.92068247,0.15854593,0.27714,6.92052282,0.07427196,0.05782667,6.93728596,0.08510718,0.00218,6.9351307,0.06343673,0.11347333,6.93944122,0.05260151,0.16912,6.94159648,0.01407626,0.02509333,6.94925963,0.01407626,0.00218,6.94925963,0.01407626,0.04800667,6.94925963,0.01407626,0.07092,6.94925963,0.29792818,0.00218,6.89054043,0.29792818,0.10692667,6.89054043,0.23499241,0.10692667,6.89363227,0.22559291,0.00218,6.89409403,0.29792818,0.21167333,6.89054043,0.24439191,0.21167333,6.8931705,0.29792818,0.31642,6.89054043,0.25379141,0.31642,6.89270873,0.154075,0.09383333,6.89760748,0.15325765,0.00218,6.89764764,0.15489234,0.18548667,6.89756733,0.15570969,0.27714,6.89752718,0.06988819,0.05782667,6.90174332,0.08092238,0.00218,6.90120124,0.058854,0.11347333,6.90228539,0.04781981,0.16912,6.90282747,0.00858712,0.02509333,6.90475485,0.00858712,0.00218,6.90475485,0.00858712,0.04800667,6.90475485,0.00858712,0.07092,6.90475485,0.29791,0.00218,6.820902,0.29791,0.10692667,6.820902,0.23489833,0.10692667,6.820902,0.2254875,0.00218,6.820902,0.29791,0.21167333,6.820902,0.24430917,0.21167333,6.820902,0.29791,0.31642,6.820902,0.25372,0.31642,6.820902,0.15388333,0.09383333,6.820902,0.153065,0.00218,6.820902,0.15470167,0.18548667,6.820902,0.15552,0.27714,6.820902,0.069595,0.05782667,6.820902,0.0806425,0.00218,6.820902,0.0585475,0.11347333,6.820902,0.0475,0.16912,6.820902,0.00822,0.02509333,6.820902,0.00822,0.00218,6.820902,0.00822,0.04800667,6.820902,0.00822,0.07092,6.820902],200,3)
+         sConn=DataArrayInt([0,1,2,3,20,21,22,23,1,4,5,2,21,24,25,22,4,6,7,5,24,26,27,25,3,2,8,9,23,22,28,29,2,5,10,8,22,25,30,28,5,7,11,10,25,27,31,30,9,8,12,13,29,28,32,33,8,10,14,12,28,30,34,32,10,11,15,14,30,31,35,34,13,12,16,17,33,32,36,37,12,14,18,16,32,34,38,36,14,15,19,18,34,35,39,38,20,21,22,23,40,41,42,43,21,24,25,22,41,44,45,42,24,26,27,25,44,46,47,45,23,22,28,29,43,42,48,49,22,25,30,28,42,45,50,48,25,27,31,30,45,47,51,50,29,28,32,33,49,48,52,53,28,30,34,32,48,50,54,52,30,31,35,34,50,51,55,54,33,32,36,37,53,52,56,57,32,34,38,36,52,54,58,56,34,35,39,38,54,55,59,58,40,41,42,43,60,61,62,63,41,44,45,42,61,64,65,62,44,46,47,45,64,66,67,65,43,42,48,49,63,62,68,69,42,45,50,48,62,65,70,68,45,47,51,50,65,67,71,70,49,48,52,53,69,68,72,73,48,50,54,52,68,70,74,72,50,51,55,54,70,71,75,74,53,52,56,57,73,72,76,77,52,54,58,56,72,74,78,76,54,55,59,58,74,75,79,78,60,61,62,63,80,81,82,83,61,64,65,62,81,84,85,82,64,66,67,65,84,86,87,85,63,62,68,69,83,82,88,89,62,65,70,68,82,85,90,88,65,67,71,70,85,87,91,90,69,68,72,73,89,88,92,93,68,70,74,72,88,90,94,92,70,71,75,74,90,91,95,94,73,72,76,77,93,92,96,97,72,74,78,76,92,94,98,96,74,75,79,78,94,95,99,98,80,81,82,83,100,101,102,103,81,84,85,82,101,104,105,102,84,86,87,85,104,106,107,105,83,82,88,89,103,102,108,109,82,85,90,88,102,105,110,108,85,87,91,90,105,107,111,110,89,88,92,93,109,108,112,113,88,90,94,92,108,110,114,112,90,91,95,94,110,111,115,114,93,92,96,97,113,112,116,117,92,94,98,96,112,114,118,116,94,95,99,98,114,115,119,118,100,101,102,103,120,121,122,123,101,104,105,102,121,124,125,122,104,106,107,105,124,126,127,125,103,102,108,109,123,122,128,129,102,105,110,108,122,125,130,128,105,107,111,110,125,127,131,130,109,108,112,113,129,128,132,133,108,110,114,112,128,130,134,132,110,111,115,114,130,131,135,134,113,112,116,117,133,132,136,137,112,114,118,116,132,134,138,136,114,115,119,118,134,135,139,138,120,121,122,123,140,141,142,143,121,124,125,122,141,144,145,142,124,126,127,125,144,146,147,145,123,122,128,129,143,142,148,149,122,125,130,128,142,145,150,148,125,127,131,130,145,147,151,150,129,128,132,133,149,148,152,153,128,130,134,132,148,150,154,152,130,131,135,134,150,151,155,154,133,132,136,137,153,152,156,157,132,134,138,136,152,154,158,156,134,135,139,138,154,155,159,158,140,141,142,143,160,161,162,163,141,144,145,142,161,164,165,162,144,146,147,145,164,166,167,165,143,142,148,149,163,162,168,169,142,145,150,148,162,165,170,168,145,147,151,150,165,167,171,170,149,148,152,153,169,168,172,173,148,150,154,152,168,170,174,172,150,151,155,154,170,171,175,174,153,152,156,157,173,172,176,177,152,154,158,156,172,174,178,176,154,155,159,158,174,175,179,178,160,161,162,163,180,181,182,183,161,164,165,162,181,184,185,182,164,166,167,165,184,186,187,185,163,162,168,169,183,182,188,189,162,165,170,168,182,185,190,188,165,167,171,170,185,187,191,190,169,168,172,173,189,188,192,193,168,170,174,172,188,190,194,192,170,171,175,174,190,191,195,194,173,172,176,177,193,192,196,197,172,174,178,176,192,194,198,196,174,175,179,178,194,195,199,198])
+-        s=MEDCoupling1SGTUMesh("target",NORM_HEXA8) ; s.setCoords(sCoo)
++        s=MEDCoupling1SGTUMesh("source",NORM_HEXA8) ; s.setCoords(sCoo)
+         s.setNodalConnectivity(sConn)
+         #
+         tCoo=DataArrayDouble([0.328,0.012,6.8598,0.328,0.168320184237353,6.8598,0.328,0.324640368474706,6.8598,0.328,0.0,6.8598,0.298,0.012,6.8598,0.1565,0.012,6.8598,0.180205346493166,0.144794653506834,6.8598,0.298,0.168320184237353,6.8598,0.0,0.012,6.8598,0.0916755774886107,0.233324422511389,6.8598,0.298,0.324640368474706,6.8598,0.298,0.0,6.8598,0.1565,0.0,6.8598,0.0,0.0,6.8598,0.328,0.012,7.2298,0.328,0.168320184237353,7.2298,0.328,0.324640368474706,7.2298,0.328,0.0,7.2298,0.298,0.012,7.2298,0.1565,0.012,7.2298,0.180205346493166,0.144794653506834,7.2298,0.298,0.168320184237353,7.2298,0.0,0.012,7.2298,0.0916755774886107,0.233324422511389,7.2298,0.298,0.324640368474706,7.2298,0.298,0.0,7.2298,0.1565,0.0,7.2298,0.0,0.0,7.2298],28,3)
+@@ -587,6 +587,130 @@ class MEDCouplingBasicsTest(unittest.Tes
+         self.assertAlmostEqual(0.3521445110626687 ,m[6][170],12)
+         pass
++    def testSwig2MappedBarycentricP1P12D_1(self):
++        """ Testing mapped barycentric P1P1 projection
++        (uses analytical mapping from square to arbitrary convex quadrangle)
++        """
++        n = 5
++        sCoo = DataArrayDouble(n,1)
++        sCoo.iota(0.0);     sCoo /= float(n-1)
++        m = MEDCouplingCMesh("target")
++        m.setCoordsAt(0, sCoo)
++        m.setCoordsAt(1, sCoo)
++        tgt = m.buildUnstructured()
++        coo = tgt.getCoords()
++        orig = coo.deepCpy();   orig[:,0] = 10.0; orig[:,1] = 15.0
++        pt_a = coo.deepCpy();   pt_a[:,0] = -0.3; pt_a[:,1] = 1.0
++        pt_b = coo.deepCpy();   pt_b[:,0] = 2.0;  pt_b[:,1] = 3.0
++        pt_c = coo.deepCpy();   pt_c[:,0] = 1.0;  pt_c[:,1] = 0.0
++        # P = x*C+y*A + xy(B-A-C) + ORIGIN
++        coo2 = coo[:,0]*pt_c + coo[:, 1]*pt_a + coo[:, 0]*coo[:, 1]*(pt_b - pt_a - pt_c) + orig
++
++        tgt.setCoords(coo2)
++
++        sCoo = DataArrayDouble([0.0,0.0,  -0.3,1.0,  2.0,3.0,  1.0,0.0],4,2)
++        sCoo[:,0] += 10.0;  sCoo[:,1] += 15.0;
++        sConn = DataArrayInt([0,1,2,3])
++        s = MEDCoupling1SGTUMesh("source",NORM_QUAD4) ; s.setCoords(sCoo)
++        s.setNodalConnectivity(sConn)
++        #
++        aRemapper=MEDCouplingRemapper()
++        aRemapper.setPrecision(1e-12)
++        aRemapper.setIntersectionType(MappedBarycentric)
++        self.assertEqual(aRemapper.prepare(s,tgt,'P1P1'),1)
++        srcField = MEDCouplingFieldDouble(ON_NODES, ONE_TIME)
++        srcField.setNature(ConservativeVolumic)
++        srcField.setMesh(s); srcField.setName("field")
++        srcField.setArray(DataArrayDouble([1.0,2.0,3.0,4.0]))
++        tgtF = aRemapper.transferField(srcField, 1e+300)
++        ref = [1.0, 1.75, 2.5, 3.25, 4.0, 1.25, 1.875, 2.5, 3.125, 3.75, 1.5, 2.0, 2.5, 3.0, 3.5, 1.75,
++         2.125, 2.5, 2.875, 3.25, 2.0, 2.25, 2.5, 2.75, 3.0]
++        val = tgtF.getArray().getValues()
++        for i, ref_v in enumerate(ref):
++            self.assertAlmostEqual(ref_v, val[i])
++        pass
++
++    def testSwig2MappedBarycentricP1P13_1(self):
++        """ Testing mapped barycentric P1P1 projection in 3D (uses orthogonal distances to 
++        HEXA8 faces).
++        Convention:
++              0 ------ 3
++             /|       /|
++            / |      / |
++           1 ------ 2  |
++           |  |     |  |
++           |  |     |  |
++           |  4-----|- 7
++           | /      | /
++           5 ------ 6
++        """
++        n = 5
++        sCoo = DataArrayDouble(n,1)
++        sCoo.iota(0.0)
++        sCoo /= float(n-1)
++        m = MEDCouplingCMesh("target")
++        m.setCoordsAt(0, sCoo)
++        m.setCoordsAt(1, sCoo)
++        m.setCoordsAt(2, sCoo)
++        tgt = m.buildUnstructured()
++        coo = tgt.getCoords()
++        pt_0 = coo.deepCpy(); pt_0[:,0] = -0.3; pt_0[:,1] = 1.0; pt_0[:,2] = 1.0
++        pt_1 = coo.deepCpy(); pt_1[:,0] = 0.0; pt_1[:,1] = 0.0; pt_1[:,2] = 1.0
++        pt_2 = coo.deepCpy(); pt_2[:,0] = 1.0; pt_2[:,1] = 0.0; pt_2[:,2] = 1.0
++        pt_3 = coo.deepCpy(); pt_3[:,0] = 2.0; pt_3[:,1] = 3.0; pt_3[:,2] = 1.0
++        
++        pt_4 = coo.deepCpy(); pt_4[:,0] = -0.3; pt_4[:,1] = 1.0; pt_4[:,2] = 0.0
++        orig = coo.deepCpy(); orig[:,0] = 10.0; orig[:,1] = 15.0; orig[:,2] = 20.0
++        pt_6 = coo.deepCpy(); pt_6[:,0] = 1.0; pt_6[:,1] = 0.0; pt_6[:,2] = 0.0 
++        pt_7 = coo.deepCpy(); pt_7[:,0] = 2.0; pt_7[:,1] = 3.0; pt_7[:,2] = 0.0
++        # P = x*p6 + y*p4 + z*p1 + xy*(p7-p6-p4) + xz*(p2-p1-p6) + yz*(p0-p4-p1) + xyz(p3-p7-p2-p0+p1+p6+p4)
++        x,y,z = coo[:,0],coo[:,1],coo[:,2]
++        coo2 = x*pt_6 + y*pt_4 + z*pt_1 + \
++               x*y*(pt_7 - pt_6 - pt_4) + x*z*(pt_2 - pt_1 - pt_6) + y*z*(pt_0 - pt_4 - pt_1) + \
++               x*y*z*(pt_3 - pt_7 - pt_2 - pt_0 + pt_6 + pt_1 + pt_4) + orig
++        tgt.setCoords(coo2)
++
++        sCoo = DataArrayDouble([-0.3,1.0,1.0,  0.0,0.0,1.0,  1.0,0.0,1.0,  2.0,3.0,1.0,
++                                -0.3,1.0,0.0,  0.0,0.0,0.0,  1.0,0.0,0.0,  2.0,3.0,0.0,],8,3)
++        sCoo[:, 0] += 10.0; sCoo[:, 1] += 15.0; sCoo[:, 2] += 20.0;
++        sConn = DataArrayInt([0,1,2,3,4, 5,6,7])
++        s = MEDCoupling1SGTUMesh("source",NORM_HEXA8) ; s.setCoords(sCoo)
++        s.setNodalConnectivity(sConn)
++        #
++        aRemapper=MEDCouplingRemapper()
++        aRemapper.setPrecision(1e-12)
++        aRemapper.setIntersectionType(MappedBarycentric)
++        self.assertEqual(aRemapper.prepare(s,tgt,'P1P1'),1)
++        srcField = MEDCouplingFieldDouble(ON_NODES, ONE_TIME)
++        srcField.setNature(ConservativeVolumic)
++        srcField.setMesh(s); srcField.setName("field")
++        srcField.setArray(DataArrayDouble([1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0]))
++        tgtF = aRemapper.transferField(srcField, 1e+300)
++#        print tgtF.getArray().getValues()
++        ref = [6.0, 6.251802698104413, 6.502397834044702, 6.7517940736426665, 7.0, 5.740554726834594,
++               6.1761835575796935, 6.6052985689637564, 7.009392769824465, 7.383488834310164,
++               5.487562931129931, 6.140664596972973, 6.720290674177548, 7.220534970454015, 7.651092836860121,
++               5.2407867837524345, 6.125759809889516, 6.82853486793175, 7.390880823876876, 7.848445254819061,
++               5.0, 6.12211344611157, 6.925740671133115, 7.529623182840827, 8.0, 5.0, 5.251802698104413,
++               5.502397834044702, 5.751794073642667, 6.0, 4.740554726834594, 5.1761835575796935,
++               5.6052985689637564, 6.009392769824465, 6.383488834310163, 4.487562931129931, 5.140664596972973,
++                5.720290674177548, 6.220534970454015, 6.651092836860121, 4.2407867837524345, 5.125759809889516,
++                5.828534867931749, 6.390880823876876, 6.848445254819061, 4.0, 5.122113446111569, 5.925740671133115,
++                6.529623182840827, 7.0, 4.0, 4.251802698104413, 4.502397834044702, 4.751794073642667, 5.0, 3.740554726834594,
++                4.176183557579693, 4.6052985689637564, 5.009392769824464, 5.383488834310164, 3.487562931129931,
++                4.140664596972973, 4.720290674177548, 5.220534970454015, 5.651092836860121, 3.240786783752434, 4.125759809889516, 4.82853486793175,
++                5.390880823876876, 5.848445254819061, 3.0, 4.122113446111569, 4.925740671133115, 5.529623182840827, 6.0, 3.0,
++                3.2518026981044135, 3.502397834044702, 3.7517940736426674, 4.0, 2.7405547268345933, 3.176183557579693,
++                3.6052985689637564, 4.009392769824465, 4.383488834310164, 2.487562931129931, 3.140664596972973, 3.7202906741775474, 4.220534970454015, 4.65109283686012, 2.2407867837524345, 3.1257598098895154, 3.828534867931749,
++                4.390880823876876, 4.848445254819061, 2.0, 3.1221134461115687, 3.9257406711331146, 4.529623182840826, 5.0, 2.0, 2.2518026981044135, 2.502397834044702, 2.7517940736426674, 3.0, 1.7405547268345936, 2.176183557579693, 2.6052985689637564,
++                3.0093927698244642, 3.3834888343101635, 1.4875629311299305, 2.1406645969729734, 2.720290674177548,
++                3.2205349704540143, 3.6510928368601205, 1.2407867837524345, 2.125759809889516, 2.8285348679317495, 3.390880823876876, 3.848445254819061, 1.0, 2.1221134461115687, 2.9257406711331146, 3.529623182840827, 4.0]
++
++        val = tgtF.getArray().getValues()
++        for i, ref_v in enumerate(ref):
++            self.assertAlmostEqual(ref_v, val[i])
++        pass
++
+     @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings(),"requires numpy AND scipy")
+     def testGetCrudeCSRMatrix1(self):
+         """ testing CSR matrix output using numpy/scipy.
+@@ -645,7 +769,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         self.assertAlmostEqual(m_1[2,3],0.3,12)
+         self.assertEqual(m_1.getnnz(),7)
+         pass
+-    
++
+     @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings(),"requires numpy AND scipy")
+     def testP0P1Bary_1(self):
+         a=MEDCouplingUMesh("a",2)
+@@ -712,7 +836,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         #
+         rem=MEDCouplingRemapper()
+         rem.setMaxDistance3DSurfIntersect(1e-12)
+-        rem.setMinDotBtwPlane3DSurfIntersect(0.99)# this line is important it is to tell to remapper to select only cells with very close orientation 
++        rem.setMinDotBtwPlane3DSurfIntersect(0.99)# this line is important it is to tell to remapper to select only cells with very close orientation
+         rem.prepare(skinAndNonConformCells,skinAndNonConformCells,"P0P0")
+         mat=rem.getCrudeCSRMatrix()
+         indptr=DataArrayInt(mat.indptr)
+@@ -785,7 +909,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         #
+         self.assertTrue(coarse.isEqual(trgField.getArray(),1e-12))
+         pass
+-    
++
+     @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings(),"requires numpy AND scipy")
+     def test1DPointLocator1(self):
+         """This test focuses on PointLocator for P1P1 in 1D and 2DCurve."""
+@@ -853,7 +977,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         diff=abs(m-mExp0)
+         self.assertAlmostEqual(diff.sum(),0.,14)
+         pass
+-    
++
+     def test3D2Dand2D3DPointLocator1(self):
+         """ Non regression test solving SIGSEGV when using 3D<->3Dsurf pointlocator."""
+         arrX=DataArrayDouble([0,1,2])
+@@ -894,7 +1018,37 @@ class MEDCouplingBasicsTest(unittest.Tes
+         rem.prepare(mt,ms,"P0P0")
+         self.assertEqual(rem.getCrudeMatrix(),[{0:1.},{1:1.}])
+         pass
+-    
++
++    def test3D1DPointLocatorBBoxAdjusted(self):
++        """ In case a 1D segment lies exactly on the interface between two 2D (or 3D) faces, the default
++        bounding box logic will make it non-intersecting with the surrounding 2D (or 3D) faces.
++        Test bounding box adjustment allowing to widen the BB to capture this.
++        """
++        m = MEDCouplingCMesh("source")
++        di, dd = DataArrayInt, DataArrayDouble
++        m.setCoordsAt(0, dd([0.0, 1.0, 2.0]))
++        m.setCoordsAt(1, dd([0.0, 1.0]))
++        m.setCoordsAt(2, dd([0.0, 1.0]))
++        m3d = m.buildUnstructured()
++        m1d = MEDCouplingUMesh("target", 1)
++        m1d.setCoords(dd([1.0,0.5,0.2  ,  1.0,0.5,0.8], 2,3))
++        m1d.setConnectivity(di([NORM_SEG2, 0, 1]), di([0,3]))
++
++        rem = MEDCouplingRemapper()
++        rem.setPrecision(1e-12)
++        rem.setIntersectionType(PointLocator)
++        rem.prepare(m3d, m1d,"P0P1")
++        self.assertEqual(rem.getCrudeMatrix(), [{0: 1.0, 1: 1.0}, {0: 1.0, 1: 1.0}])
++
++        rem = MEDCouplingRemapper()
++        rem.setPrecision(1e-12)
++        rem.setIntersectionType(PointLocator)
++        rem.setBoundingBoxAdjustment(0.0)
++        rem.setBoundingBoxAdjustmentAbs(0.0)
++        rem.prepare(m3d, m1d,"P0P1")
++        self.assertEqual(rem.getCrudeMatrix(), [{}, {}])
++        pass
++
+     def build2DSourceMesh_1(self):
+         sourceCoords=[-0.3,-0.3, 0.7,-0.3, -0.3,0.7, 0.7,0.7]
+         sourceConn=[0,3,1,0,2,3]
+@@ -907,7 +1061,7 @@ class MEDCouplingBasicsTest(unittest.Tes
+         myCoords.setValues(sourceCoords,4,2);
+         sourceMesh.setCoords(myCoords);
+         return sourceMesh;
+-    
++
+     def build2DTargetMesh_1(self):
+         targetCoords=[-0.3,-0.3, 0.2,-0.3, 0.7,-0.3, -0.3,0.2, 0.2,0.2, 0.7,0.2, -0.3,0.7, 0.2,0.7, 0.7,0.7 ]
+         targetConn=[0,3,4,1, 1,4,2, 4,5,2, 6,7,4,3, 7,8,5,4]
+@@ -940,9 +1094,10 @@ class MEDCouplingBasicsTest(unittest.Tes
+         targetMesh.setCoords(myCoords);
+         return targetMesh;
+         pass
+-    
++
+     def setUp(self):
+         pass
+     pass
+-unittest.main()
++if __name__ == "__main__":
++  unittest.main()
+diff -rupN -x git MEDCOUPLING_orig/src/MEDLoader/MEDFileField.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileField.cxx
+--- MEDCOUPLING_orig/src/MEDLoader/MEDFileField.cxx    2017-01-23 09:49:37.525001480 +0100
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileField.cxx     2017-01-23 09:50:14.672001480 +0100
+@@ -7357,9 +7357,8 @@ void MEDFileAnyTypeFieldMultiTSWithoutSD
+     {
+       std::vector< std::pair<int,int> > ts;
+       med_int numdt=0,numo=0;
+-      med_int meshIt=0,meshOrder=0;
+       med_float dt=0.0;
+-      MEDFILESAFECALLERRD0(MEDfieldComputingStepMeshInfo,(fid,_name.c_str(),i+1,&numdt,&numo,&dt,&meshIt,&meshOrder));
++      MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,_name.c_str(),i+1,&numdt,&numo,&dt));
+       switch(fieldTyp)
+       {
+         case MED_FLOAT64:
diff --git a/products/patches/medcoupling_m4_files.patch b/products/patches/medcoupling_m4_files.patch
new file mode 100644 (file)
index 0000000..d683c9f
--- /dev/null
@@ -0,0 +1,555 @@
+diff -rupN MEDCOUPLING_ori/adm_local/CMakeLists.txt MEDCOUPLING_new/adm_local/CMakeLists.txt\r
+--- MEDCOUPLING_ori/adm_local/CMakeLists.txt   1970-01-01 01:00:00.000000000 +0100\r
++++ MEDCOUPLING_new/adm_local/CMakeLists.txt   2017-01-04 16:00:47.096478000 +0100\r
+@@ -0,0 +1,20 @@\r
++# Copyright (C) 2012-2016  CEA/DEN, EDF R&D\r
++#\r
++# This library is free software; you can redistribute it and/or\r
++# modify it under the terms of the GNU Lesser General Public\r
++# License as published by the Free Software Foundation; either\r
++# version 2.1 of the License, or (at your option) any later version.\r
++#\r
++# This library is distributed in the hope that it will be useful,\r
++# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
++# Lesser General Public License for more details.\r
++#\r
++# You should have received a copy of the GNU Lesser General Public\r
++# License along with this library; if not, write to the Free Software\r
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
++#\r
++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
++#\r
++\r
++ADD_SUBDIRECTORY(unix)\r
+diff -rupN MEDCOUPLING_ori/adm_local/unix/CMakeLists.txt MEDCOUPLING_new/adm_local/unix/CMakeLists.txt\r
+--- MEDCOUPLING_ori/adm_local/unix/CMakeLists.txt      1970-01-01 01:00:00.000000000 +0100\r
++++ MEDCOUPLING_new/adm_local/unix/CMakeLists.txt      2017-01-04 16:00:47.099483000 +0100\r
+@@ -0,0 +1,20 @@\r
++# Copyright (C) 2012-2016  CEA/DEN, EDF R&D\r
++#\r
++# This library is free software; you can redistribute it and/or\r
++# modify it under the terms of the GNU Lesser General Public\r
++# License as published by the Free Software Foundation; either\r
++# version 2.1 of the License, or (at your option) any later version.\r
++#\r
++# This library is distributed in the hope that it will be useful,\r
++# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
++# Lesser General Public License for more details.\r
++#\r
++# You should have received a copy of the GNU Lesser General Public\r
++# License along with this library; if not, write to the Free Software\r
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
++#\r
++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
++#\r
++\r
++ADD_SUBDIRECTORY(config_files)\r
+diff -rupN MEDCOUPLING_ori/adm_local/unix/config_files/check_MEDCOUPLING.m4 MEDCOUPLING_new/adm_local/unix/config_files/check_MEDCOUPLING.m4\r
+--- MEDCOUPLING_ori/adm_local/unix/config_files/check_MEDCOUPLING.m4   1970-01-01 01:00:00.000000000 +0100\r
++++ MEDCOUPLING_new/adm_local/unix/config_files/check_MEDCOUPLING.m4   2017-01-04 16:00:47.105477000 +0100\r
+@@ -0,0 +1,71 @@\r
++dnl Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE\r
++dnl\r
++dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
++dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS\r
++dnl\r
++dnl This library is free software; you can redistribute it and/or\r
++dnl modify it under the terms of the GNU Lesser General Public\r
++dnl License as published by the Free Software Foundation; either\r
++dnl version 2.1 of the License, or (at your option) any later version.\r
++dnl\r
++dnl This library is distributed in the hope that it will be useful,\r
++dnl but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
++dnl Lesser General Public License for more details.\r
++dnl\r
++dnl You should have received a copy of the GNU Lesser General Public\r
++dnl License along with this library; if not, write to the Free Software\r
++dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
++dnl\r
++dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
++dnl\r
++\r
++# Check availability of MEDCOUPLING binary distribution\r
++#\r
++# Author : Roman NIKOLAEV (OPEN CASCADE, 2016)\r
++#\r
++\r
++AC_DEFUN([CHECK_MEDCOUPLING],[\r
++AC_REQUIRE([AC_LINKER_OPTIONS])dnl\r
++\r
++AC_CHECKING(for MEDCOUPLING)\r
++\r
++MEDCOUPLING_ok=no\r
++\r
++MEDCOUPLING_LDFLAGS=""\r
++MEDCOUPLING_CXXFLAGS=""\r
++\r
++AC_ARG_WITH(medcoupling,\r
++          [  --with-medcoupling=DIR root directory path of MEDCOUPLING installation ],\r
++          MEDCOUPLING_DIR="$withval",MEDCOUPLING_DIR="")\r
++\r
++if test "x${MEDCOUPLING_DIR}" == "x" ; then\r
++  AC_MSG_RESULT(for \${MEDCOUPLING_ROOT_DIR}: ${MEDCOUPLING_ROOT_DIR})\r
++\r
++   # --with-medcoupling option is not used\r
++   if test "x${MEDCOUPLING_ROOT_DIR}" != "x" ; then\r
++    # MEDCOUPLING_ROOT_DIR environment variable defined\r
++      MEDCOUPLING_DIR=${MEDCOUPLING_ROOT_DIR}\r
++   fi\r
++\r
++fi\r
++\r
++if test -f ${MEDCOUPLING_DIR}/include/InterpKernelValue.hxx ; then\r
++   AC_MSG_RESULT(Using MEDCOUPLING module distribution in ${MEDCOUPLING_DIR})\r
++   MEDCOUPLING_ok=yes\r
++\r
++   AC_SUBST(MEDCOUPLING_ROOT_DIR)\r
++\r
++   MEDCOUPLING_LDFLAGS=-L${MEDCOUPLING_DIR}/lib${LIB_LOCATION_SUFFIX}\r
++   MEDCOUPLING_CXXFLAGS=-I${MEDCOUPLING_DIR}/include\r
++\r
++   AC_SUBST(MEDCOUPLING_LDFLAGS)\r
++   AC_SUBST(MEDCOUPLING_CXXFLAGS)\r
++\r
++else\r
++   AC_MSG_WARN("Cannot find MCOUPLING module sources")\r
++fi\r
++\r
++AC_MSG_RESULT(for MEDCOUPLING: $MEDCOUPLING_ok)\r
++\r
++])dnl\r
+diff -rupN MEDCOUPLING_ori/adm_local/unix/config_files/check_parmetis.m4 MEDCOUPLING_new/adm_local/unix/config_files/check_parmetis.m4\r
+--- MEDCOUPLING_ori/adm_local/unix/config_files/check_parmetis.m4      1970-01-01 01:00:00.000000000 +0100\r
++++ MEDCOUPLING_new/adm_local/unix/config_files/check_parmetis.m4      2017-01-04 16:00:47.108474000 +0100\r
+@@ -0,0 +1,225 @@\r
++dnl Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE\r
++dnl\r
++dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
++dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS\r
++dnl\r
++dnl This library is free software; you can redistribute it and/or\r
++dnl modify it under the terms of the GNU Lesser General Public\r
++dnl License as published by the Free Software Foundation; either\r
++dnl version 2.1 of the License, or (at your option) any later version.\r
++dnl\r
++dnl This library is distributed in the hope that it will be useful,\r
++dnl but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
++dnl Lesser General Public License for more details.\r
++dnl\r
++dnl You should have received a copy of the GNU Lesser General Public\r
++dnl License along with this library; if not, write to the Free Software\r
++dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
++dnl\r
++dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
++dnl\r
++\r
++#for a future use...see further down AC_DEFUN([CHECK_PARMETISV4]\r
++\r
++#for use with ParMETIS V3\r
++AC_DEFUN([CHECK_PARMETIS],[\r
++AC_REQUIRE([AC_PROG_CC])dnl\r
++AC_REQUIRE([AC_PROG_CPP])dnl\r
++AC_REQUIRE([CHECK_MPI])dnl\r
++\r
++AC_CHECKING(for ParMETIS V3 Library)\r
++\r
++AC_LANG_SAVE\r
++AC_LANG_C\r
++\r
++PARMETIS_CPPFLAGS=""\r
++PARMETIS_LIBS=""\r
++ENABLE_PARMETIS="no"\r
++\r
++AC_CHECKING(for ParMETIS location)\r
++AC_ARG_WITH(parmetis,\r
++            [  --with-parmetis=DIR      root directory path to ParMETIS library installation ],\r
++            [PARMETISDIR="$withval"\r
++             AC_MSG_RESULT("select $withval as path to ParMETIS library")])\r
++\r
++if test "x${PARMETISDIR}" == "x" ; then\r
++  AC_MSG_RESULT(for \${PARMETIS_ROOT_DIR}: ${PARMETIS_ROOT_DIR})\r
++   # --with-parmetis option is not used\r
++   if test "x${PARMETIS_ROOT_DIR}" != "x" ; then\r
++      PARMETISDIR=${PARMETIS_ROOT_DIR}\r
++   fi\r
++fi\r
++\r
++AC_MSG_RESULT(\$PARMETISDIR = ${PARMETISDIR})\r
++\r
++CPPFLAGS_old="${CPPFLAGS}"\r
++LIBS_old=$LIBS\r
++\r
++if test "x${PARMETISDIR}" != "x" ; then\r
++  PARMETIS_CPPFLAGS="-DMED_ENABLE_PARMETIS -I${PARMETISDIR} ${MPI_INCLUDES}"\r
++  PARMETIS_LIBS="-L${PARMETISDIR} -lparmetis -lmetis ${MPI_LIBS}"\r
++fi\r
++\r
++parmetis_ok=no\r
++parmetis_headers_ok=no\r
++parmetis_binaries_ok=no\r
++\r
++dnl ParMETIS headers\r
++AC_CHECKING(for ParMETIS headers)\r
++CPPFLAGS="${CPPFLAGS_old} ${PARMETIS_CPPFLAGS}"\r
++\r
++parmetis_include_dir_ok=yes\r
++if test "x${PARMETISDIR}" != "x" ; then\r
++  AC_CHECK_FILE(${PARMETISDIR}/parmetis.h,\r
++                parmetis_include_dir_ok=yes,\r
++                parmetis_include_dir_ok=no)\r
++fi\r
++\r
++if test "x${parmetis_include_dir_ok}" = "xyes" ; then\r
++  AC_TRY_COMPILE([#include <parmetis.h>],\r
++                 [ParMETIS_V3_PartGeom(0,0,0,0,0)],\r
++                 parmetis_headers_ok=yes,\r
++                 parmetis_headers_ok=no)\r
++fi\r
++\r
++if test "x${parmetis_headers_ok}" = "xyes" ; then\r
++  AC_MSG_RESULT(\$PARMETIS_CPPFLAGS = ${PARMETIS_CPPFLAGS})\r
++fi\r
++AC_MSG_RESULT(for ParMETIS headers: $parmetis_headers_ok)\r
++\r
++if test "x${parmetis_headers_ok}" = "xyes" ; then\r
++  dnl ParMETIS binaries\r
++  AC_CHECKING(for ParMETIS binaries)\r
++  parmetis_lib_dir_ok=yes\r
++  AC_CHECK_FILE(${PARMETISDIR}/libparmetis.a,\r
++                parmetis_lib_dir_ok=yes,\r
++                parmetis_lib_dir_ok=no)\r
++\r
++  if test "x${parmetis_lib_dir_ok}" = "xyes" ; then\r
++    LIBS="${LIBS_old} ${PARMETIS_LIBS}"\r
++    AC_TRY_LINK([#include <parmetis.h>],\r
++                [ParMETIS_V3_PartGeom(0,0,0,0,0)],\r
++                parmetis_binaries_ok=yes,\r
++                parmetis_binaries_ok=no)\r
++  fi\r
++fi\r
++\r
++if test "x${parmetis_binaries_ok}" = "xyes" ; then\r
++  AC_MSG_RESULT(\$PARMETIS_LIBS = ${PARMETIS_LIBS})\r
++fi\r
++AC_MSG_RESULT(for ParMETIS binaries: $parmetis_binaries_ok)\r
++\r
++CPPFLAGS="${CPPFLAGS_old}"\r
++LIBS="${LIBS_old}"\r
++\r
++if test "x${parmetis_headers_ok}" = "xyes" ; then\r
++  if test "x${parmetis_binaries_ok}" = "xyes" ; then\r
++    parmetis_ok=yes\r
++    ENABLE_PARMETIS="yes"\r
++    # ParMETIS includes METIS, so we redefine METIS cppflags and libs\r
++    # And metis.h #include parmetis.h + mpi.h\r
++    metis_ok=yes\r
++    ENABLE_METIS="yes"\r
++    METISDIR=${PARMETISDIR}\r
++    METIS_CPPFLAGS="-DMED_ENABLE_METIS -I${METISDIR}/METISLib ${PARMETIS_CPPFLAGS}"\r
++    METIS_LIBS="-L${METISDIR} -lmetis ${MPI_LIBS}"\r
++  fi\r
++fi\r
++\r
++AC_MSG_RESULT(for ParMETIS: $parmetis_ok)\r
++\r
++AC_SUBST(ENABLE_PARMETIS)\r
++AC_SUBST(PARMETIS_CPPFLAGS)\r
++AC_SUBST(PARMETIS_LIBS)\r
++AC_SUBST(ENABLE_METIS)\r
++AC_SUBST(METIS_CPPFLAGS)\r
++AC_SUBST(METIS_LIBS)\r
++\r
++AC_LANG_RESTORE\r
++\r
++])dnl\r
++\r
++#for a future use...\r
++AC_DEFUN([CHECK_PARMETISV4],[\r
++AC_REQUIRE([AC_PROG_CC])dnl\r
++AC_REQUIRE([AC_PROG_CPP])dnl\r
++AC_REQUIRE([CHECK_MPI])dnl\r
++\r
++AC_CHECKING(for ParMETIS V4 Library)\r
++\r
++AC_LANG_SAVE\r
++AC_LANG_C\r
++\r
++PARMETIS_CPPFLAGS=""\r
++PARMETIS_LIBS=""\r
++ENABLE_PARMETIS="no"\r
++\r
++AC_CHECKING(for ParMETIS location)\r
++AC_ARG_WITH(parmetis,\r
++            [  --with-parmetis=DIR      root directory path to ParMETIS library installation ],\r
++            [PARMETISDIR="$withval"\r
++             AC_MSG_RESULT("select $withval as path to ParMETIS library")])\r
++\r
++AC_MSG_RESULT(\$PARMETISDIR = ${PARMETISDIR})\r
++\r
++CPPFLAGS_old="${CPPFLAGS}"\r
++LIBS_old=$LIBS\r
++\r
++if test "x${PARMETISDIR}" != "x" ; then\r
++  PARMETIS_CPPFLAGS="-DMED_ENABLE_PARMETIS -I${PARMETISDIR}/include ${MPI_INCLUDES}"\r
++  PARMETIS_LIBS="-L${PARMETISDIR}/lib -lparmetis -lmetis ${MPI_LIBS}"\r
++fi\r
++\r
++parmetis_ok=no\r
++parmetis_headers_ok=no\r
++parmetis_binaries_ok=no\r
++\r
++dnl ParMETIS headers\r
++AC_CHECKING(for ParMETIS headers)\r
++CPPFLAGS="${CPPFLAGS_old} ${PARMETIS_CPPFLAGS}"\r
++\r
++parmetis_include_dir_ok=yes\r
++if test "x${PARMETISDIR}" != "x" ; then\r
++  AC_CHECK_FILE(${PARMETISDIR}/include/parmetis.h,\r
++                parmetis_headers_ok=yes,\r
++                parmetis_headers_ok=no)\r
++fi\r
++\r
++if test "x${parmetis_headers_ok}" = "xyes" ; then\r
++  AC_MSG_RESULT(\$PARMETIS_CPPFLAGS = ${PARMETIS_CPPFLAGS})\r
++fi\r
++AC_MSG_RESULT(for ParMETIS headers: $parmetis_headers_ok)\r
++\r
++if test "x${parmetis_headers_ok}" = "xyes" ; then\r
++  dnl ParMETIS binaries\r
++  AC_CHECKING(for ParMETIS binaries)\r
++  AC_CHECK_FILE(${PARMETISDIR}/lib/libparmetis.a,\r
++                parmetis_binaries_ok=yes,\r
++                parmetis_binaries_ok=no)\r
++fi\r
++\r
++if test "x${parmetis_binaries_ok}" = "xyes" ; then\r
++  AC_MSG_RESULT(\$PARMETIS_LIBS = ${PARMETIS_LIBS})\r
++fi\r
++AC_MSG_RESULT(for ParMETIS binaries: $parmetis_binaries_ok)\r
++\r
++CPPFLAGS="${CPPFLAGS_old}"\r
++LIBS="${LIBS_old}"\r
++\r
++if test "x${parmetis_headers_ok}" = "xyes" ; then\r
++  if test "x${parmetis_binaries_ok}" = "xyes" ; then\r
++    parmetis_ok=yes\r
++    ENABLE_PARMETIS="yes"\r
++  fi\r
++fi\r
++\r
++AC_MSG_RESULT(for ParMETIS: $parmetis_ok)\r
++\r
++AC_SUBST(ENABLE_PARMETIS)\r
++AC_SUBST(PARMETIS_CPPFLAGS)\r
++AC_SUBST(PARMETIS_LIBS)\r
++\r
++AC_LANG_RESTORE\r
++\r
++])dnl\r
+diff -rupN MEDCOUPLING_ori/adm_local/unix/config_files/check_scotch.m4 MEDCOUPLING_new/adm_local/unix/config_files/check_scotch.m4\r
+--- MEDCOUPLING_ori/adm_local/unix/config_files/check_scotch.m4        1970-01-01 01:00:00.000000000 +0100\r
++++ MEDCOUPLING_new/adm_local/unix/config_files/check_scotch.m4        2017-01-04 16:00:47.110484000 +0100\r
+@@ -0,0 +1,155 @@\r
++dnl Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE\r
++dnl\r
++dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
++dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS\r
++dnl\r
++dnl This library is free software; you can redistribute it and/or\r
++dnl modify it under the terms of the GNU Lesser General Public\r
++dnl License as published by the Free Software Foundation; either\r
++dnl version 2.1 of the License, or (at your option) any later version.\r
++dnl\r
++dnl This library is distributed in the hope that it will be useful,\r
++dnl but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
++dnl Lesser General Public License for more details.\r
++dnl\r
++dnl You should have received a copy of the GNU Lesser General Public\r
++dnl License along with this library; if not, write to the Free Software\r
++dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
++dnl\r
++dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
++dnl\r
++\r
++AC_DEFUN([CHECK_SCOTCH],[\r
++\r
++AC_CHECKING(for scotch)\r
++\r
++AC_LANG_SAVE\r
++AC_LANG_C\r
++\r
++dnl\r
++dnl default values\r
++dnl\r
++SCOTCH_CPPFLAGS="SCOTCH_CPPFLAGS_NOT_DEFINED"\r
++SCOTCH_LIBS="SCOTCH_LIBS_NOT_FOUND"\r
++SCOTCH_LIBSUFFIX="-not-defined"\r
++\r
++ENABLE_SCOTCH="no"\r
++\r
++AC_CHECKING(for scotch location)\r
++\r
++AC_ARG_WITH(scotch,\r
++            [  --with-scotch=DIR      root directory path to SCOTCH library installation ],\r
++            [SCOTCHDIR="$withval"\r
++             AC_MSG_RESULT([Select $withval as path to SCOTCH library])])\r
++\r
++if test "x${SCOTCHDIR}" == "x" ; then\r
++  AC_MSG_RESULT(for \${SCOTCH_ROOT_DIR}: ${SCOTCH_ROOT_DIR})\r
++   # --with-scotch option is not used\r
++   if test "x${SCOTCH_ROOT_DIR}" != "x" ; then\r
++      SCOTCHDIR=${SCOTCH_ROOT_DIR}\r
++   fi\r
++fi\r
++\r
++if test "x${SCOTCHDIR}" = "x" ; then\r
++  AC_MSG_WARN(SCOTCHDIR is not specified)\r
++  AC_MSG_NOTICE(Trying native scotch...)\r
++  SCOTCHDIR=/usr\r
++fi\r
++\r
++CPPFLAGS_old="${CPPFLAGS}"\r
++LIBS_old=$LIBS\r
++\r
++scotch_ok=no\r
++scotch_headers_ok=no\r
++scotch_binaries_ok=no\r
++\r
++dnl\r
++dnl SCOTCH headers\r
++dnl\r
++AC_CHECKING(for SCOTCH headers)\r
++\r
++for d in ${SCOTCHDIR}/include ${SCOTCHDIR}/include/scotch ${SCOTCHDIR}/bin ${SCOTCHDIR} ; do\r
++  dnl\r
++  dnl check scotch.h file availability\r
++  dnl\r
++  AC_CHECK_FILE([${d}/scotch.h],\r
++                [scotch_include_dir_ok=yes],\r
++                [scotch_include_dir_ok=no])\r
++\r
++  if test "x${scotch_include_dir_ok}" = "xyes" ; then\r
++    LOCAL_INCLUDES="-DMED_ENABLE_SCOTCH -I${d} ${MPI_INCLUDES}"\r
++    CPPFLAGS="${CPPFLAGS_old} ${LOCAL_INCLUDES} -std=c99"\r
++    AC_TRY_COMPILE([\r
++      #include <stdio.h>\r
++      #include <scotch.h>\r
++      ],\r
++      [SCOTCH_Graph* graph; SCOTCH_graphInit(graph)],\r
++      [scotch_headers_ok=yes],\r
++      [scotch_headers_ok=no])\r
++    if test "x${scotch_headers_ok}" = "xyes" ; then\r
++      break;\r
++    fi\r
++  fi\r
++done\r
++\r
++dnl\r
++dnl result for headers\r
++dnl\r
++AC_MSG_RESULT(for scotch headers: $scotch_headers_ok)\r
++\r
++dnl\r
++dnl SCOTCH libraries\r
++dnl\r
++if test "x${scotch_headers_ok}" = "xyes" ; then\r
++  AC_CHECKING(for scotch libraries)\r
++\r
++  for d in ${SCOTCHDIR}/lib ${SCOTCHDIR}/lib64 ${SCOTCHDIR}/lib/scotch ${SCOTCHDIR}/lib64/scotch ${SCOTCHDIR}/bin ${SCOTCHDIR} ; do\r
++    LOCAL_LIBS="-L${d} -lscotch -lscotcherr"\r
++    LIBS="${LIBS_old} ${LOCAL_LIBS}"\r
++    AC_TRY_LINK([\r
++      #include <stdio.h>\r
++      #include <scotch.h>\r
++      ],\r
++      [SCOTCH_Graph* graph; SCOTCH_graphInit(graph)],\r
++      [scotch_binaries_ok=yes],\r
++      [scotch_binaries_ok=no])\r
++    if test "x${scotch_binaries_ok}" = "xyes" ; then\r
++      break;\r
++    fi\r
++  done\r
++fi\r
++\r
++dnl\r
++dnl result for libraries\r
++dnl\r
++AC_MSG_RESULT(for scotch libraries: $scotch_binaries_ok)\r
++\r
++dnl\r
++dnl summary\r
++dnl\r
++if test "x${scotch_binaries_ok}" = "xyes" ; then\r
++  SCOTCH_CPPFLAGS=${LOCAL_INCLUDES}\r
++  SCOTCH_LIBS=${LOCAL_LIBS}\r
++  SCOTCH_LIBSUFFIX=""\r
++  ENABLE_SCOTCH="yes"\r
++  scotch_ok=yes\r
++  AC_MSG_RESULT(\$SCOTCH_CPPFLAGS  = ${SCOTCH_CPPFLAGS})\r
++  AC_MSG_RESULT(\$SCOTCH_LIBS      = ${SCOTCH_LIBS})\r
++  AC_MSG_RESULT(\$SCOTCH_LIBSUFFIX = ${SCOTCH_LIBSUFFIX})\r
++fi\r
++AC_MSG_RESULT(for scotch: $scotch_ok)\r
++\r
++CPPFLAGS="${CPPFLAGS_old}"\r
++LIBS="${LIBS_old}"\r
++\r
++AC_SUBST(SCOTCH_CPPFLAGS)\r
++AC_SUBST(SCOTCH_LIBSUFFIX)\r
++AC_SUBST(SCOTCH_LIBS)\r
++AC_SUBST(ENABLE_SCOTCH)\r
++\r
++AC_LANG_RESTORE\r
++\r
++])dnl\r
++\r
++\r
+diff -rupN MEDCOUPLING_ori/adm_local/unix/config_files/CMakeLists.txt MEDCOUPLING_new/adm_local/unix/config_files/CMakeLists.txt\r
+--- MEDCOUPLING_ori/adm_local/unix/config_files/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100\r
++++ MEDCOUPLING_new/adm_local/unix/config_files/CMakeLists.txt 2017-01-04 16:00:47.102538000 +0100\r
+@@ -0,0 +1,29 @@\r
++# Copyright (C) 2012-2016  CEA/DEN, EDF R&D\r
++#\r
++# This library is free software; you can redistribute it and/or\r
++# modify it under the terms of the GNU Lesser General Public\r
++# License as published by the Free Software Foundation; either\r
++# version 2.1 of the License, or (at your option) any later version.\r
++#\r
++# This library is distributed in the hope that it will be useful,\r
++# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
++# Lesser General Public License for more details.\r
++#\r
++# You should have received a copy of the GNU Lesser General Public\r
++# License along with this library; if not, write to the Free Software\r
++# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
++#\r
++# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
++#\r
++\r
++SET(dist_admlocalm4_DATA\r
++    check_MEDCOUPLING.m4\r
++    check_parmetis.m4\r
++    check_scotch.m4\r
++)\r
++\r
++FOREACH(f ${dist_admlocalm4_DATA})\r
++  SET(DEST adm_local/unix/config_files)\r
++  INSTALL(FILES ${f} DESTINATION ${DEST})\r
++ENDFOREACH(f ${dist_admlocalm4_DATA})\r
+diff -rupN MEDCOUPLING_ori/CMakeLists.txt MEDCOUPLING_new/CMakeLists.txt\r
+--- MEDCOUPLING_ori/CMakeLists.txt     2017-01-17 09:39:14.489728365 +0100\r
++++ MEDCOUPLING_new/CMakeLists.txt     2017-01-04 16:25:17.608100119 +0100\r
+@@ -214,6 +214,7 @@ IF(WIN32)\r
+ ENDIF(WIN32)\r
\r
+ ADD_SUBDIRECTORY(src)\r
++ADD_SUBDIRECTORY(adm_local)\r
+ ADD_SUBDIRECTORY(cmake_files)\r
\r
+ IF(MEDCOUPLING_BUILD_DOC)\r
diff --git a/products/patches/medcoupling_salome_9_0_0.patch b/products/patches/medcoupling_salome_9_0_0.patch
new file mode 100644 (file)
index 0000000..91e7161
--- /dev/null
@@ -0,0 +1,38874 @@
+diff -Naur MEDCOUPLING_old/CMakeLists.txt MEDCOUPLING_new/CMakeLists.txt
+--- MEDCOUPLING_old/CMakeLists.txt     2018-04-19 17:04:36.583219652 +0200
++++ MEDCOUPLING_new/CMakeLists.txt     2018-04-19 17:25:17.227787276 +0200
+@@ -30,7 +30,7 @@
+ STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
+ SET(${PROJECT_NAME_UC}_MAJOR_VERSION 8)
+-SET(${PROJECT_NAME_UC}_MINOR_VERSION 3)
++SET(${PROJECT_NAME_UC}_MINOR_VERSION 4)
+ SET(${PROJECT_NAME_UC}_PATCH_VERSION 0)
+ SET(${PROJECT_NAME_UC}_VERSION
+   ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
+@@ -52,7 +52,7 @@
+ # User options
+ # ============
+ INCLUDE(CMakeDependentOption)
+-OPTION(MEDCOUPLING_MICROMED "Build MED without MED file dependancy." OFF)
++OPTION(MEDCOUPLING_MICROMED "Build MED without MED file dependency." OFF)
+ OPTION(MEDCOUPLING_ENABLE_PYTHON "Build PYTHON bindings." ON)
+ OPTION(MEDCOUPLING_ENABLE_PARTITIONER "Build MEDPartitioner." ON)
+ OPTION(MEDCOUPLING_ENABLE_RENUMBER "Build Renumber." ON)
+@@ -69,9 +69,11 @@
+ CMAKE_DEPENDENT_OPTION(MEDCOUPLING_PARTITIONER_METIS "Enable metis graph library in MEDPartitioner."  ${USE_METIS_NOT_PARMETIS}
+         "MEDCOUPLING_ENABLE_PARTITIONER" OFF)
+ CMAKE_DEPENDENT_OPTION(MEDCOUPLING_PARTITIONER_SCOTCH "Enable scotch graph library in MEDPartitioner." ON 
+-        "MEDCOUPLING_ENABLE_PARTITIONER;NOT MEDCOUPLING_USE_MPI" OFF)
++        "MEDCOUPLING_ENABLE_PARTITIONER" OFF)
+ CMAKE_DEPENDENT_OPTION(MEDCOUPLING_PARTITIONER_PARMETIS "Enable parmetis graph library in MEDPartitioner." ${MEDCOUPLING_USE_MPI} 
+         "MEDCOUPLING_ENABLE_PARTITIONER;MEDCOUPLING_USE_MPI" OFF)
++CMAKE_DEPENDENT_OPTION(MEDCOUPLING_PARTITIONER_PTSCOTCH "Enable ptscotch graph library in MEDPartitioner." ${MEDCOUPLING_USE_MPI} 
++        "MEDCOUPLING_ENABLE_PARTITIONER;MEDCOUPLING_USE_MPI" OFF)
+ SET(XDR_DEFAULT_OPTION ON)
+ IF(WIN32)
+     SET(XDR_DEFAULT_OPTION OFF)
+@@ -89,6 +91,10 @@
+     MESSAGE(FATAL_ERROR "ParMetis and Metis are mutually exclusive! Make a choice (options MEDCOUPLING_PARTITIONER_METIS and MEDCOUPLING_PARTITIONER_PARMETIS).")
+ ENDIF()
++IF(${MEDCOUPLING_PARTITIONER_PTSCOTCH} AND ${MEDCOUPLING_PARTITIONER_SCOTCH})
++    MESSAGE(FATAL_ERROR "PTScotch and Scotch are mutually exclusive! Make a choice (options MEDCOUPLING_PARTITIONER_SCOTCH and MEDCOUPLING_PARTITIONER_PTSCOTCH).")
++ENDIF()
++
+ #
+ # Set list of prerequisites
+ # =========================
+@@ -138,6 +144,13 @@
+       ADD_DEFINITIONS("-DMED_ENABLE_PARMETIS")
+     ENDIF()
+   ENDIF(MEDCOUPLING_PARTITIONER_PARMETIS)
++  IF(MEDCOUPLING_PARTITIONER_PTSCOTCH)
++    FIND_PACKAGE(SalomePTScotch)
++    SALOME_LOG_OPTIONAL_PACKAGE(PTScotch MEDCOUPLING_PARTITIONER_PTSCOTCH)
++    IF(SalomePTScotch_FOUND)
++      ADD_DEFINITIONS("-DMED_ENABLE_PTSCOTCH")
++    ENDIF(SalomePTScotch_FOUND)
++  ENDIF(MEDCOUPLING_PARTITIONER_PTSCOTCH)
+ ENDIF(MEDCOUPLING_USE_MPI)
+ IF(MEDCOUPLING_ENABLE_RENUMBER)
+@@ -245,7 +258,7 @@
+ # List of targets in this project we want to make visible to the rest of the world.
+ # They all have to be INSTALL'd with the option "EXPORT ${PROJECT_NAME}TargetGroup"
+ SET(_${PROJECT_NAME}_exposed_targets
+-   interpkernel medcoupling medcouplingremapper)
++   interpkernel medcouplingcpp medcouplingremapper)
+ IF(NOT MEDCOUPLING_MICROMED)
+   LIST(APPEND _${PROJECT_NAME}_exposed_targets medloader)
+diff -Naur MEDCOUPLING_old/doc/tutorial/atestMEDLoaderAdvancedAPI1.rst MEDCOUPLING_new/doc/tutorial/atestMEDLoaderAdvancedAPI1.rst
+--- MEDCOUPLING_old/doc/tutorial/atestMEDLoaderAdvancedAPI1.rst        2018-04-19 17:04:36.585219692 +0200
++++ MEDCOUPLING_new/doc/tutorial/atestMEDLoaderAdvancedAPI1.rst        2018-04-19 17:25:17.221787157 +0200
+@@ -89,6 +89,6 @@
+       #
+       fMEDFileRead2 = ml.MEDFileField1TS("TargetMesh2.med",fPart.getName(),7,8)
+       fPartRead, pflRead = fMEDFileRead2.getFieldWithProfile(ml.ON_CELLS,0,meshMEDFileRead)
+-      print "Is the partial field correclty read?", fPartRead.isEqualWithoutConsideringStr(fPart.getArray(),1e-12)
++      print "Is the partial field correctly read?", fPartRead.isEqualWithoutConsideringStr(fPart.getArray(),1e-12)
+       print "Is the list of cell identifiers matching?", pflRead.isEqualWithoutConsideringStr(pfl)
+       
+diff -Naur MEDCOUPLING_old/doc/tutorial/atestMEDLoaderBasicAPI1.rst MEDCOUPLING_new/doc/tutorial/atestMEDLoaderBasicAPI1.rst
+--- MEDCOUPLING_old/doc/tutorial/atestMEDLoaderBasicAPI1.rst   2018-04-19 17:04:36.585219692 +0200
++++ MEDCOUPLING_new/doc/tutorial/atestMEDLoaderBasicAPI1.rst   2018-04-19 17:25:17.170786149 +0200
+@@ -32,7 +32,7 @@
+       f.setMesh(targetMesh)
+       f.setName("AFieldName")
+       ml.WriteField("MyFirstField.med",f,True)
+-      # Re-read it ans test equality
++      # Re-read it and test equality
+       f2 = ml.ReadFieldCell("MyFirstField.med", f.getMesh().getName(), 0, f.getName(), 7, 8)
+       print "Is the read field identical to 'f' ?", f2.isEqual(f,1e-12,1e-12)
+       # Writing in several steps 
+diff -Naur MEDCOUPLING_old/doc/tutorial/medcoupling_2Dpolygon.rst MEDCOUPLING_new/doc/tutorial/medcoupling_2Dpolygon.rst
+--- MEDCOUPLING_old/doc/tutorial/medcoupling_2Dpolygon.rst     2018-04-19 17:04:36.627220529 +0200
++++ MEDCOUPLING_new/doc/tutorial/medcoupling_2Dpolygon.rst     2018-04-19 17:25:17.133785418 +0200
+@@ -20,7 +20,7 @@
+       from math import *
+-Then we must instanciate a meshing object::
++Then we must instantiate a meshing object::
+       mesh=MEDCouplingUMesh.New()
+       mesh.setMeshDimension(2)
+diff -Naur MEDCOUPLING_old/doc/tutorial/medcoupling_3Dcube.rst MEDCOUPLING_new/doc/tutorial/medcoupling_3Dcube.rst
+--- MEDCOUPLING_old/doc/tutorial/medcoupling_3Dcube.rst        2018-04-19 17:04:36.627220529 +0200
++++ MEDCOUPLING_new/doc/tutorial/medcoupling_3Dcube.rst        2018-04-19 17:25:17.106784884 +0200
+@@ -39,7 +39,7 @@
+ Classical method
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-First instanciate a meshing object. Therefore, we need to define :
++First instantiate a meshing object. Therefore, we need to define :
+  * its name
+  * its dimension
+@@ -248,7 +248,7 @@
+  * its values
+  
+-The field will be a sin function dependant of distance of the barycenter of each cell from origin. So we need to create a barycenter field on the 3D mesh::
++The field will be a sin function dependent of distance of the barycenter of each cell from origin. So we need to create a barycenter field on the 3D mesh::
+       # Creation of field : with following definition
+       # => Definition of the mesh support
+diff -Naur MEDCOUPLING_old/doc/tutorial/medcoupling_dataarray1_fr.rst MEDCOUPLING_new/doc/tutorial/medcoupling_dataarray1_fr.rst
+--- MEDCOUPLING_old/doc/tutorial/medcoupling_dataarray1_fr.rst 2018-04-19 17:04:36.627220529 +0200
++++ MEDCOUPLING_new/doc/tutorial/medcoupling_dataarray1_fr.rst 2018-04-19 17:25:17.128785319 +0200
+@@ -179,7 +179,7 @@
+ La méthode ``findCommonTuples()`` retourne ainsi 2 paramètres: un tableau contenant la liste des tuples communs 
+ et un tableau d'index qui permet de naviguer dans le premier tableau.    
+ Il s'agit d'une forme de retour très classique dans MEDCoupling, appelée *indirect indexing*. Cela apparaît souvent dans la manipulation des 
+-maillages non structurés. Cette représentation est rappelée sur l'image ci-dessous, où le premier tableau et en haut, 
++maillages non structurés. Cette représentation est rappelée sur l'image ci-dessous, où le premier tableau est en haut, 
+ et le deuxième tableau permettant de la parcourir en bas:
+ .. image:: images/IndirectIndex.jpg
+@@ -288,7 +288,7 @@
+       d3 += [3.3,4.4]
+-Constuire un maillage non strucuturé
++Constuire un maillage non structuré
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ On chercher maintenant à créer le maillage final montré dans la figure. Nous avons déjà construit le tableau
+diff -Naur MEDCOUPLING_old/doc/tutorial/medcouplingloaderex2_en.rst MEDCOUPLING_new/doc/tutorial/medcouplingloaderex2_en.rst
+--- MEDCOUPLING_old/doc/tutorial/medcouplingloaderex2_en.rst   2018-04-19 17:04:36.628220549 +0200
++++ MEDCOUPLING_new/doc/tutorial/medcouplingloaderex2_en.rst   2018-04-19 17:25:17.175786248 +0200
+@@ -102,7 +102,7 @@
+ .. image:: images/zone1Mobm.jpg
+ From now on we work on "zone1Mobm". We will reduce the working area of "fixm" around "zone1Mobm".
+-To achive this: reduce "fixm" taking only "fixm" cells located in the bounding box of "zone1Mobm" (MEDCouplingUMesh.getBoundingBox() and MEDCouplingUMesh.getCellsInBoundingBox()).
++To achieve this: reduce "fixm" taking only "fixm" cells located in the bounding box of "zone1Mobm" (MEDCouplingUMesh.getBoundingBox() and MEDCouplingUMesh.getCellsInBoundingBox()).
+ Name this object "partFixm", remove its orphan nodes and display it. ::
+       ids2=fixm.getCellsInBoundingBox(zone1Mobm.getBoundingBox(),1e-10)
+diff -Naur MEDCOUPLING_old/doc/tutorial/medcouplingmultiproc_fr.rst MEDCOUPLING_new/doc/tutorial/medcouplingmultiproc_fr.rst
+--- MEDCOUPLING_old/doc/tutorial/medcouplingmultiproc_fr.rst   2018-04-19 17:04:36.628220549 +0200
++++ MEDCOUPLING_new/doc/tutorial/medcouplingmultiproc_fr.rst   2018-04-19 17:25:17.167786090 +0200
+@@ -67,14 +67,13 @@
+ L'idée est d'interpoler ``m`` avec ``m2Part``.
+ On récupèrera ensuite la matrice sparse ``myMat`` issue de ``m`` avec ``m2Part``.
+-Ensuite l'idée et de générer une matrice sparse ``mat2`` à partir de ``myMat`` avec les ids globaux de ``m2``. ::
++Ensuite l'idée est de générer une matrice sparse ``mat2`` à partir de ``myMat`` avec les ids globaux de ``m2``. ::
+       def work(inp):
+             m2Part,partToGlob=inp
+           myRemap=mr.MEDCouplingRemapper()
+           assert(myRemap.prepare(m,m2Part,"P0P0")==1)
+           myMat=myRemap.getCrudeCSRMatrix()
+-          a=mc.DataArrayInt.Range(s.start,s.stop,s.step)
+           indptrnew=mc.DataArrayInt(m2.getNumberOfCells())
+           indptrnew.fillWithZero()
+           d=mc.DataArrayInt(myMat.indptr).deltaShiftIndex()
+diff -Naur MEDCOUPLING_old/doc/tutorial/medcoupling_umesh1_en.rst MEDCOUPLING_new/doc/tutorial/medcoupling_umesh1_en.rst
+--- MEDCOUPLING_old/doc/tutorial/medcoupling_umesh1_en.rst     2018-04-19 17:04:36.627220529 +0200
++++ MEDCOUPLING_new/doc/tutorial/medcoupling_umesh1_en.rst     2018-04-19 17:25:17.223787197 +0200
+@@ -189,7 +189,7 @@
+         mesh3DSlice2bis.translate([0.,1000.,0.])
+         mesh3DSlice2All=MEDCouplingUMesh.MergeUMeshes([mesh3DSlice2,mesh3DSlice2bis])
+-.. note:: My apologies for the name of the method MEDCouplingUMesh.MergeUMeshes. In future version it will be called AggregateUMeshes. For information, to merge two (or more) unstructured meshes, one has to invoke MergeUMeshes(), then mergeNodes() on the result, and finally zipConnectivity().
++.. note:: My apologies for the name of the method MEDCouplingUMesh.MergeUMeshes. In future version it will be called AggregateUMeshes. For information, to merge two (or more) unstructured meshes, one has to invoke MergeUMeshes(), then mergeNodes() on the result, and finally zipConnectivityTraducer().
+ Descending connectivity
+diff -Naur MEDCOUPLING_old/doc/tutorial/medcoupling_umesh1_fr.rst MEDCOUPLING_new/doc/tutorial/medcoupling_umesh1_fr.rst
+--- MEDCOUPLING_old/doc/tutorial/medcoupling_umesh1_fr.rst     2018-04-19 17:04:36.627220529 +0200
++++ MEDCOUPLING_new/doc/tutorial/medcoupling_umesh1_fr.rst     2018-04-19 17:25:17.172786189 +0200
+@@ -111,8 +111,6 @@
+       critères géométriques.
+       Il s'agit d'abord de calculer les barycentres des cellules 3D de ``mesh3D`` (méthode 
+       ``MEDCouplingUMesh.computeCellCenterOfMass()``).
+-      (*Note*: le nom -- un peu trop long -- de cette méthode hérite du passé. Le "AndOwner" indique le fait qu'en C++
+-      l'appelant est responsable de la désallocation de l'objet retourné : il prend l'*ownership* du résultat). 
+       
+       Ensuite sélectionner la composante #2 des barycentres des cellules et mettre le résultat dans ``baryZ``.
+       Ensuite il suffit de selectionner dans ``baryZ`` les tuples qui sont dans l'intervalle ``[zLev[1], zLev[2]]``. 
+@@ -248,7 +246,7 @@
+       mesh3DSlice2All.writeVTK("mesh3DSlice2All.vtu")
+ .. note:: Pour information pour merger deux (ou plus) maillages non structurés, il faut invoquer ``MEDCouplingUMesh.MergeUMeshes()``
+-      puis ``MEDCouplingUMesh.mergeNodes()`` sur le résultat, et enfin ``MEDCouplingUMesh.zipConnectivity()``.
++      puis ``MEDCouplingUMesh.mergeNodes()`` sur le résultat, et enfin ``MEDCouplingUMesh.zipConnectivityTraducer()``.
+ .. _exo-umesh-desc-connec:
+diff -Naur MEDCOUPLING_old/doc/tutorial/medloader_advancedAPI1_fr.rst MEDCOUPLING_new/doc/tutorial/medloader_advancedAPI1_fr.rst
+--- MEDCOUPLING_old/doc/tutorial/medloader_advancedAPI1_fr.rst 2018-04-19 17:04:36.628220549 +0200
++++ MEDCOUPLING_new/doc/tutorial/medloader_advancedAPI1_fr.rst 2018-04-19 17:25:17.169786129 +0200
+@@ -180,7 +180,7 @@
+       fMEDFileRead2 = ml.MEDFileField1TS("TargetMesh2.med",fPart.getName(),7,8)
+       fPartRead, pflRead = fMEDFileRead2.getFieldWithProfile(ml.ON_CELLS,0,meshMEDFileRead)
+-      print "Is the partial field correclty read?", fPartRead.isEqualWithoutConsideringStr(fPart.getArray(),1e-12)
++      print "Is the partial field correctly read?", fPartRead.isEqualWithoutConsideringStr(fPart.getArray(),1e-12)
+       print "Is the list of cell identifiers matching?", pflRead.isEqualWithoutConsideringStr(pfl)
+ Solution
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/appendix/install.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/appendix/install.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/appendix/install.dox     2018-04-19 17:04:36.629220569 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/appendix/install.dox     2018-04-19 17:25:17.099784746 +0200
+@@ -22,7 +22,7 @@
+ - \a -DMEDCOUPLING_PARTITIONER_METIS=ON enables metis graph library in MEDPartitioner,
+ - \a -DMEDCOUPLING_PARTITIONER_PARMETIS=ON enables parmetis graph library in MEDPartitioner,
+ - \a -DMEDCOUPLING_PARTITIONER_SCOTCH=ON enables scotch graph library in MEDPartitioner,
+-- \a -DMEDCOUPLING_MICROMED=ON build MED with MED file dependancy,
++- \a -DMEDCOUPLING_MICROMED=ON build MED with MED file dependency,
+ - \a -DMEDCOUPLING_ENABLE_PYTHON=ON builds PYTHON bindings,
+ - \a -DMEDCOUPLING_ENABLE_PARTITIONER builds MEDPartitioner,
+ - \a -DMEDCOUPLING_ENABLE_RENUMBER builds Renumber,
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/appendix/porting.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/appendix/porting.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/appendix/porting.dox     2018-04-19 17:04:36.629220569 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/appendix/porting.dox     2018-04-19 17:25:17.100784765 +0200
+@@ -34,9 +34,9 @@
+ The MEDLoader high level API is hence accessible:
+  - at the MEDCoupling namespace level in C++ (direct static functions, no more MEDLoader class)
+  - at the MEDLoader module level in Python. Scripts using the high level API of the MEDLoader
+-typically need to get read of all the occurences of "MEDLoader." in their code.  
++typically need to get read of all the occurrences of "MEDLoader." in their code.  
+-Note that on the Python side the module MEDLoader is still here, but doesn't containt the MEDLoader class anymore.
++Note that on the Python side the module MEDLoader is still here, but doesn't contain the MEDLoader class anymore.
+ As before it re-includes all of MEDCoupling classes, plus the low level MEDLoader classes (MEDFile* classes).
+ \section port-full-ref Name changes - Reference list
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/appendix/references.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/appendix/references.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/appendix/references.dox  2018-04-19 17:04:36.629220569 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/appendix/references.dox  2018-04-19 17:25:17.097784706 +0200
+@@ -2,7 +2,7 @@
+ \page references References 
+-Here follows a list of useful references :
++Below is a list of useful references :
+ -# \anchor RefManualMedFile Reference Manual for Med File, V. Lefebvre,  E. Fayolle, Projet PAL: D&eacute;finition du mod&egrave;le d'&eacute;change de donn&eacute;es MED V2.2,  Note technique EDF/SINETICS, HI-26-03-012/A, https://hammi.extra.cea.fr/static/MED/web_med/index.html
+ -# VTK home page: \c http://public.kitware.com/VTK
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/examples/medcouplingexamplesmeshes.doxy MEDCOUPLING_new/doc/user/doxygen/doxfiles/examples/medcouplingexamplesmeshes.doxy
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/examples/medcouplingexamplesmeshes.doxy  2018-04-19 17:04:36.630220589 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/examples/medcouplingexamplesmeshes.doxy  2018-04-19 17:25:17.044783658 +0200
+@@ -102,7 +102,7 @@
+ \snippet MEDCouplingExamplesTest.cxx CppSnippet_MEDCouplingUMesh_buildFacePartOfMySelfNode_2
+ <br>If the last parameter is \c true
+ \ref MEDCoupling::MEDCouplingUMesh::buildFacePartOfMySelfNode "buildFacePartOfMySelfNode()" looks
+-for segements whose all nodes are given to it, hence it finds segments bounding the cell #0 only.
++for segments whose all nodes are given to it, hence it finds segments bounding the cell #0 only.
+ <br>If the last parameter is \c false
+ \ref MEDCoupling::MEDCouplingUMesh::buildFacePartOfMySelfNode "buildFacePartOfMySelfNode()" looks
+ for any segment whose nodes are given to it, hence it adds more segments to \b mesh2.
+@@ -549,7 +549,7 @@
+   - #4 (== \b desc[ \b descIndx[ 0 ] + 3 ]).
+   <br>Ids are positive since order of nodes in the corresponding cells of \b mesh and \b mesh2
+   are same. For example nodes of SEG2 #3 are [4,1] and nodes of QUAD4 #0 are [0,3,\b 4,\b 1].
+-- The cell #1 of \b mesh (TRI3) is bound by 3 (== \b descIndx[2] - \b descIndx[1]) segements of
++- The cell #1 of \b mesh (TRI3) is bound by 3 (== \b descIndx[2] - \b descIndx[1]) segments of
+   \b mesh2 whose ids in FORTRAN mode are:
+   - #-3 (== \b desc[ \b descIndx[ 1 ]]),
+   - #5 (== \b desc[ \b descIndx[ 1 ] + 1 ]) and
+@@ -582,7 +582,7 @@
+   - #1 (== \b desc[ \b descIndx[ 0 ] + 1 ]),
+   - #2 (== \b desc[ \b descIndx[ 0 ] + 2 ]) and
+   - #3 (== \b desc[ \b descIndx[ 0 ] + 3 ]).
+-- The cell #1 of \b mesh (TRI3) is bound by 3 (== \b descIndx[2] - \b descIndx[1]) segements of
++- The cell #1 of \b mesh (TRI3) is bound by 3 (== \b descIndx[2] - \b descIndx[1]) segments of
+   \b mesh2 whose ids are:
+   - #2 (== \b desc[ \b descIndx[ 1 ]]),
+   - #4 (== \b desc[ \b descIndx[ 1 ] + 1 ]) and
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/examples/medcouplingexamplesother.doxy MEDCOUPLING_new/doc/user/doxygen/doxfiles/examples/medcouplingexamplesother.doxy
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/examples/medcouplingexamplesother.doxy   2018-04-19 17:04:36.630220589 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/examples/medcouplingexamplesother.doxy   2018-04-19 17:25:17.047783718 +0200
+@@ -203,7 +203,7 @@
+ \ref medcoupling "MEDCoupling" allows to make bridges between the approaches. For example \a pfl \ref MEDCoupling::DataArrayInt "DataArrayInt instance" retrieved directly
+ from the file in the second approach can be retrieved starting from first approach.
+-Starting from mesh \a firstApproachMesh of read field in first approach \a fread, whith the whole mesh \a wholeMesh the profile \a pflComputed can be computed :
++Starting from mesh \a firstApproachMesh of read field in first approach \a fread, with the whole mesh \a wholeMesh the profile \a pflComputed can be computed :
+ \snippet MEDLoaderExamplesTest.py PySnippetReadFieldPartial1_5
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/faq.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/faq.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/faq.dox  2018-04-19 17:04:36.630220589 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/faq.dox  2018-04-19 17:25:17.056783896 +0200
+@@ -46,7 +46,7 @@
+ Take a look at \ref library
+ \subsubsection f-visu How can I visualize a mesh and/or a field?
+-Use the PARAVIS module of SALOME to visualize your MED file. The following dedicated fitlers have been 
++Use the PARAVIS module of SALOME to visualize your MED file. The following dedicated filters have been 
+ written specifically for MED files: Extract group, Extract cell types, ELNO Mesh, ELNO Points, ELNO Surface.
+ \subsubsection f-p0p1 What does a P0- (or P1-) field mean?
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/arrays/arrays.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/arrays/arrays.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/arrays/arrays.dox      2018-04-19 17:04:36.630220589 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/arrays/arrays.dox      2018-04-19 17:25:17.094784647 +0200
+@@ -15,7 +15,7 @@
+ understood to efficiently deal with \ref meshes "Meshes" and \ref fields "Fields".
+ \ref MEDCoupling::DataArray "DataArrays" are the atomic element of potentially heavy-memory objects in 
+-the 3 modules mentionned above.
++the 3 modules mentioned above.
+ There are for the moment two types of arrays :
+  - double precision float (64 bits) array incarnated by \ref MEDCoupling::DataArrayDouble "DataArrayDouble class".
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/arrays/numbering.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/arrays/numbering.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/arrays/numbering.dox   2018-04-19 17:04:36.630220589 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/arrays/numbering.dox   2018-04-19 17:25:17.092784607 +0200
+@@ -16,7 +16,7 @@
+ \section MEDCouplingArrayRenumberingO2N Old-to-new mode
+-The old to new mode is particularly recommanded for surjective and bijective applications. This 
++The old to new mode is particularly recommended for surjective and bijective applications. This 
+ is typically the case of \ref MEDCoupling::MEDCouplingUMesh::mergeNodes "MEDCouplingUMesh::mergeNodes" method.
+ Let's consider a call to \ref MEDCoupling::MEDCouplingUMesh::mergeNodes "mergeNodes" that reduces the 
+ number of nodes from 5 nodes to 3 nodes.\n
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/cpp/cpp.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/cpp/cpp.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/cpp/cpp.dox    2018-04-19 17:04:36.630220589 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/cpp/cpp.dox    2018-04-19 17:25:17.091784588 +0200
+@@ -1,5 +1,5 @@
+ /*!
+-  \page cpp Note for C++ developpers
++  \page cpp Note for C++ developers
+   
+ Using the C++ API provided by MED requires you to be familiar with some specificities which are not
+ visible to the Python user.
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/distrib/parallel.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/distrib/parallel.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/distrib/parallel.dox   2018-04-19 17:04:36.630220589 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/distrib/parallel.dox   2018-04-19 17:25:17.064784054 +0200
+@@ -12,8 +12,8 @@
+ The core elements of the API are:
+ - \ref CommInterface-det "CommInterface", this is the wrapper around the MPI library, and an instance
+ of this object is required in many constructors of the following objects.  
+-- \ref ParaMESH-det "ParaMESH", the parallel instanciation of a \ref meshes "MEDCoupling mesh" 
+-- \ref ParaFIELD-det "ParaFIELD", the parallel instanciation of a \ref fields "MEDCoupling field"
++- \ref ParaMESH-det "ParaMESH", the parallel instantiation of a \ref meshes "MEDCoupling mesh" 
++- \ref ParaFIELD-det "ParaFIELD", the parallel instantiation of a \ref fields "MEDCoupling field"
+ - \ref MPIProcessorGroup-det "MPIProcessorGroup" (which inherits from the abstract 
+ \ref MEDCoupling::ProcessorGroup "ProcessorGroup"), a group of processors (typically MPI nodes)
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/fields/discretization.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/fields/discretization.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/fields/discretization.dox      2018-04-19 17:04:36.630220589 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/fields/discretization.dox      2018-04-19 17:25:17.073784232 +0200
+@@ -23,10 +23,10 @@
+     - Kriging points:  built with \ref MEDCoupling::TypeOfField "ON_NODES_KR"
+ The spatial discretization is at the center of the \ref interpolation "interpolation" mechanisms,
+-since one of the main interpolation paramter is indeed specifying from which source discretization
++since one of the main interpolation parameter is indeed specifying from which source discretization
+ to which target discretization one wants to go. For example:
+-- a P0->P0 interpolation means that a field on cells will be transfered to another cell-based field;
+-- a P1->P0 interpolation means that a field on nodes this time will be transfered to a cell-based field. 
++- a P0->P0 interpolation means that a field on cells will be transferred to another cell-based field;
++- a P1->P0 interpolation means that a field on nodes this time will be transferred to a cell-based field. 
+ - etc ...
+ Finally, in the code itself, the class \ref MEDCoupling::MEDCouplingFieldDiscretization "MEDCouplingFieldDiscretization"
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/interpolation/Geometric2D.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/Geometric2D.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/interpolation/Geometric2D.dox  2018-04-19 17:04:36.630220589 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/Geometric2D.dox  2018-04-19 17:25:17.081784390 +0200
+@@ -106,7 +106,7 @@
+ \subsection interpkernelGeo2DBoolOpStep3 Step3 : Result polygon building.
+ This stage links each edge with wanted loc. \b Contrary to last 2 steps it is obviously boolean
+-operation dependant. Let's take the case of the intersection that is used in
++operation dependent. Let's take the case of the intersection that is used in
+ P0->P0 interpolation. \n The principle of result polygon building is to build polygon by taking
+ edges localized as \b in or \b on.
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/interpolation/interptheory.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/interptheory.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/interpolation/interptheory.dox 2018-04-19 17:04:36.631220609 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/interptheory.dox 2018-04-19 17:25:17.084784449 +0200
+@@ -257,7 +257,7 @@
+     \end{tabular}\right]
+ \f]
+-This type of nature is particulary recommended to interpolate an intensive \b density
++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
+ target field is homogenized to the \b whole target cell. It explains why this nature of field does not follow the maximum principle.
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox  2018-04-19 17:04:36.631220609 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/interpolation/mapped_bary.dox  2018-04-19 17:25:17.076784291 +0200
+@@ -46,7 +46,7 @@
+ \subsection{Rectangle}
+-Finally it is worth puting aside the case \f$\mathbf{N} = 0\f$ (rectangle), which boils down to solving an ordinary
++Finally it is worth putting aside the case \f$\mathbf{N} = 0\f$ (rectangle), which boils down to solving an ordinary
+ 2-unknows system:
+ \f[ x = \frac{p_x A_y - p_y A_x}{C_x A_y - C_y A_x}, y = \frac{C_x p_y-C_y p_x}{C_x A_y - C_y A_x} \f]
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/meshes/meshes.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/meshes/meshes.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/meshes/meshes.dox      2018-04-19 17:04:36.632220629 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/meshes/meshes.dox      2018-04-19 17:25:17.070784173 +0200
+@@ -6,7 +6,7 @@
+ Several types of meshes are available in MEDCoupling:
+-- \subpage MEDCouplingPointSetPage "Point set mesh" (abstract, can not be instanciated)
++- \subpage MEDCouplingPointSetPage "Point set mesh" (abstract, can not be instantiated)
+ - \subpage MEDCouplingUMeshPage "Unstructured meshes"
+ - \subpage MEDCouplingCMeshPage "Cartesian meshes"
+ - \subpage MEDCouplingExtrudedPage "3D Extruded meshes"
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/misc/tools.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/misc/tools.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/reference/misc/tools.dox 2018-04-19 17:04:36.632220629 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/reference/misc/tools.dox 2018-04-19 17:25:17.086784489 +0200
+@@ -55,7 +55,7 @@
+         --meshname=<string>    : name of the input mesh (not used with --distributed option)
+         --ndomains=<number>    : number of subdomains in the output file, default is 1
+         --plain-master         : creates a plain masterfile instead of an XML file
+-        --creates-boundary-faces: creates the necessary faces so that faces joints are created in the output files
++        --create-boundary-faces: creates the necessary faces so that faces joints are created in the output files
+         --family-splitting     : preserves the family names instead of focusing on the groups
+ \endcode
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/start/library.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/start/library.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/start/library.dox        2018-04-19 17:04:36.632220629 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/start/library.dox        2018-04-19 17:25:17.050783777 +0200
+@@ -8,7 +8,7 @@
+ "MED" can (unfortunately) refer to:
+ - <b>\ref med-file "MED file format"</b>: the file format used to save a mesh (".med" extension)
+-- <b>\ref med-file "MED-file library"</b>: the C++ library developped by EdF R&D (and provided
++- <b>\ref med-file "MED-file library"</b>: the C++ library developed by EdF R&D (and provided
+  with SALOME) to read/write MED file (warning: for advanced users only!)
+ - <b> \ref medcoupling "MEDCoupling"</b>: the (relatively) high level API to deal with mesh and fields in memory
+ - <b>\ref medloader MEDLoader</b>: part of the library dedicated to file I/O = a more user-friendly API than the MED-file library API
+@@ -19,7 +19,7 @@
+ The most common confusion is between the MED library (what you are reading at present) and
+ the MED-file library ("MED fichier").
+-The MED-file library is part of the prerequisites of the MED libary, and its only purpose is to read and write
++The MED-file library is part of the prerequisites of the MED library, and its only purpose is to read and write
+ MED files. This is a low level API written in C, and giving a fine-grain access to the structure
+ of the MED files (.med). The architecture diagramm below details those points further.
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/doxfiles/start/start.dox MEDCOUPLING_new/doc/user/doxygen/doxfiles/start/start.dox
+--- MEDCOUPLING_old/doc/user/doxygen/doxfiles/start/start.dox  2018-04-19 17:04:36.632220629 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/doxfiles/start/start.dox  2018-04-19 17:25:17.055783876 +0200
+@@ -1,7 +1,7 @@
+ /*!
+ \page start Getting started
+-If you are completly new to MED, this page will help you grasp the main concepts
++If you are completely new to MED, this page will help you grasp the main concepts
+ used overall in the \ref library "MED world", and have an idea of what you can achieve with MED.
+ The <a class="el" href="tutorial/index.html">tutorial</a> is also a good way to start.
+diff -Naur MEDCOUPLING_old/doc/user/doxygen/Doxyfile_med_user.in MEDCOUPLING_new/doc/user/doxygen/Doxyfile_med_user.in
+--- MEDCOUPLING_old/doc/user/doxygen/Doxyfile_med_user.in      2018-04-19 17:04:36.629220569 +0200
++++ MEDCOUPLING_new/doc/user/doxygen/Doxyfile_med_user.in      2018-04-19 17:25:16.841779646 +0200
+@@ -161,8 +161,13 @@
+                          MEDFileData.*xx \
+                          MEDFileParameter.*xx \
+                          MEDFileMesh.*xx \
++                       MEDFileFieldGlobs.*xx \
++                       MEDFileFieldInternal.*xx \
++                       MEDFileField1TS.*xx \
++                       MEDFileFieldMultiTS.*xx \
+                          MEDFileField.*xx \
+-                         *Servant.*xx \
++                       MEDFileFieldVisitor.hxx \
++                       *Servant.*xx \
+                          *.dox
+ RECURSIVE              = YES
+ EXCLUDE                = CVS
+diff -Naur MEDCOUPLING_old/MEDCouplingConfig.cmake.in MEDCOUPLING_new/MEDCouplingConfig.cmake.in
+--- MEDCOUPLING_old/MEDCouplingConfig.cmake.in 2018-04-19 17:04:36.584219672 +0200
++++ MEDCOUPLING_new/MEDCouplingConfig.cmake.in 2018-04-19 17:25:18.169805896 +0200
+@@ -1,6 +1,6 @@
+ # - Config file for the @PROJECT_NAME@ package
+ # It defines the following variables. 
+-# Specific to the pacakge @PROJECT_NAME@ itself:
++# Specific to the package @PROJECT_NAME@ itself:
+ #  @PROJECT_NAME_UC@_ROOT_DIR_EXP - the root path of the installation providing this CMake file
+ #
+@@ -30,7 +30,7 @@
+ # Load the dependencies for the libraries of @PROJECT_NAME@ 
+ # (contains definitions for IMPORTED targets). This is only 
+ # imported if we are not built as a subproject (in this case targets are already there)
+-IF(NOT TARGET medcoupling AND NOT @PROJECT_NAME@_BINARY_DIR)
++IF(NOT TARGET medcouplingcpp AND NOT @PROJECT_NAME@_BINARY_DIR)
+   INCLUDE("@PACKAGE_MEDCOUPLING_INSTALL_CMAKE_LOCAL@/@PROJECT_NAME@Targets.cmake")
+ ENDIF()   
+@@ -114,7 +114,8 @@
+ # Exposed MEDCoupling targets:
+ SET(MEDCoupling_interpkernel interpkernel)
+-SET(MEDCoupling_medcoupling medcoupling)
++SET(MEDCoupling_medcouplingcpp medcouplingcpp)
++SET(MEDCoupling_medcoupling    medcouplingcpp)
+ SET(MEDCoupling_medcouplingremapper medcouplingremapper)
+ SET(MEDCoupling_medloader medloader)
+ SET(MEDCoupling_renumbercpp renumbercpp)
+diff -Naur MEDCOUPLING_old/src/CMakeLists.txt MEDCOUPLING_new/src/CMakeLists.txt
+--- MEDCOUPLING_old/src/CMakeLists.txt 2018-04-19 17:04:36.669221367 +0200
++++ MEDCOUPLING_new/src/CMakeLists.txt 2018-04-19 17:25:17.367790043 +0200
+@@ -27,6 +27,7 @@
+ ADD_SUBDIRECTORY(MEDCoupling)
+ IF(MEDCOUPLING_ENABLE_PYTHON)
+   ADD_SUBDIRECTORY(MEDCoupling_Swig)
++  ADD_SUBDIRECTORY(PyWrapping)
+ ENDIF(MEDCOUPLING_ENABLE_PYTHON)
+ IF(NOT MEDCOUPLING_MICROMED)
+diff -Naur MEDCOUPLING_old/src/CTestTestfileInstall.cmake MEDCOUPLING_new/src/CTestTestfileInstall.cmake
+--- MEDCOUPLING_old/src/CTestTestfileInstall.cmake     2018-04-19 17:04:36.669221367 +0200
++++ MEDCOUPLING_new/src/CTestTestfileInstall.cmake     2018-04-19 17:25:18.144805402 +0200
+@@ -30,3 +30,5 @@
+ #SUBDIRS(ParaMEDMEMTest)
+ SUBDIRS(MEDPartitioner_Swig)
+ SUBDIRS(RENUMBER_Swig)
++SUBDIRS(PyWrapping)
++
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Bases/InterpKernelAssert.hxx MEDCOUPLING_new/src/INTERP_KERNEL/Bases/InterpKernelAssert.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Bases/InterpKernelAssert.hxx     1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Bases/InterpKernelAssert.hxx     2018-04-19 17:25:17.507792810 +0200
+@@ -0,0 +1,34 @@
++// Copyright (C) 2018  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++#ifndef __INTERPKERNELASSERT_HXX__
++#define __INTERPKERNELASSERT_HXX__
++
++#include "InterpKernelException.hxx"
++
++#include <sstream>
++
++#define IKAssert(a) { bool verdict(a);           \
++    if(!verdict) { std::ostringstream osszz; osszz << "Assertion \"" << #a << "\" failed into " << __FILE__ << " at line " << __LINE__ << " !"; throw INTERP_KERNEL::Exception(osszz.str()); } }
++
++#define IKAssertMsg(a,b) { bool verdict(a);           \
++    if(!verdict) { std::ostringstream osszz; osszz << "Assertion \"" << #a << "\" failed into " << __FILE__ << " at line " << __LINE__ << " with message \"" << b << "\" !"; throw INTERP_KERNEL::Exception(osszz.str()); } }
++
++#endif
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Bases/NormalizedGeometricTypes MEDCOUPLING_new/src/INTERP_KERNEL/Bases/NormalizedGeometricTypes
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Bases/NormalizedGeometricTypes   2018-04-19 17:04:36.670221387 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Bases/NormalizedGeometricTypes   2018-04-19 17:25:17.505792771 +0200
+@@ -47,6 +47,7 @@
+       NORM_HEXGP12 = 22,
+       NORM_PYRA13  = 23,
+       NORM_PENTA15 = 25,
++      NORM_PENTA18 = 28,
+       NORM_HEXA20  = 30,
+       NORM_HEXA27  = 27,
+       NORM_POLYHED = 31,
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/BoundingBox.cxx MEDCOUPLING_new/src/INTERP_KERNEL/BoundingBox.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/BoundingBox.cxx  2018-04-19 17:04:36.670221387 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/BoundingBox.cxx  2018-04-19 17:25:17.462791921 +0200
+@@ -162,4 +162,14 @@
+     return valid;
+   }
++  void BoundingBox::toCompactData(double data[6]) const
++  {
++    data[0]=_coords[XMIN];
++    data[1]=_coords[XMAX];
++    data[2]=_coords[YMIN];
++    data[3]=_coords[YMAX];
++    data[4]=_coords[ZMIN];
++    data[5]=_coords[ZMAX];
++  }
++
+ }
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/BoundingBox.hxx MEDCOUPLING_new/src/INTERP_KERNEL/BoundingBox.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/BoundingBox.hxx  2018-04-19 17:04:36.670221387 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/BoundingBox.hxx  2018-04-19 17:25:17.537793403 +0200
+@@ -53,6 +53,8 @@
+     inline void dumpCoords() const;
++    void toCompactData(double data[6]) const;
++
+   private:
+     
+     bool isValid() const;
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/CellModel.cxx MEDCOUPLING_new/src/INTERP_KERNEL/CellModel.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/CellModel.cxx    2018-04-19 17:04:36.671221407 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/CellModel.cxx    2018-04-19 17:25:17.403790755 +0200
+@@ -16,7 +16,7 @@
+ //
+ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+ //
+-// Author : Anthony Geay (CEA/DEN)
++// Author : Anthony Geay (EDF R&D)
+ #include "CellModel.hxx"
+@@ -36,7 +36,7 @@
+                                             "NORM_SEG4", "", "", "", "NORM_TETRA4",//10->14
+                                             "NORM_PYRA5", "NORM_PENTA6", "", "NORM_HEXA8", "",//15->19
+                                             "NORM_TETRA10", "", "NORM_HEXGP12", "NORM_PYRA13", "",//20->24
+-                                            "NORM_PENTA15", "", "NORM_HEXA27", "", "",//25->29
++                                            "NORM_PENTA15", "", "NORM_HEXA27", "NORM_PENTA18", "",//25->29
+                                             "NORM_HEXA20", "NORM_POLYHED", "NORM_QPOLYG", "NORM_POLYL", "",//30->34
+                                             "", "", "", "", "",//35->39
+                                             "NORM_ERROR"};
+@@ -100,6 +100,7 @@
+     _map_of_unique_instance.insert(std::make_pair(NORM_HEXGP12,CellModel(NORM_HEXGP12)));
+     _map_of_unique_instance.insert(std::make_pair(NORM_PYRA13,CellModel(NORM_PYRA13)));
+     _map_of_unique_instance.insert(std::make_pair(NORM_PENTA15,CellModel(NORM_PENTA15)));
++    _map_of_unique_instance.insert(std::make_pair(NORM_PENTA18,CellModel(NORM_PENTA18)));
+     _map_of_unique_instance.insert(std::make_pair(NORM_HEXA20,CellModel(NORM_HEXA20)));
+     _map_of_unique_instance.insert(std::make_pair(NORM_HEXA27,CellModel(NORM_HEXA27)));
+     _map_of_unique_instance.insert(std::make_pair(NORM_POLYGON,CellModel(NORM_POLYGON)));
+@@ -352,6 +353,26 @@
+           _little_sons_con[0][0]=0; _little_sons_con[0][1]=1; _little_sons_con[0][2]=6;  _nb_of_little_sons=9;
+           _little_sons_con[1][0]=1; _little_sons_con[1][1]=2; _little_sons_con[1][2]=7;
+           _little_sons_con[2][0]=2; _little_sons_con[2][1]=0; _little_sons_con[2][2]=8;
++          _little_sons_con[3][0]=3; _little_sons_con[3][1]=4; _little_sons_con[3][2]=9;
++          _little_sons_con[4][0]=4; _little_sons_con[4][1]=5; _little_sons_con[4][2]=10;
++          _little_sons_con[5][0]=5; _little_sons_con[5][1]=3; _little_sons_con[5][2]=11;
++          _little_sons_con[6][0]=0; _little_sons_con[6][1]=3; _little_sons_con[6][2]=12;
++          _little_sons_con[7][0]=1; _little_sons_con[7][1]=4; _little_sons_con[7][2]=13;
++          _little_sons_con[8][0]=2; _little_sons_con[8][1]=5; _little_sons_con[8][2]=14;
++        }
++        break;
++      case NORM_PENTA18:
++        {
++          _nb_of_pts=18; _nb_of_sons=5; _dim=3; _linear_type=NORM_PENTA6; _is_simplex=false;
++          _sons_type[0]=NORM_TRI6; _sons_type[1]=NORM_TRI6; _sons_type[2]=NORM_QUAD9; _sons_type[3]=NORM_QUAD9; _sons_type[4]=NORM_QUAD9;
++          _sons_con[0][0]=0; _sons_con[0][1]=1; _sons_con[0][2]=2; _sons_con[0][3]=6; _sons_con[0][4]=7; _sons_con[0][5]=8; _nb_of_sons_con[0]=6;
++          _sons_con[1][0]=3; _sons_con[1][1]=5; _sons_con[1][2]=4; _sons_con[1][3]=11; _sons_con[1][4]=10; _sons_con[1][5]=9; _nb_of_sons_con[1]=6;
++          _sons_con[2][0]=0; _sons_con[2][1]=3; _sons_con[2][2]=4; _sons_con[2][3]=1; _sons_con[2][4]=12; _sons_con[2][5]=9; _sons_con[2][6]=13; _sons_con[2][7]=6; _sons_con[2][8]=15; _nb_of_sons_con[2]=9;
++          _sons_con[3][0]=1; _sons_con[3][1]=4; _sons_con[3][2]=5; _sons_con[3][3]=2; _sons_con[3][4]=13; _sons_con[3][5]=10; _sons_con[3][6]=14; _sons_con[3][7]=7; _sons_con[3][8]=16; _nb_of_sons_con[3]=9;
++          _sons_con[4][0]=2; _sons_con[4][1]=4; _sons_con[4][2]=5; _sons_con[4][3]=0; _sons_con[4][4]=14; _sons_con[4][5]=11; _sons_con[4][6]=12; _sons_con[4][7]=8; _sons_con[4][8]=17; _nb_of_sons_con[4]=9; _quadratic=true;
++          _little_sons_con[0][0]=0; _little_sons_con[0][1]=1; _little_sons_con[0][2]=6;  _nb_of_little_sons=9;
++          _little_sons_con[1][0]=1; _little_sons_con[1][1]=2; _little_sons_con[1][2]=7;
++          _little_sons_con[2][0]=2; _little_sons_con[2][1]=0; _little_sons_con[2][2]=8;
+           _little_sons_con[3][0]=3; _little_sons_con[3][1]=4; _little_sons_con[3][2]=9;
+           _little_sons_con[4][0]=4; _little_sons_con[4][1]=5; _little_sons_con[4][2]=10;
+           _little_sons_con[5][0]=5; _little_sons_con[5][1]=3; _little_sons_con[5][2]=11;
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/CMakeLists.txt MEDCOUPLING_new/src/INTERP_KERNEL/CMakeLists.txt
+--- MEDCOUPLING_old/src/INTERP_KERNEL/CMakeLists.txt   2018-04-19 17:04:36.670221387 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/CMakeLists.txt   2018-04-19 17:25:17.404790774 +0200
+@@ -37,6 +37,7 @@
+   Interpolation3D.cxx
+   Interpolation2D3D.cxx
+   Interpolation3D1D.cxx
++  Interpolation1D0D.cxx
+   MeshElement.cxx
+   InterpKernelMeshQuality.cxx
+   InterpKernelCellSimplify.cxx
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/CurveIntersector.txx MEDCOUPLING_new/src/INTERP_KERNEL/CurveIntersector.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/CurveIntersector.txx     2018-04-19 17:04:36.671221407 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/CurveIntersector.txx     2018-04-19 17:25:17.483792336 +0200
+@@ -104,7 +104,7 @@
+   }
+   /*!
+-    Computes the bouding box of a given element. iP in numPol mode.
++    Computes the bounding box of a given element. iP in numPol mode.
+   */
+   template<class MyMeshType, class MyMatrix>
+   void CurveIntersector<MyMeshType,MyMatrix>::getElemBB (double*           bb,
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/DirectedBoundingBox.cxx MEDCOUPLING_new/src/INTERP_KERNEL/DirectedBoundingBox.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/DirectedBoundingBox.cxx  2018-04-19 17:04:36.671221407 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/DirectedBoundingBox.cxx  2018-04-19 17:25:17.426791209 +0200
+@@ -201,7 +201,7 @@
+   //================================================================================
+   /*!
+-   * \brief Creates empty box intended to further initalization via setData()
++   * \brief Creates empty box intended to further initialization via setData()
+    */
+   //================================================================================
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/ExprEval/InterpKernelExprParser.cxx MEDCOUPLING_new/src/INTERP_KERNEL/ExprEval/InterpKernelExprParser.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/ExprEval/InterpKernelExprParser.cxx      2018-04-19 17:04:36.672221426 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/ExprEval/InterpKernelExprParser.cxx      2018-04-19 17:25:17.650795637 +0200
+@@ -547,7 +547,7 @@
+ }
+ /*!
+- * This method has the responsability to see if this->_expr can be seen as a unary function of something.
++ * This method has the responsibility to see if this->_expr can be seen as a unary function of something.
+  * Something defined as the contain of highest level barckets.
+  * Typically '(3*x+2)' and 'cos(4*l+p*n)' will be intercepted by this method whereas '3*x+2' not...etc..
+  */
+@@ -594,9 +594,9 @@
+ }
+ /*!
+- *  This method has the responsability to see if this->_expr is interpretable without any recursion.
++ *  This method has the responsibility to see if this->_expr is interpretable without any recursion.
+  * \return true if no recursion needed, false if this->_expr is too complex to be interpreted at this level.
+- * \throw exception if this->_expr is simple enough to try to interprate this and this expression contains an error.
++ * \throw exception if this->_expr is simple enough to try to interpret this and this expression contains an error.
+  */
+ bool ExprParser::tryToInterpALeaf()
+ {
+@@ -917,7 +917,7 @@
+           if(curLevel==0)
+             {
+               std::ostringstream errMsg;
+-              char MSGTYP1[]="Error in brackets : closing brackets ')' before openning '('";
++              char MSGTYP1[]="Error in brackets : closing brackets ')' before opening '('";
+               errMsg << EXPR_PARSE_ERR_MSG << MSGTYP1;
+               LocateError(errMsg,_expr,(int)std::distance(_expr.begin(),iter));
+               throw INTERP_KERNEL::Exception(errMsg.str().c_str());
+@@ -941,7 +941,7 @@
+  */
+ double ExprParser::ReplaceAndTraduce(std::string& expr, int id, std::size_t bg, std::size_t end, int& delta)
+ {
+-  static const char MSG[]="Interal error : A string expected to be a float is not one ! Bug to signal !";
++  static const char MSG[]="Internal error : A string expected to be a float is not one ! Bug to signal !";
+   std::istringstream stream;
+   std::ostringstream oss;
+   std::size_t end2=end!=std::string::npos?end-bg:end;
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/ExprEval/InterpKernelUnit.hxx MEDCOUPLING_new/src/INTERP_KERNEL/ExprEval/InterpKernelUnit.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/ExprEval/InterpKernelUnit.hxx    2018-04-19 17:04:36.672221426 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/ExprEval/InterpKernelUnit.hxx    2018-04-19 17:25:17.653795696 +0200
+@@ -83,7 +83,7 @@
+   /*!
+    * This class deals with units.
+-   * This class has two main responsabilities :
++   * This class has two main responsibilities :
+    *      - interprete units by giving simply their representation in string type.
+    *      - performing operations on these units.
+    *
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/GaussPoints/CleanUpGauss.py MEDCOUPLING_new/src/INTERP_KERNEL/GaussPoints/CleanUpGauss.py
+--- MEDCOUPLING_old/src/INTERP_KERNEL/GaussPoints/CleanUpGauss.py      2018-04-19 17:04:36.672221426 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/GaussPoints/CleanUpGauss.py      2018-04-19 17:25:17.481792296 +0200
+@@ -18,7 +18,6 @@
+ # Author : Anthony Geay (EDF R&D)
+ import re
+-import sys
+ s1=2709
+ s2=2848
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/GenMathFormulae.hxx MEDCOUPLING_new/src/INTERP_KERNEL/GenMathFormulae.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/GenMathFormulae.hxx      2018-04-19 17:04:36.673221446 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/GenMathFormulae.hxx      2018-04-19 17:25:17.407790834 +0200
+@@ -28,7 +28,7 @@
+ namespace INTERP_KERNEL
+ {
+   /*!
+-   * This method computes eigenvalues of a 3x3 symetric matrix stored with 6 values in 'matrix'. The convension chosen for 'matrix' is described here:
++   * This method computes eigenvalues of a 3x3 symmetric matrix stored with 6 values in 'matrix'. The convension chosen for 'matrix' is described here:
+    * matrix[0]=m_xx, matrix[1]=m_yy, matrix[2]=m_zz,
+    * matrix[3]=m_xy, matrix[4]=m_yz, matrix[5]=m_xz
+    * This method returns the 3 eigenvalues in 'eigenVals'.
+@@ -55,7 +55,7 @@
+   }
+   
+   /*!
+-   * This method computes one eigenvector of a 3x3 symetric matrix stored with 6 values in 'matrix'. The convension chosen for 'matrix' is described here:
++   * This method computes one eigenvector of a 3x3 symmetric matrix stored with 6 values in 'matrix'. The convension chosen for 'matrix' is described here:
+    * matrix[0]=m_xx, matrix[1]=m_yy, matrix[2]=m_zz,
+    * matrix[3]=m_xy, matrix[4]=m_yz, matrix[5]=m_xz
+    * This method returns the eigenvector of the corresponding eigenvalue in 'eigenVal'. The returned eigenValue is normalized.
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DBounds.cxx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DBounds.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DBounds.cxx  2018-04-19 17:04:36.673221446 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DBounds.cxx  2018-04-19 17:25:17.625795143 +0200
+@@ -148,15 +148,16 @@
+ Bounds *Bounds::nearlyAmIIntersectingWith(const Bounds& other) const
+ {
+-  if( (other._x_min > _x_max+QUADRATIC_PLANAR::_precision) || (other._x_max < _x_min-QUADRATIC_PLANAR::_precision) || (other._y_min > _y_max+QUADRATIC_PLANAR::_precision) 
+-      || (other._y_max < _y_min-QUADRATIC_PLANAR::_precision) )
++  double eps = QuadraticPlanarPrecision::getPrecision();
++  if( (other._x_min > _x_max+eps) || (other._x_max < _x_min-eps) || (other._y_min > _y_max+eps)
++      || (other._y_max < _y_min-eps) )
+     return 0;
+   if( (other._x_min >= _x_max ) || (other._x_max <= _x_min) || (other._y_min >= _y_max) || (other._y_max <= _y_min) )
+     {
+-      return new Bounds(std::max(_x_min-QUADRATIC_PLANAR::_precision,other._x_min),
+-          std::min(_x_max+QUADRATIC_PLANAR::_precision,other._x_max),
+-          std::max(_y_min-QUADRATIC_PLANAR::_precision,other._y_min),
+-          std::min(_y_max+QUADRATIC_PLANAR::_precision,other._y_max));//In approx cases.
++      return new Bounds(std::max(_x_min-eps,other._x_min),
++          std::min(_x_max+eps,other._x_max),
++          std::max(_y_min-eps,other._y_min),
++          std::min(_y_max+eps,other._y_max));//In approx cases.
+     }
+   else
+     return new Bounds(std::max(_x_min,other._x_min),std::min(_x_max,other._x_max),std::max(_y_min,other._y_min),std::min(_y_max,other._y_max));
+@@ -183,7 +184,7 @@
+   bool thinY=Node::areDoubleEquals(_y_min,_y_max);
+   if(!thinX)
+     {
+-      if((Node::areDoubleEquals(x,_x_min) || Node::areDoubleEquals(x,_x_max)) && ((y<_y_max+QUADRATIC_PLANAR::_precision) && (y>_y_min-QUADRATIC_PLANAR::_precision)))
++      if((Node::areDoubleEquals(x,_x_min) || Node::areDoubleEquals(x,_x_max)) && ((y<_y_max+QuadraticPlanarPrecision::getPrecision()) && (y>_y_min-QuadraticPlanarPrecision::getPrecision())))
+         return ON_BOUNDARY_POS;
+     }
+   else
+@@ -191,7 +192,7 @@
+       return OUT;
+   if(!thinY)
+     {
+-      if((Node::areDoubleEquals(y,_y_min) || Node::areDoubleEquals(y,_y_max)) && ((x<_x_max+QUADRATIC_PLANAR::_precision) && (x>_x_min-QUADRATIC_PLANAR::_precision)))
++      if((Node::areDoubleEquals(y,_y_min) || Node::areDoubleEquals(y,_y_max)) && ((x<_x_max+QuadraticPlanarPrecision::getPrecision()) && (x>_x_min-QuadraticPlanarPrecision::getPrecision())))
+         return ON_BOUNDARY_POS;
+     }
+   else
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DComposedEdge.cxx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DComposedEdge.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DComposedEdge.cxx    2018-04-19 17:04:36.673221446 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DComposedEdge.cxx    2018-04-19 17:25:17.634795321 +0200
+@@ -541,14 +541,14 @@
+   std::set<Node *> nodes;
+   getAllNodes(nodes);
+   for(std::set<Node *>::const_iterator iter=nodes.begin();iter!=nodes.end();iter++)
+-    if(sqrt((*iter)->distanceWithSq(*nodeToTest))<QUADRATIC_PLANAR::_precision)
++    if(sqrt((*iter)->distanceWithSq(*nodeToTest))<QuadraticPlanarPrecision::getPrecision())
+       return true;
+   double ref(isInOrOutAlg(nodeToTest,nodes,inOutSwitch));
+   bool ret(false);
+   for(std::set< IntersectElement >::iterator iter4=inOutSwitch.begin();iter4!=inOutSwitch.end();iter4++)
+     {
+       double val((*iter4).getVal1());
+-      if(fabs(val-ref)>=QUADRATIC_PLANAR::_precision)
++      if(fabs(val-ref)>=QuadraticPlanarPrecision::getPrecision())
+         {
+           if(val<ref)
+             {
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeArcCircle.cxx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeArcCircle.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeArcCircle.cxx   2018-04-19 17:04:36.673221446 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeArcCircle.cxx   2018-04-19 17:25:17.619795024 +0200
+@@ -131,7 +131,7 @@
+       a2.getCenter(centerL); radiusL=a2.getRadius();
+       a1.getCenter(centerB); radiusB=a1.getRadius();
+     }
+-  // dividing from the begining by radiusB^2 to keep precision
++  // dividing from the beginning by radiusB^2 to keep precision
+   distBetweenCenters=Node::distanceBtw2PtSq(centerL,centerB);
+   cst=distBetweenCenters/(radiusB*radiusB);
+   cst+=radiusL*radiusL/(radiusB*radiusB);
+@@ -174,7 +174,7 @@
+ {
+   _dist=Node::distanceBtw2Pt(getE1().getCenter(),getE2().getCenter());
+   double radius1=getE1().getRadius(); double radius2=getE2().getRadius();
+-  if(_dist>radius1+radius2+QUADRATIC_PLANAR::_precision || _dist+std::min(radius1,radius2)+QUADRATIC_PLANAR::_precision<std::max(radius1,radius2))
++  if(_dist>radius1+radius2+QuadraticPlanarPrecision::getPrecision() || _dist+std::min(radius1,radius2)+QuadraticPlanarPrecision::getPrecision()<std::max(radius1,radius2))
+     {
+       obviousNoIntersection=true;
+       areOverlapped=false;
+@@ -328,7 +328,7 @@
+       ((*(_e2.getStartNode()))[0]-center[0])*((*(_e2.getEndNode()))[1]-center[1])-
+       ((*(_e2.getStartNode()))[1]-center[1])*((*(_e2.getEndNode()))[0]-center[0]);
+   _determinant=getE1().getRadius()*getE1().getRadius()/_drSq-_cross*_cross/(_drSq*_drSq);
+-  if(_determinant>-2*QUADRATIC_PLANAR::_precision)//QUADRATIC_PLANAR::_precision*QUADRATIC_PLANAR::_precision*_drSq*_drSq/(2.*_dx*_dx))
++  if(_determinant>-2*QuadraticPlanarPrecision::getPrecision())//QuadraticPlanarPrecision::getPrecision()*QuadraticPlanarPrecision::getPrecision()*_drSq*_drSq/(2.*_dx*_dx))
+     obviousNoIntersection=false;
+   else
+     obviousNoIntersection=true;   
+@@ -351,7 +351,7 @@
+ {
+   std::list< IntersectElement > ret;
+   const double *center=getE1().getCenter();
+-  if(!(fabs(_determinant)<(2.*QUADRATIC_PLANAR::_precision)))//QUADRATIC_PLANAR::_precision*QUADRATIC_PLANAR::_precision*_drSq*_drSq/(2.*_dx*_dx))
++  if(!(fabs(_determinant)<(2.*QuadraticPlanarPrecision::getPrecision())))//QuadraticPlanarPrecision::getPrecision()*QuadraticPlanarPrecision::getPrecision()*_drSq*_drSq/(2.*_dx*_dx))
+     {
+       double determinant=EdgeArcCircle::SafeSqrt(_determinant);
+       double x1=(_cross*_dy/_drSq+Node::sign(_dy)*_dx*determinant)+center[0];
+@@ -466,7 +466,7 @@
+ /*!
+  * 'eps' is expected to be > 0.
+  * 'conn' is of size 3. conn[0] is start id, conn[1] is end id and conn[2] is middle id.
+- * 'offset' is typically the number of nodes already existing in global 2D curve mesh. Additionnal coords 'addCoo' ids will be put after the already existing.
++ * 'offset' is typically the number of nodes already existing in global 2D curve mesh. Additional coords 'addCoo' ids will be put after the already existing.
+  */
+ void EdgeArcCircle::tesselate(const int *conn, int offset, double eps, std::vector<int>& newConn, std::vector<double>& addCoo) const
+ {
+@@ -644,9 +644,9 @@
+   //
+   double myDelta1(angle1-_angle0),myDelta2(angle2-_angle0);
+   if(_angle>0.)
+-    { myDelta1=myDelta1>-QUADRATIC_PLANAR::_precision?myDelta1:myDelta1+2.*M_PI; myDelta2=myDelta2>-QUADRATIC_PLANAR::_precision?myDelta2:myDelta2+2.*M_PI; }
++    { myDelta1=myDelta1>-QuadraticPlanarPrecision::getPrecision()?myDelta1:myDelta1+2.*M_PI; myDelta2=myDelta2>-QuadraticPlanarPrecision::getPrecision()?myDelta2:myDelta2+2.*M_PI; }
+   else
+-    { myDelta1=myDelta1<QUADRATIC_PLANAR::_precision?myDelta1:myDelta1-2.*M_PI; myDelta2=myDelta2<QUADRATIC_PLANAR::_precision?myDelta2:myDelta2-2.*M_PI; }
++    { myDelta1=myDelta1<QuadraticPlanarPrecision::getPrecision()?myDelta1:myDelta1-2.*M_PI; myDelta2=myDelta2<QuadraticPlanarPrecision::getPrecision()?myDelta2:myDelta2-2.*M_PI; }
+   ////
+   mid[0]=_center[0]+_radius*cos(_angle0+(myDelta1+myDelta2)/2.);
+   mid[1]=_center[1]+_radius*sin(_angle0+(myDelta1+myDelta2)/2.);
+@@ -703,14 +703,14 @@
+   double myDelta2=val2-_angle0;
+   if(_angle>0.)
+     {
+-      myDelta1=myDelta1>-(_radius*QUADRATIC_PLANAR::_precision)?myDelta1:myDelta1+2.*M_PI;//in some cases val1 or val2 are so close to angle0 that myDelta is close to 0. but negative.
+-      myDelta2=myDelta2>-(_radius*QUADRATIC_PLANAR::_precision)?myDelta2:myDelta2+2.*M_PI;
++      myDelta1=myDelta1>-(_radius*QuadraticPlanarPrecision::getPrecision())?myDelta1:myDelta1+2.*M_PI;//in some cases val1 or val2 are so close to angle0 that myDelta is close to 0. but negative.
++      myDelta2=myDelta2>-(_radius*QuadraticPlanarPrecision::getPrecision())?myDelta2:myDelta2+2.*M_PI;
+       return myDelta1<myDelta2;
+     }
+   else
+     {
+-      myDelta1=myDelta1<(_radius*QUADRATIC_PLANAR::_precision)?myDelta1:myDelta1-2.*M_PI;
+-      myDelta2=myDelta2<(_radius*QUADRATIC_PLANAR::_precision)?myDelta2:myDelta2-2.*M_PI;
++      myDelta1=myDelta1<(_radius*QuadraticPlanarPrecision::getPrecision())?myDelta1:myDelta1-2.*M_PI;
++      myDelta2=myDelta2<(_radius*QuadraticPlanarPrecision::getPrecision())?myDelta2:myDelta2-2.*M_PI;
+       return myDelta2<myDelta1;
+     }
+ }
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.cxx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.cxx    2018-04-19 17:04:36.673221446 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.cxx    2018-04-19 17:25:17.627795182 +0200
+@@ -288,7 +288,7 @@
+ }
+ /*!
+- * This methode is const because 'node' is supposed to be equal geomitrically to _node.
++ * This method is const because 'node' is supposed to be equal geometrically to _node.
+  */
+ void IntersectElement::setNode(Node *node) const
+ {
+@@ -746,7 +746,7 @@
+   if(intersector->intersect(whereToFind,newNodes,order,commonNode))
+     {
+       if(newNodes.empty())
+-        throw Exception("Internal error occured - error in intersector implementation!");// This case should never happen
++        throw Exception("Internal error occurred - error in intersector implementation!");// This case should never happen
+       std::vector<Node *>::iterator iter=newNodes.begin();
+       std::vector<Node *>::reverse_iterator iterR=newNodes.rbegin();
+       f1->addSubEdgeInVector(f1->getStartNode(),*iter,outValForF1);
+@@ -930,7 +930,7 @@
+ inline bool eqpair(const std::pair<double,Node *>& p1, const std::pair<double,Node *>& p2)
+ {
+-  return fabs(p1.first-p2.first)<QUADRATIC_PLANAR::_precision;
++  return fabs(p1.first-p2.first)<QuadraticPlanarPrecision::getPrecision();
+ }
+ /**
+@@ -1005,12 +1005,12 @@
+   for(std::vector< std::pair<double,Node *> >::const_iterator it=an2.begin();it!=itend;it++)
+     {
+       int idd=(*mapp2.find((*it).second)).second;
+-      if((*it).first<QUADRATIC_PLANAR::_precision)
++      if((*it).first<QuadraticPlanarPrecision::getPrecision())
+         {
+           startId=idd;
+           continue;
+         }
+-      if((*it).first>1-QUADRATIC_PLANAR::_precision)
++      if((*it).first>1-QuadraticPlanarPrecision::getPrecision())
+         {
+           endId=idd;
+           continue;
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.hxx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.hxx    2018-04-19 17:04:36.673221446 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.hxx    2018-04-19 17:25:17.616794965 +0200
+@@ -146,7 +146,7 @@
+   class INTERPKERNEL_EXPORT EdgeIntersector
+   {
+   protected:
+-    //! All non symetric methods are relative to 'e1'.
++    //! All non symmetric methods are relative to 'e1'.
+     EdgeIntersector(const Edge& e1, const Edge& e2):_e1(e1),_e2(e2) { }
+   public:
+     virtual ~EdgeIntersector() { }
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeLin.cxx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeLin.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeLin.cxx 2018-04-19 17:04:36.674221466 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeLin.cxx 2018-04-19 17:25:17.609794826 +0200
+@@ -108,20 +108,20 @@
+ bool SegSegIntersector::areColinears() const
+ {
+   double determinant=_matrix[0]*_matrix[3]-_matrix[1]*_matrix[2];
+-  return fabs(determinant)<QUADRATIC_PLANAR::_arc_detection_precision;
++  return fabs(determinant)<QuadraticPlanarArcDetectionPrecision::getArcDetectionPrecision();
+ }
+ /*!
+  * Should be called \b once ! non const method.
+  * \param whereToFind specifies the box where final seek should be done. Essentially it is used for caracteristic reason.
+- * \param colinearity returns if regarding QUADRATIC_PLANAR::_precision ; e1 and e2 are colinears
++ * \param colinearity returns if regarding QuadraticPlanarPrecision::getPrecision() ; e1 and e2 are colinears
+  *                    If true 'this' is modified ! So this method be called once above all if true is returned for this parameter.
+  * \param areOverlapped if colinearity if true, this parameter looks if e1 and e2 are overlapped.
+  */
+ void SegSegIntersector::areOverlappedOrOnlyColinears(const Bounds *whereToFind, bool& colinearity, bool& areOverlapped)
+ {
+   double determinant=_matrix[0]*_matrix[3]-_matrix[1]*_matrix[2];
+-  if(fabs(determinant)>2.*QUADRATIC_PLANAR::_precision)//2*_precision due to max of offset on _start and _end
++  if(fabs(determinant)>2.*QuadraticPlanarPrecision::getPrecision())//2*_precision due to max of offset on _start and _end
+     {
+       colinearity=false; areOverlapped=false;
+       _matrix[0]/=determinant; _matrix[1]/=determinant; _matrix[2]/=determinant; _matrix[3]/=determinant;
+@@ -136,7 +136,7 @@
+       double deno=sqrt(_matrix[0]*_matrix[0]+_matrix[1]*_matrix[1]);
+       double x=(*(_e1.getStartNode()))[0]-(*(_e2.getStartNode()))[0];
+       double y=(*(_e1.getStartNode()))[1]-(*(_e2.getStartNode()))[1];
+-      areOverlapped=fabs((_matrix[1]*y+_matrix[0]*x)/deno)<QUADRATIC_PLANAR::_precision;
++      areOverlapped=fabs((_matrix[1]*y+_matrix[0]*x)/deno)<QuadraticPlanarPrecision::getPrecision();
+     }
+ }
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DNode.hxx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DNode.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DNode.hxx    2018-04-19 17:04:36.674221466 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DNode.hxx    2018-04-19 17:25:17.631795261 +0200
+@@ -88,9 +88,9 @@
+     static double dot(const double *vect1, const double *vect2) { return vect1[0]*vect2[0]+vect1[1]*vect2[1]; }
+     static double sign(double val) { if(val>=0) return 1.; else return -1.; }
+     static double norm(const double *vect) { return sqrt(vect[0]*vect[0]+vect[1]*vect[1]); }
+-    static bool areDoubleEquals(double a, double b) { return fabs(a-b) < QUADRATIC_PLANAR::_precision; }
++    static bool areDoubleEquals(double a, double b) { return fabs(a-b) < QuadraticPlanarPrecision::getPrecision(); }
+     //! idem areDoubleEquals except that precision of comparison is modified.
+-    static bool areDoubleEqualsWP(double a, double b, double k) { return fabs(a-b) < k*QUADRATIC_PLANAR::_precision; }
++    static bool areDoubleEqualsWP(double a, double b, double k) { return fabs(a-b) < k*QuadraticPlanarPrecision::getPrecision(); }
+     static double distanceBtw2Pt(const double *a, const double *b) { return sqrt((a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1])); }
+     static double distanceBtw2PtSq(const double *a, const double *b) { return (a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1]); }
+     //
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.cxx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.cxx       2018-04-19 17:04:36.674221466 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.cxx       2018-04-19 17:25:17.621795064 +0200
+@@ -20,16 +20,38 @@
+ #include "InterpKernelGeo2DPrecision.hxx"
+-double INTERP_KERNEL::QUADRATIC_PLANAR::_precision=1e-14;
++double INTERP_KERNEL::QuadraticPlanarPrecision::_precision=1e-14;
++double INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::_arc_detection_precision=1e-14;
++
++INTERP_KERNEL::QuadraticPlanarPrecision::QuadraticPlanarPrecision(double precision):
++    _initial_precision(_precision)
++{
++  _precision=precision;
++}
++
++INTERP_KERNEL::QuadraticPlanarPrecision::~QuadraticPlanarPrecision()
++{
++  _precision = _initial_precision;
++}
++
++INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::QuadraticPlanarArcDetectionPrecision(double precision):
++    _initial_arc_detection_precision(_arc_detection_precision)
++{
++  _arc_detection_precision=precision;
++}
++
++INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::~QuadraticPlanarArcDetectionPrecision()
++{
++  _arc_detection_precision = _initial_arc_detection_precision;
++}
+-double INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=1e-14;
+-void INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(double precision)
++void INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(double precision)
+ { 
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_precision=precision;
++  _precision=precision;
+ }
+-void INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(double precision)
++void INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(double precision)
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=precision;
++  _arc_detection_precision=precision;
+ }
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.hxx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.hxx       2018-04-19 17:04:36.674221466 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.hxx       2018-04-19 17:25:17.623795103 +0200
+@@ -25,14 +25,50 @@
+ namespace INTERP_KERNEL
+ {
+-  class INTERPKERNEL_EXPORT QUADRATIC_PLANAR
++  /* !!TODO: a more global review of the code should be done, so that eps is always a parameter of all methods
++     instead of being stored as a static attribute.
++  */
++
++  /** Class storing the precision for the detection of colinear segments, coincident points, etc ...
++   * in Geometric2D computations.
++   *
++   * RAII pattern allowing to temporarily override Geometric2D precision.
++   * When the instance is destroyed, the previous precision is set back.
++   *
++   */
++  class QuadraticPlanarPrecision
+   {
+   public:
+-    static double _precision;
+-    static double _arc_detection_precision;
++    QuadraticPlanarPrecision(double prec);
++    virtual ~QuadraticPlanarPrecision();
++
+     static void setPrecision(double precision);
++    inline static double getPrecision() { return _precision; }
++  private:
++    static double _precision;
++    double _initial_precision;
++  };
++
++  /** Class storing the precision for the detection of degenerated arc of circles
++   * in Geometric2D computations.
++   *
++   * RAII pattern allowing to temporarily override Geometric2D precision.
++   * When the instance is destroyed, the previous precision is set back.
++   */
++  class QuadraticPlanarArcDetectionPrecision
++  {
++  public:
++    QuadraticPlanarArcDetectionPrecision(double prec);
++    virtual ~QuadraticPlanarArcDetectionPrecision();
++
+     static void setArcDetectionPrecision(double precision);
++    inline static double getArcDetectionPrecision() { return _arc_detection_precision; }
++  private:
++    static double _arc_detection_precision;
++    double _initial_arc_detection_precision;
++
+   };
+ }
+ #endif
++
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.cxx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.cxx        2018-04-19 17:04:36.674221466 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.cxx        2018-04-19 17:25:17.628795202 +0200
+@@ -267,11 +267,11 @@
+ }
+ /*!
+- * This method splits 'this' with 'other' into smaller pieces localizable. 'mapThis' is a map that gives the correspondance
++ * This method splits 'this' with 'other' into smaller pieces localizable. 'mapThis' is a map that gives the correspondence
+  * between nodes contained in 'this' and node ids in a global mesh.
+- * In the same way, 'mapOther' gives the correspondance between nodes contained in 'other' and node ids in a
+- * global mesh from wich 'other' is extracted.
+- * This method has 1 out paramater : 'edgesThis', After the call of this method, it contains the nodal connectivity (including type)
++ * In the same way, 'mapOther' gives the correspondence between nodes contained in 'other' and node ids in a
++ * global mesh from which 'other' is extracted.
++ * This method has 1 out parameter : 'edgesThis', After the call of this method, it contains the nodal connectivity (including type)
+  * of 'this' into globlal "this mesh".
+  * This method has 2 in/out parameters : 'subDivOther' and 'addCoo'.'otherEdgeIds' is useful to put values in
+  * 'edgesThis', 'subDivOther' and 'addCoo'.
+@@ -1090,7 +1090,7 @@
+     }
+   if(!found)
+     throw Exception("Internal error: polygons incompatible with each others. Should never happen!");
+-  //Ok we found correspondance between this and pol1. Searching for right direction to close polygon.
++  //Ok we found correspondence between this and pol1. Searching for right direction to close polygon.
+   ElementaryEdge *e=_sub_edges.back();
+   if(e->getLoc()==FULL_ON_1)
+     {
+@@ -1140,7 +1140,7 @@
+   if(!direction)
+     it.previousLoop();
+   Node *nodeToTest;
+-  int szMax(pol1Splitted.size()+1),ii(0);// here a protection against agressive users of IntersectMeshes of invalid input meshes
++  int szMax(pol1Splitted.size()+1),ii(0);// here a protection against aggressive users of IntersectMeshes of invalid input meshes
+   std::list<QuadraticPolygon *>::iterator ret;
+   do
+     {
+@@ -1157,7 +1157,7 @@
+       ii++;
+     }
+   while(ret==iEnd && ii<szMax);
+-  if(ii==szMax)// here a protection against agressive users of IntersectMeshes of invalid input meshes
++  if(ii==szMax)// here a protection against aggressive users of IntersectMeshes of invalid input meshes
+     throw INTERP_KERNEL::Exception("QuadraticPolygon::fillAsMuchAsPossibleWith : Something is invalid with input polygons !");
+   return ret;
+ }
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2DIntersector.hxx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2DIntersector.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2DIntersector.hxx       2018-04-19 17:04:36.674221466 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2DIntersector.hxx       2018-04-19 17:25:17.415790992 +0200
+@@ -54,6 +54,8 @@
+     QuadraticPolygon *buildPolygonOfOneEdgeFrom(const std::vector<double>& coords, NormalizedCellType type);
+     QuadraticPolygon *buildPolygonAFrom(ConnType cell, int nbOfPoints, NormalizedCellType type);
+     QuadraticPolygon *buildPolygonBFrom(ConnType cell, int nbOfPoints, NormalizedCellType type);
++
++    QuadraticPlanarPrecision _precision;
+   };
+ }
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2DIntersector.txx MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2DIntersector.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Geometric2DIntersector.txx       2018-04-19 17:04:36.674221466 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Geometric2DIntersector.txx       2018-04-19 17:25:17.398790656 +0200
+@@ -44,9 +44,9 @@
+   GEO2D_INTERSECTOR::Geometric2DIntersector(const MyMeshType& meshT, const MyMeshType& meshS,
+                                             double dimCaracteristic, double md3DSurf, double minDot3DSurf, double medianPlane,
+                                             double precision, int orientation):
+-    InterpType<MyMeshType,MyMatrix,GEO2D_INTERSECTOR >(meshT,meshS,dimCaracteristic, precision, md3DSurf, minDot3DSurf, medianPlane, true, orientation, 0)
++    InterpType<MyMeshType,MyMatrix,GEO2D_INTERSECTOR >(meshT,meshS,dimCaracteristic, precision, md3DSurf, minDot3DSurf, medianPlane, true, orientation, 0),
++    _precision(precision)
+   {
+-    QUADRATIC_PLANAR::_precision=precision;
+   }
+   
+   INTERSECTOR_TEMPLATE
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation1D0D.cxx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation1D0D.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation1D0D.cxx    1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation1D0D.cxx    2018-04-19 17:25:17.662795874 +0200
+@@ -0,0 +1,57 @@
++// Copyright (C) 2018  CEA/DEN, EDF 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
++//
++// Author : Anthony GEAY (EDF R&D)
++
++#include "Interpolation1D0D.hxx"
++#include "Interpolation1D0D.txx"
++
++namespace INTERP_KERNEL
++{
++  /**
++   * \class Interpolation1D0D
++   * \brief Class used to calculate the interpolation between a 1D mesh and 0D mesh (in 3D space)
++   * Can be seen as a specialization of Interpolation3D, and allows notably the adjustment of bounind boxes.
++   * 
++   */
++
++  Interpolation1D0D::Interpolation1D0D()
++  {}
++
++  Interpolation1D0D::Interpolation1D0D(const InterpolationOptions& io):Interpolation<Interpolation1D0D>(io)
++  {}
++
++  /**
++   * Inspired from PlanarIntersector<MyMeshType,MyMatrix>::adjustBoundingBoxes
++   */
++  void Interpolation1D0D::adjustBoundingBoxes(std::vector<double>& bbox)
++  {
++    const int SPACE_DIM = 3;
++    const double adj(getPrecision());// here precision is used instead of getBoundingBoxAdjustment and getBoundingBoxAdjustmentAbs because in the context only precision is relevant
++
++    long size = bbox.size()/(2*SPACE_DIM);
++    for (int i=0; i<size; i++)
++      {
++        for(int idim=0; idim<SPACE_DIM; idim++)
++          {
++            bbox[i*2*SPACE_DIM+2*idim  ] -= adj;
++            bbox[i*2*SPACE_DIM+2*idim+1] += adj;
++          }
++      }
++  }
++}
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation1D0D.hxx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation1D0D.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation1D0D.hxx    1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation1D0D.hxx    2018-04-19 17:25:17.637795380 +0200
+@@ -0,0 +1,45 @@
++// Copyright (C) 2018  CEA/DEN, EDF 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
++//
++// Author : A Geay (EDF R&D)
++
++#ifndef __INTERPOLATION1D0D_HXX__
++#define __INTERPOLATION1D0D_HXX__
++
++#include "INTERPKERNELDefines.hxx"
++#include "Interpolation.hxx"
++#include "NormalizedUnstructuredMesh.hxx"
++#include "InterpolationOptions.hxx"
++
++#include <vector>
++
++namespace INTERP_KERNEL
++{
++  class INTERPKERNEL_EXPORT Interpolation1D0D : public Interpolation<Interpolation1D0D>
++  {
++  public:
++    Interpolation1D0D();
++    Interpolation1D0D(const InterpolationOptions& io);
++    template<class MyMeshType, class MatrixType>
++    int interpolateMeshes(const MyMeshType& srcMesh, const MyMeshType& targetMesh, MatrixType& result, const std::string& method);
++  private:
++    void adjustBoundingBoxes(std::vector<double>& bbox);
++  };
++}
++
++#endif
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation1D0D.txx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation1D0D.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation1D0D.txx    1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation1D0D.txx    2018-04-19 17:25:17.423791150 +0200
+@@ -0,0 +1,123 @@
++// Copyright (C) 2018  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++#ifndef __INTERPOLATION1D0D_TXX__
++#define __INTERPOLATION1D0D_TXX__
++
++#include "Interpolation1D0D.hxx"
++#include "Interpolation.txx"
++#include "MeshElement.txx"
++#include "PointLocator3DIntersectorP0P0.txx"
++#include "PointLocator3DIntersectorP0P1.txx"
++#include "PointLocator3DIntersectorP1P0.txx"
++#include "PointLocator3DIntersectorP1P1.txx"
++#include "Log.hxx"
++
++#include "BBTree.txx"
++
++#include "InterpKernelAssert.hxx"
++
++namespace INTERP_KERNEL
++{
++  /**
++   *  Very similar to Interpolation3D::interpolateMeshes, except for the bounding boxes that can be
++   *  adjusted in a similar fashion as in InterpolationPlanar::performAdjustmentOfBB()
++   **/
++  template<class MyMeshType, class MatrixType>
++  int Interpolation1D0D::interpolateMeshes(const MyMeshType& srcMesh, const MyMeshType& targetMesh, MatrixType& result, const std::string& method)
++  {
++#if __cplusplus >= 201103L
++    constexpr int SPACEDIM=MyMeshType::MY_SPACEDIM;
++    using ConnType=typename MyMeshType::MyConnType;
++    IKAssert(SPACEDIM==3);
++
++    if(InterpolationOptions::getIntersectionType() != PointLocator)
++      INTERP_KERNEL::Exception("Invalid 1D/0D intersection type specified : must be PointLocator.");
++
++    std::string methC ( InterpolationOptions::filterInterpolationMethod(method) );
++    if(methC!="P1P1")
++      throw Exception("Invalid method chosen must be in \"P1P1\".");
++
++    const double epsilon(getPrecision());
++    // create MeshElement objects corresponding to each element of the two meshes
++    const unsigned long numSrcElems(srcMesh.getNumberOfElements()), numTargetElems(targetMesh.getNumberOfElements());
++
++    LOG(2, "Source mesh has " << numSrcElems << " elements and target mesh has " << numTargetElems << " elements ");
++
++    std::vector<MeshElement<ConnType>*> srcElems(numSrcElems);
++
++    std::map<MeshElement<ConnType>*, int> indices;
++
++    for(unsigned long i = 0 ; i < numSrcElems ; ++i)
++      srcElems[i] = new MeshElement<ConnType>(i, srcMesh);       
++
++    // create empty maps for all source elements
++    result.resize(targetMesh.getNumberOfNodes());
++
++    // create BBTree structure
++    // - get bounding boxes
++    std::vector<double> bboxes(2*SPACEDIM*numSrcElems);
++    int* srcElemIdx = new int[numSrcElems];
++    for(unsigned long i = 0; i < numSrcElems ; ++i)
++      {
++        // get source bboxes in right order
++        srcElems[i]->getBoundingBox()->toCompactData(bboxes.data()+6*i);
++        srcElemIdx[i] = srcElems[i]->getIndex();
++      }
++
++    adjustBoundingBoxes(bboxes);
++    const double *bboxPtr(nullptr);
++    if(numSrcElems>0)
++      bboxPtr=&bboxes[0];
++    BBTree<SPACEDIM,ConnType> tree(bboxPtr, srcElemIdx, 0, numSrcElems);
++    const ConnType *trgConnPtr(targetMesh.getConnectivityPtr()),*trgConnIPtr(targetMesh.getConnectivityIndexPtr());
++    const ConnType *srcConnPtr(srcMesh.getConnectivityPtr()),*srcConnIPtr(srcMesh.getConnectivityIndexPtr());
++    const double *trgCooPtr(targetMesh.getCoordinatesPtr()),*srcCooPtr(srcMesh.getCoordinatesPtr());
++    for(unsigned long i = 0; i < numTargetElems; ++i)
++      {
++        IKAssert(trgConnIPtr[i+1]==i+1 && trgConnIPtr[i]==i);
++        std::vector<ConnType> srcSegCondidates;
++        const double *trgCellPosition(trgCooPtr+SPACEDIM*trgConnPtr[i]);
++        typename MatrixType::value_type& resRow(result[trgConnPtr[i]]);
++        tree.getElementsAroundPoint(trgCellPosition, srcSegCondidates);
++        for(auto srcSeg: srcSegCondidates)
++          {
++            IKAssertMsg(srcConnIPtr[srcSeg+1]==2*(srcSeg+1) && srcConnIPtr[srcSeg]==2*srcSeg,"Only implemented for linear 1D source");
++            double bc0(0.),bc1(0.);
++            ConnType srcNode0(srcConnPtr[2*srcSeg]),srcNode1(srcConnPtr[2*srcSeg+1]);
++            if(IsPointOn3DSeg(srcCooPtr+SPACEDIM*srcNode0,srcCooPtr+SPACEDIM*srcNode1,trgCellPosition,epsilon,bc0,bc1))
++              {
++                resRow.insert(std::make_pair(srcNode0,bc0));
++                resRow.insert(std::make_pair(srcNode1,bc1));
++                continue;
++              }
++          }
++      }
++    delete [] srcElemIdx;
++    for(unsigned long i = 0 ; i < numSrcElems ; ++i)
++      delete srcElems[i];
++    return srcMesh.getNumberOfNodes();
++  }
++#else
++  throw INTERP_KERNEL::Exception("Go buying a C++11 compiler :)");
++#endif
++}
++
++#endif
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation2D1D.txx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation2D1D.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation2D1D.txx    2018-04-19 17:04:36.676221506 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation2D1D.txx    2018-04-19 17:25:17.485792376 +0200
+@@ -94,7 +94,7 @@
+     /****************************************************************/
+     /* Create a search tree based on the bounding boxes             */
+-    /* Instanciate the intersector and initialise the result vector */
++    /* Instantiate the intersector and initialise the result vector */
+     /****************************************************************/
+     long start_filtering=clock();
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation2DCurve.hxx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation2DCurve.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation2DCurve.hxx 2018-04-19 17:04:36.676221506 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation2DCurve.hxx 2018-04-19 17:25:17.521793087 +0200
+@@ -31,7 +31,7 @@
+   public:
+     Interpolation2DCurve();
+     Interpolation2DCurve(const InterpolationOptions& io);
+-    // geometric precision, intersection tolerance, coice of the median line,
++    // geometric precision, intersection tolerance, choice of the median line,
+     void setOptions(double precision, double tolerance, double medianLine);
+   };
+ }
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation3DSurf.cxx MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3DSurf.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/Interpolation3DSurf.cxx  2018-04-19 17:04:36.676221506 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/Interpolation3DSurf.cxx  2018-04-19 17:25:17.640795439 +0200
+@@ -42,13 +42,13 @@
+      - Values: between 0 and 1.
+      - Default: 0.5.
+      -# doRotat: rotate the coordinate system such that the target cell is in the Oxy plane.
+-     - Values: true (necessarilly if Intersection_type=Triangle), false.
++     - Values: true (necessarily if Intersection_type=Triangle), false.
+      - Default: true (as default Intersection_type=Triangle)
+      -# precision: Level of precision of the computations is precision times the characteristic size of the mesh.
+      - Values: positive real number.
+      - Default: 1.0E-12.
+      -# printLevel: Level of verboseness during the computations.
+-     - Values: interger between 0 and 3.
++     - Values: integer between 0 and 3.
+      - Default: 0.
+   */
+   void Interpolation3DSurf::setOptions(double precision, int printLevel, double medianPlan, 
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/InterpolationCurve.txx MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationCurve.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/InterpolationCurve.txx   2018-04-19 17:04:36.676221506 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationCurve.txx   2018-04-19 17:25:17.384790379 +0200
+@@ -168,7 +168,7 @@
+       throw INTERP_KERNEL::Exception("Invalid method specified ! Must be in : \"P0P0\" \"P0P1\" \"P1P0\" or \"P1P1\"");
+     /****************************************************************/
+     /* Create a search tree based on the bounding boxes             */
+-    /* Instanciate the intersector and initialise the result vector */
++    /* Instantiate the intersector and initialise the result vector */
+     /****************************************************************/
+  
+     long start_filtering=clock();
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/InterpolationOptions.cxx MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationOptions.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/InterpolationOptions.cxx 2018-04-19 17:04:36.676221506 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationOptions.cxx 2018-04-19 17:25:17.660795835 +0200
+@@ -96,12 +96,12 @@
+ double INTERP_KERNEL::InterpolationOptions::getArcDetectionPrecision() const
+ {
+-  return INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision;
++  return INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::getArcDetectionPrecision();
+ }
+ void INTERP_KERNEL::InterpolationOptions::setArcDetectionPrecision(double p)
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=p;
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(p);
+ }
+ std::string INTERP_KERNEL::InterpolationOptions::getIntersectionTypeRepr() const
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/InterpolationPlanar.hxx MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationPlanar.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/InterpolationPlanar.hxx  2018-04-19 17:04:36.676221506 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationPlanar.hxx  2018-04-19 17:25:17.387790438 +0200
+@@ -37,7 +37,7 @@
+     InterpolationPlanar();
+     InterpolationPlanar(const InterpolationOptions & io);
+-    // geometric precision, debug print level, coice of the median plane, intersection etc ...
++    // geometric precision, debug print level, choice of the median plane, intersection etc ...
+     void setOptions(double precision, int printLevel,
+                     IntersectionType intersectionType, int orientation=0);
+     
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/InterpolationPlanar.txx MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationPlanar.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/InterpolationPlanar.txx  2018-04-19 17:04:36.676221506 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationPlanar.txx  2018-04-19 17:25:17.370790102 +0200
+@@ -79,7 +79,7 @@
+    *   - Values: positive real number.
+    *   - Default: 1.0E-12.
+    *  -# PrintLevel: Level of verboseness during the computations.
+-   *   - Values: interger between 0 and 3.
++   *   - Values: integer between 0 and 3.
+    *   - Default: 0.
+    */
+   template<class RealPlanar>
+@@ -376,7 +376,7 @@
+       throw INTERP_KERNEL::Exception("Invalid method specified or intersection type ! Must be in : \"P0P0\" \"P0P1\" \"P1P0\" or \"P1P1\"");
+     /****************************************************************/
+     /* Create a search tree based on the bounding boxes             */
+-    /* Instanciate the intersector and initialise the result vector */
++    /* Instantiate the intersector and initialise the result vector */
+     /****************************************************************/
+  
+     long start_filtering=clock();
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/InterpolationUtils.hxx MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationUtils.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/InterpolationUtils.hxx   2018-04-19 17:04:36.676221506 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/InterpolationUtils.hxx   2018-04-19 17:25:17.449791664 +0200
+@@ -68,7 +68,7 @@
+   /*   calcul la surface d'un triangle                  */
+   /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
+-  inline double Surf_Tri(const double* P_1,const double* P_2,const double* P_3)
++  inline double Surf_Tri(const double *P_1,const double *P_2,const double *P_3)
+   {
+     double A=(P_3[1]-P_1[1])*(P_2[0]-P_1[0])-(P_2[1]-P_1[1])*(P_3[0]-P_1[0]);
+     double Surface = 0.5*fabs(A);
+@@ -83,9 +83,9 @@
+   //fonction qui calcul le determinant des vecteurs: P3P1 et P3P2
+   //(cf doc CGAL).
+-  inline double mon_determinant(const double* P_1,
+-                                const double*  P_2,
+-                                const double* P_3)
++  inline double mon_determinant(const double *P_1,
++                                const double *P_2,
++                                const double *P_3)
+   {
+     double mon_det=(P_1[0]-P_3[0])*(P_2[1]-P_3[1])-(P_2[0]-P_3[0])*(P_1[1]-P_3[1]);
+     return mon_det;
+@@ -98,8 +98,7 @@
+   {
+     double X=P_1[0]-P_2[0];
+     double Y=P_1[1]-P_2[1];
+-    double norme=sqrt(X*X+Y*Y);
+-    return norme;
++    return sqrt(X*X+Y*Y);
+   }
+   /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
+@@ -537,6 +536,29 @@
+   }
+   /*!
++   * Compute barycentric coords of point \a point relative to segment S [segStart,segStop] in 3D space.
++   * If point \a point is further from S than eps false is returned.
++   * If point \a point projection on S is outside S false is also returned.
++   * If point \a point is closer from S than eps and its projection inside S true is returned and \a bc0 and \a bc1 output parameter set.
++   */
++  inline bool IsPointOn3DSeg(const double segStart[3], const double segStop[3], const double point[3], double eps, double& bc0, double& bc1)
++  {
++    double AB[3]={segStop[0]-segStart[0],segStop[1]-segStart[1],segStop[2]-segStart[2]},AP[3]={point[0]-segStart[0],point[1]-segStart[1],point[2]-segStart[2]};
++    double l_AB(sqrt(AB[0]*AB[0]+AB[1]*AB[1]+AB[2]*AB[2]));
++    double AP_dot_AB((AP[0]*AB[0]+AP[1]*AB[1]+AP[2]*AB[2])/(l_AB*l_AB));
++    double projOfPOnAB[3]={segStart[0]+AP_dot_AB*AB[0],segStart[1]+AP_dot_AB*AB[1],segStart[2]+AP_dot_AB*AB[2]};
++    double V_dist_P_AB[3]={point[0]-projOfPOnAB[0],point[1]-projOfPOnAB[1],point[2]-projOfPOnAB[2]};
++    double dist_P_AB(sqrt(V_dist_P_AB[0]*V_dist_P_AB[0]+V_dist_P_AB[1]*V_dist_P_AB[1]+V_dist_P_AB[2]*V_dist_P_AB[2]));
++    if(dist_P_AB>=eps)
++      return false;//to far from segment [segStart,segStop]
++    if(AP_dot_AB<-eps || AP_dot_AB>1.+eps)
++      return false;
++    AP_dot_AB=std::max(AP_dot_AB,0.); AP_dot_AB=std::min(AP_dot_AB,1.);
++    bc0=1.-AP_dot_AB; bc1=AP_dot_AB;
++    return true;
++  }
++
++  /*!
+    * Calculate pseudo barycentric coordinates of a point p with respect to the quadrangle vertices.
+    * This method makes the assumption that:
+    *  - spacedim == meshdim (2 here).
+@@ -837,7 +859,7 @@
+   }
+   /*! Function that compares two angles from the values of the pairs (sin,cos)*/
+-  /*! Angles are considered in [0, 2Pi] bt are not computed explicitely */
++  /*! Angles are considered in [0, 2Pi] bt are not computed explicitly */
+   class AngleLess
+   {
+   public:
+@@ -1048,9 +1070,9 @@
+     // just to be able to compile
+   }
+   
+-  /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _*/
+-  /* Checks wether point A is inside the quadrangle BCDE */
+-  /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _*/  
++  /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
++  /* Checks whether point A is inside the quadrangle BCDE */
++  /*_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ */
+   template<int dim> inline double check_inside(const double* A,const double* B,const double* C,const double* D,
+                                                const double* E,double* ABC, double* ADE)
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/MeshElement.txx MEDCOUPLING_new/src/INTERP_KERNEL/MeshElement.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/MeshElement.txx  2018-04-19 17:04:36.678221546 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/MeshElement.txx  2018-04-19 17:25:17.535793364 +0200
+@@ -61,8 +61,6 @@
+     delete _box;
+   }
+-  
+-
+   /////////////////////////////////////////////////////////////////////
+   /// ElementBBoxOrder                                    /////////////
+   /////////////////////////////////////////////////////////////////////
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/PlanarIntersector.txx MEDCOUPLING_new/src/INTERP_KERNEL/PlanarIntersector.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/PlanarIntersector.txx    2018-04-19 17:04:36.678221546 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/PlanarIntersector.txx    2018-04-19 17:25:17.604794728 +0200
+@@ -93,7 +93,7 @@
+   }
+   /*!
+-    Computes the bouding box of a given element. iP in numPol mode.
++    Computes the bounding box of a given element. iP in numPol mode.
+   */
+   template<class MyMeshType, class MyMatrix>
+   void PlanarIntersector<MyMeshType,MyMatrix>::getElemBB(double* bb, const MyMeshType& mesh, ConnType iP, ConnType nb_nodes)
+@@ -380,7 +380,7 @@
+               Coords_B[SPACEDIM*i_B+idim] -=  proj*linear_comb[idim];
+           }
+         
+-        //Buid the matrix sending  A into the Oxy plane and apply it to A and B  
++        //Build the matrix sending  A into the Oxy plane and apply it to A and B  
+         if(do_rotate)
+           {
+             TranslationRotationMatrix rotation;
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/PointLocator2DIntersector.txx MEDCOUPLING_new/src/INTERP_KERNEL/PointLocator2DIntersector.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/PointLocator2DIntersector.txx    2018-04-19 17:04:36.679221566 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/PointLocator2DIntersector.txx    2018-04-19 17:25:17.513792929 +0200
+@@ -118,7 +118,7 @@
+                                                const double *             sourceTria,
+                                                std::vector<double>&       res)
+   {
+-    throw INTERP_KERNEL::Exception("intersectGeoBary incompatible with PointLocator. Desactivate P1P0Bary to avoid the problem");
++    throw INTERP_KERNEL::Exception("intersectGeoBary incompatible with PointLocator. Deactivate P1P0Bary to avoid the problem");
+     return 0.;
+   }
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/PolygonAlgorithms.txx MEDCOUPLING_new/src/INTERP_KERNEL/PolygonAlgorithms.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/PolygonAlgorithms.txx    2018-04-19 17:04:36.679221566 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/PolygonAlgorithms.txx    2018-04-19 17:25:17.599794629 +0200
+@@ -37,7 +37,7 @@
+   /*************************************************************/
+   /* Computes the 3D intersection between two COPLANAR         */
+   /* Segments [A,B] and [C,D], stores the result in V.         */
+-  /* If A belongs to [CD] then the vertex E (preceeding A)     */
++  /* If A belongs to [CD] then the vertex E (preceding A)      */
+   /* is used to decide if the crossing is real. If A coincides */
+   /* with C or D, a special treatment is performed             */
+   /*************************************************************/
+@@ -71,7 +71,7 @@
+             {
+               if(distance2<DIM>(A,D)<_epsilon)
+                 crossprod<DIM>(A,C,E,_vdouble);//store the crossprod between vectors AC and AE (E=vertex preceding A)                     
+-              return false;//case of paralell segments
++              return false;//case of parallel segments
+             }
+           case 3://beware AB and CD may belong to a vertical plane
+             det = determinant(&AB[1],&DC[1]);//determinant of the last two coefficients
+@@ -94,7 +94,7 @@
+                   {
+                     if(distance2<DIM>(A,D)<_epsilon)
+                       crossprod<DIM>(A,C,E,_vdouble);//store the crossprod between vectors AC and AE (E=vertex preceding A)                     
+-                    return false;//case of paralell segments
++                    return false;//case of parallel segments
+                   }
+               }
+           }
+@@ -123,7 +123,7 @@
+                 return true;
+               }
+             else if( same_side > _epsilon ) _terminus= !_is_in_intersection;//reflexion
+-            else //separation of overlaping edges
++            else //separation of overlapping edges
+               {
+                 if(_Inter.empty() ) _terminus=true;
+                 else if(!_is_in_intersection)
+@@ -147,7 +147,7 @@
+                 return true;
+               }
+             else if(fabs(in_between)<=_epsilon && dotprod<DIM>(Vdoublebis,Vdoublebis) > _epsilon)
+-              //ie _vdouble=0, separation of overlaping edges at a double point
++              //ie _vdouble=0, separation of overlapping edges at a double point
+               {
+                 //crossprod<DIM>(A,E,B,_vdouble); 
+                 if(dotprod<DIM>(_vdouble,Vdoublebis) >=_epsilon )//crossing
+@@ -269,7 +269,7 @@
+   /*******************************************************/
+   /* adds the possible crossings between segments [A,B] (with end-point global indices i and i_next) */
+   /*and segments [C,D] and [E,F] to the list inter and updates _End_segments */
+-  /* In cases of ambiguity, the vertex G is used to decide wether the crossing should be accepted */
++  /* In cases of ambiguity, the vertex G is used to decide whether the crossing should be accepted */
+   /*******************************************************/
+   template<int DIM>
+   inline void PolygonAlgorithms<DIM>::addCrossings( const double * A, const double * B, int i , int i_next,
+@@ -405,7 +405,7 @@
+     std::multimap< int, std::pair< int,bool> >::iterator mi;
+-    /********** Initalisation of events with P1 and P2 vertices ************/
++    /********** Initialisation of events with P1 and P2 vertices ************/
+     for(i_loc=0;i_loc<N1;i_loc++)
+       mmap_events.insert(std::make_pair(&P_1[DIM*i_loc],i_loc));
+     for(i_loc=0;i_loc<N2;i_loc++)
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/SplitterTetra.hxx MEDCOUPLING_new/src/INTERP_KERNEL/SplitterTetra.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/SplitterTetra.hxx        2018-04-19 17:04:36.680221586 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/SplitterTetra.hxx        2018-04-19 17:25:17.497792613 +0200
+@@ -88,7 +88,7 @@
+     };
+   
+   // Each sub-node is the barycenter of 4 other nodes.
+-  // For the faces, these are on the orignal mesh.
++  // For the faces, these are on the original mesh.
+   // For the barycenter, the four face sub-nodes are used.
+   static const int GENERAL_24_SUB_NODES[28] = 
+     {
+@@ -175,7 +175,7 @@
+   // Define 8 hexahedral subzones as in Grandy, p449
+   // the values correspond to the nodes that correspond to nodes 1,2,3,4,5,6,7,8 in the subcell
+-  // For the correspondance of the nodes, see the GENERAL_48_SUB_NODES table in calculateSubNodes
++  // For the correspondence of the nodes, see the GENERAL_48_SUB_NODES table in calculateSubNodes
+   static const int GENERAL_48_SUBZONES[64] = 
+     {
+       0,8,21,12,9,20,26,22,
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/SplitterTetra.txx MEDCOUPLING_new/src/INTERP_KERNEL/SplitterTetra.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/SplitterTetra.txx        2018-04-19 17:04:36.680221586 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/SplitterTetra.txx        2018-04-19 17:25:17.465791980 +0200
+@@ -1108,7 +1108,7 @@
+   {
+     // The two nodes of the original mesh cell used in each tetrahedron.
+     // The tetrahedra all have nodes (cellCenter, faceCenter, edgeNode1, edgeNode2)
+-    // For the correspondance of the nodes, see the GENERAL_48_SUB_NODES table in calculateSubNodes
++    // For the correspondence of the nodes, see the GENERAL_48_SUB_NODES table in calculateSubNodes
+     
+     // nodes to use for tetrahedron
+     const double* nodes[4];
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/TransformedTriangle.hxx MEDCOUPLING_new/src/INTERP_KERNEL/TransformedTriangle.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/TransformedTriangle.hxx  2018-04-19 17:04:36.680221586 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/TransformedTriangle.hxx  2018-04-19 17:25:17.390790498 +0200
+@@ -89,7 +89,7 @@
+    * For the other two halfstrips (above the xy and yz edges), other double products are used, which 
+    * are stored in the table DP_FOR_HALFSTRIP_INTERSECTION. This allows us to treat
+    * all the edges equally, avoiding switch() - statements. It is the careful choice of order of the enumeration types that makes this
+-   * possible. Notably, there is a correspondance between the TetraEdge type and the DoubleProduct type (see Grandy, table III) that
++   * possible. Notably, there is a correspondence between the TetraEdge type and the DoubleProduct type (see Grandy, table III) that
+    * is used throughout the code, permitting statements such as DoubleProduct(some_edge) to work.
+    *    When an intersection point has been detected it is calculated with a corresponding calc* - method in the cases where it
+    * is not known directly. It is then added to the polygon A and/or B as necessary.
+@@ -347,7 +347,7 @@
+     static const double TRIPLE_PRODUCT_ANGLE_THRESHOLD;
+-    // correspondance facet - double product
++    // correspondence facet - double product
+     // Grandy, table IV
+     static const DoubleProduct DP_FOR_SEG_FACET_INTERSECTION[12];
+@@ -362,14 +362,14 @@
+     // for Segment-Facet and Segment-Edge intersections
+     static const int DP_INDEX[12];
+-    // correspondance edge - corners
++    // correspondence edge - corners
+     static const TetraCorner CORNERS_FOR_EDGE[12];
+-    // correspondance edge - facets
++    // correspondence edge - facets
+     // facets shared by each edge
+     static const TetraFacet FACET_FOR_EDGE[12];
+-    // correspondance edge - corners
++    // correspondence edge - corners
+     static const TetraEdge EDGES_FOR_CORNER[12];
+    
+     // double products used in segment-halfstrip test
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/TransformedTriangleInline.hxx MEDCOUPLING_new/src/INTERP_KERNEL/TransformedTriangleInline.hxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/TransformedTriangleInline.hxx    2018-04-19 17:04:36.680221586 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/TransformedTriangleInline.hxx    2018-04-19 17:25:17.491792494 +0200
+@@ -170,7 +170,7 @@
+   
+   //  assert(edge < H01);
+   
+-  // correspondance edge - triple products
++  // correspondence edge - triple products
+   // for edges OX, ..., ZX (Grandy, table III)
+   static const TetraCorner TRIPLE_PRODUCTS[12] = 
+     {
+@@ -212,8 +212,8 @@
+ inline bool TransformedTriangle::testSegmentIntersectsFacet(const TriSegment seg, const TetraFacet facet) const
+ {
+-  // use correspondance facet a = 0 <=> offset for coordinate a in _coords
+-  // and also correspondance segment AB => corner A
++  // use correspondence facet a = 0 <=> offset for coordinate a in _coords
++  // and also correspondence segment AB => corner A
+   const double coord1 = _coords[5*seg + facet];
+   const double coord2 = _coords[5*( (seg + 1) % 3) + facet];
+   
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/TransformedTriangleIntersect.cxx MEDCOUPLING_new/src/INTERP_KERNEL/TransformedTriangleIntersect.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/TransformedTriangleIntersect.cxx 2018-04-19 17:04:36.680221586 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/TransformedTriangleIntersect.cxx 2018-04-19 17:25:17.526793186 +0200
+@@ -28,10 +28,10 @@
+ {
+   // ----------------------------------------------------------------------------------
+-  //  Correspondance tables describing all the variations of formulas. 
++  //  Correspondence tables describing all the variations of formulas. 
+   // ----------------------------------------------------------------------------------
+-  /// \brief Correspondance between facets and double products.
++  /// \brief Correspondence between facets and double products.
+   ///
+   /// This table encodes Grandy, table IV. Use 3*facet + {0,1,2} as index
+   const TransformedTriangle::DoubleProduct TransformedTriangle::DP_FOR_SEG_FACET_INTERSECTION[12] = 
+@@ -78,7 +78,7 @@
+       9, 10, 11  // XYZ
+     };
+-  /// \brief Correspondance edge - corners.
++  /// \brief Correspondence edge - corners.
+   ///
+   /// Gives the two corners associated with each edge
+   /// Use 2*edge + {0, 1} as index
+@@ -92,7 +92,7 @@
+       Z, X  // ZX
+     };
+-  /// \brief Correspondance edge - facets.
++  /// \brief Correspondence edge - facets.
+   ///
+   /// Gives the two facets shared by and edge. Use 2*facet + {0, 1} as index
+   const TransformedTriangle::TetraFacet TransformedTriangle::FACET_FOR_EDGE[12] =
+@@ -105,7 +105,7 @@
+       OZX, XYZ  // ZX
+     };
+-  /// \brief Correspondance corners - edges.
++  /// \brief Correspondence corners - edges.
+   ///
+   /// Gives edges meeting at a given corner. Use 3*corner + {0,1,2} as index
+   const TransformedTriangle::TetraEdge TransformedTriangle::EDGES_FOR_CORNER[12] =
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/TransformedTriangleMath.cxx MEDCOUPLING_new/src/INTERP_KERNEL/TransformedTriangleMath.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/TransformedTriangleMath.cxx      2018-04-19 17:04:36.699221965 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/TransformedTriangleMath.cxx      2018-04-19 17:25:17.452791723 +0200
+@@ -127,7 +127,7 @@
+           }
+       }
+   
+-    // -- (2) check that each double product statisfies Grandy, [47], else set to 0
++    // -- (2) check that each double product satisfies Grandy, [47], else set to 0
+     for(TriSegment seg = PQ ; seg <= RP ; seg = TriSegment(seg + 1))
+       {
+         for(DoubleProduct dp = C_YZ ; dp <=  C_10 ; dp = DoubleProduct(dp + 1))
+@@ -270,7 +270,7 @@
+           {
+             const DoubleProduct dp = DP_FOR_DETERMINANT_EXPANSION[3*corner + (row - 1)];
+-            // get edge by using correspondance between Double Product and Edge
++            // get edge by using correspondence between Double Product and Edge
+             TetraEdge edge = TetraEdge(dp);
+            
+             // use edge only if it is surrounded by the surface
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/VolSurfUser.cxx MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/VolSurfUser.cxx  2018-04-19 17:04:36.700221985 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.cxx  2018-04-19 17:25:17.411790913 +0200
+@@ -246,7 +246,7 @@
+   }
+   /*!
+-   * \param [out] matrix contain a dense matrix of size 12 with 3 rows containing each 4 colums. This matrix is the reduction of 4x4 matrix but the last
++   * \param [out] matrix contain a dense matrix of size 12 with 3 rows containing each 4 columns. This matrix is the reduction of 4x4 matrix but the last
+    *              line containing [0,0,0,1] is omitted.
+    */
+   bool ComputeRotTranslationMatrixToPut3PointsOnOXY(const double *p0, const double *p1, const double *p2, double *matrix)
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNEL/VolSurfUser.txx MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.txx
+--- MEDCOUPLING_old/src/INTERP_KERNEL/VolSurfUser.txx  2018-04-19 17:04:36.700221985 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNEL/VolSurfUser.txx  2018-04-19 17:25:17.435791387 +0200
+@@ -156,6 +156,7 @@
+             
+       case INTERP_KERNEL::NORM_PENTA6 :
+       case INTERP_KERNEL::NORM_PENTA15 :
++      case INTERP_KERNEL::NORM_PENTA18 :
+         {
+           int N1 = OTT<ConnType,numPol>::coo2C(connec[0]);
+           int N2 = OTT<ConnType,numPol>::coo2C(connec[1]);
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNELTest/CMakeLists.txt MEDCOUPLING_new/src/INTERP_KERNELTest/CMakeLists.txt
+--- MEDCOUPLING_old/src/INTERP_KERNELTest/CMakeLists.txt       2018-04-19 17:04:36.701222005 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNELTest/CMakeLists.txt       2018-04-19 17:25:17.930801172 +0200
+@@ -89,7 +89,7 @@
+ TARGET_LINK_LIBRARIES(InterpKernelTestUtils interpkernel)
+ ADD_LIBRARY(InterpKernelTest ${InterpKernelTest_SOURCES})
+-SET(InterpKernelTest_LIBS medcoupling interpkernel ${CPPUNIT_LIBRARIES})
++SET(InterpKernelTest_LIBS medcouplingcpp interpkernel ${CPPUNIT_LIBRARIES})
+ IF(NOT MEDCOUPLING_MICROMED)
+   SET(InterpKernelTest_LIBS medloader ${InterpKernelTest_LIBS})
+ ENDIF(NOT MEDCOUPLING_MICROMED)
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNELTest/InterpolationOptionsTest.cxx MEDCOUPLING_new/src/INTERP_KERNELTest/InterpolationOptionsTest.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNELTest/InterpolationOptionsTest.cxx 2018-04-19 17:04:36.701222005 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNELTest/InterpolationOptionsTest.cxx 2018-04-19 17:25:17.927801112 +0200
+@@ -79,7 +79,7 @@
+     MEDCouplingNormalizedUnstructuredMesh<2,2> wrap_target_mesh(target_mesh_mc);
+     // Go for interpolation...
+     INTERP_KERNEL::Interpolation2D myInterpolator;
+-    //optionnal call to parametrize your interpolation. First precision, tracelevel, intersector wanted.
++    //optional call to parametrize your interpolation. First precision, tracelevel, intersector wanted.
+     myInterpolator.setPrecision(1e-7);
+     myInterpolator.setPrintLevel(1);
+     source_mesh->decrRef();
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNELTest/MeshTestToolkit.txx MEDCOUPLING_new/src/INTERP_KERNELTest/MeshTestToolkit.txx
+--- MEDCOUPLING_old/src/INTERP_KERNELTest/MeshTestToolkit.txx  2018-04-19 17:04:36.701222005 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNELTest/MeshTestToolkit.txx  2018-04-19 17:25:17.943801429 +0200
+@@ -402,7 +402,7 @@
+    * @param  mesh2path   the path to the file containing the target mesh, relative to {$MEDCOUPLING_ROOT_DIR}/share/resources/med/
+    * @param  mesh2       the name of the target mesh
+    * @param  correctVol  the total volume of the intersection of the two meshes
+-   * @param  prec        maximum relative error to be tolerated in volume comparisions
++   * @param  prec        maximum relative error to be tolerated in volume comparisons
+    * @param  doubleTest  if false, only the test with mesh 1 as the source mesh and mesh 2 as the target mesh will be performed
+    *
+    */
+@@ -467,7 +467,7 @@
+    * @param  mesh1       the name of the source mesh
+    * @param  mesh2       the name of the target mesh
+    * @param  correctVol  the total volume of the intersection of the two meshes
+-   * @param  prec        maximum relative error to be tolerated in volume comparisions
++   * @param  prec        maximum relative error to be tolerated in volume comparisons
+    * @param  doubleTest  if false, only the test with mesh 1 as the source mesh and mesh 2 as the target mesh will be performed
+    *
+    */
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNELTest/QuadraticPlanarInterpTest2.cxx MEDCOUPLING_new/src/INTERP_KERNELTest/QuadraticPlanarInterpTest2.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNELTest/QuadraticPlanarInterpTest2.cxx       2018-04-19 17:04:36.702222025 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNELTest/QuadraticPlanarInterpTest2.cxx       2018-04-19 17:25:17.924801053 +0200
+@@ -349,7 +349,7 @@
+       delete intersector; e2->decrRef(); e1->decrRef();
+     }
+   // Tangent intersection
+-  QUADRATIC_PLANAR::setPrecision(1e-5);
++  QuadraticPlanarPrecision::setPrecision(1e-5);
+   for(unsigned k=0;k<8;k++)
+     {
+       double center2[2]; center[0]=0.; center[1]=0.;
+@@ -361,7 +361,7 @@
+       bool obvious,areOverlapped;
+       intersector->areOverlappedOrOnlyColinears(0,obvious,areOverlapped);
+       CPPUNIT_ASSERT(!obvious && !areOverlapped);
+-      CPPUNIT_ASSERT(intersector->intersect(0,v4,order,v3)); CPPUNIT_ASSERT(order); // order has no sence here because v4.size() expected to 1 but for valgrind serenity test.
++      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_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);
+@@ -370,7 +370,7 @@
+       v4.clear(); v4.clear();
+       delete intersector; e2->decrRef(); e1->decrRef();
+     }
+-  QUADRATIC_PLANAR::setPrecision(1e-14);
++  QuadraticPlanarPrecision::setPrecision(1e-14);
+   // Extremities # 1
+   for(unsigned k=0;k<8;k++)
+     {
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNELTest/QuadraticPlanarInterpTest4.cxx MEDCOUPLING_new/src/INTERP_KERNELTest/QuadraticPlanarInterpTest4.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNELTest/QuadraticPlanarInterpTest4.cxx       2018-04-19 17:04:36.702222025 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNELTest/QuadraticPlanarInterpTest4.cxx       2018-04-19 17:25:17.961801784 +0200
+@@ -495,8 +495,8 @@
+  */
+ void QuadraticPlanarInterpTest::checkHighLevelFunctionTest1()
+ {
+-  QUADRATIC_PLANAR::setPrecision(1e-12);
+-  QUADRATIC_PLANAR::setArcDetectionPrecision(1e-9);
++  QuadraticPlanarPrecision::setPrecision(1e-12);
++  QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-9);
+   double coords[]={
+     8.8334591186000004, 5.0999999999999996,
+     7.1014083111000001, 6.0999999999999996,
+@@ -581,13 +581,13 @@
+   pol=QuadraticPolygon::BuildArcCirclePolygon(nodes);
+   pol->getBarycenter(tmp,tmp2);
+   delete pol;
+-  QUADRATIC_PLANAR::setPrecision(1e-14);
++  QuadraticPlanarPrecision::setPrecision(1e-14);
+ }
+ void QuadraticPlanarInterpTest::check1DInterpLin()
+ {
+-  QUADRATIC_PLANAR::setPrecision(1e-7);
+-  QUADRATIC_PLANAR::setArcDetectionPrecision(1e-9);
++  QuadraticPlanarPrecision::setPrecision(1e-7);
++  QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-9);
+   const int NB_OF_CELL_AXIAL_1=30;
+   static const double Z_VALS_1[NB_OF_CELL_AXIAL_1+1]=
+     { -0.1550 , -0.1356, -0.1162, -0.0969, -0.0775 ,-0.0581, -0.0387, -0.0194,  0.0000 , 0.0500, 
+@@ -631,7 +631,7 @@
+       CPPUNIT_ASSERT_EQUAL(1,(int)m[i+2].size());
+       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.,m[i+2][i+9],1e-12);
+     }
+-  QUADRATIC_PLANAR::setPrecision(1e-14);
++  QuadraticPlanarPrecision::setPrecision(1e-14);
+ }
+ /*!
+@@ -639,8 +639,8 @@
+  */
+ void QuadraticPlanarInterpTest::checkEpsilonCoherency1()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-12);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-5);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-12);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-5);
+   const double pol1[]={
+     -2.1083388455000001, 1.2172499999999999,
+@@ -709,8 +709,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegression2()
+ {
+-  QUADRATIC_PLANAR::setPrecision(1e-12);
+-  QUADRATIC_PLANAR::setArcDetectionPrecision(1e-9);
++  QuadraticPlanarPrecision::setPrecision(1e-12);
++  QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-9);
+   double coords1[]=
+     {
+       15.141499999899999, -26.226033271399999,
+@@ -801,8 +801,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegression4()
+ {
+-  QUADRATIC_PLANAR::setPrecision(1e-12);
+-  QUADRATIC_PLANAR::setArcDetectionPrecision(1e-9);
++  QuadraticPlanarPrecision::setPrecision(1e-12);
++  QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-9);
+   double coords1[]=
+     {
+       10.962340811000001, -22.417749999000002,
+@@ -857,8 +857,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegression5()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-12);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-5);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-12);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-5);
+   double coords1[]=
+     {
+       -1.7320508075000001, 1,
+@@ -913,8 +913,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegression6()
+ {
+-  QUADRATIC_PLANAR::setPrecision(1e-12);
+-  QUADRATIC_PLANAR::setArcDetectionPrecision(1e-5);
++  QuadraticPlanarPrecision::setPrecision(1e-12);
++  QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-5);
+   double coords1[]=
+     {
+       10.962340811000001, -22.417749999000002,
+@@ -965,8 +965,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegression7()
+ {
+-  QUADRATIC_PLANAR::setPrecision(1e-5);
+-  QUADRATIC_PLANAR::setArcDetectionPrecision(1e-5);
++  QuadraticPlanarPrecision::setPrecision(1e-5);
++  QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-5);
+   double coords1[]=
+     {
+       -2., 0,
+@@ -1017,8 +1017,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegression8()
+ {
+-  QUADRATIC_PLANAR::setPrecision(1e-3);
+-  QUADRATIC_PLANAR::setArcDetectionPrecision(1e-5);
++  QuadraticPlanarPrecision::setPrecision(1e-3);
++  QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-5);
+   double coords1[]=
+     {
+       -13.933240959000001, -28.559499999,
+@@ -1068,8 +1068,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegression9()
+ {
+-  QUADRATIC_PLANAR::setPrecision(1e-7);
+-  QUADRATIC_PLANAR::setArcDetectionPrecision(1e-8);
++  QuadraticPlanarPrecision::setPrecision(1e-7);
++  QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-8);
+   double coords1[]=
+     {
+       -0.04476229252902969, -0.085118027765365603,
+@@ -1119,8 +1119,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegression10()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords1[]=
+     { -0.002269581957210453, -0.09851030343724453,
+       -0.004268022334182935, -0.1059685844580936,
+@@ -1149,8 +1149,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegression11()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords1[]=
+     { -0.002269581957210453, -0.09851030343724453,
+       -0.004268022334182935, -0.1059685844580936,
+@@ -1200,8 +1200,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegression12()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-6);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-6);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords1[]=
+     { -0.5032251558760915, -0.8716087994449138,
+       -0.4695268343089433, -0.8806382374805872,
+@@ -1252,8 +1252,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegression13()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-6);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-6);
+   double coords_1[194]={ 
+     0, 0, 0.304375, -7.454791178893722e-17, 0.2152256265236553, -0.2152256265236555, -5.591093384170291e-17, -0.304375, 
+@@ -1348,8 +1348,8 @@
+ */
+ void QuadraticPlanarInterpTest::checkNonRegression14()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-6);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-6);
+   double coords[72]={
+     1.,0.,1.3,0.,-1.3,0.,-1.,0.,1.15,0.,0.,1.3,-1.15,0.,0.,1.,
+@@ -1418,8 +1418,8 @@
+  */
+ void QuadraticPlanarInterpTest::checkNonRegression15()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-6);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-6);
+   double coords[72]={
+     1.,0.,1.3,0.,-1.3,0.,-1.,0.,1.15,0.,0.,1.3,-1.15,0.,0.,1.,
+@@ -1494,8 +1494,8 @@
+  */
+ void QuadraticPlanarInterpTest::checkNonRegression16()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords1[194]={ 
+     0, 0, 0.304375, 0, 0.2152256265236554, 0.2152256265236554, 1.86369779472343e-17, 0.304375, 
+     -0.2152256265236554, 0.2152256265236554, -0.304375, 3.727395589446861e-17, -0.2152256265236555, -0.2152256265236554, -5.591093384170291e-17, -0.304375, 
+@@ -1574,8 +1574,8 @@
+  */
+ void QuadraticPlanarInterpTest::checkNonRegression17()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -1., 0., 1., 0. , 1.5, 0., -1.5, 0., 
+     0. , 1., 1.25, 0., 0., 1.5, -1.25, 0.};
+@@ -1614,7 +1614,7 @@
+ void QuadraticPlanarInterpTest::checkNormalize()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-14);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-14);
+   Node *n1=new Node(0.,0.);                Node *n4=new Node(0.,-3.);
+   Node *n2=new Node(10.,0.);               Node *n5=new Node(10.,-3.);
+   Node *n3=new Node(5.,10.);               Node *n6=new Node(5.,7.);
+@@ -1665,7 +1665,7 @@
+ void QuadraticPlanarInterpTest::checkMakePartitionAbs1()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-14);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-14);
+   Node *n0=new Node(0.,0.);                Node *n4=new Node(0.5,0.25);
+   Node *n1=new Node(0.,0.5);               Node *n5=new Node(0.3,1.2);
+   Node *n2=new Node(1.,0.5);               Node *n6=new Node(1.1,1.3);
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNELTest/QuadraticPlanarInterpTest5.cxx MEDCOUPLING_new/src/INTERP_KERNELTest/QuadraticPlanarInterpTest5.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNELTest/QuadraticPlanarInterpTest5.cxx       2018-04-19 17:04:36.702222025 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNELTest/QuadraticPlanarInterpTest5.cxx       2018-04-19 17:25:17.951801587 +0200
+@@ -45,8 +45,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0000()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.383022221559489, 0.3213938048432697, -0.5745333323392334, 0.4820907072649046, 0.5745333323392335, 0.4820907072649044, 0.383022221559489, 0.3213938048432696,
+     -0.4787777769493612, 0.4017422560540872, 4.592273826833915e-17, 0.75, 0.4787777769493612, 0.401742256054087, 3.061515884555943e-17, 0.5 };
+@@ -71,8 +71,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0001()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.383022221559489, 0.3213938048432697, -0.5745333323392334, 0.4820907072649046, 0.5745333323392335, 0.4820907072649044, 0.383022221559489, 0.3213938048432696,
+     -0.4787777769493612, 0.4017422560540872, 4.592273826833915e-17, 0.75, 0.4787777769493612, 0.401742256054087, 3.061515884555943e-17, 0.5 };
+@@ -97,8 +97,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0002()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.383022221559489, 0.3213938048432697, -0.5745333323392334, 0.4820907072649046, 0.5745333323392335, 0.4820907072649044, 0.383022221559489, 0.3213938048432696,
+     -0.4787777769493612, 0.4017422560540872, 4.592273826833915e-17, 0.75, 0.4787777769493612, 0.401742256054087, 3.061515884555943e-17, 0.5 };
+@@ -123,8 +123,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0003()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.3535533905932737, 0.3535533905932738, -0.5303300858899106, 0.5303300858899107, 0.5303300858899107, 0.5303300858899106, 0.3535533905932738, 0.3535533905932737,
+     -0.4419417382415922, 0.4419417382415922, 4.592273826833915e-17, 0.75, 0.4419417382415922, 0.4419417382415922, 3.061515884555943e-17, 0.5 };
+@@ -149,8 +149,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0004()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.4596194077712559, 0.4596194077712559, -0.5303300858899106, 0.5303300858899107, 0.5303300858899107, 0.5303300858899106, 0.4596194077712559, 0.4596194077712559,
+     -0.4949747468305832, 0.4949747468305833, 4.592273826833915e-17, 0.75, 0.4949747468305833, 0.4949747468305832, 3.979970649922726e-17, 0.65 };
+@@ -175,8 +175,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0005()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.383022221559489, 0.3213938048432697, -0.6128355544951823, 0.5142300877492316, 0.6128355544951825, 0.5142300877492314, 0.383022221559489, 0.3213938048432696,
+     -0.4979288880273356, 0.4178119462962507, 4.898425415289509e-17, 0.8, 0.4979288880273357, 0.4178119462962505, 3.061515884555943e-17, 0.5 };
+@@ -201,8 +201,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0006()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.383022221559489, 0.3213938048432697, -0.5362311101832845, 0.4499513267805776, 0.5362311101832846, 0.4499513267805774, 0.383022221559489, 0.3213938048432696,
+     -0.4596266658713867, 0.3856725658119237, 4.28612223837832e-17, 0.7, 0.4596266658713868, 0.3856725658119236, 3.061515884555943e-17, 0.5 };
+@@ -227,8 +227,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0007()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.383022221559489, 0.3213938048432697, -0.5362311101832845, 0.4499513267805776, 0.5362311101832846, 0.4499513267805774, 0.383022221559489, 0.3213938048432696,
+     -0.4596266658713867, 0.3856725658119237, 4.28612223837832e-17, 0.7, 0.4596266658713868, 0.3856725658119236, 3.061515884555943e-17, 0.5 };
+@@ -253,8 +253,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0008()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.383022221559489, 0.3213938048432697, -0.5362311101832845, 0.4499513267805776, 0.5362311101832846, 0.4499513267805774, 0.383022221559489, 0.3213938048432696,
+     -0.4596266658713867, 0.3856725658119237, 4.28612223837832e-17, 0.7, 0.4596266658713868, 0.3856725658119236, 3.061515884555943e-17, 0.5 };
+@@ -279,8 +279,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0009()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
+     -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4 };
+@@ -304,8 +304,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0010()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
+ -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4 };
+@@ -329,8 +329,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0011()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
+ -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4 };
+@@ -372,8 +372,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar2511()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.3863703305156274, -0.1035276180410081, -0.4829629131445342, -0.1294095225512602, 0.4829629131445342, -0.1294095225512604, 0.3863703305156274, -0.1035276180410083,
+     -0.4346666218300808, -0.1164685702961342, 1.416374613080751e-16, 0.5, 0.4346666218300808, -0.1164685702961343, 1.133099690464601e-16, 0.4, };
+@@ -416,8 +416,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0012()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
+     -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
+@@ -450,8 +450,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0013()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
+     -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
+@@ -484,8 +484,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0014()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
+ -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
+@@ -528,8 +528,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0015()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
+ -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
+@@ -572,8 +572,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0016()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
+ -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
+@@ -616,8 +616,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0017()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
+     -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
+@@ -661,8 +661,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0018()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -1, 1.224606353822377e-16, -1.6, 1.959370166115804e-16, 9.796850830579018e-17, 1.6, 6.123031769111886e-17, 1,
+     -1.3, 1.591988259969091e-16, -1.131370849898476, 1.131370849898476, 7.959941299845453e-17, 1.3, -0.7071067811865475, 0.7071067811865476 };
+@@ -706,8 +706,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0019()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
+     -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
+@@ -732,8 +732,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0020()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
+     -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
+@@ -777,8 +777,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0021()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
+     -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
+@@ -821,8 +821,8 @@
+ }
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0022()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
+     -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
+@@ -847,8 +847,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0023()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
+     -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5, };
+@@ -873,8 +873,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0024()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
+ -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
+@@ -898,8 +898,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar2524()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
+ -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
+@@ -923,8 +923,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0025()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.5, 6.123031769111886e-17, -0.8, 9.796850830579018e-17, 0.8, 0, 0.5, 0,
+     -0.65, 7.959941299845453e-17, 4.898425415289509e-17, 0.8, 0.65, 0, 3.061515884555943e-17, 0.5 };
+@@ -958,8 +958,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0026()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
+     -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
+@@ -993,8 +993,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0027()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
+     -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
+@@ -1038,8 +1038,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0028()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
+     -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
+@@ -1083,8 +1083,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0029()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
+     -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
+@@ -1128,8 +1128,8 @@
+ void QuadraticPlanarInterpTest::checkNonRegressionOmar0030()
+ {
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setPrecision(1e-7);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::setArcDetectionPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarPrecision::setPrecision(1e-7);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision::setArcDetectionPrecision(1e-7);
+   double coords[16]={
+     -0.4, 4.898425415289509e-17, -0.75, 9.184547653667829e-17, 0.75, 0, 0.4, 0,
+     -0.575, 7.041486534478669e-17, 4.592273826833915e-17, 0.75, 0.575, 0, 2.449212707644755e-17, 0.4 };
+diff -Naur MEDCOUPLING_old/src/INTERP_KERNELTest/SingleElementPlanarTests.cxx MEDCOUPLING_new/src/INTERP_KERNELTest/SingleElementPlanarTests.cxx
+--- MEDCOUPLING_old/src/INTERP_KERNELTest/SingleElementPlanarTests.cxx 2018-04-19 17:04:36.703222045 +0200
++++ MEDCOUPLING_new/src/INTERP_KERNELTest/SingleElementPlanarTests.cxx 2018-04-19 17:25:17.937801310 +0200
+@@ -231,7 +231,7 @@
+   {
+     INTERP_KERNEL::PolygonAlgorithms<2> intersector (_Epsilon, _Precision);;
+     /*
+-      ////////////////// TEST DESACTIVATED by A. GEAY because memory fault : 
++      ////////////////// TEST DEACTIVATED by A. GEAY because memory fault : 
+       // conditional jump INTERP_KERNEL::PolygonAlgorithms<2>::intersectConvexPolygons(double const*, double const*, int, int) (PolygonAlgorithms.txx:629)
+     std::deque< double > actual_result = intersector.intersectConvexPolygons(_square1,_square1,4,4);
+     std::deque< double > expected_result;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/CMakeLists.txt MEDCOUPLING_new/src/MEDCoupling/CMakeLists.txt
+--- MEDCOUPLING_old/src/MEDCoupling/CMakeLists.txt     2018-04-19 17:04:36.704222065 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/CMakeLists.txt     2018-04-19 17:25:18.014802832 +0200
+@@ -80,12 +80,13 @@
+   MEDCouplingRemapper.cxx
+   )
+-ADD_LIBRARY(medcoupling ${medcoupling_SOURCES})
+-TARGET_LINK_LIBRARIES(medcoupling interpkernel)
+-INSTALL(TARGETS medcoupling EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${MEDCOUPLING_INSTALL_LIBS})
++ADD_LIBRARY(medcouplingcpp ${medcoupling_SOURCES})
++SET_TARGET_PROPERTIES(medcouplingcpp PROPERTIES OUTPUT_NAME "medcoupling")
++TARGET_LINK_LIBRARIES(medcouplingcpp interpkernel)
++INSTALL(TARGETS medcouplingcpp EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${MEDCOUPLING_INSTALL_LIBS})
+ ADD_LIBRARY(medcouplingremapper ${medcouplingremapper_SOURCES})
+-TARGET_LINK_LIBRARIES(medcouplingremapper medcoupling)
++TARGET_LINK_LIBRARIES(medcouplingremapper medcouplingcpp)
+ INSTALL(TARGETS medcouplingremapper EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${MEDCOUPLING_INSTALL_LIBS})
+ FILE(GLOB medcoupling_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MCAuto.hxx MEDCOUPLING_new/src/MEDCoupling/MCAuto.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MCAuto.hxx 2018-04-19 17:04:36.704222065 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MCAuto.hxx 2018-04-19 17:25:18.015802852 +0200
+@@ -101,6 +101,7 @@
+     const T& operator*() { return *_ptr; }
+     const T& operator*() const { return *_ptr; }
+     operator const T *() const { return _ptr; }
++    T *shameOnMeConstCast() const { return const_cast<T*>(_ptr); }
+   private:
+     void referPtr(const T *ptr) { _ptr=ptr; if(_ptr) _ptr->incrRef(); }
+     void destroyPtr() { if(_ptr) _ptr->decrRef(); }
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCoupling1GTUMesh.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCoupling1GTUMesh.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCoupling1GTUMesh.cxx    2018-04-19 17:04:36.704222065 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCoupling1GTUMesh.cxx    2018-04-19 17:25:18.048803504 +0200
+@@ -145,7 +145,7 @@
+  * \a this is composed in cell types.
+  * The returned array is of size 3*n where n is the number of different types present in \a this. 
+  * For every k in [0,n] ret[3*k+2]==-1 because it has no sense here. 
+- * This parameter is kept only for compatibility with other methode listed above.
++ * This parameter is kept only for compatibility with other method listed above.
+  */
+ std::vector<int> MEDCoupling1GTUMesh::getDistributionOfTypes() const
+ {
+@@ -178,7 +178,7 @@
+  *          - After \a code contains [NORM_...,nbCells,0], \a idsInPflPerType [[0,1]] and \a idsPerType is [[1,2]] <br>
+  */
+-void MEDCoupling1GTUMesh::splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType) const
++void MEDCoupling1GTUMesh::splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType, bool smartPflKiller) const
+ {
+   if(!profile)
+     throw INTERP_KERNEL::Exception("MEDCoupling1GTUMesh::splitProfilePerType : input profile is NULL !");
+@@ -188,7 +188,7 @@
+   code.resize(3); idsInPflPerType.resize(1);
+   code[0]=(int)getCellModelEnum(); code[1]=nbTuples;
+   idsInPflPerType.resize(1);
+-  if(profile->isIota(nbOfCells))
++  if(smartPflKiller && profile->isIota(nbOfCells))
+     {
+       code[2]=-1;
+       idsInPflPerType[0]=const_cast<DataArrayInt *>(profile); idsInPflPerType[0]->incrRef();
+@@ -1635,7 +1635,7 @@
+ }
+ /*!
+- * \return DataArrayInt * - the internal reference to the nodal connectivity. The caller is not reponsible to deallocate it.
++ * \return DataArrayInt * - the internal reference to the nodal connectivity. The caller is not responsible to deallocate it.
+  */
+ DataArrayInt *MEDCoupling1SGTUMesh::getNodalConnectivity() const
+ {
+@@ -1646,7 +1646,7 @@
+ /*!
+  * Allocates memory to store an estimation of the given number of cells. Closer is the estimation to the number of cells effectively inserted,
+  * less will be the needs to realloc. If the number of cells to be inserted is not known simply put 0 to this parameter.
+- * If a nodal connectivity previouly existed before the call of this method, it will be reset.
++ * If a nodal connectivity previously existed before the call of this method, it will be reset.
+  *
+  *  \param [in] nbOfCells - estimation of the number of cell \a this mesh will contain.
+  */
+@@ -1666,7 +1666,7 @@
+  * \param [in] nodalConnOfCellEnd - the end (excluded) of nodal connectivity of the cell to add.
+  * \throw If the length of the input nodal connectivity array of the cell to add is not equal to number of nodes per cell relative to the unique geometric type
+  *        attached to \a this.
+- * \thow If the nodal connectivity array in \a this is null (call MEDCoupling1SGTUMesh::allocateCells before).
++ * \throw If the nodal connectivity array in \a this is null (call MEDCoupling1SGTUMesh::allocateCells before).
+  */
+ void MEDCoupling1SGTUMesh::insertNextCell(const int *nodalConnOfCellBg, const int *nodalConnOfCellEnd)
+ {
+@@ -3302,7 +3302,7 @@
+  * \param [in] nodalConnOfCellEnd - the end (excluded) of nodal connectivity of the cell to add.
+  * \throw If the length of the input nodal connectivity array of the cell to add is not equal to number of nodes per cell relative to the unique geometric type
+  *        attached to \a this.
+- * \thow If the nodal connectivity array in \a this is null (call MEDCoupling1SGTUMesh::allocateCells before).
++ * \throw If the nodal connectivity array in \a this is null (call MEDCoupling1SGTUMesh::allocateCells before).
+  */
+ void MEDCoupling1DGTUMesh::insertNextCell(const int *nodalConnOfCellBg, const int *nodalConnOfCellEnd)
+ {
+@@ -3338,7 +3338,7 @@
+ }
+ /*!
+- * \return DataArrayInt * - the internal reference to the nodal connectivity. The caller is not reponsible to deallocate it.
++ * \return DataArrayInt * - the internal reference to the nodal connectivity. The caller is not responsible to deallocate it.
+  */
+ DataArrayInt *MEDCoupling1DGTUMesh::getNodalConnectivity() const
+ {
+@@ -3347,7 +3347,7 @@
+ }
+ /*!
+- * \return DataArrayInt * - the internal reference to the nodal connectivity index. The caller is not reponsible to deallocate it.
++ * \return DataArrayInt * - the internal reference to the nodal connectivity index. The caller is not responsible to deallocate it.
+  */
+ DataArrayInt *MEDCoupling1DGTUMesh::getNodalConnectivityIndex() const
+ {
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCoupling1GTUMesh.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCoupling1GTUMesh.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCoupling1GTUMesh.hxx    2018-04-19 17:04:36.705222084 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCoupling1GTUMesh.hxx    2018-04-19 17:25:18.029803128 +0200
+@@ -46,7 +46,7 @@
+     MEDCOUPLING_EXPORT INTERP_KERNEL::NormalizedCellType getTypeOfCell(std::size_t cellId) const;
+     MEDCOUPLING_EXPORT std::set<INTERP_KERNEL::NormalizedCellType> getAllGeoTypes() const;
+     MEDCOUPLING_EXPORT std::vector<int> getDistributionOfTypes() const;
+-    MEDCOUPLING_EXPORT void splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType) const;
++    MEDCOUPLING_EXPORT void splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType, bool smartPflKiller=true) const;
+     MEDCOUPLING_EXPORT DataArrayInt *checkTypeConsistencyAndContig(const std::vector<int>& code, const std::vector<const DataArrayInt *>& idsPerType) const;
+     MEDCOUPLING_EXPORT void writeVTKLL(std::ostream& ofs, const std::string& cellData, const std::string& pointData, DataArrayByte *byteData) const;
+     MEDCOUPLING_EXPORT std::string getVTKDataSetType() const;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingAMRAttribute.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingAMRAttribute.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingAMRAttribute.cxx        2018-04-19 17:04:36.705222084 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingAMRAttribute.cxx        2018-04-19 17:25:18.120804927 +0200
+@@ -802,7 +802,7 @@
+ /*!
+  * Assign the info on components for all DataArrayDouble instance recursively stored in \a this.
+- * The first dim of input \a compNames is the field id in the same order than those implicitely specified in \a fieldNames parameter of MEDCouplingAMRAttribute::New.
++ * The first dim of input \a compNames is the field id in the same order than those implicitly specified in \a fieldNames parameter of MEDCouplingAMRAttribute::New.
+  * The second dim of \a compNames represent the component names component per component corresponding to the field. The size of this 2nd dimension has
+  * to perfectly fit with those specified in MEDCouplingAMRAttribute::New.
+  */
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingCartesianAMRMesh.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingCartesianAMRMesh.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingCartesianAMRMesh.cxx    2018-04-19 17:04:36.706222105 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingCartesianAMRMesh.cxx    2018-04-19 17:25:17.991802377 +0200
+@@ -385,7 +385,7 @@
+ /*!
+  * \a p1 is expected to be more refined than \a p2. \a p1 and \a p2 have to share a common ancestor. Compared to UpdateNeighborsOfOneWithTwoExt here \a p1 and \a p2 are \b not at the same level !
+- * This method has 3 outputs. 2 two first are the resp the position of \a p1 and \a p2 relative to \a p1. And \a factToApplyOn2 is the coeff of refinement to be applied on \a p2 to be virtualy
++ * This method has 3 outputs. 2 two first are the resp the position of \a p1 and \a p2 relative to \a p1. And \a factToApplyOn2 is the coeff of refinement to be applied on \a p2 to be virtually
+  * on the same level as \a p1.
+  */
+ void MEDCouplingCartesianAMRPatch::ComputeZonesOfTwoRelativeToOneDiffLev(int ghostLev, const MEDCouplingCartesianAMRPatch *p1, const MEDCouplingCartesianAMRPatch *p2, std::vector< std::pair<int,int> >& p1Zone, std::vector< std::pair<int,int> >& p2Zone, std::vector<int>& factToApplyOn2)
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingCMesh.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingCMesh.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingCMesh.cxx       2018-04-19 17:04:36.705222084 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingCMesh.cxx       2018-04-19 17:25:18.020802951 +0200
+@@ -770,7 +770,7 @@
+ void MEDCouplingCMesh::renumberCells(const int *old2NewBg, bool check)
+ {
+-  throw INTERP_KERNEL::Exception("Functionnality of renumbering cell not available for CMesh !");
++  throw INTERP_KERNEL::Exception("Functionality of renumbering cell not available for CMesh !");
+ }
+ void MEDCouplingCMesh::getTinySerializationInformation(std::vector<double>& tinyInfoD, std::vector<int>& tinyInfo, std::vector<std::string>& littleStrings) const
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx     2018-04-19 17:04:36.706222105 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingCurveLinearMesh.cxx     2018-04-19 17:25:18.098804492 +0200
+@@ -255,7 +255,7 @@
+   double tt=getTime(tmpp1,tmpp2);
+   ret << "Time attached to the mesh [unit] : " << tt << " [" << getTimeUnit() << "]\n";
+   ret << "Iteration : " << tmpp1  << " Order : " << tmpp2 << "\n";
+-  ret << "The nodal stucture of curve linear mesh is : [";
++  ret << "The nodal structure of curve linear mesh is : [";
+   std::copy(_structure.begin(),_structure.end(),std::ostream_iterator<int>(ret,",")); ret << "]\n";
+   ret << "The coords array is this : ";
+   if((const DataArrayDouble *)_coords)
+@@ -375,7 +375,7 @@
+ }
+ /*!
+- * \param [in,out] f field feeded with good values.
++ * \param [in,out] f field fed with good values.
+  * \sa MEDCouplingCurveLinearMesh::getMeasureField
+  */
+ void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim1(bool isAbs, MEDCouplingFieldDouble *field) const
+@@ -401,7 +401,7 @@
+ }
+ /*!
+- * \param [in,out] f field feeded with good values.
++ * \param [in,out] f field fed with good values.
+  * \sa MEDCouplingCurveLinearMesh::getMeasureField
+  */
+ void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim2(bool isAbs, MEDCouplingFieldDouble *field) const
+@@ -427,7 +427,7 @@
+ }
+ /*!
+- * \param [in,out] f field feeded with good values.
++ * \param [in,out] f field fed with good values.
+  * \sa MEDCouplingCurveLinearMesh::getMeasureField
+  */
+ void MEDCouplingCurveLinearMesh::getMeasureFieldMeshDim3(bool isAbs, MEDCouplingFieldDouble *field) const
+@@ -733,7 +733,7 @@
+ }
+ /*!
+- * \param [in,out] bary Barycenter array feeded with good values.
++ * \param [in,out] bary Barycenter array fed with good values.
+  * \sa MEDCouplingCurveLinearMesh::computeCellCenterOfMass
+  */
+ void MEDCouplingCurveLinearMesh::getBarycenterAndOwnerMeshDim3(DataArrayDouble *bary) const
+@@ -759,7 +759,7 @@
+ }
+ /*!
+- * \param [in,out] bary Barycenter array feeded with good values.
++ * \param [in,out] bary Barycenter array fed with good values.
+  * \sa MEDCouplingCurveLinearMesh::computeCellCenterOfMass
+  */
+ void MEDCouplingCurveLinearMesh::getBarycenterAndOwnerMeshDim2(DataArrayDouble *bary) const
+@@ -782,7 +782,7 @@
+ }
+ /*!
+- * \param [in,out] bary Barycenter array feeded with good values.
++ * \param [in,out] bary Barycenter array fed with good values.
+  * \sa MEDCouplingCurveLinearMesh::computeCellCenterOfMass
+  */
+ void MEDCouplingCurveLinearMesh::getBarycenterAndOwnerMeshDim1(DataArrayDouble *bary) const
+@@ -794,7 +794,7 @@
+ void MEDCouplingCurveLinearMesh::renumberCells(const int *old2NewBg, bool check)
+ {
+-  throw INTERP_KERNEL::Exception("Functionnality of renumbering cell not available for CurveLinear Mesh !");
++  throw INTERP_KERNEL::Exception("Functionality of renumbering cell not available for CurveLinear Mesh !");
+ }
+ void MEDCouplingCurveLinearMesh::getTinySerializationInformation(std::vector<double>& tinyInfoD, std::vector<int>& tinyInfo, std::vector<std::string>& littleStrings) const
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingDefinitionTime.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingDefinitionTime.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingDefinitionTime.cxx      2018-04-19 17:04:36.706222105 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingDefinitionTime.cxx      2018-04-19 17:25:18.101804552 +0200
+@@ -53,9 +53,9 @@
+         return new MEDCouplingDefinitionTimeSliceLT(f,meshId,arrId[0],arrId[1],fieldId);
+       }
+     case NO_TIME:
+-      throw INTERP_KERNEL::Exception("Invalide time discretization ! NO_TIME ! Impossible to build a definition time slice !");
++      throw INTERP_KERNEL::Exception("Invalid time discretization ! NO_TIME ! Impossible to build a definition time slice !");
+     default:
+-      throw INTERP_KERNEL::Exception("Invalide time discretization : Not recognized !");
++      throw INTERP_KERNEL::Exception("Invalid time discretization : Not recognized !");
+   }
+ }
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingField.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingField.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingField.cxx       2018-04-19 17:04:36.706222105 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingField.cxx       2018-04-19 17:25:17.999802535 +0200
+@@ -34,7 +34,7 @@
+     throw INTERP_KERNEL::Exception("MEDCouplingField::checkConsistencyLight : no spatial discretization !");
+ }
+-bool MEDCouplingField::isEqualIfNotWhy(const MEDCouplingField *other, double meshPrec, double valsPrec, std::string& reason) const
++bool MEDCouplingField::isEqualIfNotWhyProtected(const MEDCouplingField *other, double meshPrec, std::string& reason) const
+ {
+   if(!other)
+     throw INTERP_KERNEL::Exception("MEDCouplingField::isEqualIfNotWhy : other instance is NULL !");
+@@ -57,7 +57,7 @@
+       reason=oss.str();
+       return false;
+     }
+-  if(!_type->isEqualIfNotWhy(other->_type,valsPrec,reason))
++  if(!_type->isEqualIfNotWhy(other->_type,meshPrec,reason))
+     {
+       reason.insert(0,"Spatial discretizations differ :");
+       return false;
+@@ -78,36 +78,21 @@
+ }
+ /*!
+- * Checks if \a this and another MEDCouplingField are fully equal.
+- *  \param [in] other - the field to compare with \a this one.
+- *  \param [in] meshPrec - precision used to compare node coordinates of the underlying mesh.
+- *  \param [in] valsPrec - precision used to compare field values.
+- *  \return bool - \c true if the two fields are equal, \c false else.
+- *  \throw If \a other is NULL.
+- */
+-bool MEDCouplingField::isEqual(const MEDCouplingField *other, double meshPrec, double valsPrec) const
+-{
+-  std::string tmp;
+-  return isEqualIfNotWhy(other,meshPrec,valsPrec,tmp);
+-}
+-
+-/*!
+  * Checks if \a this and another MEDCouplingField are equal. The textual
+  * information like names etc. is not considered.
+  *  \param [in] other - the field to compare with \a this one.
+  *  \param [in] meshPrec - precision used to compare node coordinates of the underlying mesh.
+- *  \param [in] valsPrec - precision used to compare field values.
+  *  \return bool - \c true if the two fields are equal, \c false else.
+  *  \throw If \a other is NULL.
+  *  \throw If the spatial discretization of \a this field is NULL.
+  */
+-bool MEDCouplingField::isEqualWithoutConsideringStr(const MEDCouplingField *other, double meshPrec, double valsPrec) const
++bool MEDCouplingField::isEqualWithoutConsideringStrProtected(const MEDCouplingField *other, double meshPrec) const
+ {
+   if(!other)
+     throw INTERP_KERNEL::Exception("MEDCouplingField::isEqualWithoutConsideringStr : input field is NULL !");
+   if(!_type)
+     throw INTERP_KERNEL::Exception("MEDCouplingField::isEqualWithoutConsideringStr : spatial discretization of this is NULL !");
+-  if(!_type->isEqualWithoutConsideringStr(other->_type,valsPrec))
++  if(!_type->isEqualWithoutConsideringStr(other->_type,meshPrec))
+     return false;
+   if(_nature!=other->_nature)
+     return false;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldDiscretization.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldDiscretization.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldDiscretization.cxx 2018-04-19 17:04:36.707222124 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldDiscretization.cxx 2018-04-19 17:25:18.104804611 +0200
+@@ -140,7 +140,7 @@
+     case MEDCouplingFieldDiscretizationKriging::TYPE:
+       return new MEDCouplingFieldDiscretizationKriging;
+     default:
+-      throw INTERP_KERNEL::Exception("Choosen discretization is not implemented yet.");
++      throw INTERP_KERNEL::Exception("Chosen discretization is not implemented yet.");
+   }
+ }
+@@ -361,7 +361,7 @@
+ /*!
+  * This method is typically the first step of renumbering. The implementation is empty it is not a bug only gauss is impacted
+- * virtualy by this method.
++ * virtually by this method.
+  */
+ void MEDCouplingFieldDiscretization::renumberCells(const int *old2NewBg, bool check)
+ {
+@@ -1183,7 +1183,7 @@
+ /*!
+  * This method is typically the first step of renumbering. The impact on _discr_per_cell is necessary here.
+- * virtualy by this method.
++ * virtually by this method.
+  */
+ void MEDCouplingFieldDiscretizationPerCell::renumberCells(const int *old2NewBg, bool check)
+ {
+@@ -1663,7 +1663,7 @@
+     {
+       if(dc[i]>=nbOfDesc)
+         {
+-          std::ostringstream oss; oss << "Cell # " << i << " of mesh \"" << mesh->getName() << "\" has an undefined gauss location ! Should never happend !";
++          std::ostringstream oss; oss << "Cell # " << i << " of mesh \"" << mesh->getName() << "\" has an undefined gauss location ! Should never happened !";
+           throw INTERP_KERNEL::Exception(oss.str().c_str());
+         }
+       if(dc[i]<0)
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldDouble.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldDouble.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldDouble.cxx 2018-04-19 17:04:36.708222144 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldDouble.cxx 2018-04-19 17:25:18.027803089 +0200
+@@ -22,12 +22,14 @@
+ #include "MEDCouplingFieldTemplate.hxx"
+ #include "MEDCouplingFieldT.txx"
+ #include "MEDCouplingFieldInt.hxx"
++#include "MEDCouplingFieldFloat.hxx"
+ #include "MEDCouplingUMesh.hxx"
+ #include "MEDCouplingTimeDiscretization.hxx"
+ #include "MEDCouplingFieldDiscretization.hxx"
+ #include "MCAuto.txx"
+ #include "MEDCouplingVoronoi.hxx"
+ #include "MEDCouplingNatureOfField.hxx"
++#include "MEDCouplingMemArray.txx"
+ #include "InterpKernelAutoPtr.hxx"
+ #include "InterpKernelGaussCoords.hxx"
+@@ -188,8 +190,8 @@
+ }
+ /*!
+- * This method converts a field on nodes (\a this) to a cell field (returned field). The convertion is a \b non \b conservative remapping !
+- * This method is useful only for users that need a fast convertion from node to cell spatial discretization. The algorithm applied is simply to attach
++ * This method converts a field on nodes (\a this) to a cell field (returned field). The conversion is a \b non \b conservative remapping !
++ * This method is useful only for users that need a fast conversion from node to cell spatial discretization. The algorithm applied is simply to attach
+  * to each cell the average of values on nodes constituting this cell.
+  *
+  * \return MEDCouplingFieldDouble* - a new instance of MEDCouplingFieldDouble. The
+@@ -244,8 +246,8 @@
+ }
+ /*!
+- * This method converts a field on cell (\a this) to a node field (returned field). The convertion is a \b non \b conservative remapping !
+- * This method is useful only for users that need a fast convertion from cell to node spatial discretization. The algorithm applied is simply to attach
++ * This method converts a field on cell (\a this) to a node field (returned field). The conversion is a \b non \b conservative remapping !
++ * This method is useful only for users that need a fast conversion from cell to node spatial discretization. The algorithm applied is simply to attach
+  * to each node the average of values on cell sharing this node. If \a this lies on a mesh having orphan nodes the values applied on them will be NaN (division by 0.).
+  *
+  * \return MEDCouplingFieldDouble* - a new instance of MEDCouplingFieldDouble. The
+@@ -368,76 +370,6 @@
+ }
+ /*!
+- * Permutes values of \a this field according to a given permutation array for cells
+- * renumbering. The underlying mesh is deeply copied and its cells are also permuted. 
+- * The number of cells remains the same; for that the permutation array \a old2NewBg
+- * should not contain equal ids.
+- * ** Warning, this method modifies the mesh aggreagated by \a this (by performing a deep copy ) **.
+- *
+- *  \param [in] old2NewBg - the permutation array in "Old to New" mode. Its length is
+- *         to be equal to \a this->getMesh()->getNumberOfCells().
+- *  \param [in] check - if \c true, \a old2NewBg is transformed to a new permutation
+- *         array, so that its maximal cell id to correspond to (be less than) the number
+- *         of cells in mesh. This new array is then used for the renumbering. If \a 
+- *         check == \c false, \a old2NewBg is used as is, that is less secure as validity 
+- *         of ids in \a old2NewBg is not checked.
+- *  \throw If the mesh is not set.
+- *  \throw If the spatial discretization of \a this field is NULL.
+- *  \throw If \a check == \c true and \a old2NewBg contains equal ids.
+- *  \throw If mesh nature does not allow renumbering (e.g. structured mesh).
+- * 
+- *  \if ENABLE_EXAMPLES
+- *  \ref cpp_mcfielddouble_renumberCells "Here is a C++ example".<br>
+- *  \ref  py_mcfielddouble_renumberCells "Here is a Python example".
+- *  \endif
+- */
+-void MEDCouplingFieldDouble::renumberCells(const int *old2NewBg, bool check)
+-{
+-  renumberCellsWithoutMesh(old2NewBg,check);
+-  MCAuto<MEDCouplingMesh> m=_mesh->deepCopy();
+-  m->renumberCells(old2NewBg,check);
+-  setMesh(m);
+-  updateTime();
+-}
+-
+-/*!
+- * Permutes values of \a this field according to a given permutation array for cells
+- * renumbering. The underlying mesh is \b not permuted. 
+- * The number of cells remains the same; for that the permutation array \a old2NewBg
+- * should not contain equal ids.
+- * This method performs a part of job of renumberCells(). The reasonable use of this
+- * method is only for multi-field instances lying on the same mesh to avoid a
+- * systematic duplication and renumbering of _mesh attribute. 
+- * \warning Use this method with a lot of care!
+- *  \param [in] old2NewBg - the permutation array in "Old to New" mode. Its length is
+- *         to be equal to \a this->getMesh()->getNumberOfCells().
+- *  \param [in] check - if \c true, \a old2NewBg is transformed to a new permutation
+- *         array, so that its maximal cell id to correspond to (be less than) the number
+- *         of cells in mesh. This new array is then used for the renumbering. If \a 
+- *         check == \c false, \a old2NewBg is used as is, that is less secure as validity 
+- *         of ids in \a old2NewBg is not checked.
+- *  \throw If the mesh is not set.
+- *  \throw If the spatial discretization of \a this field is NULL.
+- *  \throw If \a check == \c true and \a old2NewBg contains equal ids.
+- *  \throw If mesh nature does not allow renumbering (e.g. structured mesh).
+- */
+-void MEDCouplingFieldDouble::renumberCellsWithoutMesh(const int *old2NewBg, bool check)
+-{
+-  if(!_mesh)
+-    throw INTERP_KERNEL::Exception("Expecting a defined mesh to be able to operate a renumbering !");
+-  if(_type.isNull())
+-    throw INTERP_KERNEL::Exception("Expecting a spatial discretization to be able to operate a renumbering !");
+-  //
+-  _type->renumberCells(old2NewBg,check);
+-  std::vector<DataArrayDouble *> arrays;
+-  timeDiscr()->getArrays(arrays);
+-  std::vector<DataArray *> arrays2(arrays.size()); std::copy(arrays.begin(),arrays.end(),arrays2.begin());
+-  _type->renumberArraysForCell(_mesh,arrays2,old2NewBg,check);
+-  //
+-  updateTime();
+-}
+-
+-/*!
+  * Permutes values of \a this field according to a given permutation array for node
+  * renumbering. The underlying mesh is deeply copied and its nodes are also permuted. 
+  * The number of nodes can change, contrary to renumberCells().
+@@ -449,7 +381,7 @@
+  *  \throw If the spatial discretization of \a this field is NULL.
+  *  \throw If \a check == \c true and \a old2NewBg contains equal ids.
+  *  \throw If mesh nature does not allow renumbering (e.g. structured mesh).
+- *  \throw If values at merged nodes deffer more than \a eps.
++ *  \throw If values at merged nodes differ more than \a eps.
+  * 
+  *  \if ENABLE_EXAMPLES
+  *  \ref cpp_mcfielddouble_renumberNodes "Here is a C++ example".<br>
+@@ -489,7 +421,7 @@
+  *         the values differ more than \a eps, an exception is thrown.
+  *  \throw If the mesh is not set.
+  *  \throw If the spatial discretization of \a this field is NULL.
+- *  \throw If values at merged nodes deffer more than \a eps.
++ *  \throw If values at merged nodes differ more than \a eps.
+  */
+ void MEDCouplingFieldDouble::renumberNodesWithoutMesh(const int *old2NewBg, int newNbOfNodes, double eps)
+ {
+@@ -522,21 +454,32 @@
+   return getArray()->findIdsInRange(vmin,vmax);
+ }
+-MEDCouplingFieldInt *MEDCouplingFieldDouble::convertToIntField() const
++template<class U>
++typename Traits<U>::FieldType *ConvertToUField(const MEDCouplingFieldDouble *self)
+ {
+-  MCAuto<MEDCouplingFieldTemplate> tmp(MEDCouplingFieldTemplate::New(*this));
++  MCAuto<MEDCouplingFieldTemplate> tmp(MEDCouplingFieldTemplate::New(*self));
+   int t1,t2;
+-  double t0(getTime(t1,t2));
+-  MCAuto<MEDCouplingFieldInt> ret(MEDCouplingFieldInt::New(*tmp,getTimeDiscretization()));
++  double t0(self->getTime(t1,t2));
++  MCAuto<typename Traits<U>::FieldType > ret(Traits<U>::FieldType::New(*tmp,self->getTimeDiscretization()));
+   ret->setTime(t0,t1,t2);
+-  if(getArray())
++  if(self->getArray())
+     {
+-      MCAuto<DataArrayInt> arr(getArray()->convertToIntArr());
++      MCAuto<typename Traits<U>::ArrayType> arr(self->getArray()->convertToOtherTypeOfArr<U>());
+       ret->setArray(arr);
+     }
+   return ret.retn();
+ }
++MEDCouplingFieldInt *MEDCouplingFieldDouble::convertToIntField() const
++{
++  return ConvertToUField<int>(this);
++}
++
++MEDCouplingFieldFloat *MEDCouplingFieldDouble::convertToFloatField() const
++{
++  return ConvertToUField<float>(this);
++}
++
+ MEDCouplingFieldDouble::MEDCouplingFieldDouble(TypeOfField type, TypeOfTimeDiscretization td):MEDCouplingFieldT<double>(type,MEDCouplingTimeDiscretization::New(td))
+ {
+ }
+@@ -616,7 +559,7 @@
+ /*!
+  * Returns the maximal value and all its locations within \a this scalar field.
+  * Only the first of available data arrays is checked.
+- *  \param [out] tupleIds - a new instance of DataArrayInt containg indices of
++ *  \param [out] tupleIds - a new instance of DataArrayInt containing indices of
+  *               tuples holding the maximal value. The caller is to delete it using
+  *               decrRef() as it is no more needed.
+  *  \return double - the maximal value among all values of the first array of \a this filed.
+@@ -680,7 +623,7 @@
+ /*!
+  * Returns the minimal value and all its locations within \a this scalar field.
+  * Only the first of available data arrays is checked.
+- *  \param [out] tupleIds - a new instance of DataArrayInt containg indices of
++ *  \param [out] tupleIds - a new instance of DataArrayInt containing indices of
+  *               tuples holding the minimal value. The caller is to delete it using
+  *               decrRef() as it is no more needed.
+  *  \return double - the minimal value among all values of the first array of \a this filed.
+@@ -1644,7 +1587,7 @@
+  *  \throw If \a other == NULL.
+  *  \throw If any of the meshes is not well defined.
+  *  \throw If the two meshes do not match.
+- *  \throw If field values at merged nodes (if any) deffer more than \a eps.
++ *  \throw If field values at merged nodes (if any) differ more than \a eps.
+  *
+  *  \if ENABLE_EXAMPLES
+  *  \ref cpp_mcfielddouble_changeUnderlyingMesh "Here is a C++ example".<br>
+@@ -1692,7 +1635,7 @@
+  *  \throw If any of the meshes is not set or is not well defined.
+  *  \throw If the two meshes do not match.
+  *  \throw If the two fields are not coherent for merge.
+- *  \throw If field values at merged nodes (if any) deffer more than \a eps.
++ *  \throw If field values at merged nodes (if any) differ more than \a eps.
+  *
+  *  \if ENABLE_EXAMPLES
+  *  \ref cpp_mcfielddouble_substractInPlaceDM "Here is a C++ example".<br>
+@@ -1725,7 +1668,7 @@
+  *  \throw If the mesh is not well defined.
+  *  \throw If the spatial discretization of \a this field is NULL.
+  *  \throw If the data array is not set.
+- *  \throw If field values at merged nodes (if any) deffer more than \a epsOnVals.
++ *  \throw If field values at merged nodes (if any) differ more than \a epsOnVals.
+  */
+ bool MEDCouplingFieldDouble::mergeNodes(double eps, double epsOnVals)
+ {
+@@ -1764,7 +1707,7 @@
+  *  \throw If the mesh is not well defined.
+  *  \throw If the spatial discretization of \a this field is NULL.
+  *  \throw If the data array is not set.
+- *  \throw If field values at merged nodes (if any) deffer more than \a epsOnVals.
++ *  \throw If field values at merged nodes (if any) differ more than \a epsOnVals.
+  */
+ bool MEDCouplingFieldDouble::mergeNodesCenter(double eps, double epsOnVals)
+ {
+@@ -1801,7 +1744,7 @@
+  *  \throw If the mesh is not well defined.
+  *  \throw If the spatial discretization of \a this field is NULL.
+  *  \throw If the data array is not set.
+- *  \throw If field values at merged nodes (if any) deffer more than \a epsOnVals.
++ *  \throw If field values at merged nodes (if any) differ more than \a epsOnVals.
+  */
+ bool MEDCouplingFieldDouble::zipCoords(double epsOnVals)
+ {
+@@ -1842,7 +1785,7 @@
+  *  \throw If the mesh is not well defined.
+  *  \throw If the spatial discretization of \a this field is NULL.
+  *  \throw If the data array is not set.
+- *  \throw If field values at merged cells (if any) deffer more than \a epsOnVals.
++ *  \throw If field values at merged cells (if any) differ more than \a epsOnVals.
+  */
+ bool MEDCouplingFieldDouble::zipConnectivity(int compType, double epsOnVals)
+ {
+@@ -2070,7 +2013,7 @@
+ /*!
+  * This is expected to be a 3 components vector field on nodes (if not an exception will be thrown). \a this is also expected to lie on a MEDCouplingPointSet mesh.
+- * Finaly \a this is also expected to be consistent.
++ * Finally \a this is also expected to be consistent.
+  * In these conditions this method returns a newly created field (to be dealed by the caller).
+  * The returned field will also 3 compo vector field be on nodes lying on the same mesh than \a this.
+  * 
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldDouble.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldDouble.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldDouble.hxx 2018-04-19 17:04:36.708222144 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldDouble.hxx 2018-04-19 17:25:17.994802437 +0200
+@@ -41,8 +41,6 @@
+     MEDCOUPLING_EXPORT std::string writeVTK(const std::string& fileName, bool isBinary=true) const;
+     MEDCOUPLING_EXPORT bool areCompatibleForMerge(const MEDCouplingField *other) const;
+     MEDCOUPLING_EXPORT bool areCompatibleForMeld(const MEDCouplingFieldDouble *other) const;
+-    MEDCOUPLING_EXPORT void renumberCells(const int *old2NewBg, bool check=true);
+-    MEDCOUPLING_EXPORT void renumberCellsWithoutMesh(const int *old2NewBg, bool check=true);
+     MEDCOUPLING_EXPORT void renumberNodes(const int *old2NewBg, double eps=1e-15);
+     MEDCOUPLING_EXPORT void renumberNodesWithoutMesh(const int *old2NewBg, int newNbOfNodes, double eps=1e-15);
+     MEDCOUPLING_EXPORT DataArrayInt *findIdsInRange(double vmin, double vmax) const;
+@@ -52,6 +50,7 @@
+     MEDCOUPLING_EXPORT MEDCouplingFieldDouble *nodeToCellDiscretization() const;
+     MEDCOUPLING_EXPORT MEDCouplingFieldDouble *cellToNodeDiscretization() const;
+     MEDCOUPLING_EXPORT MEDCouplingFieldInt *convertToIntField() const;
++    MEDCOUPLING_EXPORT MEDCouplingFieldFloat *convertToFloatField() const;
+     MEDCOUPLING_EXPORT double getIJK(int cellId, int nodeIdInCell, int compoId) const;
+     MEDCOUPLING_EXPORT double accumulate(int compId) const;
+     MEDCOUPLING_EXPORT void accumulate(double *res) const;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingField.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingField.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingField.hxx       2018-04-19 17:04:36.706222105 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingField.hxx       2018-04-19 17:25:18.045803445 +0200
+@@ -48,9 +48,6 @@
+     MEDCOUPLING_EXPORT virtual bool areCompatibleForMerge(const MEDCouplingField *other) const;
+     MEDCOUPLING_EXPORT virtual bool areStrictlyCompatible(const MEDCouplingField *other) const;
+     MEDCOUPLING_EXPORT virtual bool areStrictlyCompatibleForMulDiv(const MEDCouplingField *other) const;
+-    MEDCOUPLING_EXPORT virtual bool isEqualIfNotWhy(const MEDCouplingField *other, double meshPrec, double valsPrec, std::string& reason) const;
+-    MEDCOUPLING_EXPORT virtual bool isEqual(const MEDCouplingField *other, double meshPrec, double valsPrec) const;
+-    MEDCOUPLING_EXPORT virtual bool isEqualWithoutConsideringStr(const MEDCouplingField *other, double meshPrec, double valsPrec) const;
+     MEDCOUPLING_EXPORT virtual void copyTinyStringsFrom(const MEDCouplingField *other);
+     MEDCOUPLING_EXPORT void setMesh(const MEDCoupling::MEDCouplingMesh *mesh);
+     MEDCOUPLING_EXPORT const MEDCoupling::MEDCouplingMesh *getMesh() const { return _mesh; }
+@@ -96,6 +93,8 @@
+     MEDCOUPLING_EXPORT MEDCouplingField(const MEDCouplingField& other, bool deepCopy=true);
+     MEDCOUPLING_EXPORT MEDCouplingField(MEDCouplingFieldDiscretization *type, NatureOfField nature=NoNature);
+     MEDCOUPLING_EXPORT virtual ~MEDCouplingField();
++    MEDCOUPLING_EXPORT bool isEqualIfNotWhyProtected(const MEDCouplingField *other, double meshPrec, std::string& reason) const;
++    MEDCOUPLING_EXPORT bool isEqualWithoutConsideringStrProtected(const MEDCouplingField *other, double meshPrec) const;
+   protected:
+     std::string _name;
+     std::string _desc;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldTemplate.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldTemplate.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldTemplate.cxx       2018-04-19 17:04:36.708222144 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldTemplate.cxx       2018-04-19 17:25:18.095804433 +0200
+@@ -59,6 +59,22 @@
+   return new MEDCouplingFieldTemplate(f,false);
+ }
++bool MEDCouplingFieldTemplate::isEqualIfNotWhy(const MEDCouplingFieldTemplate *other, double meshPrec, std::string& reason) const
++{
++  return isEqualIfNotWhyProtected(other,meshPrec,reason);
++}
++
++bool MEDCouplingFieldTemplate::isEqual(const MEDCouplingFieldTemplate *other, double meshPrec) const
++{
++  std::string tmp;
++  return isEqualIfNotWhyProtected(other,meshPrec,tmp);
++}
++
++bool MEDCouplingFieldTemplate::isEqualWithoutConsideringStr(const MEDCouplingFieldTemplate *other, double meshPrec) const
++{
++  return isEqualWithoutConsideringStrProtected(other,meshPrec);
++}
++
+ /*!
+  * The user should \b not use this method. Only useful for CORBA serialization/unserialization.
+  */
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldTemplate.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldTemplate.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldTemplate.hxx       2018-04-19 17:04:36.708222144 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldTemplate.hxx       2018-04-19 17:25:18.043803405 +0200
+@@ -48,6 +48,9 @@
+     MEDCOUPLING_EXPORT static MEDCouplingFieldTemplate *NewWithoutCheck(const MEDCouplingFieldDouble& f);
+     MEDCOUPLING_EXPORT static MEDCouplingFieldTemplate *NewWithoutCheck(const MEDCouplingFieldFloat& f);
+     MEDCOUPLING_EXPORT static MEDCouplingFieldTemplate *NewWithoutCheck(const MEDCouplingFieldInt& f);
++    MEDCOUPLING_EXPORT bool isEqualIfNotWhy(const MEDCouplingFieldTemplate *other, double meshPrec, std::string& reason) const;
++    MEDCOUPLING_EXPORT bool isEqual(const MEDCouplingFieldTemplate *other, double meshPrec) const;
++    MEDCOUPLING_EXPORT bool isEqualWithoutConsideringStr(const MEDCouplingFieldTemplate *other, double meshPrec) const;
+     MEDCOUPLING_EXPORT std::string simpleRepr() const;
+     MEDCOUPLING_EXPORT std::string advancedRepr() const;
+     MEDCOUPLING_EXPORT void checkConsistencyLight() const;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldT.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldT.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldT.hxx      2018-04-19 17:04:36.708222144 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldT.hxx      2018-04-19 17:25:18.038803306 +0200
+@@ -75,8 +75,9 @@
+     MEDCOUPLING_EXPORT double getStartTime(int& iteration, int& order) const { return _time_discr->getStartTime(iteration,order); }
+     MEDCOUPLING_EXPORT double getEndTime(int& iteration, int& order) const { return _time_discr->getEndTime(iteration,order); }
+     MEDCOUPLING_EXPORT T getIJ(int tupleId, int compoId) const { return getArray()->getIJ(tupleId,compoId); }
+-    MEDCOUPLING_EXPORT bool isEqualIfNotWhy(const MEDCouplingField *other, double meshPrec, double valsPrec, std::string& reason) const;
+-    MEDCOUPLING_EXPORT bool isEqualWithoutConsideringStr(const MEDCouplingField *other, double meshPrec, double valsPrec) const;
++    MEDCOUPLING_EXPORT virtual bool isEqual(const MEDCouplingFieldT<T> *other, double meshPrec, T valsPrec) const;
++    MEDCOUPLING_EXPORT virtual bool isEqualIfNotWhy(const MEDCouplingFieldT<T> *other, double meshPrec, T valsPrec, std::string& reason) const;
++    MEDCOUPLING_EXPORT virtual bool isEqualWithoutConsideringStr(const MEDCouplingFieldT<T> *other, double meshPrec, T valsPrec) const;
+     MEDCOUPLING_EXPORT void copyTinyStringsFrom(const MEDCouplingField *other);
+     MEDCOUPLING_EXPORT bool areStrictlyCompatible(const MEDCouplingField *other) const;
+     MEDCOUPLING_EXPORT bool areStrictlyCompatibleForMulDiv(const MEDCouplingField *other) const;
+@@ -87,6 +88,8 @@
+     MEDCOUPLING_EXPORT bool areCompatibleForDiv(const MEDCouplingField *other) const;
+     MEDCOUPLING_EXPORT void copyTinyAttrFrom(const MEDCouplingFieldT<T> *other);
+     MEDCOUPLING_EXPORT void copyAllTinyAttrFrom(const MEDCouplingFieldT<T> *other);
++    MEDCOUPLING_EXPORT void renumberCells(const int *old2NewBg, bool check=true);
++    MEDCOUPLING_EXPORT void renumberCellsWithoutMesh(const int *old2NewBg, bool check=true);
+     //
+     MEDCOUPLING_EXPORT void getTinySerializationIntInformation(std::vector<int>& tinyInfo) const;
+     MEDCOUPLING_EXPORT void getTinySerializationDbleInformation(std::vector<double>& tinyInfo) const;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldT.txx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldT.txx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingFieldT.txx      2018-04-19 17:04:36.708222144 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingFieldT.txx      2018-04-19 17:25:18.037803287 +0200
+@@ -117,21 +117,22 @@
+       }
+     return ret.retn();
+   }
++
++  template<class T>
++  bool MEDCouplingFieldT<T>::isEqual(const MEDCouplingFieldT<T> *other, double meshPrec, T valsPrec) const
++  {
++    std::string tmp;
++    return isEqualIfNotWhy(other,meshPrec,valsPrec,tmp);
++  }
+   
+   template<class T>
+-  bool MEDCouplingFieldT<T>::isEqualIfNotWhy(const MEDCouplingField *other, double meshPrec, double valsPrec, std::string& reason) const
++  bool MEDCouplingFieldT<T>::isEqualIfNotWhy(const MEDCouplingFieldT<T> *other, double meshPrec, T valsPrec, std::string& reason) const
+   {
+     if(!other)
+       throw INTERP_KERNEL::Exception("MEDCouplingFieldT::isEqualIfNotWhy : other instance is NULL !");
+-    const MEDCouplingFieldT<T> *otherC(dynamic_cast<const MEDCouplingFieldT<T> *>(other));
+-    if(!otherC)
+-      {
+-        reason="field given in input is not castable in MEDCouplingFieldT !";
+-        return false;
+-      }
+-    if(!MEDCouplingField::isEqualIfNotWhy(other,meshPrec,valsPrec,reason))
++    if(!isEqualIfNotWhyProtected(other,meshPrec,reason))
+       return false;
+-    if(!_time_discr->isEqualIfNotWhy(otherC->_time_discr,T(valsPrec),reason))
++    if(!_time_discr->isEqualIfNotWhy(other->_time_discr,T(valsPrec),reason))
+       {
+         reason.insert(0,"In FieldT time discretizations differ :");
+         return false;
+@@ -150,14 +151,13 @@
+    *  \throw If the spatial discretization of \a this field is NULL.
+    */
+   template<class T>
+-  bool MEDCouplingFieldT<T>::isEqualWithoutConsideringStr(const MEDCouplingField *other, double meshPrec, double valsPrec) const
++  bool MEDCouplingFieldT<T>::isEqualWithoutConsideringStr(const MEDCouplingFieldT<T> *other, double meshPrec, T valsPrec) const
+   {
+-    const MEDCouplingFieldT<T> *otherC(dynamic_cast<const MEDCouplingFieldT<T> *>(other));
+-    if(!otherC)
++    if(!other)
+       return false;
+-    if(!MEDCouplingField::isEqualWithoutConsideringStr(other,meshPrec,valsPrec))
++    if(!isEqualWithoutConsideringStrProtected(other,meshPrec))
+       return false;
+-    if(!_time_discr->isEqualWithoutConsideringStr(otherC->_time_discr,T(valsPrec)))
++    if(!_time_discr->isEqualWithoutConsideringStr(other->_time_discr,valsPrec))
+       return false;
+     return true;
+   }
+@@ -204,6 +204,78 @@
+   }
+   
+   /*!
++   * Permutes values of \a this field according to a given permutation array for cells
++   * renumbering. The underlying mesh is deeply copied and its cells are also permuted. 
++   * The number of cells remains the same; for that the permutation array \a old2NewBg
++   * should not contain equal ids.
++   * ** Warning, this method modifies the mesh aggreagated by \a this (by performing a deep copy ) **.
++   *
++   *  \param [in] old2NewBg - the permutation array in "Old to New" mode. Its length is
++   *         to be equal to \a this->getMesh()->getNumberOfCells().
++   *  \param [in] check - if \c true, \a old2NewBg is transformed to a new permutation
++   *         array, so that its maximal cell id to correspond to (be less than) the number
++   *         of cells in mesh. This new array is then used for the renumbering. If \a 
++   *         check == \c false, \a old2NewBg is used as is, that is less secure as validity 
++   *         of ids in \a old2NewBg is not checked.
++   *  \throw If the mesh is not set.
++   *  \throw If the spatial discretization of \a this field is NULL.
++   *  \throw If \a check == \c true and \a old2NewBg contains equal ids.
++   *  \throw If mesh nature does not allow renumbering (e.g. structured mesh).
++   * 
++   *  \if ENABLE_EXAMPLES
++   *  \ref cpp_mcfielddouble_renumberCells "Here is a C++ example".<br>
++   *  \ref  py_mcfielddouble_renumberCells "Here is a Python example".
++   *  \endif
++   */
++  template<class T>
++  void MEDCouplingFieldT<T>::renumberCells(const int *old2NewBg, bool check)
++  {
++    renumberCellsWithoutMesh(old2NewBg,check);
++    MCAuto<MEDCouplingMesh> m(_mesh->deepCopy());
++    m->renumberCells(old2NewBg,check);
++    setMesh(m);
++    updateTime();
++  }
++
++  /*!
++   * Permutes values of \a this field according to a given permutation array for cells
++   * renumbering. The underlying mesh is \b not permuted. 
++   * The number of cells remains the same; for that the permutation array \a old2NewBg
++   * should not contain equal ids.
++   * This method performs a part of job of renumberCells(). The reasonable use of this
++   * method is only for multi-field instances lying on the same mesh to avoid a
++   * systematic duplication and renumbering of _mesh attribute. 
++   * \warning Use this method with a lot of care!
++   *  \param [in] old2NewBg - the permutation array in "Old to New" mode. Its length is
++   *         to be equal to \a this->getMesh()->getNumberOfCells().
++   *  \param [in] check - if \c true, \a old2NewBg is transformed to a new permutation
++   *         array, so that its maximal cell id to correspond to (be less than) the number
++   *         of cells in mesh. This new array is then used for the renumbering. If \a 
++   *         check == \c false, \a old2NewBg is used as is, that is less secure as validity 
++   *         of ids in \a old2NewBg is not checked.
++   *  \throw If the mesh is not set.
++   *  \throw If the spatial discretization of \a this field is NULL.
++   *  \throw If \a check == \c true and \a old2NewBg contains equal ids.
++   *  \throw If mesh nature does not allow renumbering (e.g. structured mesh).
++   */
++  template<class T>
++  void MEDCouplingFieldT<T>::renumberCellsWithoutMesh(const int *old2NewBg, bool check)
++  {
++    if(!_mesh)
++      throw INTERP_KERNEL::Exception("Expecting a defined mesh to be able to operate a renumbering !");
++    if(_type.isNull())
++      throw INTERP_KERNEL::Exception("Expecting a spatial discretization to be able to operate a renumbering !");
++    //
++    _type->renumberCells(old2NewBg,check);
++    std::vector< typename MEDCoupling::Traits<T>::ArrayType *> arrays;
++    timeDiscrSafe()->getArrays(arrays);
++    std::vector<DataArray *> arrays2(arrays.size()); std::copy(arrays.begin(),arrays.end(),arrays2.begin());
++    _type->renumberArraysForCell(_mesh,arrays2,old2NewBg,check);
++    //
++    updateTime();
++  }
++  
++  /*!
+    * This method is more strict than MEDCouplingField::areCompatibleForMerge method.
+    * This method is used for operation on fields to operate a first check before attempting operation.
+    */
+@@ -369,7 +441,7 @@
+   }
+   /*!
+-   * Builds a newly created field, that the caller will have the responsability to deal with.
++   * Builds a newly created field, that the caller will have the responsibility to deal with.
+    * \n This method makes the assumption that \a this field is correctly defined when this method is called (\a this->checkConsistencyLight() returns without any exception thrown), **no check of this will be done**.
+    * \n This method returns a restriction of \a this so that only tuple ids specified in [ \a partBg , \a partEnd ) will be contained in the returned field.
+    * \n Parameter [\a partBg, \a partEnd ) specifies **cell ids whatever the spatial discretization** of \a this (
+@@ -432,7 +504,7 @@
+   }
+   /*!
+-   * Builds a newly created field, that the caller will have the responsability to deal with (decrRef()).
++   * Builds a newly created field, that the caller will have the responsibility to deal with (decrRef()).
+    * This method makes the assumption that the field is correctly defined when this method is called, no check of this will be done.
+    * This method returns a restriction of \a this so that only tuples with ids specified in \a part will be contained in the returned field.
+    * Parameter \a part specifies **cell ids whatever the spatial discretization of this** (
+@@ -646,7 +718,7 @@
+   }
+   /*!
+-   * Contrary to MEDCouplingPointSet class the returned arrays are \b not the responsabilities of the caller.
++   * Contrary to MEDCouplingPointSet class the returned arrays are \b not the responsibilities of the caller.
+    * The values returned must be consulted only in readonly mode.
+    */
+   template<class T>
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingIMesh.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingIMesh.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingIMesh.cxx       2018-04-19 17:04:36.709222164 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingIMesh.cxx       2018-04-19 17:25:18.019802931 +0200
+@@ -270,7 +270,7 @@
+ /*!
+  * This static method is useful to condense field on cells of a MEDCouplingIMesh instance coming from a refinement ( MEDCouplingIMesh::refineWithFactor for example)
+- * to a coarse MEDCouplingIMesh instance. So this method can be seen as a specialization in P0P0 conservative interpolation non overlaping from fine image mesh
++ * to a coarse MEDCouplingIMesh instance. So this method can be seen as a specialization in P0P0 conservative interpolation non overlapping from fine image mesh
+  * to a coarse image mesh. Only tuples ( deduced from \a fineLocInCoarse ) of \a coarseDA will be modified. Other tuples of \a coarseDA will be let unchanged.
+  *
+  * \param [in] coarseSt The cell structure of coarse mesh.
+@@ -396,7 +396,7 @@
+ /*!
+  * This static method is useful to condense field on cells of a MEDCouplingIMesh instance coming from a refinement ( MEDCouplingIMesh::refineWithFactor for example)
+- * to a coarse MEDCouplingIMesh instance. So this method can be seen as a specialization in P0P0 conservative interpolation non overlaping from fine image mesh
++ * to a coarse MEDCouplingIMesh instance. So this method can be seen as a specialization in P0P0 conservative interpolation non overlapping from fine image mesh
+  * to a coarse image mesh. Only tuples ( deduced from \a fineLocInCoarse ) of \a coarseDA will be modified. Other tuples of \a coarseDA will be let unchanged.
+  *
+  * \param [in] coarseSt The cell structure of coarse mesh.
+@@ -1232,7 +1232,7 @@
+ void MEDCouplingIMesh::renumberCells(const int *old2NewBg, bool check)
+ {
+-  throw INTERP_KERNEL::Exception("Functionnality of renumbering cell not available for IMesh !");
++  throw INTERP_KERNEL::Exception("Functionality of renumbering cell not available for IMesh !");
+ }
+ void MEDCouplingIMesh::getTinySerializationInformation(std::vector<double>& tinyInfoD, std::vector<int>& tinyInfo, std::vector<std::string>& littleStrings) const
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMappedExtrudedMesh.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMappedExtrudedMesh.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMappedExtrudedMesh.cxx  2018-04-19 17:04:36.709222164 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMappedExtrudedMesh.cxx  2018-04-19 17:25:17.989802338 +0200
+@@ -178,7 +178,7 @@
+ const DataArrayDouble *MEDCouplingMappedExtrudedMesh::getDirectAccessOfCoordsArrIfInStructure() const
+ {
+-  throw INTERP_KERNEL::Exception("MEDCouplingMappedExtrudedMesh::getDirectAccessOfCoordsArrIfInStructure : no direct acess of DataArrayDouble holding nodes !");
++  throw INTERP_KERNEL::Exception("MEDCouplingMappedExtrudedMesh::getDirectAccessOfCoordsArrIfInStructure : no direct access of DataArrayDouble holding nodes !");
+ }
+ bool MEDCouplingMappedExtrudedMesh::isEqualIfNotWhy(const MEDCouplingMesh *other, double prec, std::string& reason) const
+@@ -442,7 +442,7 @@
+ void MEDCouplingMappedExtrudedMesh::renumberCells(const int *old2NewBg, bool check)
+ {
+-  throw INTERP_KERNEL::Exception("Functionnality of renumbering cells unavailable for ExtrudedMesh");
++  throw INTERP_KERNEL::Exception("Functionality of renumbering cells unavailable for ExtrudedMesh");
+ }
+ /*!
+@@ -709,7 +709,7 @@
+   throw INTERP_KERNEL::Exception("Not implemented yet !");
+ }
+-void MEDCouplingMappedExtrudedMesh::splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType) const
++void MEDCouplingMappedExtrudedMesh::splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType, bool smartPflKiller) const
+ {
+   throw INTERP_KERNEL::Exception("Not implemented yet !");
+ }
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMappedExtrudedMesh.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMappedExtrudedMesh.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMappedExtrudedMesh.hxx  2018-04-19 17:04:36.709222164 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMappedExtrudedMesh.hxx  2018-04-19 17:25:18.036803267 +0200
+@@ -92,7 +92,7 @@
+     MEDCOUPLING_EXPORT void scale(const double *point, double factor);
+     MEDCOUPLING_EXPORT std::vector<int> getDistributionOfTypes() const;
+     MEDCOUPLING_EXPORT DataArrayInt *checkTypeConsistencyAndContig(const std::vector<int>& code, const std::vector<const DataArrayInt *>& idsPerType) const;
+-    MEDCOUPLING_EXPORT void splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType) const;
++    MEDCOUPLING_EXPORT void splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType, bool smartPflKiller=true) const;
+     MEDCOUPLING_EXPORT MEDCouplingMesh *buildPart(const int *start, const int *end) const;
+     MEDCOUPLING_EXPORT MEDCouplingMesh *buildPartAndReduceNodes(const int *start, const int *end, DataArrayInt*& arr) const;
+     MEDCOUPLING_EXPORT DataArrayInt *simplexize(int policy);
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMemArrayChar.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMemArrayChar.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMemArrayChar.cxx        2018-04-19 17:04:36.714222264 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMemArrayChar.cxx        2018-04-19 17:25:18.138805283 +0200
+@@ -845,7 +845,7 @@
+ {
+   std::size_t lgth=st.length();
+   if(lgth==0)
+-    throw INTERP_KERNEL::Exception("DataArrayAsciiChar contructor with string ! Size of input string is null !");
++    throw INTERP_KERNEL::Exception("DataArrayAsciiChar constructor with string ! Size of input string is null !");
+   alloc(1,lgth);
+   std::copy(st.begin(),st.begin()+lgth,getPointer());
+ }
+@@ -882,12 +882,12 @@
+ DataArrayAsciiChar::DataArrayAsciiChar(const std::vector<std::string>& vst, char defaultChar)
+ {
+   if(vst.empty())
+-    throw INTERP_KERNEL::Exception("DataArrayAsciiChar contructor with vector of strings ! Empty array !");
++    throw INTERP_KERNEL::Exception("DataArrayAsciiChar constructor with vector of strings ! Empty array !");
+   std::size_t nbCompo=0;
+   for(std::vector<std::string>::const_iterator it=vst.begin();it!=vst.end();it++)
+     nbCompo=std::max(nbCompo,(*it).length());
+   if(nbCompo==0)
+-    throw INTERP_KERNEL::Exception("DataArrayAsciiChar contructor with vector of strings ! All strings in not empty vector are empty !");
++    throw INTERP_KERNEL::Exception("DataArrayAsciiChar constructor with vector of strings ! All strings in not empty vector are empty !");
+   int nbTuples=(int)vst.size();
+   alloc(nbTuples,(int)nbCompo);
+   char *pt=getPointer();
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMemArray.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMemArray.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMemArray.cxx    2018-04-19 17:04:36.713222244 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMemArray.cxx    2018-04-19 17:25:18.118804888 +0200
+@@ -25,6 +25,12 @@
+ #include "InterpKernelAutoPtr.hxx"
+ #include "InterpKernelExprParser.hxx"
++#include "InterpKernelAutoPtr.hxx"
++#include "InterpKernelGeo2DEdgeArcCircle.hxx"
++#include "InterpKernelAutoPtr.hxx"
++#include "InterpKernelGeo2DNode.hxx"
++#include "InterpKernelGeo2DEdgeLin.hxx"
++
+ #include <set>
+ #include <cmath>
+ #include <limits>
+@@ -631,7 +637,7 @@
+ /*!
+  * This method checks that [\b start, \b end) is compliant with ref length \b value.
+- * typicaly start in [0,\b value) and end in [0,\b value). If value==start and start==end, it is supported.
++ * typically start in [0,\b value) and end in [0,\b value). If value==start and start==end, it is supported.
+  */
+ void DataArray::CheckValueInRangeEx(int value, int start, int end, const std::string& msg)
+ {
+@@ -665,9 +671,9 @@
+  *
+  * The input \a sliceId should be an id in [0, \a nbOfSlices) that specifies the slice of work.
+  *
+- * \param [in] start - the start of the input slice of the whole work to perform splitted into slices.
+- * \param [in] stop - the stop of the input slice of the whole work to perform splitted into slices.
+- * \param [in] step - the step (that can be <0) of the input slice of the whole work to perform splitted into slices.
++ * \param [in] start - the start of the input slice of the whole work to perform split into slices.
++ * \param [in] stop - the stop of the input slice of the whole work to perform split into slices.
++ * \param [in] step - the step (that can be <0) of the input slice of the whole work to perform split into slices.
+  * \param [in] sliceId - the slice id considered
+  * \param [in] nbOfSlices - the number of slices (typically the number of cores on which the work is expected to be sliced)
+  * \param [out] startSlice - the start of the slice considered
+@@ -1517,7 +1523,7 @@
+ /*!
+  * Returns the maximal value and all its locations within \a this one-dimensional array.
+- *  \param [out] tupleIds - a new instance of DataArrayInt containg indices of
++ *  \param [out] tupleIds - a new instance of DataArrayInt containing indices of
+  *               tuples holding the maximal value. The caller is to delete it using
+  *               decrRef() as it is no more needed.
+  *  \return double - the maximal value among all values of \a this array.
+@@ -1535,7 +1541,7 @@
+ /*!
+  * Returns the minimal value and all its locations within \a this one-dimensional array.
+- *  \param [out] tupleIds - a new instance of DataArrayInt containg indices of
++ *  \param [out] tupleIds - a new instance of DataArrayInt containing indices of
+  *               tuples holding the minimal value. The caller is to delete it using
+  *               decrRef() as it is no more needed.
+  *  \return double - the minimal value among all values of \a this array.
+@@ -1611,7 +1617,7 @@
+ /*!
+  * Returns the maximum norm of the vector defined by \a this array.
+- * This method works even if the number of components is diferent from one.
++ * This method works even if the number of components is different from one.
+  * If the number of elements in \a this is 0, -1. is returned.
+  *  \return double - the value of the maximum norm, i.e.
+  *          the maximal absolute value among values of \a this array (whatever its number of components).
+@@ -1634,7 +1640,7 @@
+ /*!
+  * Returns the minimum norm (absolute value) of the vector defined by \a this array.
+- * This method works even if the number of components is diferent from one.
++ * This method works even if the number of components is different from one.
+  * If the number of elements in \a this is 0, std::numeric_limits<double>::max() is returned.
+  *  \return double - the value of the minimum norm, i.e.
+  *          the minimal absolute value among values of \a this array (whatever its number of components).
+@@ -2490,6 +2496,38 @@
+ }
+ /*!
++ * This method expects that \a this stores 3 tuples containing 2 components each.
++ * Each of this tuples represent a point into 2D space.
++ * This method tries to find an arc of circle starting from first point (tuple) to 2nd and middle point (tuple) along 3nd and last point (tuple).
++ * If such arc of circle exists, the corresponding center, radius of circle is returned. And additionnaly the length of arc expressed with an \a ang output variable in ]0,2*pi[.
++ *  
++ *  \throw If \a this is not allocated.
++ *  \throw If \a this has not 3 tuples of 2 components
++ *  \throw If tuples/points in \a this are aligned
++ */
++void DataArrayDouble::asArcOfCircle(double center[2], double& radius, double& ang) const
++{
++  checkAllocated();
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision arcPrec(1e-14);
++  if(getNumberOfTuples()!=3 && getNumberOfComponents()!=2)
++    throw INTERP_KERNEL::Exception("DataArrayDouble::asArcCircle : this method expects");
++  const double *pt(begin());
++  MCAuto<INTERP_KERNEL::Node> n0(new INTERP_KERNEL::Node(pt[0],pt[1])),n1(new INTERP_KERNEL::Node(pt[2],pt[3])),n2(new INTERP_KERNEL::Node(pt[4],pt[5]));
++  {
++    INTERP_KERNEL::AutoCppPtr<INTERP_KERNEL::EdgeLin> e1(new INTERP_KERNEL::EdgeLin(n0,n2)),e2(new INTERP_KERNEL::EdgeLin(n2,n1));
++    INTERP_KERNEL::SegSegIntersector inters(*e1,*e2);
++    bool colinearity(inters.areColinears());
++    if(colinearity)
++      throw INTERP_KERNEL::Exception("DataArrayDouble::asArcOfCircle : 3 points in this have been detected as colinear !");
++  }
++  INTERP_KERNEL::AutoCppPtr<INTERP_KERNEL::EdgeArcCircle> ret(new INTERP_KERNEL::EdgeArcCircle(n0,n2,n1));
++  const double *c(ret->getCenter());
++  center[0]=c[0]; center[1]=c[1];
++  radius=ret->getRadius();
++  ang=ret->getAngle();
++}
++
++/*!
+  * Sorts value within every tuple of \a this array.
+  *  \param [in] asc - if \a true, the values are sorted in ascending order, else,
+  *              in descending order.
+@@ -3005,7 +3043,7 @@
+ }
+ /*!
+- * Returns a new DataArrayInt contating indices of tuples of \a this one-dimensional
++ * Returns a new DataArrayInt containing indices of tuples of \a this one-dimensional
+  * array whose values are within a given range. Textual data is not copied.
+  *  \param [in] vmin - a lowest acceptable value (included).
+  *  \param [in] vmax - a greatest acceptable value (included).
+@@ -3036,7 +3074,7 @@
+ }
+ /*!
+- * Returns a new DataArrayInt contating indices of tuples of \a this one-dimensional
++ * Returns a new DataArrayInt containing indices of tuples of \a this one-dimensional
+  * array whose values are not within a given range. Textual data is not copied.
+  *  \param [in] vmin - a lowest not acceptable value (excluded).
+  *  \param [in] vmax - a greatest not acceptable value (excluded).
+@@ -3955,7 +3993,7 @@
+  *  \throw If any value of \a this can't be used as a valid index for 
+  *         [\a indArrBg, \a indArrEnd).
+  *
+- *  \sa changeValue
++ *  \sa changeValue, findIdForEach
+  */
+ void DataArrayInt::transformWithIndArr(const int *indArrBg, const int *indArrEnd)
+ {
+@@ -3970,7 +4008,7 @@
+       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().c_str());
++          throw INTERP_KERNEL::Exception(oss.str());
+         }
+     }
+   this->declareAsNew();
+@@ -3981,7 +4019,7 @@
+   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());
++  const std::map<int,int>& dat(m.data());
+   int nbOfTuples(getNumberOfTuples()),*pt(getPointer());
+   for(int i=0;i<nbOfTuples;i++,pt++)
+     {
+@@ -3991,7 +4029,7 @@
+       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().c_str());
++          throw INTERP_KERNEL::Exception(oss.str());
+         }
+     }
+   this->declareAsNew();
+@@ -4169,14 +4207,16 @@
+  *  \sa invertArrayN2O2O2N
+  *  \endif
+  */
+-MCAuto< MapKeyVal<int> > DataArrayInt::invertArrayN2O2O2NOptimized() const
++MCAuto< MapKeyVal<int> > DataArrayInt32::invertArrayN2O2O2NOptimized() const
+ {
+   checkAllocated();
++  if(getNumberOfComponents()!=1)
++    throw INTERP_KERNEL::Exception("DataArrayInt32::invertArrayN2O2O2NOptimized : single component expected !");
+   MCAuto< MapKeyVal<int> > ret(MapKeyVal<int>::New());
+   std::map<int,int>& m(ret->data());
+   const int *new2Old(begin());
+-  int nbOfNewElems(this->getNumberOfTuples());
+-  for(int i=0;i<nbOfNewElems;i++)
++  std::size_t nbOfNewElems(this->getNumberOfTuples());
++  for(std::size_t i=0;i<nbOfNewElems;i++)
+     {
+       int v(new2Old[i]);
+       m[v]=i;
+@@ -4212,17 +4252,25 @@
+ }
+ /*!
+- * This method tries to find the permutation to apply to the first input \a ids1 to obtain the same array (without considering strings informations) the second
++ * This method tries to find the permutation to apply to the first input \a ids1 to obtain the same array (without considering strings information) the second
+  * input array \a ids2.
+  * \a ids1 and \a ids2 are expected to be both a list of ids (both with number of components equal to one) not sorted and with values that can be negative.
+  * This method will throw an exception is no such permutation array can be obtained. It is typically the case if there is some ids in \a ids1 not in \a ids2 or
+  * inversely.
+- * In case of success (no throw) : \c ids1->renumber(ret)->isEqual(ids2) where \a ret is the return of this method.
++ * In case of success both assertion will be true (no throw) :
++ * \c ids1->renumber(ret)->isEqual(ids2) where \a ret is the return of this method.
++ * \c ret->transformWithIndArr(ids2)->isEqual(ids1)
++ *
++ * \b Example:
++ * - \a ids1 : [3,1,103,4,6,10,-7,205]
++ * - \a ids2 : [-7,1,205,10,6,3,103,4]
++ * - \a return is : [5,1,6,7,4,3,0,2] because ids2[5]==ids1[0], ids2[1]==ids1[1], ids2[6]==ids1[2]...
+  *
+  * \return DataArrayInt * - a new instance of DataArrayInt. The caller is to delete this
+  *          array using decrRef() as it is no more needed.
+  * \throw If either ids1 or ids2 is null not allocated or not with one components.
+  * 
++ * \sa DataArrayInt32::findIdForEach
+  */
+ DataArrayInt *DataArrayInt::FindPermutationFromFirstToSecond(const DataArrayInt *ids1, const DataArrayInt *ids2)
+ {
+@@ -4655,6 +4703,47 @@
+ }
+ /*!
++ * This method finds for each element \a ELT in [valsBg,valsEnd) elements in \a this equal to it. Associated to ELT
++ * this method will return the tuple id of last element found. If there is no element in \a this equal to ELT
++ * an exception will be thrown.
++ *
++ * In case of success this[ret]==vals. Samely ret->transformWithIndArr(this->begin(),this->end())==vals.
++ * Where \a vals is the [valsBg,valsEnd) array and \a ret the array returned by this method.
++ * This method can be seen as an extension of FindPermutationFromFirstToSecond.
++ * <br>
++ * \b Example: <br>
++ * - \a this: [17,27,2,10,-4,3,12,27,16]
++ * - \a val : [3,16,-4,27,17]
++ * - result: [5,8,4,7,0]
++ *
++ * \return - An array of size std::distance(valsBg,valsEnd)
++ *
++ * \sa DataArrayInt32::FindPermutationFromFirstToSecond
++ */
++MCAuto<DataArrayInt32> DataArrayInt32::findIdForEach(const int *valsBg, const int *valsEnd) const
++{
++  MCAuto<DataArrayInt32> ret(DataArrayInt32::New());
++  std::size_t nbOfTuplesOut(std::distance(valsBg,valsEnd));
++  ret->alloc(nbOfTuplesOut,1);
++  MCAuto< MapKeyVal<int> > zeMap(invertArrayN2O2O2NOptimized());
++  const std::map<int,int>& dat(zeMap->data());
++  int *ptToFeed(ret->getPointer());
++  for(const int *pt=valsBg;pt!=valsEnd;pt++)
++    {
++      std::map<int,int>::const_iterator it(dat.find(*pt));
++      if(it!=dat.end())
++        *ptToFeed++=(*it).second;
++      else
++        {
++          std::ostringstream oss; oss << "DataArrayInt32::findIdForEach : error for element at place " << std::distance(valsBg,pt);
++          oss << " of input array value is " << *pt << " which is not in this !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++    }
++  return ret;
++}
++
++/*!
+  * Assigns \a newValue to all elements holding \a oldValue within \a this
+  * one-dimensional array.
+  *  \param [in] oldValue - the value to replace.
+@@ -5567,7 +5656,7 @@
+ }
+ /*!
+- * This method allows to put a vector of vector of integer into a more compact data stucture (skyline). 
++ * This method allows to put a vector of vector of integer into a more compact data structure (skyline). 
+  * This method is not available into python because no available optimized data structure available to map std::vector< std::vector<int> >.
+  *
+  * \param [in] v the input data structure to be translate into skyline format.
+@@ -5791,7 +5880,7 @@
+  * "MEDCouplingUMesh::buildDescendingConnectivity" and
+  * \ref MEDCoupling::MEDCouplingUMesh::getNodalConnectivityIndex
+  * "MEDCouplingUMesh::getNodalConnectivityIndex" etc.
+- * This method preforms the reverse operation of DataArrayInt::computeOffsetsFull.
++ * This method performs the reverse operation of DataArrayInt::computeOffsetsFull.
+  *  \return DataArrayInt * - a new instance of DataArrayInt, whose number of tuples
+  *          equals to \a this->getNumberOfComponents() - 1, and number of components is 1.
+  *          The caller is to delete this array using decrRef() as it is no more needed. 
+@@ -5867,7 +5956,7 @@
+  * components remains the same and number of tuples is inceamented by one.<br>
+  * This method is useful for allToAllV in MPI with contiguous policy. This method
+  * differs from computeOffsets() in that the number of tuples is changed by this one.
+- * This method preforms the reverse operation of DataArrayInt::deltaShiftIndex.
++ * This method performs the reverse operation of DataArrayInt::deltaShiftIndex.
+  *  \throw If \a this is not allocated.
+  *  \throw If \a this->getNumberOfComponents() != 1.
+  *
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMemArray.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMemArray.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMemArray.hxx    2018-04-19 17:04:36.713222244 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMemArray.hxx    2018-04-19 17:25:18.131805145 +0200
+@@ -234,6 +234,8 @@
+     MEDCOUPLING_EXPORT const T *getConstPointer() const { return _mem.getConstPointer(); }
+     MEDCOUPLING_EXPORT const T *begin() const { return getConstPointer(); }
+     MEDCOUPLING_EXPORT const T *end() const { return getConstPointer()+getNbOfElems(); }
++    MEDCOUPLING_EXPORT T *rwBegin() { return getPointer(); }
++    MEDCOUPLING_EXPORT T *rwEnd() { return getPointer()+getNbOfElems(); }
+     void alloc(std::size_t nbOfTuple, std::size_t nbOfCompo=1);
+     void useArray(const T *array, bool ownership, DeallocType type, int nbOfTuple, int nbOfCompo);
+     void useExternalArrayWithRWAccess(const T *array, int nbOfTuple, int nbOfCompo);
+@@ -285,6 +287,8 @@
+     void setContigPartOfSelectedValuesSlice(int tupleIdStart, const DataArray *aBase, int bg, int end2, int step);
+     T getMaxValue(int& tupleId) const;
+     T getMaxValueInArray() const;
++    T getMaxAbsValue(std::size_t& tupleId) const;
++    T getMaxAbsValueInArray() const;
+     T getMinValue(int& tupleId) const;
+     T getMinValueInArray() const;
+     MEDCOUPLING_EXPORT void getTuple(int tupleId, T *res) const { std::copy(_mem.getConstPointerLoc(tupleId*_info_on_compo.size()),_mem.getConstPointerLoc((tupleId+1)*_info_on_compo.size()),res); }
+@@ -349,13 +353,13 @@
+     MEDCOUPLING_EXPORT void reprZipWithoutNameStream(std::ostream& stream) const;
+     MEDCOUPLING_EXPORT void reprNotTooLongWithoutNameStream(std::ostream& stream) const;
+     MEDCOUPLING_EXPORT std::string reprNotTooLong() const;
++    template<class U>
++    MCAuto< typename Traits<U>::ArrayType > convertToOtherTypeOfArr() const;
+   protected:
+     static typename Traits<T>::ArrayType *PerformCopyOrIncrRef(bool dCpy, const typename Traits<T>::ArrayType& self);
+     template<class OP>
+     MCAuto<DataArrayInt32> findIdsAdv(const OP& op) const;
+   private:
+-    template<class U>
+-    MCAuto< typename Traits<U>::ArrayType > convertToOtherTypeOfArr() const;
+     template<class FCT>
+     void somethingEqual(const typename Traits<T>::ArrayType *other);
+   };
+@@ -470,6 +474,7 @@
+     MEDCOUPLING_EXPORT DataArrayDouble *maxPerTupleWithCompoId(DataArrayInt32* &compoIdOfMaxPerTuple) const;
+     MEDCOUPLING_EXPORT DataArrayDouble *buildEuclidianDistanceDenseMatrix() const;
+     MEDCOUPLING_EXPORT DataArrayDouble *buildEuclidianDistanceDenseMatrixWith(const DataArrayDouble *other) const;
++    MEDCOUPLING_EXPORT void asArcOfCircle(double center[2], double& radius, double& ang) const;
+     MEDCOUPLING_EXPORT void sortPerTuple(bool asc);
+     MEDCOUPLING_EXPORT void applyInv(double numerator);
+     MEDCOUPLING_EXPORT void applyPow(double val);
+@@ -596,6 +601,7 @@
+     MEDCOUPLING_EXPORT DataArrayInt32 *findIdsEqualList(const int *valsBg, const int *valsEnd) const;
+     MEDCOUPLING_EXPORT DataArrayInt32 *findIdsNotEqualList(const int *valsBg, const int *valsEnd) const;
+     MEDCOUPLING_EXPORT DataArrayInt32 *findIdsEqualTuple(const int *tupleBg, const int *tupleEnd) const;
++    MEDCOUPLING_EXPORT MCAuto<DataArrayInt32> findIdForEach(const int *valsBg, const int *valsEnd) const;
+     MEDCOUPLING_EXPORT int changeValue(int oldValue, int newValue);
+     MEDCOUPLING_EXPORT int findIdFirstEqualTuple(const std::vector<int>& tupl) const;
+     MEDCOUPLING_EXPORT int findIdFirstEqual(int value) const;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMemArray.txx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMemArray.txx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMemArray.txx    2018-04-19 17:04:36.714222264 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMemArray.txx    2018-04-19 17:25:18.136805243 +0200
+@@ -404,7 +404,7 @@
+   /*!
+    * This method performs systematically an allocation of \a newNbOfElements elements in \a this.
+    * \a _nb_of_elem and \a _nb_of_elem_alloc will be equal even if only std::min<std::size_t>(_nb_of_elem,newNbOfElements) come from the .
+-   * The remaing part of the new allocated chunk are available but not set previouly !
++   * The remaining part of the new allocated chunk are available but not set previously !
+    * 
+    * So this method should not be confused with MemArray<T>::reserve that is close to MemArray<T>::reAlloc but not same.
+    */
+@@ -704,7 +704,7 @@
+   }
+   
+   /*!
+-   * This method desallocated \a this without modification of informations relative to the components.
++   * This method deallocated \a this without modification of information relative to the components.
+    * After call of this method, DataArrayDouble::isAllocated will return false.
+    * If \a this is already not allocated, \a this is let unchanged.
+    */
+@@ -718,7 +718,7 @@
+    * This method reserve nbOfElems elements in memory ( nbOfElems*8 bytes ) \b without impacting the number of tuples in \a this.
+    * If \a this has already been allocated, this method checks that \a this has only one component. If not an INTERP_KERNEL::Exception will be thrown.
+    * If \a this has not already been allocated, number of components is set to one.
+-   * This method allows to reduce number of reallocations on invokation of DataArrayDouble::pushBackSilent and DataArrayDouble::pushBackValsSilent on \a this.
++   * This method allows to reduce number of reallocations on invocation of DataArrayDouble::pushBackSilent and DataArrayDouble::pushBackValsSilent on \a this.
+    * 
+    * \sa DataArrayDouble::pack, DataArrayDouble::pushBackSilent, DataArrayDouble::pushBackValsSilent
+    */
+@@ -769,7 +769,7 @@
+   }
+   
+   /*!
+-   * This method adds at the end of \a this a serie of values [\c valsBg,\c valsEnd). This method do \b not update its time label to avoid useless incrementation
++   * This method adds at the end of \a this a series of values [\c valsBg,\c valsEnd). This method do \b not update its time label to avoid useless incrementation
+    * of counter. So the caller is expected to call TimeLabel::declareAsNew on \a this at the end of the push session.
+    *
+    *  \param [in] valsBg - an array of values to push at the end of \c this.
+@@ -2185,6 +2185,7 @@
+    *  \return double - the maximal value among all values of \a this array.
+    *  \throw If \a this->getNumberOfComponents() != 1
+    *  \throw If \a this->getNumberOfTuples() < 1
++   *  \sa getMaxAbsValue, getMinValue
+    */
+   template<class T>
+   T DataArrayTemplate<T>::getMaxValue(int& tupleId) const
+@@ -2206,6 +2207,7 @@
+    *  one component.
+    *  \return double - the maximal value among all values of \a this array.
+    *  \throw If \a this is not allocated.
++   *  \sa getMaxAbsValueInArray, getMinValueInArray
+    */
+   template<class T>
+   T DataArrayTemplate<T>::getMaxValueInArray() const
+@@ -2216,6 +2218,50 @@
+   }
+   
+   /*!
++   * Returns the maximal absolute value in \a this and the first occurrence location associated to it.
++   * \return the element in this (positive or negative) having the max abs value in \a this.
++   *  \throw If \a this is not allocated.
++   *  \throw If \a this is non one component array.
++   *  \throw If \a this is empty.
++   */
++  template<class T>
++  T DataArrayTemplate<T>::getMaxAbsValue(std::size_t& tupleId) const
++  {
++    checkAllocated();
++    if(getNumberOfComponents()!=1)
++      throw INTERP_KERNEL::Exception("DataArrayDouble::getMaxAbsValue : must be applied on DataArrayDouble with only one component, you can call 'rearrange' method before or call 'getMaxValueInArray' method !");
++    std::size_t nbTuples(this->getNumberOfTuples());
++    if(nbTuples==0)
++      throw INTERP_KERNEL::Exception("DataArrayTemplate<T>::getMaxAbsValue : empty array !");
++    T ret((T)-1);
++    tupleId=0;
++    const T *pt(begin());
++    for(std::size_t i=0;i<nbTuples;i++,pt++)
++      {
++        T cand(std::abs(*pt));
++        if(cand>ret)
++          {
++            ret=cand;
++            tupleId=i;
++          }
++      }
++    return this->getIJ(tupleId,0);
++  }
++
++  /*!
++   * Returns the maximal absolute value in \a this.
++   *  \throw If \a this is not allocated.
++   *  \throw If \a this is non one component array.
++   *  \throw If \a this is empty.
++   */
++  template<class T>
++  T DataArrayTemplate<T>::getMaxAbsValueInArray() const
++  {
++    std::size_t dummy;
++    return getMaxAbsValue(dummy);
++  }
++
++  /*!
+    * Returns the minimal value and its location within \a this one-dimensional array.
+    *  \param [out] tupleId - index of the tuple holding the minimal value.
+    *  \return double - the minimal value among all values of \a this array.
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMesh.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMesh.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMesh.cxx        2018-04-19 17:04:36.715222284 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMesh.cxx        2018-04-19 17:25:18.028803109 +0200
+@@ -237,7 +237,7 @@
+ }
+ /*!
+- * This method is very poor and looks only if \a this and \a other are candidate for merge of fields lying repectively on them.
++ * This method is very poor and looks only if \a this and \a other are candidate for merge of fields lying respectively on them.
+  */
+ bool MEDCouplingMesh::areCompatibleForMerge(const MEDCouplingMesh *other) const
+ {
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMesh.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMesh.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingMesh.hxx        2018-04-19 17:04:36.715222284 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingMesh.hxx        2018-04-19 17:25:17.980802160 +0200
+@@ -109,7 +109,7 @@
+     MEDCOUPLING_EXPORT virtual const DataArrayDouble *getDirectAccessOfCoordsArrIfInStructure() const = 0;
+     MEDCOUPLING_EXPORT virtual std::vector<int> getDistributionOfTypes() const = 0;
+     MEDCOUPLING_EXPORT virtual DataArrayInt *checkTypeConsistencyAndContig(const std::vector<int>& code, const std::vector<const DataArrayInt *>& idsPerType) const = 0;
+-    MEDCOUPLING_EXPORT virtual void splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType) const = 0;
++    MEDCOUPLING_EXPORT virtual void splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType, bool smartPflKiller=true) const = 0;
+     MEDCOUPLING_EXPORT virtual void getBoundingBox(double *bbox) const = 0;
+     MEDCOUPLING_EXPORT virtual MEDCouplingFieldDouble *getMeasureField(bool isAbs) const = 0;
+     MEDCOUPLING_EXPORT virtual MEDCouplingFieldDouble *getMeasureFieldOnNode(bool isAbs) const = 0;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingNormalizedUnstructuredMesh.txx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingNormalizedUnstructuredMesh.txx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingNormalizedUnstructuredMesh.txx  2018-04-19 17:04:36.715222284 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingNormalizedUnstructuredMesh.txx  2018-04-19 17:25:18.106804650 +0200
+@@ -22,6 +22,7 @@
+ #define __MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_TXX__
+ #include "MEDCouplingNormalizedUnstructuredMesh.hxx"
++#include "InterpKernelAssert.hxx"
+ #include "MEDCouplingUMesh.hxx"
+ #include "MEDCoupling1GTUMesh.hxx"
+@@ -124,6 +125,7 @@
+ template<int SPACEDIM,int MESHDIM>
+ void MEDCouplingNormalizedUnstructuredMesh<SPACEDIM,MESHDIM>::prepare()
+ {
++  IKAssert(_mesh->getSpaceDimension()==SPACEDIM);
+   const MEDCoupling::MEDCouplingUMesh *m1(dynamic_cast<const MEDCoupling::MEDCouplingUMesh *>(_mesh));
+   if(m1)
+     {
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingPointSet.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingPointSet.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingPointSet.cxx    2018-04-19 17:04:36.716222304 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingPointSet.cxx    2018-04-19 17:25:18.113804789 +0200
+@@ -371,7 +371,7 @@
+ /*!
+  * @param comm in param in the same format than one returned by findCommonNodes method (\ref numbering-indirect).
+  * @param commI in param in the same format than one returned by findCommonNodes method (\ref numbering-indirect).
+- * @return the old to new correspondance array.
++ * @return the old to new correspondence array.
+  */
+ DataArrayInt *MEDCouplingPointSet::buildNewNumberingFromCommonNodesFormat(const DataArrayInt *comm, const DataArrayInt *commIndex,
+                                                                           int& newNbOfNodes) const
+@@ -1042,7 +1042,7 @@
+ {
+   if(!srcMesh || !trgMesh)
+     throw INTERP_KERNEL::Exception("MEDCouplingPointSet::ComputeNbOfInteractionsWithSrcCells : the input meshes must be not NULL !");
+-  MCAuto<DataArrayDouble> sbbox(srcMesh->getBoundingBoxForBBTree()),tbbox(trgMesh->getBoundingBoxForBBTree());
++  MCAuto<DataArrayDouble> sbbox(srcMesh->getBoundingBoxForBBTree(eps)),tbbox(trgMesh->getBoundingBoxForBBTree(eps));
+   return tbbox->computeNbOfInteractionsWith(sbbox,eps);
+ }
+@@ -1112,7 +1112,7 @@
+  * \param [out] beginOut valid only if \a arr not NULL !
+  * \param [out] endOut valid only if \a arr not NULL !
+  * \param [out] stepOut valid only if \a arr not NULL !
+- * \param [out] arr correspondance old to new in node ids.
++ * \param [out] arr correspondence old to new in node ids.
+  * 
+  * \sa MEDCouplingUMesh::buildPartOfMySelfSlice
+  */
+@@ -1181,6 +1181,9 @@
+  */
+ bool MEDCouplingPointSet::isButterfly2DCell(const std::vector<double>& res, bool isQuad, double eps)
+ {
++  INTERP_KERNEL::QuadraticPlanarPrecision prec(eps);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision arcPrec(eps);
++
+   std::size_t nbOfNodes(res.size()/2);
+   std::vector<INTERP_KERNEL::Node *> nodes(nbOfNodes);
+   for(std::size_t i=0;i<nbOfNodes;i++)
+@@ -1188,8 +1191,6 @@
+       INTERP_KERNEL::Node *tmp=new INTERP_KERNEL::Node(res[2*i],res[2*i+1]);
+       nodes[i]=tmp;
+     }
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_precision=eps;
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=eps;
+   INTERP_KERNEL::QuadraticPolygon *pol=0;
+   if(isQuad)
+     pol=INTERP_KERNEL::QuadraticPolygon::BuildArcCirclePolygon(nodes);
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingRefCountObject.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRefCountObject.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingRefCountObject.cxx      2018-04-19 17:04:36.716222304 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRefCountObject.cxx      2018-04-19 17:25:17.998802516 +0200
+@@ -75,6 +75,15 @@
+     return BIGENDIAN_STR;
+ }
++bool MEDCoupling::IsCXX11Compiled()
++{
++#if __cplusplus >= 201103L
++  return true;
++#else
++  return false;
++#endif
++}
++
+ //=
+ std::size_t BigMemoryObject::getHeapMemorySize() const
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingRefCountObject.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRefCountObject.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingRefCountObject.hxx      2018-04-19 17:04:36.716222304 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRefCountObject.hxx      2018-04-19 17:25:18.001802575 +0200
+@@ -64,7 +64,8 @@
+   MEDCOUPLING_EXPORT int MEDCouplingSizeOfVoidStar();
+   MEDCOUPLING_EXPORT bool MEDCouplingByteOrder();
+   MEDCOUPLING_EXPORT const char *MEDCouplingByteOrderStr();
+-
++  MEDCOUPLING_EXPORT bool IsCXX11Compiled();
++  
+   class BigMemoryObject
+   {
+   public:
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingRemapper.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRemapper.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingRemapper.cxx    2018-04-19 17:04:36.716222304 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRemapper.cxx    2018-04-19 17:25:17.996802476 +0200
+@@ -36,6 +36,7 @@
+ #include "Interpolation2D1D.txx"
+ #include "Interpolation2D3D.txx"
+ #include "Interpolation3D1D.txx"
++#include "Interpolation1D0D.txx"
+ #include "InterpolationCU.txx"
+ #include "InterpolationCC.txx"
+@@ -70,14 +71,8 @@
+  */
+ int MEDCouplingRemapper::prepare(const MEDCouplingMesh *srcMesh, const MEDCouplingMesh *targetMesh, const std::string& method)
+ {
+-  if(!srcMesh || !targetMesh)
+-    throw INTERP_KERNEL::Exception("MEDCouplingRemapper::prepare : presence of NULL input pointer !");
+-  std::string srcMethod,targetMethod;
+-  INTERP_KERNEL::Interpolation<INTERP_KERNEL::Interpolation3D>::CheckAndSplitInterpolationMethod(method,srcMethod,targetMethod);
+-  MCAuto<MEDCouplingFieldTemplate> src=MEDCouplingFieldTemplate::New(MEDCouplingFieldDiscretization::GetTypeOfFieldFromStringRepr(srcMethod));
+-  src->setMesh(srcMesh);
+-  MCAuto<MEDCouplingFieldTemplate> target=MEDCouplingFieldTemplate::New(MEDCouplingFieldDiscretization::GetTypeOfFieldFromStringRepr(targetMethod));
+-  target->setMesh(targetMesh);
++  MCAuto<MEDCouplingFieldTemplate> src,target;
++  BuildFieldTemplatesFrom(srcMesh,targetMesh,method,src,target);
+   return prepareEx(src,target);
+ }
+@@ -92,19 +87,52 @@
+  */
+ int MEDCouplingRemapper::prepareEx(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target)
+ {
+-  if(!src || !target)
+-    throw INTERP_KERNEL::Exception("MEDCouplingRemapper::prepareEx : presence of NULL input pointer !");
+-  if(!src->getMesh() || !target->getMesh())
+-    throw INTERP_KERNEL::Exception("MEDCouplingRemapper::prepareEx : presence of NULL mesh pointer in given field template !");
+-  releaseData(true);
+-  _src_ft=const_cast<MEDCouplingFieldTemplate *>(src); _src_ft->incrRef();
+-  _target_ft=const_cast<MEDCouplingFieldTemplate *>(target); _target_ft->incrRef();
++  restartUsing(src,target);
+   if(isInterpKernelOnlyOrNotOnly())
+     return prepareInterpKernelOnly();
+   else
+     return prepareNotInterpKernelOnly();
+ }
++void MEDCouplingRemapper::setCrudeMatrix(const MEDCouplingMesh *srcMesh, const MEDCouplingMesh *targetMesh, const std::string& method, const std::vector<std::map<int,double> >& m)
++{
++  MCAuto<MEDCouplingFieldTemplate> src,target;
++  BuildFieldTemplatesFrom(srcMesh,targetMesh,method,src,target);
++  setCrudeMatrixEx(src,target,m);
++}
++
++void MEDCouplingRemapper::setCrudeMatrixEx(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target, const std::vector<std::map<int,double> >& m)
++{
++#if __cplusplus >= 201103L
++  restartUsing(src,target);
++  if(m.size()!=target->getNumberOfTuplesExpected())
++    {
++      std::ostringstream oss; oss << "MEDCouplingRemapper::setMatrixEx : input matrix has " << m.size() << " rows whereas there are " << target->getNumberOfTuplesExpected() << " expected !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  auto srcNbElem(src->getNumberOfTuplesExpected());
++  for(auto it: m)
++    {
++      for(auto it2: it)
++        {
++          auto idToTest(it2.first);
++          if(idToTest<0 || idToTest>=srcNbElem)
++            {
++              std::ostringstream oss; oss << "MEDCouplingRemapper::setMatrixEx : presence of elt #" << idToTest << " ! not in [0," << srcNbElem << ") !";
++              throw INTERP_KERNEL::Exception(oss.str());
++            }
++        }
++    }
++  _matrix=m;
++  _deno_multiply.clear();
++  _deno_multiply.resize(_matrix.size());
++  _deno_reverse_multiply.clear();
++  _deno_reverse_multiply.resize(srcNbElem);
++#else
++  throw INTERP_KERNEL::Exception("Breaking news : 10% off for C++11 compiler :)");
++#endif
++}
++
+ int MEDCouplingRemapper::prepareInterpKernelOnly()
+ {
+   int meshInterpType=((int)_src_ft->getMesh()->getType()*16)+(int)_target_ft->getMesh()->getType();
+@@ -311,14 +339,14 @@
+ }
+ /*!
+- * This method returns the interpolation matrix policy. This policy specifies which interpolation matrix method to keep or prefered.
++ * This method returns the interpolation matrix policy. This policy specifies which interpolation matrix method to keep or preferred.
+  * If interpolation matrix policy is :
+  *
+- * - set to IK_ONLY_PREFERED (0) (the default) : the INTERP_KERNEL only method is prefered. That is to say, if it is possible to treat the case
++ * - set to IK_ONLY_PREFERED (0) (the default) : the INTERP_KERNEL only method is preferred. That is to say, if it is possible to treat the case
+  *   regarding spatial discretization of source and target with INTERP_KERNEL only method, INTERP_KERNEL only method will be performed.
+  *   If not, the \b not only INTERP_KERNEL method will be attempt.
+  * 
+- * - set to NOT_IK_ONLY_PREFERED (1) : the \b NOT only INTERP_KERNEL method is prefered. That is to say, if it is possible to treat the case
++ * - set to NOT_IK_ONLY_PREFERED (1) : the \b NOT only INTERP_KERNEL method is preferred. That is to say, if it is possible to treat the case
+  *   regarding spatial discretization of source and target with \b NOT only INTERP_KERNEL method, \b NOT only INTERP_KERNEL method, will be performed.
+  *   If not, the INTERP_KERNEL only method will be attempt.
+  * 
+@@ -340,11 +368,11 @@
+  *
+  * If interpolation matrix policy is :
+  *
+- * - set to IK_ONLY_PREFERED (0) (the default) : the INTERP_KERNEL only method is prefered. That is to say, if it is possible to treat the case
++ * - set to IK_ONLY_PREFERED (0) (the default) : the INTERP_KERNEL only method is preferred. That is to say, if it is possible to treat the case
+  *   regarding spatial discretization of source and target with INTERP_KERNEL only method, INTERP_KERNEL only method will be performed.
+  *   If not, the \b not only INTERP_KERNEL method will be attempt.
+  * 
+- * - set to NOT_IK_ONLY_PREFERED (1) : the \b NOT only INTERP_KERNEL method is prefered. That is to say, if it is possible to treat the case
++ * - set to NOT_IK_ONLY_PREFERED (1) : the \b NOT only INTERP_KERNEL method is preferred. That is to say, if it is possible to treat the case
+  *   regarding spatial discretization of source and target with \b NOT only INTERP_KERNEL method, \b NOT only INTERP_KERNEL method, will be performed.
+  *   If not, the INTERP_KERNEL only method will be attempt.
+  * 
+@@ -440,6 +468,15 @@
+       INTERP_KERNEL::Interpolation3D1D interpolation(*this);
+       nbCols=interpolation.interpolateMeshes(source_mesh_wrapper,target_mesh_wrapper,_matrix,method);
+     }
++  else if(srcMeshDim==1 && trgMeshDim==0 && srcSpaceDim==3)
++    {
++      if(getIntersectionType()!=INTERP_KERNEL::PointLocator)
++        throw INTERP_KERNEL::Exception("Invalid interpolation requested between 1D and 0D into 3D space ! Select PointLocator as intersection type !");
++      MEDCouplingNormalizedUnstructuredMesh<3,3> source_mesh_wrapper(src_mesh);
++      MEDCouplingNormalizedUnstructuredMesh<3,3> target_mesh_wrapper(target_mesh);
++      INTERP_KERNEL::Interpolation1D0D interpolation(*this);
++      nbCols=interpolation.interpolateMeshes(source_mesh_wrapper,target_mesh_wrapper,_matrix,method);
++    }
+   else if(srcMeshDim==1 && trgMeshDim==3 && srcSpaceDim==3)
+     {
+       if(getIntersectionType()!=INTERP_KERNEL::PointLocator)
+@@ -507,7 +544,7 @@
+           INTERP_KERNEL::Interpolation2D1D::DuplicateFacesType duplicateFaces=interpolation.retrieveDuplicateFaces();
+           if(!duplicateFaces.empty())
+             {
+-              std::ostringstream oss; oss << "An unexpected situation happend ! For the following 1D Cells are part of edges shared by 2D cells :\n";
++              std::ostringstream oss; oss << "An unexpected situation happened ! For the following 1D Cells are part of edges shared by 2D cells :\n";
+               for(std::map<int,std::set<int> >::const_iterator it=duplicateFaces.begin();it!=duplicateFaces.end();it++)
+                 {
+                   oss << "1D Cell #" << (*it).first << " is part of common edge of following 2D cells ids : ";
+@@ -526,7 +563,7 @@
+       INTERP_KERNEL::Interpolation2D3D::DuplicateFacesType duplicateFaces=interpolation.retrieveDuplicateFaces();
+       if(!duplicateFaces.empty())
+         {
+-          std::ostringstream oss; oss << "An unexpected situation happend ! For the following 2D Cells are part of edges shared by 3D cells :\n";
++          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 : ";
+@@ -557,7 +594,7 @@
+           INTERP_KERNEL::Interpolation2D3D::DuplicateFacesType duplicateFaces=interpolation.retrieveDuplicateFaces();
+           if(!duplicateFaces.empty())
+             {
+-              std::ostringstream oss; oss << "An unexpected situation happend ! For the following 2D Cells are part of edges shared by 3D cells :\n";
++              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 : ";
+@@ -951,7 +988,7 @@
+ /*!
+  * This method builds a code considering already set field discretization int \a this : \a _src_ft and \a _target_ft.
+- * This method returns 3 informations (2 in ouput parameters and 1 in return).
++ * This method returns 3 information (2 in output parameters and 1 in return).
+  * 
+  * \param [out] srcMeth the string code of the discretization of source field template
+  * \param [out] trgMeth the string code of the discretization of target field template
+@@ -975,6 +1012,18 @@
+   return method;
+ }
++void MEDCouplingRemapper::BuildFieldTemplatesFrom(const MEDCouplingMesh *srcMesh, const MEDCouplingMesh *targetMesh, const std::string& method, MCAuto<MEDCouplingFieldTemplate>& src, MCAuto<MEDCouplingFieldTemplate>& target)
++{
++  if(!srcMesh || !targetMesh)
++    throw INTERP_KERNEL::Exception("MEDCouplingRemapper::BuildFieldTemplatesFrom : presence of NULL input pointer !");
++  std::string srcMethod,targetMethod;
++  INTERP_KERNEL::Interpolation<INTERP_KERNEL::Interpolation3D>::CheckAndSplitInterpolationMethod(method,srcMethod,targetMethod);
++  src=MEDCouplingFieldTemplate::New(MEDCouplingFieldDiscretization::GetTypeOfFieldFromStringRepr(srcMethod));
++  src->setMesh(srcMesh);
++  target=MEDCouplingFieldTemplate::New(MEDCouplingFieldDiscretization::GetTypeOfFieldFromStringRepr(targetMethod));
++  target->setMesh(targetMesh);
++}
++
+ void MEDCouplingRemapper::releaseData(bool matrixSuppression)
+ {
+   _src_ft=0;
+@@ -987,6 +1036,17 @@
+     }
+ }
++void MEDCouplingRemapper::restartUsing(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target)
++{
++  if(!src || !target)
++    throw INTERP_KERNEL::Exception("MEDCouplingRemapper::restartUsingData : presence of NULL input pointer !");
++  if(!src->getMesh() || !target->getMesh())
++    throw INTERP_KERNEL::Exception("MEDCouplingRemapper::prepareEx : presence of NULL mesh pointer in given field template !");
++  releaseData(true);
++  _src_ft.takeRef(const_cast<MEDCouplingFieldTemplate *>(src));
++  _target_ft.takeRef(const_cast<MEDCouplingFieldTemplate *>(target));
++}
++
+ void MEDCouplingRemapper::transferUnderground(const MEDCouplingFieldDouble *srcField, MEDCouplingFieldDouble *targetField, bool isDftVal, double dftValue)
+ {
+   if(!srcField || !targetField)
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingRemapper.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRemapper.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingRemapper.hxx    2018-04-19 17:04:36.716222304 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingRemapper.hxx    2018-04-19 17:25:18.125805026 +0200
+@@ -56,6 +56,8 @@
+     MEDCOUPLINGREMAPPER_EXPORT ~MEDCouplingRemapper();
+     MEDCOUPLINGREMAPPER_EXPORT int prepare(const MEDCouplingMesh *srcMesh, const MEDCouplingMesh *targetMesh, const std::string& method);
+     MEDCOUPLINGREMAPPER_EXPORT int prepareEx(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target);
++    MEDCOUPLINGREMAPPER_EXPORT void setCrudeMatrix(const MEDCouplingMesh *srcMesh, const MEDCouplingMesh *targetMesh, const std::string& method, const std::vector<std::map<int,double> >& m);
++    MEDCOUPLINGREMAPPER_EXPORT void setCrudeMatrixEx(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target, const std::vector<std::map<int,double> >& m);
+     MEDCOUPLINGREMAPPER_EXPORT void transfer(const MEDCouplingFieldDouble *srcField, MEDCouplingFieldDouble *targetField, double dftValue);
+     MEDCOUPLINGREMAPPER_EXPORT void partialTransfer(const MEDCouplingFieldDouble *srcField, MEDCouplingFieldDouble *targetField);
+     MEDCOUPLINGREMAPPER_EXPORT void reverseTransfer(MEDCouplingFieldDouble *srcField, const MEDCouplingFieldDouble *targetField, double dftValue);
+@@ -75,6 +77,7 @@
+     MEDCOUPLINGREMAPPER_EXPORT int getNumberOfColsOfMatrix() const;
+     MEDCOUPLINGREMAPPER_EXPORT static void PrintMatrix(const std::vector<std::map<int,double> >& m);
+     MEDCOUPLINGREMAPPER_EXPORT static std::string BuildMethodFrom(const std::string& meth1, const std::string& meth2);
++    MEDCOUPLINGREMAPPER_EXPORT void BuildFieldTemplatesFrom(const MEDCouplingMesh *srcMesh, const MEDCouplingMesh *targetMesh, const std::string& method, MCAuto<MEDCouplingFieldTemplate>& src, MCAuto<MEDCouplingFieldTemplate>& target);
+   private:
+     int prepareInterpKernelOnly();
+     int prepareInterpKernelOnlyUU();
+@@ -93,6 +96,7 @@
+     void checkPrepare() const;
+     std::string checkAndGiveInterpolationMethodStr(std::string& srcMeth, std::string& trgMeth) const;
+     void releaseData(bool matrixSuppression);
++    void restartUsing(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target);
+     void transferUnderground(const MEDCouplingFieldDouble *srcField, MEDCouplingFieldDouble *targetField, bool isDftVal, double dftValue);
+     void computeDeno(NatureOfField nat, const MEDCouplingFieldDouble *srcField, const MEDCouplingFieldDouble *trgField);
+     void computeDenoFromScratch(NatureOfField nat, const MEDCouplingFieldDouble *srcField, const MEDCouplingFieldDouble *trgField);
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingSkyLineArray.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingSkyLineArray.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingSkyLineArray.cxx        2018-04-19 17:04:36.716222304 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingSkyLineArray.cxx        2018-04-19 17:25:18.009802733 +0200
+@@ -20,6 +20,8 @@
+ #include "MEDCouplingSkyLineArray.hxx"
+ #include <sstream>
++#include <deque>
++#include <set>
+ using namespace MEDCoupling;
+@@ -384,8 +386,6 @@
+  */
+ void MEDCouplingSkyLineArray::deletePack(const int superIdx, const int idx)
+ {
+-  using namespace std;
+-
+   checkSuperIndex("deletePack");
+   validSuperIndexAndIndex("deletePack", superIdx, idx);
+@@ -393,12 +393,12 @@
+   int * siP(_super_index->getPointer()), *iP(_index->getPointer());
+   const int start = iP[siP[superIdx]+idx], end = iP[siP[superIdx]+idx+1];
+   // _values
+-  copy(vP+end, vP+_values->getNbOfElems(), vP+start);
++  std::copy(vP+end, vP+_values->getNbOfElems(), vP+start);
+   _values->reAlloc(_values->getNbOfElems() - (end-start));
+   // _index
+   int nt = _index->getNbOfElems();
+-  copy(iP+siP[superIdx]+idx+1, iP+nt, iP+siP[superIdx]+idx);
++  std::copy(iP+siP[superIdx]+idx+1, iP+nt, iP+siP[superIdx]+idx);
+   _index->reAlloc(nt-1); iP = _index->getPointer();  // better not forget this ...
+   for(int ii = siP[superIdx]+idx; ii < nt-1; ii++)
+     iP[ii] -= (end-start);
+@@ -408,6 +408,128 @@
+     (siP[ii])--;
+ }
++void MEDCouplingSkyLineArray::deleteSimplePack(const int idx)
++{
++  validIndex("deleteSimplePack", idx);
++  
++  int* iP(_index->getPointer());
++  const int start(iP[idx]), end(iP[idx+1]);
++
++  // _values
++  int initValSz( _values->getNbOfElems() );
++  int deltaSz( start-end );  // should be negative
++  int *vP(_values->getPointer());
++  if (deltaSz < 0)
++    {
++      std::copy(vP+end, vP+initValSz, vP+start);
++      _values->reAlloc(initValSz+deltaSz);
++    }
++  else
++    throw INTERP_KERNEL::Exception("MEDCouplingSkyLineArray::deleteSimplePack");
++  // _index
++  int nt(_index->getNbOfElems());
++  std::copy(iP+idx+1, iP+nt, iP+idx);
++  for(int ii = idx; ii < nt-1; ii++)
++    iP[ii] += deltaSz;
++  _index->reAlloc(nt-1);
++}
++
++void MEDCouplingSkyLineArray::replaceSimplePacks(const DataArrayInt* idx, const std::vector<const DataArrayInt*>& packs)
++{    
++  if (idx->empty())
++    return;
++    
++  for (const int * id = idx->begin(); id != idx->end(); id++)
++    validIndex("deleteSimplePacks", *id);
++    
++  if (idx->getNbOfElems() != packs.size())
++    throw INTERP_KERNEL::Exception("MEDCouplingSkyLineArray::deleteSimplePacks: size of list of pack is incorrect");
++    
++  // copy _index, _values into a deque<set<int>>
++  std::deque< std::set<int> > valuesByIdx;
++  int* vP(_values->getPointer());
++  int* iP(_index->getPointer());
++  std::size_t nt ( _index->getNbOfElems() );
++  for (int ii = 0; ii < nt-1; ii++)
++    valuesByIdx.push_back(std::set<int>(vP+iP[ii], vP+iP[ii+1]));
++    
++  // modify the deque<set<int>> according to idx and packs
++  int ii(0);
++  for (const int *id = idx->begin(); id != idx->end(); id++)
++    {
++      valuesByIdx[*id] = std::set<int>(packs[ii]->begin(), packs[ii]->end());
++      ii++;
++    }
++  // copy back the deque<set<int>> into _index, _values
++  int valSz(0);
++  *iP = 0;
++  for (std::deque< std::set<int> >::const_iterator values=valuesByIdx.begin();values!=valuesByIdx.end();values++)
++    {
++      valSz += (*values).size();
++      *(++iP) = valSz;
++    }
++  _values->reAlloc(valSz);
++  iP = _index->getPointer();
++  vP = _values->getPointer();
++  for (auto values : valuesByIdx)
++    {
++      std::copy(values.begin(), values.end(), vP+(*iP));
++      iP++;
++    }
++}
++
++void MEDCouplingSkyLineArray::deleteSimplePacks(const DataArrayInt* idx)
++{    
++  for (auto id = idx->begin(); id != idx->end(); id++)
++    validIndex("deleteSimplePacks", *id);
++  
++  std::set<int> packsToDelete(idx->begin(), idx->end());
++    
++  // _values
++  int* iP(_index->getPointer());
++  int initValSz = _values->getNbOfElems();
++  int *vP(_values->getPointer());
++  int end_prec(0),start_prec(0);
++  for(std::set<int>::const_iterator ii=packsToDelete.begin();ii!=packsToDelete.end();ii++)
++    {
++      int start = iP[*ii];
++      if (end_prec != 0)
++        std::copy(vP+end_prec, vP+start, vP+start_prec);
++      start_prec += start-end_prec;
++      end_prec = iP[*ii+1];
++    }
++  if (end_prec != 0)
++    std::copy(vP+end_prec, vP+initValSz, vP+start_prec);
++  _values->reAlloc(initValSz-(end_prec-start_prec));
++    
++  // _index
++  int nt = _index->getNbOfElems();
++  int offset = 0;
++  end_prec = 0;
++  start_prec = 0;
++  int deleted = 0;
++  for(std::set<int>::const_iterator ii=packsToDelete.begin();ii!=packsToDelete.end();ii++)
++    {
++      if (end_prec != 0)
++        {
++          std::copy(iP+end_prec, iP+*ii, iP+start_prec);
++          for (int i=start_prec; i<*ii; i++)
++            iP[i] -= offset;
++        }
++      offset += iP[*ii+1] - iP[*ii];
++      start_prec = *ii-deleted;
++      end_prec = *ii+1;
++      deleted += 1;
++    }
++  if (end_prec != 0)
++    {
++      std::copy(iP+end_prec, iP+nt, iP+start_prec);
++      for (int i=start_prec; i<nt; i++)
++        iP[i] -= offset;
++    }
++  _index->reAlloc(nt-deleted);
++}
++
+ /**!
+  * Insert a new pack in super-pack at index 'superIdx'. The pack is inserted at the end of the pack list of the chosen super-pack.
+  */
+@@ -448,12 +570,10 @@
+  */
+ void MEDCouplingSkyLineArray::replaceSimplePack(const int idx, const int * packBg, const int * packEnd)
+ {
+-  using namespace std;
+-
+   validIndex("replaceSimplePack", idx);
+   int * iP(_index->getPointer());
+-  int newSz = distance(packBg, packEnd);
++  int newSz = std::distance(packBg, packEnd);
+   const int start = iP[idx], end = iP[idx+1];
+   // _values
+@@ -464,13 +584,13 @@
+       if (deltaSz > 0)
+         _values->reAlloc(initValSz+deltaSz);
+       int *vP(_values->getPointer());
+-      copy(vP+end, vP+initValSz, vP+end+deltaSz);
++      std::copy(vP+end, vP+initValSz, vP+end+deltaSz);
+       if (deltaSz < 0)
+         _values->reAlloc(initValSz+deltaSz);
+     }
+   // copy new pack
+-  copy(packBg, packEnd, _values->getPointer()+start);
++  std::copy(packBg, packEnd, _values->getPointer()+start);
+   // _index
+   for(int ii = idx+1; ii < (int)_index->getNbOfElems(); ii++)
+@@ -481,15 +601,13 @@
+  * Replace pack with super index 'superIdx' and index 'idx' with the provided new pack.
+  * Function can be used only for 3-level SkyLine.
+  */
+-void MEDCouplingSkyLineArray::replacePack(const int superIdx, const int idx, const int * packBg, const int * packEnd)
++void MEDCouplingSkyLineArray::replacePack(const int superIdx, const int idx, const int *packBg, const int *packEnd)
+ {
+-  using namespace std;
+-
+   checkSuperIndex("replacePack");
+   validSuperIndexAndIndex("replacePack", superIdx, idx);
+   int * siP(_super_index->getPointer()), *iP(_index->getPointer());
+-  int newSz = distance(packBg, packEnd);
++  int newSz = std::distance(packBg, packEnd);
+   const int start = iP[siP[superIdx]+idx], end = iP[siP[superIdx]+idx+1];
+   // _values
+@@ -500,13 +618,13 @@
+       if (deltaSz > 0)
+         _values->reAlloc(initValSz+deltaSz);
+       int *vP(_values->getPointer());
+-      copy(vP+end, vP+initValSz, vP+end+deltaSz);
++      std::copy(vP+end, vP+initValSz, vP+end+deltaSz);
+       if (deltaSz < 0)
+         _values->reAlloc(initValSz+deltaSz);
+     }
+   // copy new pack
+-  copy(packBg, packEnd, _values->getPointer()+start);
++  std::copy(packBg, packEnd, _values->getPointer()+start);
+   // _index
+   for(int ii = siP[superIdx]+idx+1; ii < (int)_index->getNbOfElems(); ii++)
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingSkyLineArray.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingSkyLineArray.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingSkyLineArray.hxx        2018-04-19 17:04:36.716222304 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingSkyLineArray.hxx        2018-04-19 17:25:18.042803386 +0200
+@@ -90,11 +90,15 @@
+                      std::vector<int>& out) const;
+     void deletePack(const int superIdx, const int idx);
++    void deleteSimplePack(const int idx);
+     void pushBackPack(const int superIdx, const int * packBg, const int * packEnd);
+     void replaceSimplePack(const int idx, const int * packBg, const int * packEnd);
+     void replacePack(const int superIdx, const int idx, const int * packBg, const int * packEnd);
++    void deleteSimplePacks(const DataArrayInt* idx);
++    void replaceSimplePacks(const DataArrayInt* idx, const std::vector<const DataArrayInt*>& packs);
++    
+     void convertToPolyhedronConn( MCAuto<DataArrayInt>& c,  MCAuto<DataArrayInt>& cI) const;
+   private:
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingStructuredMesh.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingStructuredMesh.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingStructuredMesh.cxx      2018-04-19 17:04:36.716222304 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingStructuredMesh.cxx      2018-04-19 17:25:18.023803010 +0200
+@@ -310,7 +310,7 @@
+  *          - After \a code contains [NORM_...,nbCells,0], \a idsInPflPerType [[0,1]] and \a idsPerType is [[1,2]] <br>
+  */
+-void MEDCouplingStructuredMesh::splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType) const
++void MEDCouplingStructuredMesh::splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType, bool smartPflKiller) const
+ {
+   if(!profile || !profile->isAllocated())
+     throw INTERP_KERNEL::Exception("MEDCouplingStructuredMesh::splitProfilePerType : input profile is NULL or not allocated !");
+@@ -321,7 +321,7 @@
+   code.resize(3); idsInPflPerType.resize(1);
+   code[0]=(int)getTypeOfCell(0); code[1]=nbOfCells;
+   idsInPflPerType.resize(1);
+-  if(profile->isIota(nbOfCells))
++  if(smartPflKiller && profile->isIota(nbOfCells))
+     {
+       code[2]=-1;
+       idsInPflPerType[0]=profile->deepCopy();
+@@ -1887,7 +1887,7 @@
+ /*!
+  * This method builds the explicit entity array from the structure in \a st and the range in \a partCompactFormat.
+- * If the range contains invalid values regarding sructure an exception will be thrown.
++ * If the range contains invalid values regarding structure an exception will be thrown.
+  *
+  * \return DataArrayInt * - a new object.
+  * \sa MEDCouplingStructuredMesh::IsPartStructured, MEDCouplingStructuredMesh::DeduceNumberOfGivenRangeInCompactFrmt, SwitchOnIdsFrom, ExtractFieldOfBoolFrom, ExtractFieldOfDoubleFrom, MultiplyPartOf
+@@ -1956,7 +1956,7 @@
+  * \param [in] st - the structure of grid ( \b without considering ghost cells).
+  * \param [in] part - the part in the structure ( \b without considering ghost cells) contained in grid whose structure is defined by \a st.
+  * \param [in] factor - the factor, the tuples in \a da will be multiply by.
+- * \param [in,out] da - The DataArray in wich only tuples specified by \a part will be modified.
++ * \param [in,out] da - The DataArray in which only tuples specified by \a part will be modified.
+  *
+  * \sa BuildExplicitIdsFrom
+  */
+@@ -2037,7 +2037,7 @@
+  * \param [in] part - the part in the structure ( \b without considering ghost cells) contained in grid whose structure is defined by \a st.
+  * \param [in] ghostSize - \a ghostSize must be >= 0.
+  * \param [in] factor - the factor, the tuples in \a da will be multiply by.
+- * \param [in,out] da - The DataArray in wich only tuples specified by \a part will be modified.
++ * \param [in,out] da - The DataArray in which only tuples specified by \a part will be modified.
+  *
+  * \sa MultiplyPartOf, PutInGhostFormat
+  */
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingStructuredMesh.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingStructuredMesh.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingStructuredMesh.hxx      2018-04-19 17:04:36.717222324 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingStructuredMesh.hxx      2018-04-19 17:25:18.142805362 +0200
+@@ -49,7 +49,7 @@
+     //tools
+     MEDCOUPLING_EXPORT std::vector<int> getDistributionOfTypes() const;
+     MEDCOUPLING_EXPORT DataArrayInt *checkTypeConsistencyAndContig(const std::vector<int>& code, const std::vector<const DataArrayInt *>& idsPerType) const;
+-    MEDCOUPLING_EXPORT void splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType) const;
++    MEDCOUPLING_EXPORT void splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType, bool smartPflKiller=true) const;
+     MEDCOUPLING_EXPORT MEDCoupling1SGTUMesh *build1SGTUnstructured() const;
+     MEDCOUPLING_EXPORT MEDCouplingUMesh *buildUnstructured() const;
+     MEDCOUPLING_EXPORT MEDCouplingMesh *buildPart(const int *start, const int *end) const;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingTimeDiscretization.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingTimeDiscretization.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingTimeDiscretization.cxx  2018-04-19 17:04:36.717222324 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingTimeDiscretization.cxx  2018-04-19 17:25:18.007802694 +0200
+@@ -374,7 +374,7 @@
+       if(arrays1[i]!=0 && arrays2[i]!=0)
+         arrays1[i]->setSelectedComponents(arrays2[i],compoIds);
+       else if(arrays1[i]!=0 || arrays2[i]!=0)
+-        throw INTERP_KERNEL::Exception("TimeDiscretization::setSelectedComponents : some time array in correspondance are not defined symetrically !");
++        throw INTERP_KERNEL::Exception("TimeDiscretization::setSelectedComponents : some time array in correspondence are not defined symmetrically !");
+     }
+ }
+@@ -710,7 +710,7 @@
+     case MEDCouplingTimeDiscretizationInt::DISCRETIZATION:
+       return new MEDCouplingTimeDiscretizationInt;
+     default:
+-      throw INTERP_KERNEL::Exception("Time discretization not implemented yet for intergers !");
++      throw INTERP_KERNEL::Exception("Time discretization not implemented yet for integers !");
+   }
+ }
+@@ -771,14 +771,12 @@
+     case MEDCouplingTimeDiscretizationFloat::DISCRETIZATION:
+       return new MEDCouplingTimeDiscretizationFloat;
+     default:
+-      throw INTERP_KERNEL::Exception("Time discretization not implemented yet for intergers !");
++      throw INTERP_KERNEL::Exception("Time discretization not implemented yet for integers !");
+   }
+ }
+ bool MEDCouplingTimeDiscretizationFloat::isEqualIfNotWhy(const MEDCouplingTimeDiscretizationTemplate<float> *other, float prec, std::string& reason) const
+ {
+-  if(prec!=0)
+-    throw INTERP_KERNEL::Exception("isEqualIfNotWhy : only precision equal to 0 supported for int !");
+   if(!other)
+     {
+       reason="Time discretization is NULL.";
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingTimeLabel.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingTimeLabel.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingTimeLabel.cxx   2018-04-19 17:04:36.717222324 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingTimeLabel.cxx   2018-04-19 17:25:18.132805164 +0200
+@@ -54,7 +54,7 @@
+ }
+ /*!
+- * This method has to be called with a lot of care. It set agressively the time in this with the
++ * This method has to be called with a lot of care. It set aggressively the time in this with the
+  * time in \a other.
+  */
+ void TimeLabel::forceTimeOfThis(const TimeLabel& other) const
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingUMesh.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingUMesh.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingUMesh.cxx       2018-04-19 17:04:36.722222424 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingUMesh.cxx       2018-04-19 17:25:17.986802279 +0200
+@@ -56,8 +56,8 @@
+ double MEDCouplingUMesh::EPS_FOR_POLYH_ORIENTATION=1.e-14;
+ /// @cond INTERNAL
+-const INTERP_KERNEL::NormalizedCellType MEDCouplingUMesh::MEDMEM_ORDER[N_MEDMEM_ORDER] = { INTERP_KERNEL::NORM_POINT1, INTERP_KERNEL::NORM_SEG2, INTERP_KERNEL::NORM_SEG3, INTERP_KERNEL::NORM_SEG4, INTERP_KERNEL::NORM_POLYL, INTERP_KERNEL::NORM_TRI3, INTERP_KERNEL::NORM_QUAD4, INTERP_KERNEL::NORM_TRI6, INTERP_KERNEL::NORM_TRI7, INTERP_KERNEL::NORM_QUAD8, INTERP_KERNEL::NORM_QUAD9, INTERP_KERNEL::NORM_POLYGON, INTERP_KERNEL::NORM_QPOLYG, INTERP_KERNEL::NORM_TETRA4, INTERP_KERNEL::NORM_PYRA5, INTERP_KERNEL::NORM_PENTA6, INTERP_KERNEL::NORM_HEXA8, INTERP_KERNEL::NORM_HEXGP12, INTERP_KERNEL::NORM_TETRA10, INTERP_KERNEL::NORM_PYRA13, INTERP_KERNEL::NORM_PENTA15, INTERP_KERNEL::NORM_HEXA20, INTERP_KERNEL::NORM_HEXA27, INTERP_KERNEL::NORM_POLYHED };
+-const int MEDCouplingUMesh::MEDCOUPLING2VTKTYPETRADUCER[INTERP_KERNEL::NORM_MAXTYPE+1]={1,3,21,5,9,7,22,34,23,28,-1,-1,-1,-1,10,14,13,-1,12,-1,24,-1,16,27,-1,26,-1,29,-1,-1,25,42,36,4};
++const INTERP_KERNEL::NormalizedCellType MEDCouplingUMesh::MEDMEM_ORDER[N_MEDMEM_ORDER] = { INTERP_KERNEL::NORM_POINT1, INTERP_KERNEL::NORM_SEG2, INTERP_KERNEL::NORM_SEG3, INTERP_KERNEL::NORM_SEG4, INTERP_KERNEL::NORM_POLYL, INTERP_KERNEL::NORM_TRI3, INTERP_KERNEL::NORM_QUAD4, INTERP_KERNEL::NORM_TRI6, INTERP_KERNEL::NORM_TRI7, INTERP_KERNEL::NORM_QUAD8, INTERP_KERNEL::NORM_QUAD9, INTERP_KERNEL::NORM_POLYGON, INTERP_KERNEL::NORM_QPOLYG, INTERP_KERNEL::NORM_TETRA4, INTERP_KERNEL::NORM_PYRA5, INTERP_KERNEL::NORM_PENTA6, INTERP_KERNEL::NORM_HEXA8, INTERP_KERNEL::NORM_HEXGP12, INTERP_KERNEL::NORM_TETRA10, INTERP_KERNEL::NORM_PYRA13, INTERP_KERNEL::NORM_PENTA15, INTERP_KERNEL::NORM_PENTA18, INTERP_KERNEL::NORM_HEXA20, INTERP_KERNEL::NORM_HEXA27, INTERP_KERNEL::NORM_POLYHED };
++const int MEDCouplingUMesh::MEDCOUPLING2VTKTYPETRADUCER[INTERP_KERNEL::NORM_MAXTYPE+1]={1,3,21,5,9,7,22,34,23,28,-1,-1,-1,-1,10,14,13,-1,12,-1,24,-1,16,27,-1,26,-1,29,32,-1,25,42,36,4};
+ /// @endcond
+ MEDCouplingUMesh *MEDCouplingUMesh::New()
+@@ -301,9 +301,10 @@
+ }
+ /*!
+- * Allocates memory to store an estimation of the given number of cells. The closer is the estimation to the number of cells effectively inserted,
+- * the less will the library need to reallocate memory. If the number of cells to be inserted is not known simply put 0 to this parameter.
+- * If a nodal connectivity previouly existed before the call of this method, it will be reset.
++ * Allocates memory to store an estimation of the given number of cells. 
++ * The closer the estimation to the number of cells effectively inserted, the less need the library requires
++ * to reallocate memory. If the number of cells to be inserted is not known simply assign 0 to this parameter.
++ * If a nodal connectivity previously existed before the call of this method, it will be reset.
+  *
+  *  \param [in] nbOfCells - estimation of the number of cell \a this mesh will contain.
+  *
+@@ -403,7 +404,7 @@
+ /*!
+  * Entry point for iteration over cells groups geo types per geotypes. Warning the returned cell iterator should be deallocated.
+- * If \a this is not so that that cells are grouped by geo types this method will throw an exception.
++ * If \a this is not so that the cells are grouped by geo types, this method will throw an exception.
+  * In this case MEDCouplingUMesh::sortCellsInMEDFileFrmt or MEDCouplingUMesh::rearrange2ConsecutiveCellTypes methods for example can be called before invoking this method.
+  * Useful for python users.
+  */
+@@ -975,7 +976,12 @@
+   {
+     int *neighIdx(neighborsIdx->getPointer());
+     for(std::vector< std::set<int> >::const_iterator it=st0.begin();it!=st0.end();it++,neighIdx++)
+-      neighIdx[1]=neighIdx[0]+(*it).size()-1;
++      {
++        if ((*it).empty())
++          neighIdx[1]=neighIdx[0];
++        else
++          neighIdx[1]=neighIdx[0]+(*it).size()-1;
++      }
+   }
+   neighbors=DataArrayInt::New(); neighbors->alloc(neighborsIdx->back(),1);
+   {
+@@ -1308,12 +1314,14 @@
+   connINew->alloc(nbOfCells+1,1);
+   int *connINewPtr=connINew->getPointer(); *connINewPtr++=0;
+   MCAuto<DataArrayInt> connNew=DataArrayInt::New(); connNew->alloc(0,1);
++  MCAuto<DataArrayInt> E_Fi(DataArrayInt::New()), E_F(DataArrayInt::New()), F_Ei(DataArrayInt::New()), F_E(DataArrayInt::New());
++  MCAuto<MEDCouplingUMesh> m_faces(buildDescendingConnectivity(E_F, E_Fi, F_E, F_Ei));
+   bool changed=false;
+   for(int i=0;i<nbOfCells;i++,connINewPtr++)
+     {
+       if(conn[index[i]]==(int)INTERP_KERNEL::NORM_POLYHED)
+         {
+-          SimplifyPolyhedronCell(eps,coords,conn+index[i],conn+index[i+1],connNew);
++          SimplifyPolyhedronCell(eps,coords, i,connNew, m_faces, E_Fi, E_F, F_Ei, F_E);
+           changed=true;
+         }
+       else
+@@ -1698,7 +1706,7 @@
+  * \param [in] startCellId specifies the cellId starting from which the equality computation will be carried out. By default it is 0, which it means that all cells in \a this will be scanned.
+  * \param [out] commonCellsArr common cells ids (\ref numbering-indirect)
+  * \param [out] commonCellsIArr common cells ids (\ref numbering-indirect)
+- * \return the correspondance array old to new in a newly allocated array.
++ * \return the correspondence array old to new in a newly allocated array.
+  * 
+  */
+ void MEDCouplingUMesh::findCommonCells(int compType, int startCellId, DataArrayInt *& commonCellsArr, DataArrayInt *& commonCellsIArr) const
+@@ -1895,7 +1903,7 @@
+ /*!
+  * Build a sub part of \b this lying or not on the same coordinates than \b this (regarding value of \b keepCoords).
+  * By default coordinates are kept. This method is close to MEDCouplingUMesh::buildPartOfMySelf except that here input
+- * cellIds is not given explicitely but by a range python like.
++ * cellIds is not given explicitly but by a range python like.
+  * 
+  * \param start
+  * \param end
+@@ -2277,7 +2285,7 @@
+  * This method expects that \b this and \b otherDimM1OnSameCoords share the same coordinates array.
+  * otherDimM1OnSameCoords->getMeshDimension() is expected to be equal to this->getMeshDimension()-1.
+  * This method searches for nodes needed to be duplicated. These nodes are nodes fetched by \b otherDimM1OnSameCoords which are not part of the boundary of \b otherDimM1OnSameCoords.
+- * If a node is in the boundary of \b this \b and in the boundary of \b otherDimM1OnSameCoords this node is considerd as needed to be duplicated.
++ * If a node is in the boundary of \b this \b and in the boundary of \b otherDimM1OnSameCoords this node is considered as needed to be duplicated.
+  * When the set of node ids \b nodeIdsToDuplicate is computed, cell ids in \b this is searched so that their connectivity includes at least 1 node in \b nodeIdsToDuplicate.
+  *
+  * \param [in] otherDimM1OnSameCoords a mesh lying on the same coords than \b this and with a mesh dimension equal to those of \b this minus 1. WARNING this input
+@@ -2422,7 +2430,7 @@
+  * This method operates a modification of the connectivity and coords in \b this.
+  * Every time that a node id in [ \b nodeIdsToDuplicateBg, \b nodeIdsToDuplicateEnd ) will append in nodal connectivity of \b this 
+  * its ids will be modified to id this->getNumberOfNodes()+std::distance(nodeIdsToDuplicateBg,std::find(nodeIdsToDuplicateBg,nodeIdsToDuplicateEnd,id)).
+- * More explicitely the renumber array in nodes is not explicitely given in old2new to avoid to build a big array of renumbering whereas typically few node ids needs to be
++ * More explicitly the renumber array in nodes is not explicitly given in old2new to avoid to build a big array of renumbering whereas typically few node ids needs to be
+  * renumbered. The node id nodeIdsToDuplicateBg[0] will have id this->getNumberOfNodes()+0, node id nodeIdsToDuplicateBg[1] will have id this->getNumberOfNodes()+1,
+  * node id nodeIdsToDuplicateBg[2] will have id this->getNumberOfNodes()+2...
+  * 
+@@ -2563,7 +2571,7 @@
+  * Coordinates are \b NOT considered here and will remain unchanged by this method. this->_coords can ever been null for the needs of this method.
+  * Every time that a node id in [ \b nodeIdsToDuplicateBg, \b nodeIdsToDuplicateEnd ) will append in nodal connectivity of \b this 
+  * its ids will be modified to id offset+std::distance(nodeIdsToDuplicateBg,std::find(nodeIdsToDuplicateBg,nodeIdsToDuplicateEnd,id)).
+- * More explicitely the renumber array in nodes is not explicitely given in old2new to avoid to build a big array of renumbering whereas typically few node ids needs to be
++ * More explicitly the renumber array in nodes is not explicitly given in old2new to avoid to build a big array of renumbering whereas typically few node ids needs to be
+  * renumbered. The node id nodeIdsToDuplicateBg[0] will have id offset+0, node id nodeIdsToDuplicateBg[1] will have id offset+1,
+  * node id nodeIdsToDuplicateBg[2] will have id offset+2...
+  * 
+@@ -2934,7 +2942,7 @@
+ }
+ /*!
+- * This method builds a newly allocated instance (with the same name than \a this) that the caller has the responsability to deal with.
++ * This method builds a newly allocated instance (with the same name than \a this) that the caller has the responsibility to deal with.
+  * This method returns an instance with all arrays allocated (connectivity, connectivity index, coordinates)
+  * but with length of these arrays set to 0. It allows to define an "empty" mesh (with nor cells nor nodes but compliant with
+  * some algos).
+@@ -2996,7 +3004,7 @@
+ /*!
+  * Returns types of cells of the specified part of \a this mesh.
+- * This method avoids computing sub-mesh explicitely to get its types.
++ * This method avoids computing sub-mesh explicitly to get its types.
+  *  \param [in] begin - an array of cell ids of interest.
+  *  \param [in] end - the end of \a begin, i.e. a pointer to its (last+1)-th element.
+  *  \return std::set<INTERP_KERNEL::NormalizedCellType> - a set of enumeration items
+@@ -3839,7 +3847,7 @@
+  * If not an exception will thrown. If this is an empty mesh with no cell an exception will be thrown too.
+  * No consideration of coordinate is done by this method.
+  * A 1D mesh is said contiguous if : a cell i with nodal connectivity (k,p) the cell i+1 the nodal connectivity should be (p,m)
+- * If not false is returned. In case that false is returned a call to MEDCoupling::MEDCouplingUMesh::mergeNodes could be usefull.
++ * If not false is returned. In case that false is returned a call to MEDCoupling::MEDCouplingUMesh::mergeNodes could be useful.
+  */
+ bool MEDCouplingUMesh::isContiguous1D() const
+ {
+@@ -5417,6 +5425,8 @@
+ DataArrayDouble *MEDCouplingUMesh::getBoundingBoxForBBTree2DQuadratic(double arcDetEps) const
+ {
+   checkFullyDefined();
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision arcPrec(arcDetEps);
++
+   int spaceDim(getSpaceDimension()),mDim(getMeshDimension()),nbOfCells(getNumberOfCells());
+   if(spaceDim!=2 || mDim!=2)
+     throw INTERP_KERNEL::Exception("MEDCouplingUMesh::getBoundingBoxForBBTree2DQuadratic : This method should be applied on mesh with mesh dimension equal to 2 and space dimension also equal to 2!");
+@@ -5428,7 +5438,6 @@
+     {
+       const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel((INTERP_KERNEL::NormalizedCellType)conn[*connI]));
+       int sz(connI[1]-connI[0]-1);
+-      INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=arcDetEps;
+       std::vector<INTERP_KERNEL::Node *> nodes(sz);
+       INTERP_KERNEL::QuadraticPolygon *pol(0);
+       for(int j=0;j<sz;j++)
+@@ -5465,6 +5474,7 @@
+   int spaceDim(getSpaceDimension()),mDim(getMeshDimension()),nbOfCells(getNumberOfCells());
+   if(spaceDim!=2 || mDim!=1)
+     throw INTERP_KERNEL::Exception("MEDCouplingUMesh::getBoundingBoxForBBTree1DQuadratic : This method should be applied on mesh with mesh dimension equal to 1 and space dimension also equal to 2!");
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision arcPrec(arcDetEps);
+   MCAuto<DataArrayDouble> ret(DataArrayDouble::New()); ret->alloc(nbOfCells,2*spaceDim);
+   double *bbox(ret->getPointer());
+   const double *coords(_coords->begin());
+@@ -5473,7 +5483,6 @@
+     {
+       const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel((INTERP_KERNEL::NormalizedCellType)conn[*connI]));
+       int sz(connI[1]-connI[0]-1);
+-      INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=arcDetEps;
+       std::vector<INTERP_KERNEL::Node *> nodes(sz);
+       INTERP_KERNEL::Edge *edge(0);
+       for(int j=0;j<sz;j++)
+@@ -5524,7 +5533,7 @@
+  * \a this is composed in cell types.
+  * The returned array is of size 3*n where n is the number of different types present in \a this. 
+  * For every k in [0,n] ret[3*k+2]==-1 because it has no sense here. 
+- * This parameter is kept only for compatibility with other methode listed above.
++ * This parameter is kept only for compatibility with other method listed above.
+  */
+ std::vector<int> MEDCouplingUMesh::getDistributionOfTypes() const
+ {
+@@ -5569,7 +5578,7 @@
+  * 
+  * If all geometric types in \a code are exactly those in \a this null pointer is returned.
+  * If it exists a geometric type in \a this \b not in \a code \b no exception is thrown 
+- * and a DataArrayInt instance is returned that the user has the responsability to deallocate.
++ * and a DataArrayInt instance is returned that the user has the responsibility to deallocate.
+  */
+ DataArrayInt *MEDCouplingUMesh::checkTypeConsistencyAndContig(const std::vector<int>& code, const std::vector<const DataArrayInt *>& idsPerType) const
+ {
+@@ -5672,7 +5681,7 @@
+  *              This vector can be empty in case of all geometric type cells are fully covered in ascending in the given input \a profile.
+  * \throw if \a profile has not exactly one component. It throws too, if \a profile contains some values not in [0,getNumberOfCells()) or if \a this is not fully defined
+  */
+-void MEDCouplingUMesh::splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType) const
++void MEDCouplingUMesh::splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType, bool smartPflKiller) const
+ {
+   if(!profile)
+     throw INTERP_KERNEL::Exception("MEDCouplingUMesh::splitProfilePerType : input profile is NULL !");
+@@ -5714,7 +5723,7 @@
+       code[3*i]=(int)types[castId];
+       code[3*i+1]=tmp3->getNumberOfTuples();
+       MCAuto<DataArrayInt> tmp4=rankInsideCast->selectByTupleId(tmp3->begin(),tmp3->begin()+tmp3->getNumberOfTuples());
+-      if(!tmp4->isIota(typeRangeVals[castId+1]-typeRangeVals[castId]))
++      if(!smartPflKiller || !tmp4->isIota(typeRangeVals[castId+1]-typeRangeVals[castId]))
+         {
+           tmp4->copyStringInfoFrom(*profile);
+           idsPerType2.push_back(tmp4);
+@@ -5880,7 +5889,7 @@
+ /*!
+  * This method returns 2 newly allocated DataArrayInt instances. The first is an array of size 'this->getNumberOfCells()' with one component,
+  * that tells for each cell the pos of its type in the array on type given in input parameter. The 2nd output parameter is an array with the same
+- * number of tuples than input type array and with one component. This 2nd output array gives type by type the number of occurence of type in 'this'.
++ * number of tuples than input type array and with one component. This 2nd output array gives type by type the number of occurrence of type in 'this'.
+  */
+ DataArrayInt *MEDCouplingUMesh::getLevArrPerCellTypes(const INTERP_KERNEL::NormalizedCellType *orderBg, const INTERP_KERNEL::NormalizedCellType *orderEnd, DataArrayInt *&nbPerType) const
+ {
+@@ -5919,7 +5928,7 @@
+ /*!
+  * This method behaves exactly as MEDCouplingUMesh::getRenumArrForConsecutiveCellTypesSpec but the order is those defined in MED file spec.
+  *
+- * \return a new object containing the old to new correspondance.
++ * \return a new object containing the old to new correspondence.
+  *
+  * \sa MEDCouplingUMesh::getRenumArrForConsecutiveCellTypesSpec, MEDCouplingUMesh::sortCellsInMEDFileFrmt.
+  */
+@@ -5929,7 +5938,7 @@
+ }
+ /*!
+- * This method is similar to method MEDCouplingUMesh::rearrange2ConsecutiveCellTypes except that the type order is specfied by [ \a orderBg , \a orderEnd ) (as MEDCouplingUMesh::checkConsecutiveCellTypesAndOrder method) and that this method is \b const and performs \b NO permutation in \a this.
++ * This method is similar to method MEDCouplingUMesh::rearrange2ConsecutiveCellTypes except that the type order is specified by [ \a orderBg , \a orderEnd ) (as MEDCouplingUMesh::checkConsecutiveCellTypesAndOrder method) and that this method is \b const and performs \b NO permutation in \a this.
+  * This method returns an array of size getNumberOfCells() that gives a renumber array old2New that can be used as input of MEDCouplingMesh::renumberCells.
+  * The mesh after this call to MEDCouplingMesh::renumberCells will pass the test of MEDCouplingUMesh::checkConsecutiveCellTypesAndOrder with the same inputs.
+  * The returned array minimizes the permutations that is to say the order of cells inside same geometric type remains the same.
+@@ -5948,7 +5957,7 @@
+  * This method tries to minimizes the number of needed permutations. So, this method behaves not exactly as
+  * MEDCouplingUMesh::sortCellsInMEDFileFrmt.
+  *
+- * \return the array giving the correspondance old to new.
++ * \return the array giving the correspondence old to new.
+  */
+ DataArrayInt *MEDCouplingUMesh::rearrange2ConsecutiveCellTypes()
+ {
+@@ -6121,7 +6130,7 @@
+ /*!
+  * This method takes in input a vector of MEDCouplingUMesh instances lying on the same coordinates with same mesh dimensions.
+  * Each mesh in \b ms must be sorted by type with the same order (typically using MEDCouplingUMesh::sortCellsInMEDFileFrmt).
+- * This method is particulary useful for MED file interaction. It allows to aggregate several meshes and keeping the type sorting
++ * This method is particularly useful for MED file interaction. It allows to aggregate several meshes and keeping the type sorting
+  * and the track of the permutation by chunk of same geotype cells to retrieve it. The traditional formats old2new and new2old
+  * are not used here to avoid the build of big permutation array.
+  *
+@@ -6784,7 +6793,7 @@
+  * Makes all given meshes share the nodal connectivity array. The common connectivity
+  * array is created by concatenating the connectivity arrays of all given meshes. All
+  * the given meshes must be of the same space dimension but dimension of cells **can
+- * differ**. This method is particulary useful in MEDLoader context to build a \ref
++ * differ**. This method is particularly useful in MEDLoader context to build a \ref
+  * MEDCoupling::MEDFileUMesh "MEDFileUMesh" instance that expects that underlying
+  * MEDCouplingUMesh'es of different dimension share the same nodal connectivity array.
+  *  \param [in,out] meshes - a vector of meshes to update.
+@@ -6838,7 +6847,7 @@
+ /*!
+  * Merges nodes coincident with a given precision within all given meshes that share
+  * the nodal connectivity array. The given meshes **can be of different** mesh
+- * dimension. This method is particulary useful in MEDLoader context to build a \ref
++ * dimension. This method is particularly useful in MEDLoader context to build a \ref
+  * MEDCoupling::MEDFileUMesh "MEDFileUMesh" instance that expects that underlying
+  * MEDCouplingUMesh'es of different dimension share the same nodal connectivity array. 
+  *  \param [in,out] meshes - a vector of meshes to update.
+@@ -6889,7 +6898,7 @@
+ /*!
+- * This static operates only for coords in 3D. The polygon is specfied by its connectivity nodes in [ \a begin , \a end ).
++ * This static operates only for coords in 3D. The polygon is specified by its connectivity nodes in [ \a begin , \a end ).
+  */
+ bool MEDCouplingUMesh::IsPolygonWellOriented(bool isQuadratic, const double *vec, const int *begin, const int *end, const double *coords)
+ {
+@@ -6933,7 +6942,7 @@
+ }
+ /*!
+- * The polyhedron is specfied by its connectivity nodes in [ \a begin , \a end ).
++ * The polyhedron is specified by its connectivity nodes in [ \a begin , \a end ).
+  */
+ bool MEDCouplingUMesh::IsPolyhedronWellOriented(const int *begin, const int *end, const double *coords)
+ {
+@@ -7019,48 +7028,62 @@
+  * \param [in] end end of nodal connectivity of a single polyhedron cell (excluded)
+  * \param [out] res the result is put at the end of the vector without any alteration of the data.
+  */
+-void MEDCouplingUMesh::SimplifyPolyhedronCell(double eps, const DataArrayDouble *coords, const int *begin, const int *end, DataArrayInt *res)
++void MEDCouplingUMesh::SimplifyPolyhedronCell(double eps, const DataArrayDouble *coords, int index, DataArrayInt *res, MEDCouplingUMesh *faces,
++                                              DataArrayInt *E_Fi, DataArrayInt *E_F, DataArrayInt *F_Ei, DataArrayInt *F_E)
+ {
+-  int nbFaces=std::count(begin+1,end,-1)+1;
++  int nbFaces = E_Fi->getIJ(index + 1, 0) - E_Fi->getIJ(index, 0);
+   MCAuto<DataArrayDouble> v=DataArrayDouble::New(); v->alloc(nbFaces,3);
+   double *vPtr=v->getPointer();
+-  MCAuto<DataArrayDouble> p=DataArrayDouble::New(); p->alloc(nbFaces,1);
++  MCAuto<DataArrayDouble> p=DataArrayDouble::New(); p->alloc(nbFaces,2);
+   double *pPtr=p->getPointer();
+-  const int *stFaceConn=begin+1;
++  int *e_fi = E_Fi->getPointer(), *e_f = E_F->getPointer(), *f_ei = F_Ei->getPointer(), *f_e = F_E->getPointer();
++  const int *f_idx = faces->getNodalConnectivityIndex()->getPointer(), *f_cnn = faces->getNodalConnectivity()->getPointer();
+   for(int i=0;i<nbFaces;i++,vPtr+=3,pPtr++)
+     {
+-      const int *endFaceConn=std::find(stFaceConn,end,-1);
+-      ComputeVecAndPtOfFace(eps,coords->begin(),stFaceConn,endFaceConn,vPtr,pPtr);
+-      stFaceConn=endFaceConn+1;
++      int face = e_f[e_fi[index] + i];
++      ComputeVecAndPtOfFace(eps, coords->begin(), f_cnn + f_idx[face] + 1, f_cnn + f_idx[face + 1], vPtr, pPtr);
++      // to differentiate faces going to different cells:
++      pPtr++, *pPtr = 0;
++      for (int j = f_ei[face]; j < f_ei[face + 1]; j++)
++        *pPtr += f_e[j];
+     }
+   pPtr=p->getPointer(); vPtr=v->getPointer();
+   DataArrayInt *comm1=0,*commI1=0;
+   v->findCommonTuples(eps,-1,comm1,commI1);
++  for (int i = 0; i < nbFaces; i++)
++    if (comm1->findIdFirstEqual(i) < 0)
++      {
++        comm1->pushBackSilent(i);
++        commI1->pushBackSilent(comm1->getNumberOfTuples());
++      }
+   MCAuto<DataArrayInt> comm1Auto(comm1),commI1Auto(commI1);
+   const int *comm1Ptr=comm1->begin();
+   const int *commI1Ptr=commI1->begin();
+   int nbOfGrps1=commI1Auto->getNumberOfTuples()-1;
+   res->pushBackSilent((int)INTERP_KERNEL::NORM_POLYHED);
+   //
+-  MCAuto<MEDCouplingUMesh> mm=MEDCouplingUMesh::New("",3);
+-  mm->setCoords(const_cast<DataArrayDouble *>(coords)); mm->allocateCells(1); mm->insertNextCell(INTERP_KERNEL::NORM_POLYHED,(int)std::distance(begin+1,end),begin+1);
+-  mm->finishInsertingCells();
+-  //
+   for(int i=0;i<nbOfGrps1;i++)
+     {
+       int vecId=comm1Ptr[commI1Ptr[i]];
+       MCAuto<DataArrayDouble> tmpgrp2=p->selectByTupleId(comm1Ptr+commI1Ptr[i],comm1Ptr+commI1Ptr[i+1]);
+       DataArrayInt *comm2=0,*commI2=0;
+       tmpgrp2->findCommonTuples(eps,-1,comm2,commI2);
++      for (int j = 0; j < commI1Ptr[i+1] - commI1Ptr[i]; j++)
++        if (comm2->findIdFirstEqual(j) < 0)
++          {
++            comm2->pushBackSilent(j);
++            commI2->pushBackSilent(comm2->getNumberOfTuples());
++          }
+       MCAuto<DataArrayInt> comm2Auto(comm2),commI2Auto(commI2);
+       const int *comm2Ptr=comm2->begin();
+       const int *commI2Ptr=commI2->begin();
+       int nbOfGrps2=commI2Auto->getNumberOfTuples()-1;
+       for(int j=0;j<nbOfGrps2;j++)
+         {
+-          if(commI2Ptr[j+1]-commI2Ptr[j]<=1)
++          if(commI2Ptr[j+1] == commI2Ptr[j] + 1)
+             {
+-              res->insertAtTheEnd(begin,end);
++              int face = e_f[e_fi[index] + comm1Ptr[commI1Ptr[i] + comm2Ptr[commI2Ptr[j]]]]; //hmmm
++              res->insertAtTheEnd(f_cnn + f_idx[face] + 1, f_cnn + f_idx[face + 1]);
+               res->pushBackSilent(-1);
+             }
+           else
+@@ -7068,13 +7091,12 @@
+               int pointId=comm1Ptr[commI1Ptr[i]+comm2Ptr[commI2Ptr[j]]];
+               MCAuto<DataArrayInt> ids2=comm2->selectByTupleIdSafeSlice(commI2Ptr[j],commI2Ptr[j+1],1);
+               ids2->transformWithIndArr(comm1Ptr+commI1Ptr[i],comm1Ptr+commI1Ptr[i+1]);
+-              DataArrayInt *tmp0=DataArrayInt::New(),*tmp1=DataArrayInt::New(),*tmp2=DataArrayInt::New(),*tmp3=DataArrayInt::New();
+-              MCAuto<MEDCouplingUMesh> mm2=mm->buildDescendingConnectivity(tmp0,tmp1,tmp2,tmp3); tmp0->decrRef(); tmp1->decrRef(); tmp2->decrRef(); tmp3->decrRef();
+-              MCAuto<MEDCouplingUMesh> mm3=static_cast<MEDCouplingUMesh *>(mm2->buildPartOfMySelf(ids2->begin(),ids2->end(),true));
++              ids2->transformWithIndArr(e_f + e_fi[index], e_f + e_fi[index + 1]);
++              MCAuto<MEDCouplingUMesh> mm3=static_cast<MEDCouplingUMesh *>(faces->buildPartOfMySelf(ids2->begin(),ids2->end(),true));
+               MCAuto<DataArrayInt> idsNodeTmp=mm3->zipCoordsTraducer();
+               MCAuto<DataArrayInt> idsNode=idsNodeTmp->invertArrayO2N2N2O(mm3->getNumberOfNodes());
+               const int *idsNodePtr=idsNode->begin();
+-              double center[3]; center[0]=pPtr[pointId]*vPtr[3*vecId]; center[1]=pPtr[pointId]*vPtr[3*vecId+1]; center[2]=pPtr[pointId]*vPtr[3*vecId+2];
++              double center[3]; center[0]=pPtr[2*pointId]*vPtr[3*vecId]; center[1]=pPtr[2*pointId]*vPtr[3*vecId+1]; center[2]=pPtr[2*pointId]*vPtr[3*vecId+2];
+               double vec[3]; vec[0]=vPtr[3*vecId+1]; vec[1]=-vPtr[3*vecId]; vec[2]=0.;
+               double norm=vec[0]*vec[0]+vec[1]*vec[1]+vec[2]*vec[2];
+               if(std::abs(norm)>eps)
+@@ -7884,7 +7906,7 @@
+  * 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 explicitely a result output arrays.
++ * 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)
+@@ -7950,7 +7972,7 @@
+ /*!
+  * 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 assignement do not modify the index 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)
+@@ -8047,7 +8069,7 @@
+  * 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 explicitely a result output arrays.
++ * 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)
+@@ -8112,7 +8134,7 @@
+ /*!
+  * 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 assignement do not modify the index 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)
+@@ -8282,7 +8304,7 @@
+  *         decrRef() as it is no more needed.
+  * \return MEDCoupling1SGTUMesh * - the mesh containing only INTERP_KERNEL::NORM_TETRA4 cells.
+  *
+- * \warning This method operates on each cells in this independantly ! So it can leads to non conform mesh in returned value ! If you expect to have a conform mesh in output
++ * \warning This method operates on each cells in this independently ! So it can leads to non conform mesh in returned value ! If you expect to have a conform mesh in output
+  * the policy PLANAR_FACE_6 should be used on a mesh sorted with MEDCoupling1SGTUMesh::sortHexa8EachOther.
+  * 
+  * \throw If \a this is not a 3D mesh (spaceDim==3 and meshDim==3).
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingUMesh.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingUMesh.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingUMesh.hxx       2018-04-19 17:04:36.722222424 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingUMesh.hxx       2018-04-19 17:25:18.041803366 +0200
+@@ -196,6 +196,7 @@
+     MEDCOUPLING_EXPORT void orientCorrectlyPolyhedrons();
+     MEDCOUPLING_EXPORT void invertOrientationOfAllCells();
+     MEDCOUPLING_EXPORT void getFastAveragePlaneOfThis(double *vec, double *pos) const;
++    MEDCOUPLING_EXPORT void attractSeg3MidPtsAroundNodes(double ratio, const int *nodeIdsBg, const int *nodeIdsEnd);
+     //Mesh quality
+     MEDCOUPLING_EXPORT MEDCouplingFieldDouble *getEdgeRatioField() const;
+     MEDCOUPLING_EXPORT MEDCouplingFieldDouble *getAspectRatioField() const;
+@@ -205,7 +206,7 @@
+     //utilities for MED File RW
+     MEDCOUPLING_EXPORT std::vector<int> getDistributionOfTypes() const;
+     MEDCOUPLING_EXPORT DataArrayInt *checkTypeConsistencyAndContig(const std::vector<int>& code, const std::vector<const DataArrayInt *>& idsPerType) const;
+-    MEDCOUPLING_EXPORT void splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType) const;
++    MEDCOUPLING_EXPORT void splitProfilePerType(const DataArrayInt *profile, std::vector<int>& code, std::vector<DataArrayInt *>& idsInPflPerType, std::vector<DataArrayInt *>& idsPerType, bool smartPflKiller=true) const;
+     MEDCOUPLING_EXPORT MEDCouplingUMesh *emulateMEDMEMBDC(const MEDCouplingUMesh *nM1LevMesh, DataArrayInt *desc, DataArrayInt *descIndx, DataArrayInt *&revDesc, DataArrayInt *&revDescIndx, DataArrayInt *& nM1LevMeshIds, DataArrayInt *&meshnM1Old2New) const;
+     MEDCOUPLING_EXPORT DataArrayInt *sortCellsInMEDFileFrmt();
+     MEDCOUPLING_EXPORT bool checkConsecutiveCellTypes() const;
+@@ -251,7 +252,8 @@
+     MEDCOUPLING_EXPORT static void CorrectExtrudedStaticCell(int *begin, int *end);
+     MEDCOUPLING_EXPORT static bool IsTetra4WellOriented(const int *begin, const int *end, const double *coords);
+     MEDCOUPLING_EXPORT static bool IsPyra5WellOriented(const int *begin, const int *end, const double *coords);
+-    MEDCOUPLING_EXPORT static void SimplifyPolyhedronCell(double eps, const DataArrayDouble *coords, const int *begin, const int *end, DataArrayInt *res);
++    MEDCOUPLING_EXPORT static void SimplifyPolyhedronCell(double eps, const DataArrayDouble *coords, int index, DataArrayInt *res, MEDCouplingUMesh *faces,
++                                                          DataArrayInt *E_Fi, DataArrayInt *E_F, DataArrayInt *F_Ei, DataArrayInt *F_E);
+     MEDCOUPLING_EXPORT static void ComputeVecAndPtOfFace(double eps, const double *coords, const int *begin, const int *end, double *v, double *p);
+     MEDCOUPLING_EXPORT static void TryToCorrectPolyhedronOrientation(int *begin, int *end, const double *coords);
+     MEDCOUPLING_EXPORT static MEDCouplingUMesh *Intersect2DMeshes(const MEDCouplingUMesh *m1, const MEDCouplingUMesh *m2, double eps, DataArrayInt *&cellNb1, DataArrayInt *&cellNb2);
+@@ -355,9 +357,10 @@
+                                                 std::vector<int> & pointIds, std::vector<int> & hitSegs);
+     static void ReplaceEdgeInFace(const int * sIdxConn, const int * sIdxConnE, int startNode, int endNode,
+                                       const std::vector<int>& insidePoints, std::vector<int>& modifiedFace);
++    void attractSeg3MidPtsAroundNodesUnderground(double ratio, const int *nodeIdsBg, const int *nodeIdsEnd);
+   public:
+     MEDCOUPLING_EXPORT static DataArrayInt *ComputeRangesFromTypeDistribution(const std::vector<int>& code);
+-    MEDCOUPLING_EXPORT static const int N_MEDMEM_ORDER=24;
++    MEDCOUPLING_EXPORT static const int N_MEDMEM_ORDER=25;
+     MEDCOUPLING_EXPORT static const INTERP_KERNEL::NormalizedCellType MEDMEM_ORDER[N_MEDMEM_ORDER];
+     MEDCOUPLING_EXPORT static const int MEDCOUPLING2VTKTYPETRADUCER[INTERP_KERNEL::NORM_MAXTYPE+1];
+     /// @endcond
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingUMesh_internal.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingUMesh_internal.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingUMesh_internal.cxx      2018-04-19 17:04:36.722222424 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingUMesh_internal.cxx      2018-04-19 17:25:18.122804967 +0200
+@@ -348,7 +348,7 @@
+   double epsa=fabs(eps);
+   if(epsa<std::numeric_limits<double>::min())
+     throw INTERP_KERNEL::Exception("MEDCouplingUMesh::tessellate2DCurveInternal : epsilon is null ! Please specify a higher epsilon. If too tiny it can lead to a huge amount of nodes and memory !");
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=1.e-10;
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision arcPrec(1.e-10);  // RAII
+   int nbCells=getNumberOfCells();
+   int nbNodes=getNumberOfNodes();
+   const int *conn=_nodal_connec->begin();
+@@ -414,7 +414,7 @@
+ /*!
+  * This private method is used to subdivide edges of a mesh with meshdim==2. If \a this has no a meshdim equal to 2 an exception will be thrown.
+- * This method completly ignore coordinates.
++ * This method completely ignores coordinates.
+  * \param nodeSubdived is the nodal connectivity of subdivision of edges
+  * \param nodeIndxSubdived is the nodal connectivity index of subdivision of edges
+  * \param desc is descending connectivity in format specified in MEDCouplingUMesh::buildDescendingConnectivity2
+@@ -1585,7 +1585,7 @@
+  * This method is part of the Slice3D algorithm. It is the first step of assembly process, ones coordinates have been computed (by MEDCouplingUMesh::split3DCurveWithPlane method).
+  * This method allows to compute given the status of 3D curve cells and the descending connectivity 3DSurf->3DCurve to deduce the intersection of each 3D surf cells
+  * with a plane. The result will be put in 'cut3DSuf' out parameter.
+- * \param [in] cut3DCurve  input paramter that gives for each 3DCurve cell if it owns fully to the plane or partially.
++ * \param [in] cut3DCurve  input parameter that gives for each 3DCurve cell if it owns fully to the plane or partially.
+  * \param [out] nodesOnPlane, returns all the nodes that are on the plane.
+  * \param [in] nodal3DSurf is the nodal connectivity of 3D surf mesh.
+  * \param [in] nodalIndx3DSurf is the nodal connectivity index of 3D surf mesh.
+@@ -1663,7 +1663,7 @@
+  * This method is part of the Slice3D algorithm. It is the second step of assembly process, ones coordinates have been computed (by MEDCouplingUMesh::split3DCurveWithPlane method).
+  * This method allows to compute given the result of 3D surf cells with plane and the descending connectivity 3D->3DSurf to deduce the intersection of each 3D cells
+  * with a plane. The result will be put in 'nodalRes' 'nodalResIndx' and 'cellIds' out parameters.
+- * \param cut3DSurf  input paramter that gives for each 3DSurf its intersection with plane (result of MEDCouplingUMesh::AssemblyForSplitFrom3DCurve).
++ * \param cut3DSurf  input parameter that gives for each 3DSurf its intersection with plane (result of MEDCouplingUMesh::AssemblyForSplitFrom3DCurve).
+  * \param desc is the descending connectivity 3D->3DSurf
+  * \param descIndx is the descending connectivity index 3D->3DSurf
+  */
+@@ -1754,3 +1754,88 @@
+           types.insert((INTERP_KERNEL::NormalizedCellType)conn[*pt]);
+     }
+ }
++
++/*!
++ * This method expects that \a this a quadratic 1D, 2D or 3D mesh.
++ * This method will 'attract' middle points of seg3 (deduced from this by explosion if needed) of cells connected to nodes specified in [\a nodeIdsBg, \a nodeIdsEnd )
++ * For those selected mid points, their coordinates will be modified by applying a dilation between node in input [\a nodeIdsBg, \a nodeIdsEnd ) and the corresponding mid points using \a ratio input value.
++ * So this method is non const because coordinates are modified.
++ * If there is a couple of 2 points in [\a nodeIdsBg, \a nodeIdsEnd ) that are boundaries of a seg3, the corresponding mid point will remain untouched.
++ *
++ * \param [in] ratio - ratio of dilation
++ * \param [in] nodeIdsBg - start (included) of input node list
++ * \param [in] nodeIdsEnd - end (excluded) of input node list
++ * \throw if there is a point in [\a nodeIdsBg, \a nodeIdsEnd ) that is a mid point of a seg3
++ * \warning in case of throw the coordinates may be partially modified before the exception arises
++ */
++void MEDCouplingUMesh::attractSeg3MidPtsAroundNodes(double ratio, const int *nodeIdsBg, const int *nodeIdsEnd)
++{
++  checkFullyDefined();
++  int mdim(getMeshDimension());
++  if(mdim==2 || mdim==3)
++    {
++      MCAuto<MEDCouplingUMesh> edges;
++      {
++        MCAuto<DataArrayInt> a,b,c,d;
++        edges=this->explodeIntoEdges(a,b,c,d);
++      }
++      return edges->attractSeg3MidPtsAroundNodesUnderground(ratio,nodeIdsBg,nodeIdsEnd);
++    }
++  if(mdim==1)
++    return attractSeg3MidPtsAroundNodesUnderground(ratio,nodeIdsBg,nodeIdsEnd);
++  throw INTERP_KERNEL::Exception("MEDCouplingUMesh::attractSeg3MidPtsAroundNodes : not managed dimension ! Should be in [1,2,3] !");
++}
++
++/*!
++ * \a this is expected to have meshdim==1.
++ */
++void MEDCouplingUMesh::attractSeg3MidPtsAroundNodesUnderground(double ratio, const int *nodeIdsBg, const int *nodeIdsEnd)
++{
++#if __cplusplus >= 201103L
++  int spaceDim(getSpaceDimension());
++  double *coords(getCoords()->getPointer());
++  auto nbNodes(getNumberOfNodes());
++  auto nbCells(getNumberOfCells());
++  std::vector<bool> fastFinder(nbNodes,false);
++  for(auto work=nodeIdsBg;work!=nodeIdsEnd;work++)
++    if(*work>=0 && *work<nbNodes)
++      fastFinder[*work]=true;
++  MCAuto<DataArrayInt> cellsIds(getCellIdsLyingOnNodes(nodeIdsBg,nodeIdsEnd,false));
++  const int *nc(_nodal_connec->begin()),*nci(_nodal_connec_index->begin());
++  for(auto cellId=0;cellId<nbCells;cellId++,nci++)
++    {
++      const int *isSelected(std::find_if(nc+nci[0]+1,nc+nci[1],[&fastFinder](int v) { return fastFinder[v]; }));
++      if(isSelected!=nc+nci[1])
++        {
++          if((INTERP_KERNEL::NormalizedCellType)nc[nci[0]]==INTERP_KERNEL::NORM_SEG3 && nci[1]-nci[0]==4)
++            {
++              bool aa(fastFinder[nc[*nci+1]]),bb(fastFinder[nc[*nci+2]]),cc(fastFinder[nc[*nci+3]]);
++              if(!cc)
++                {
++                  if(aa^bb)
++                    {
++                      auto ptToMove(nc[*nci+3]);
++                      auto attractor(aa?nc[*nci+1]:nc[*nci+2]),endPt(aa?nc[*nci+2]:nc[*nci+1]);
++                      std::transform(coords+spaceDim*attractor,coords+spaceDim*(attractor+1),coords+spaceDim*endPt,
++                                     coords+spaceDim*ptToMove,[ratio](const double& stPt, const double& endPt) { return stPt+ratio*(endPt-stPt); });
++                    }
++                  else
++                    continue;//both 2 boundary nodes of current seg3 are un nodeIds input list -> skip it.
++                }
++              else
++                {
++                  std::ostringstream oss; oss << "MEDCouplingUMesh::attractSeg3MidPtsAroundNodes : cell #" << cellId << " has a mid point " << nc[*nci+3] << " ! This node is in input list !";
++                  throw INTERP_KERNEL::Exception(oss.str());
++                }
++            }
++          else
++            {
++              std::ostringstream oss; oss << "MEDCouplingUMesh::attractSeg3MidPtsAroundNodes : cell #" << cellId << " sharing one of the input nodes list its geo type is NOT SEG3 !";
++              throw INTERP_KERNEL::Exception(oss.str());
++            }
++        }
++    }
++#else
++  throw INTERP_KERNEL::Exception("MEDCouplingUMesh::attractSeg3MidPtsAroundNodes : for your information new compiler have arrived since Fortran66 compiler :)");
++#endif 
++}
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingUMesh_internal.hxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingUMesh_internal.hxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingUMesh_internal.hxx      2018-04-19 17:04:36.722222424 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingUMesh_internal.hxx      2018-04-19 17:25:18.111804749 +0200
+@@ -102,6 +102,10 @@
+ void MEDCouplingUMesh::getCellsContainingPointsAlg(const double *coords, const double *pos, int nbOfPoints,
+                                                    double eps, MCAuto<DataArrayInt>& elts, MCAuto<DataArrayInt>& eltsIndex) const
+ {
++  // Override precision for this method only:
++  INTERP_KERNEL::QuadraticPlanarPrecision prec(eps);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision arcPrec(eps);
++
+   elts=DataArrayInt::New(); eltsIndex=DataArrayInt::New(); eltsIndex->alloc(nbOfPoints+1,1); eltsIndex->setIJ(0,0,0); elts->alloc(0,1);
+   int *eltsIndexPtr(eltsIndex->getPointer());
+   MCAuto<DataArrayDouble> bboxArr(getBoundingBoxForBBTree(eps));
+@@ -132,8 +136,6 @@
+             {
+               if(SPACEDIM!=2)
+                 throw INTERP_KERNEL::Exception("MEDCouplingUMesh::getCellsContainingPointsAlg : not implemented yet for POLYGON and QPOLYGON in spaceDim 3 !");
+-              INTERP_KERNEL::QUADRATIC_PLANAR::_precision=eps;
+-              INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=eps;
+               std::vector<INTERP_KERNEL::Node *> nodes(sz);
+               INTERP_KERNEL::QuadraticPolygon *pol(0);
+               for(int j=0;j<sz;j++)
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/MEDCouplingUMesh_intersection.cxx MEDCOUPLING_new/src/MEDCoupling/MEDCouplingUMesh_intersection.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/MEDCouplingUMesh_intersection.cxx  2018-04-19 17:04:36.723222444 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/MEDCouplingUMesh_intersection.cxx  2018-04-19 17:25:18.034803227 +0200
+@@ -282,7 +282,7 @@
+   }
+   /**
+-   * Construct a mapping between set of Nodes and the standart MEDCoupling connectivity format (c, cI).
++   * Construct a mapping between set of Nodes and the standard MEDCoupling connectivity format (c, cI).
+    */
+   void MEDCouplingUMeshBuildQPFromMesh3(const double *coo1, int offset1, const double *coo2, int offset2, const std::vector<double>& addCoo,
+                                         const int *desc1Bg, const int *desc1End, const std::vector<std::vector<int> >& intesctEdges1,
+@@ -337,7 +337,7 @@
+       // This initializes posBaseElt.
+       if(nbOfTurn==0)
+         {
+-          for(unsigned i=1;i<nbs && nbOfHit<maxNbOfHit;i++) // 2nd condition is to avoid ending with a cell wih one single edge
++          for(unsigned i=1;i<nbs && nbOfHit<maxNbOfHit;i++) // 2nd condition is to avoid ending with a cell with one single edge
+             {
+               cm.fillSonCellNodalConnectivity2(nbs-i,connBg+1,sz,tmpConn,typeOfSon);
+               INTERP_KERNEL::Edge *eCand(MEDCouplingUMeshBuildQPFromEdge2(typeOfSon,tmpConn,coords,m));
+@@ -357,7 +357,7 @@
+         }
+       // Now move forward:
+       const unsigned fwdStart = (nbOfTurn == 0 ? 0 : posBaseElt);  // the first element to be inspected going forward
+-      for(unsigned j=fwdStart+1;j<nbs && nbOfHit<maxNbOfHit;j++)  // 2nd condition is to avoid ending with a cell wih one single edge
++      for(unsigned j=fwdStart+1;j<nbs && nbOfHit<maxNbOfHit;j++)  // 2nd condition is to avoid ending with a cell with one single edge
+         {
+           cm.fillSonCellNodalConnectivity2((int)j,connBg+1,sz,tmpConn,typeOfSon); // get edge #j's connectivity
+           INTERP_KERNEL::Edge *eCand(MEDCouplingUMeshBuildQPFromEdge2(typeOfSon,tmpConn,coords,m));
+@@ -375,9 +375,9 @@
+               break;
+         }
+       //push [posBaseElt,posEndElt) in newConnOfCell using e
+-      // The if clauses below are (volontary) not mutually exclusive: on a quad cell with 2 edges, the end of the connectivity is also its begining!
++      // The if clauses below are (voluntary) not mutually exclusive: on a quad cell with 2 edges, the end of the connectivity is also its beginning!
+       if(nbOfTurn==0)
+-        // at the begining of the connectivity (insert type)
++        // at the beginning of the connectivity (insert type)
+         EnterTheResultOf2DCellFirst(e,posBaseElt,posEndElt,(int)nbs,cm.isQuadratic(),coords,connBg+1,offset,newConnOfCell,appendedCoords,middles);
+       else if((nbOfHit+nbOfTurn) != (nbs-1))
+         // in the middle
+@@ -430,7 +430,7 @@
+  * (Only present for its coords in case of 'subDiv' shares some nodes of 'm1')
+  * \param m2 is expected to be a mesh of meshDimension equal to 1 and spaceDim equal to 2. No check of that is performed by this method.
+  * \param addCoo input parameter with additional nodes linked to intersection of the 2 meshes.
+- * \param[out] intersectEdge the same content as subDiv, but correclty oriented.
++ * \param[out] intersectEdge the same content as subDiv, but correctly oriented.
+  */
+ void MEDCouplingUMesh::BuildIntersectEdges(const MEDCouplingUMesh *m1, const MEDCouplingUMesh *m2,
+                                            const std::vector<double>& addCoo,
+@@ -1170,11 +1170,11 @@
+                                          std::vector< std::vector<int> >& intersectEdge1, std::vector< std::vector<int> >& colinear2, std::vector< std::vector<int> >& subDiv2, std::vector<double>& addCoo, std::map<int,int>& mergedNodes)
+ {
+   static const int SPACEDIM=2;
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_precision=eps;
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=eps;
++  INTERP_KERNEL::QuadraticPlanarPrecision prec(eps);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision arcPrec(eps);
+   const int *c1(m1Desc->getNodalConnectivity()->begin()),*ci1(m1Desc->getNodalConnectivityIndex()->begin());
+   // Build BB tree of all edges in the tool mesh (second mesh)
+-  MCAuto<DataArrayDouble> bbox1Arr(m1Desc->getBoundingBoxForBBTree()),bbox2Arr(m2Desc->getBoundingBoxForBBTree());
++  MCAuto<DataArrayDouble> bbox1Arr(m1Desc->getBoundingBoxForBBTree(eps)),bbox2Arr(m2Desc->getBoundingBoxForBBTree(eps));
+   const double *bbox1(bbox1Arr->begin()),*bbox2(bbox2Arr->begin());
+   int nDescCell1(m1Desc->getNumberOfCells()),nDescCell2(m2Desc->getNumberOfCells());
+   intersectEdge1.resize(nDescCell1);
+@@ -1206,7 +1206,7 @@
+           for(std::size_t iii=0;iii<szz;iii++,itt++)
+             { (*itt)->incrRef(); nodesSafe[iii]=*itt; }
+           // end of protection
+-          // Performs egde cutting:
++          // Performs edge cutting:
+           pol1->splitAbs(*pol2,map1,map2,offset1,offset2,candidates2,intersectEdge1[i],i,colinear2,subDiv2,addCoo,mergedNodes);
+           delete pol2;
+           delete pol1;
+@@ -1252,7 +1252,7 @@
+  * (newly created) nodes corresponding to the edge intersections.
+  * Output params:
+  * @param[out] cr, crI connectivity of the resulting mesh
+- * @param[out] cNb1, cNb2 correspondance arrays giving for the merged mesh the initial cells IDs in m1 / m2
++ * @param[out] cNb1, cNb2 correspondence arrays giving for the merged mesh the initial cells IDs in m1 / m2
+  * TODO: describe input parameters
+  */
+ void MEDCouplingUMesh::BuildIntersecting2DCellsFromEdges(double eps, const MEDCouplingUMesh *m1, const int *desc1, const int *descIndx1,
+@@ -1269,7 +1269,7 @@
+   const int *conn2(m2->getNodalConnectivity()->begin()),*connI2(m2->getNodalConnectivityIndex()->begin());
+   int offset2(offset1+m2->getNumberOfNodes());
+   int offset3(offset2+((int)addCoords.size())/2);
+-  MCAuto<DataArrayDouble> bbox1Arr(m1->getBoundingBoxForBBTree()),bbox2Arr(m2->getBoundingBoxForBBTree());
++  MCAuto<DataArrayDouble> bbox1Arr(m1->getBoundingBoxForBBTree(eps)),bbox2Arr(m2->getBoundingBoxForBBTree(eps));
+   const double *bbox1(bbox1Arr->begin()),*bbox2(bbox2Arr->begin());
+   // Here a BBTree on 2D-cells, not on segments:
+   BBTree<SPACEDIM,int> myTree(bbox2,0,0,m2->getNumberOfCells(),eps);
+@@ -1431,7 +1431,7 @@
+ }
+ /*!
+- * It is the linear part of MEDCouplingUMesh::split2DCells. Here no additionnal nodes will be added in \b this. So coordinates pointer remain unchanged (is not even touch).
++ * It is the linear part of MEDCouplingUMesh::split2DCells. Here no additional nodes will be added in \b this. So coordinates pointer remain unchanged (is not even touch).
+  *
+  * \sa MEDCouplingUMesh::split2DCells
+  */
+@@ -1467,7 +1467,7 @@
+ /*!
+- * It is the quadratic part of MEDCouplingUMesh::split2DCells. Here some additionnal nodes can be added at the end of coordinates array object.
++ * It is the quadratic part of MEDCouplingUMesh::split2DCells. Here some additional nodes can be added at the end of coordinates array object.
+  *
+  * \return  int - the number of new nodes created.
+  * \sa MEDCouplingUMesh::split2DCells
+@@ -1567,6 +1567,8 @@
+     throw INTERP_KERNEL::Exception("MEDCouplingUMesh::Intersect2DMeshes : input meshes must be not NULL !");
+   m1->checkFullyDefined();
+   m2->checkFullyDefined();
++  INTERP_KERNEL::QuadraticPlanarPrecision prec(eps);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision arcPrec(eps);
+   if(m1->getMeshDimension()!=2 || m1->getSpaceDimension()!=2 || m2->getMeshDimension()!=2 || m2->getSpaceDimension()!=2)
+     throw INTERP_KERNEL::Exception("MEDCouplingUMesh::Intersect2DMeshes works on umeshes m1 AND m2  with meshdim equal to 2 and spaceDim equal to 2 too!");
+@@ -1617,7 +1619,7 @@
+ /*!
+  * Partitions the first given 2D mesh using the second given 1D mesh as a tool.
+  * Thus the final result contains the aggregation of nodes of \a mesh2D, then nodes of \a mesh1D, then new nodes that are the result of the intersection
+- * and finaly, in case of quadratic polygon the centers of edges new nodes.
++ * and finally, in case of quadratic polygon the centers of edges new nodes.
+  * The meshes should be in 2D space. In addition, returns two arrays mapping cells of the resulting mesh to cells of the input.
+  *
+  * \param [in] mesh2D - the 2D mesh (spacedim=meshdim=2) to be intersected using \a mesh1D tool. The mesh must be so that each point in the space covered by \a mesh2D
+@@ -1647,8 +1649,8 @@
+   // Step 1: compute all edge intersections (new nodes)
+   std::vector< std::vector<int> > intersectEdge1, colinear2, subDiv2;
+   std::vector<double> addCoo,addCoordsQuadratic;  // coordinates of newly created nodes
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_precision=eps;
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=eps;
++  INTERP_KERNEL::QuadraticPlanarPrecision prec(eps);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision arcPrec(eps);
+   //
+   // Build desc connectivity
+   DataArrayInt *desc1(DataArrayInt::New()),*descIndx1(DataArrayInt::New()),*revDesc1(DataArrayInt::New()),*revDescIndx1(DataArrayInt::New());
+@@ -1702,7 +1704,9 @@
+   MCAuto<DataArrayDouble> baryRet1(ret1NonCol->computeCellCenterOfMass());
+   MCAuto<DataArrayInt> elts,eltsIndex;
+   mesh2D->getCellsContainingPoints(baryRet1->begin(),baryRet1->getNumberOfTuples(),eps,elts,eltsIndex);
+-  MCAuto<DataArrayInt> eltsIndex2(eltsIndex->deltaShiftIndex());
++  MCAuto<DataArrayInt> eltsIndex2(DataArrayInt::New()); eltsIndex2->alloc(0,1);
++  if (eltsIndex->getNumberOfTuples() > 1)
++    eltsIndex2 = eltsIndex->deltaShiftIndex();
+   MCAuto<DataArrayInt> eltsIndex3(eltsIndex2->findIdsEqual(1));
+   if(eltsIndex2->count(0)+eltsIndex3->getNumberOfTuples()!=ret1NonCol->getNumberOfCells())
+     throw INTERP_KERNEL::Exception("Intersect2DMeshWith1DLine : internal error 1 !");
+@@ -1809,7 +1813,7 @@
+  * \b WARNING this method lead to have a non geometric type sorted mesh (for MED file users) !
+  * This method performs a conformization of \b this. So if a edge in \a this can be split into entire edges in \a this this method
+  * will suppress such edges to use sub edges in \a this. So this method does not add nodes in \a this if merged edges are both linear (INTERP_KERNEL::NORM_SEG2).
+- * In the other cases new nodes can be created. If any are created, they will be appended at the end of the coordinates object before the invokation of this method.
++ * In the other cases new nodes can be created. If any are created, they will be appended at the end of the coordinates object before the invocation of this method.
+  *
+  * Whatever the returned value, this method does not alter the order of cells in \a this neither the orientation of cells.
+  * The modified cells, if any, are systematically declared as NORM_POLYGON or NORM_QPOLYG depending on the initial quadraticness of geometric type.
+@@ -1836,14 +1840,14 @@
+   MCAuto<DataArrayInt> desc1(DataArrayInt::New()),descIndx1(DataArrayInt::New()),revDesc1(DataArrayInt::New()),revDescIndx1(DataArrayInt::New());
+   MCAuto<MEDCouplingUMesh> mDesc(buildDescendingConnectivity(desc1,descIndx1,revDesc1,revDescIndx1));
+   const int *c(mDesc->getNodalConnectivity()->begin()),*ci(mDesc->getNodalConnectivityIndex()->begin()),*rd(revDesc1->begin()),*rdi(revDescIndx1->begin());
+-  MCAuto<DataArrayDouble> bboxArr(mDesc->getBoundingBoxForBBTree());
++  MCAuto<DataArrayDouble> bboxArr(mDesc->getBoundingBoxForBBTree(eps));
+   const double *bbox(bboxArr->begin()),*coords(getCoords()->begin());
+   int nCell(getNumberOfCells()),nDescCell(mDesc->getNumberOfCells());
+   std::vector< std::vector<int> > intersectEdge(nDescCell),overlapEdge(nDescCell);
+   std::vector<double> addCoo;
+   BBTree<SPACEDIM,int> myTree(bbox,0,0,nDescCell,-eps);
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_precision=eps;
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=eps;
++  INTERP_KERNEL::QuadraticPlanarPrecision prec(eps);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision arcPrec(eps);
+   for(int i=0;i<nDescCell;i++)
+     {
+       std::vector<int> candidates;
+@@ -1948,7 +1952,7 @@
+  * If yes, the cell is "repaired" to minimize at most its number of edges. So this method do not change the overall shape of cells in \a this (with eps precision).
+  * This method do not take care of shared edges between cells, so this method can lead to a non conform mesh (\a this). If a conform mesh is required you're expected
+  * to invoke MEDCouplingUMesh::mergeNodes and MEDCouplingUMesh::conformize2D right after this call.
+- * This method works on any 2D geometric types of cell (even static one). If a cell is touched its type becomes dynamic automaticaly. For 2D "repaired" quadratic cells
++ * This method works on any 2D geometric types of cell (even static one). If a cell is touched its type becomes dynamic automatically. For 2D "repaired" quadratic cells
+  * new nodes for center of merged edges is are systematically created and appended at the end of the previously existing nodes.
+  *
+  * If the returned array is empty it means that nothing has changed in \a this (as if it were a const method). If the array is not empty the connectivity of \a this is modified
+@@ -1970,8 +1974,8 @@
+   checkConsistencyLight();
+   if(getSpaceDimension()!=2 || getMeshDimension()!=2)
+     throw INTERP_KERNEL::Exception("MEDCouplingUMesh::colinearize2D : This method only works for meshes with spaceDim=2 and meshDim=2 !");
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_arc_detection_precision=eps;
+-  INTERP_KERNEL::QUADRATIC_PLANAR::_precision=eps;
++  INTERP_KERNEL::QuadraticPlanarPrecision prec(eps);
++  INTERP_KERNEL::QuadraticPlanarArcDetectionPrecision arcPrec(eps);
+   int nbOfCells(getNumberOfCells()),nbOfNodes(getNumberOfNodes());
+   const int *cptr(_nodal_connec->begin()),*ciptr(_nodal_connec_index->begin());
+   MCAuto<DataArrayInt> newc(DataArrayInt::New()),newci(DataArrayInt::New()); newci->alloc(nbOfCells+1,1); newc->alloc(0,1); newci->setIJ(0,0,0);
+@@ -2084,7 +2088,7 @@
+     throw INTERP_KERNEL::Exception("MEDCouplingUMesh::ReplaceEdgeInFace: internal error, should never happen!");
+   int d = distance(startPos, endPos);
+   if (d == 1 || d == (1-dst)) // don't use modulo, for neg numbers, result is implementation defined ...
+-    modifiedFace.insert(++startPos, ++insidePoints.begin(), --insidePoints.end());  // insidePoints also contains start and end node. Those dont need to be inserted.
++    modifiedFace.insert(++startPos, ++insidePoints.begin(), --insidePoints.end());  // insidePoints also contains start and end node. Those don't need to be inserted.
+   else
+     modifiedFace.insert(++endPos, ++insidePoints.rbegin(), --insidePoints.rend());
+ }
+@@ -2138,7 +2142,7 @@
+     MCAuto<MEDCouplingSkyLineArray> connSlaDesc(MEDCouplingSkyLineArray::New(mDesc->getNodalConnectivityIndex(), mDesc->getNodalConnectivity()));
+     // Build BBTree
+-    MCAuto<DataArrayDouble> bboxArr(mDesc->getBoundingBoxForBBTree());
++    MCAuto<DataArrayDouble> bboxArr(mDesc->getBoundingBoxForBBTree(eps));
+     const double *bbox(bboxArr->begin()); getCoords()->begin();
+     int nDescCell(mDesc->getNumberOfCells());
+     BBTree<SPACEDIM,int> myTree(bbox,0,0,nDescCell,-eps);
+@@ -2162,7 +2166,7 @@
+     fill(hit.begin(), hit.end(), false);
+     vector<int> hitPoly; // the final result: which 3D cells have been modified.
+-    for( vector<pair<double,int>>::const_iterator it = S.begin(); it != S.end(); it++)
++    for( vector<pair<double,int> >::const_iterator it = S.begin(); it != S.end(); it++)
+       {
+         int faceIdx = (*it).second;
+         if (hit[faceIdx]) continue;
+@@ -2260,7 +2264,7 @@
+           {
+             if (packsIds[jj] == -1)
+               // The below should never happen - if a face is used several times, with a different layout of the nodes
+-              // it means that is is already conform, so it is *not* hit by the algorithm. The algorithm only hits
++              // it means that it is already conform, so it is *not* hit by the algorithm. The algorithm only hits
+               // faces which are actually used only once, by a single cell. This is different for edges below.
+               throw INTERP_KERNEL::Exception("MEDCouplingUMesh::conformize3D: Could not find face in connectivity! Internal error.");
+             else
+@@ -2308,7 +2312,7 @@
+ //    mDesc2->writeVTK("/tmp/toto_desc2_confInter.vtu");
+     const int *revDescIP2(revDescI2->getConstPointer()), *revDescP2(revDesc2->getConstPointer());
+     const int *cDesc2(mDesc2->getNodalConnectivity()->begin()),*cIDesc2(mDesc2->getNodalConnectivityIndex()->begin());
+-    MCAuto<DataArrayDouble> bboxArr(mDesc2->getBoundingBoxForBBTree());
++    MCAuto<DataArrayDouble> bboxArr(mDesc2->getBoundingBoxForBBTree(eps));
+     const double *bbox2(bboxArr->begin());
+     int nDesc2Cell=mDesc2->getNumberOfCells();
+     BBTree<SPACEDIM,int> myTree2(bbox2,0,0,nDesc2Cell,-eps);
+@@ -2318,7 +2322,7 @@
+     DataArrayDouble * lens = lenF->getArray();
+     // Sort edges by decreasing length:
+-    vector<pair<double,int>> S;
++    vector<pair<double,int> > S;
+     for(std::size_t i=0;i < lens->getNumberOfTuples();i++)
+       {
+         pair<double,int> p = make_pair(lens->getIJ(i, 0), i);
+@@ -2329,7 +2333,7 @@
+     vector<bool> hit(nDesc2Cell);
+     fill(hit.begin(), hit.end(), false);
+-    for( vector<pair<double,int>>::const_iterator it = S.begin(); it != S.end(); it++)
++    for( vector<pair<double,int> >::const_iterator it = S.begin(); it != S.end(); it++)
+       {
+         int eIdx = (*it).second;
+         if (hit[eIdx])
+@@ -2397,7 +2401,7 @@
+             mPartCand->getNodalConnectivity()->begin(), mPartCand->getNodalConnectivityIndex()->begin(),
+             idsGoodLine->begin(), idsGoodLine->end(),
+             /*out*/insidePoints, hitSegs);
+-        // Optim: smaller segments completly included in eIdx and not split won't need any further treatment:
++        // Optim: smaller segments completely included in eIdx and not split won't need any further treatment:
+         for (vector<int>::const_iterator its=hitSegs.begin(); its != hitSegs.end(); ++its)
+           hit[cands2[*its]] = true;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/Test/CMakeLists.txt MEDCOUPLING_new/src/MEDCoupling/Test/CMakeLists.txt
+--- MEDCOUPLING_old/src/MEDCoupling/Test/CMakeLists.txt        2018-04-19 17:04:36.723222444 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/Test/CMakeLists.txt        2018-04-19 17:25:18.061803761 +0200
+@@ -57,7 +57,7 @@
+ SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env)
+ ADD_EXECUTABLE(TestMEDCoupling ${TestMEDCoupling_SOURCES})
+-TARGET_LINK_LIBRARIES(TestMEDCoupling medcoupling ${CPPUNIT_LIBRARIES} ${PLATFORM_LIBS})
++TARGET_LINK_LIBRARIES(TestMEDCoupling medcouplingcpp ${CPPUNIT_LIBRARIES} ${PLATFORM_LIBS})
+ ADD_TEST(TestMEDCoupling TestMEDCoupling)
+ SET_TESTS_PROPERTIES(TestMEDCoupling PROPERTIES ENVIRONMENT "${tests_env}")
+@@ -67,7 +67,7 @@
+ SET_TESTS_PROPERTIES(TestMEDCouplingRemapper PROPERTIES ENVIRONMENT "${tests_env}")
+ ADD_EXECUTABLE(TestMEDCouplingExamples ${TestMEDCouplingExamples_SOURCES})
+-TARGET_LINK_LIBRARIES(TestMEDCouplingExamples medcoupling ${CPPUNIT_LIBRARIES} ${PLATFORM_LIBS})
++TARGET_LINK_LIBRARIES(TestMEDCouplingExamples medcouplingcpp ${CPPUNIT_LIBRARIES} ${PLATFORM_LIBS})
+ ADD_TEST(TestMEDCouplingExamples TestMEDCouplingExamples)
+ SET_TESTS_PROPERTIES(TestMEDCouplingExamples PROPERTIES ENVIRONMENT "${tests_env}")
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/Test/MEDCouplingBasicsTest4.cxx MEDCOUPLING_new/src/MEDCoupling/Test/MEDCouplingBasicsTest4.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/Test/MEDCouplingBasicsTest4.cxx    2018-04-19 17:04:36.725222483 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/Test/MEDCouplingBasicsTest4.cxx    2018-04-19 17:25:18.083804196 +0200
+@@ -937,7 +937,7 @@
+   m->checkConsistency();//OK because we are in polyhedron connec
+   m->getNodalConnectivity()->setIJ(36,0,14);
+   m->checkConsistencyLight();
+-  CPPUNIT_ASSERT_THROW(m->checkConsistency(),INTERP_KERNEL::Exception);//Throw beacause now cell 5 is a TETRA4 (14) so mimatch of number index and static type.
++  CPPUNIT_ASSERT_THROW(m->checkConsistency(),INTERP_KERNEL::Exception);//Throw because now cell 5 is a TETRA4 (14) so mismatch of number index and static type.
+   m->decrRef();
+ }
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/Test/MEDCouplingBasicsTestInterp.cxx MEDCOUPLING_new/src/MEDCoupling/Test/MEDCouplingBasicsTestInterp.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/Test/MEDCouplingBasicsTestInterp.cxx       2018-04-19 17:04:36.726222503 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/Test/MEDCouplingBasicsTestInterp.cxx       2018-04-19 17:25:18.077804077 +0200
+@@ -1465,7 +1465,7 @@
+   sourceMesh->allocateCells(0);
+   sourceMesh->finishInsertingCells();
+   DataArrayDouble *myCoords=DataArrayDouble::New();
+-  myCoords->alloc(0,0);
++  myCoords->alloc(0,2);
+   sourceMesh->setCoords(myCoords);
+   myCoords->decrRef();
+   MEDCouplingUMesh *targetMesh=MEDCouplingUMesh::New();
+diff -Naur MEDCOUPLING_old/src/MEDCoupling/Test/MEDCouplingExamplesTest.cxx MEDCOUPLING_new/src/MEDCoupling/Test/MEDCouplingExamplesTest.cxx
+--- MEDCOUPLING_old/src/MEDCoupling/Test/MEDCouplingExamplesTest.cxx   2018-04-19 17:04:36.727222523 +0200
++++ MEDCOUPLING_new/src/MEDCoupling/Test/MEDCouplingExamplesTest.cxx   2018-04-19 17:25:18.066803860 +0200
+@@ -2378,7 +2378,7 @@
+   fieldOnCells->setMesh(mesh);
+   mesh->decrRef(); // no more need of mesh because mesh has been attached to fieldOnCells
+   MEDCoupling::DataArrayDouble *array=MEDCoupling::DataArrayDouble::New();
+-  array->alloc(fieldOnCells->getMesh()->getNumberOfCells(),9);//Implicitely fieldOnCells will be a 9 components field.
++  array->alloc(fieldOnCells->getMesh()->getNumberOfCells(),9);//Implicitly fieldOnCells will be a 9 components field.
+   array->fillWithValue(7.);
+   fieldOnCells->setArray(array);
+   array->decrRef();
+@@ -2430,7 +2430,7 @@
+   fieldOnNodes->setMesh(mesh);
+   mesh->decrRef(); // no more need of mesh because mesh has been attached to fieldOnNodes
+   MEDCoupling::DataArrayDouble *array=MEDCoupling::DataArrayDouble::New();
+-  array->alloc(fieldOnNodes->getMesh()->getNumberOfNodes(),1);//Implicitely fieldOnNodes will be a 1 component field.
++  array->alloc(fieldOnNodes->getMesh()->getNumberOfNodes(),1);//Implicitly fieldOnNodes will be a 1 component field.
+   array->fillWithValue(8.);
+   fieldOnNodes->setArray(array);
+   array->decrRef();
+@@ -2457,7 +2457,7 @@
+   fieldOnCells->setMesh(mesh);
+   mesh->decrRef(); // no more need of mesh because mesh has been attached to fieldOnCells
+   MEDCoupling::DataArrayDouble *array=MEDCoupling::DataArrayDouble::New();
+-  array->alloc(fieldOnCells->getMesh()->getNumberOfCells(),2);//Implicitely fieldOnCells will be a 2 components field.
++  array->alloc(fieldOnCells->getMesh()->getNumberOfCells(),2);//Implicitly fieldOnCells will be a 2 components field.
+   array->fillWithValue(7.);
+   fieldOnCells->setArray(array);
+   array->decrRef();
+@@ -2485,7 +2485,7 @@
+   fieldOnNodes->setMesh(mesh);
+   mesh->decrRef(); // no more need of mesh because mesh has been attached to fieldOnNodes
+   MEDCoupling::DataArrayDouble *array=MEDCoupling::DataArrayDouble::New();
+-  array->alloc(fieldOnNodes->getMesh()->getNumberOfNodes(),3);//Implicitely fieldOnNodes will be a 3 components field.
++  array->alloc(fieldOnNodes->getMesh()->getNumberOfNodes(),3);//Implicitly fieldOnNodes will be a 3 components field.
+   array->fillWithValue(8.);
+   fieldOnNodes->setArray(array);
+   array->decrRef();
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/CMakeLists.txt MEDCOUPLING_new/src/MEDCoupling_Swig/CMakeLists.txt
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/CMakeLists.txt        2018-04-19 17:04:36.728222543 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/CMakeLists.txt        2018-04-19 17:25:17.264788007 +0200
+@@ -46,6 +46,7 @@
+ SET (MC_Swig_interf
+     MEDCoupling.i
+     MEDCouplingCommon.i
++    MEDCouplingRemapperCommon.i
+     MEDCouplingRefCountObject.i
+     MEDCouplingMemArray.i
+     MEDCouplingFieldDiscretization.i
+@@ -60,7 +61,7 @@
+ INCLUDE_DIRECTORIES(
+   ${PYTHON_INCLUDE_DIRS}
+   ${NUMPY_INCLUDE_DIR}
+-  ${PTHREAD_INCLUDE_DIR} # pthread dependancy due to python2.7 library
++  ${PTHREAD_INCLUDE_DIR} # pthread dependency due to python2.7 library
+   ${CMAKE_CURRENT_SOURCE_DIR}
+   ${CMAKE_CURRENT_BINARY_DIR}
+   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling
+@@ -87,7 +88,7 @@
+ ENDIF()
+ SWIG_ADD_MODULE(MEDCoupling python MEDCoupling.i)
+-SWIG_LINK_LIBRARIES(MEDCoupling ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} medcoupling)
++SWIG_LINK_LIBRARIES(MEDCoupling ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} medcouplingcpp)
+ SWIG_CHECK_GENERATION(MEDCoupling)
+ SET_SOURCE_FILES_PROPERTIES(MEDCouplingRemapper.i PROPERTIES CPLUSPLUS ON)
+ IF ("${PYTHON_VERSION_MAJOR}" STREQUAL "3")
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingBasicsTest3.py MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingBasicsTest3.py
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingBasicsTest3.py     2018-04-19 17:04:36.729222563 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingBasicsTest3.py     2018-04-19 17:25:17.250787731 +0200
+@@ -1444,7 +1444,7 @@
+         m.checkConsistency();#OK because we are in polyhedron connec
+         m.getNodalConnectivity().setIJ(36,0,14);
+         m.checkConsistencyLight();
+-        self.assertRaises(InterpKernelException,m.checkConsistency);#Throw beacause now cell 5 is a TETRA4 (14) so mimatch of number index and static type.
++        self.assertRaises(InterpKernelException,m.checkConsistency);#Throw because now cell 5 is a TETRA4 (14) so mismatch of number index and static type.
+         pass
+     def testUnPolyze2(self):
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingBasicsTest5.py MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingBasicsTest5.py
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingBasicsTest5.py     2018-04-19 17:04:36.732222623 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingBasicsTest5.py     2018-04-19 17:25:17.247787671 +0200
+@@ -17,7 +17,6 @@
+ #
+ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+ #
+-
+ from MEDCoupling import *
+ import unittest
+ from math import pi,e,sqrt,cos,sin
+@@ -1462,7 +1461,7 @@
+         self.assertEqual(f4.getMesh(),None)
+         pass
+-    # test a simple node to cell convertion of a field
++    # test a simple node to cell conversion of a field
+     def testSwig2NodeToCellDiscretization1(self):
+         f=MEDCouplingFieldDouble(ON_NODES) ; f.setTime(1.1,2,3)
+         a1=DataArrayDouble(4) ; a1.iota()
+@@ -1891,7 +1890,7 @@
+         gaussCoords=refCoords[:] ; gaussCoords[14]=0.9999999999999 # change z of point #4 0.999... instead of 1. because with shape function it leads to division by 0. !
+         fGauss.setGaussLocalizationOnType(NORM_PYRA13,refCoords,gaussCoords,weights)
+         arrOfDisc2=fGauss.getLocalizationOfDiscr()
+-        self.assertTrue(arrOfDisc2.isEqual(coo,1e-10)) # be less exigent 1e-10 instead of 1e-12 due to shape function sensitivity arount 0.,0.,1. !
++        self.assertTrue(arrOfDisc2.isEqual(coo,1e-10)) # be less exigent 1e-10 instead of 1e-12 due to shape function sensitivity around 0.,0.,1. !
+         pass
+     def testSwig2Tri7GP1(self):
+@@ -2123,7 +2122,7 @@
+         pass
+     def testSwig2Colinearize2D3(self):
+-        """ colinearize was too agressive, potentially producing cells with one edge """
++        """ colinearize was too aggressive, potentially producing cells with one edge """
+         # Flat polygon  with 3 edges - nothing should happen (min number of edges for a linear polyg)
+         coo = DataArrayDouble([0.0,0.0,  2.0,0.0,   1.5,0.0,  1.0,0.0,  0.5,0.0], 5,2)
+         m = MEDCouplingUMesh("m", 2)
+@@ -3902,32 +3901,32 @@
+         arr2=DataArrayInt([(0,1),(2,3),(4,5),(6,7),(8,9),(10,11),(12,13),(14,15),(16,17),(18,19),(20,21),(22,23)]) ; arr2.setInfoOnComponents(["aa","bbb"])
+         f2.setArray(arr2) ; f2.setName("f1") ; f2.setTime(2.,3,4)
+         #
+-        self.assertTrue(f1.isEqual(f2,1e-12,0.))
++        self.assertTrue(f1.isEqual(f2,1e-12,0))
+         f1.getArray()[:]*=2
+-        self.assertTrue(not f1.isEqual(f2,1e-12,0.))
+-        self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,0.))
++        self.assertTrue(not f1.isEqual(f2,1e-12,0))
++        self.assertTrue(not f1.isEqualWithoutConsideringStr(f2,1e-12,0))
+         f1.getArray()[:]/=2
+-        self.assertTrue(f1.isEqual(f2,1e-12,0.))
++        self.assertTrue(f1.isEqual(f2,1e-12,0))
+         #
+         f1.setName("F1")
+-        self.assertTrue(not f1.isEqual(f2,1e-12,0.))
++        self.assertTrue(not f1.isEqual(f2,1e-12,0))
+         f1.setName("f1")
+-        self.assertTrue(f1.isEqual(f2,1e-12,0.))
++        self.assertTrue(f1.isEqual(f2,1e-12,0))
+         #
+         f1.getArray().setInfoOnComponents(["aa","bbbb"])
+-        self.assertTrue(not f1.isEqual(f2,1e-12,0.))
+-        self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,0.))
++        self.assertTrue(not f1.isEqual(f2,1e-12,0))
++        self.assertTrue(f1.isEqualWithoutConsideringStr(f2,1e-12,0))
+         f1.getArray().setInfoOnComponents(["aa","bbb"])
+-        self.assertTrue(f1.isEqual(f2,1e-12,0.))
++        self.assertTrue(f1.isEqual(f2,1e-12,0))
+         #
+         f3=f2.deepCopy()
+-        self.assertTrue(f1.isEqual(f3,1e-12,0.))
++        self.assertTrue(f1.isEqual(f3,1e-12,0))
+         #
+         for fd,expected in ((ON_NODES,False),(ON_CELLS,True)):
+             f4=MEDCouplingFieldInt(fd) ; f4.setMesh(m2) ; f4.setTime(2.,3,4)
+             arr4=DataArrayInt([(0,1),(2,3),(4,5),(6,7),(8,9),(10,11),(12,13),(14,15),(16,17),(18,19),(20,21),(22,23)]) ; arr4.setInfoOnComponents(["aa","bbb"])
+             f4.setArray(arr4) ; f4.setName("f1")
+-            self.assertEqual(f1.isEqual(f4,1e-12,0.),expected)
++            self.assertEqual(f1.isEqual(f4,1e-12,0),expected)
+             pass
+         pass
+@@ -4276,6 +4275,35 @@
+         self.assertEqual(fieldOnCell.getMesh().buildDescendingConnectivity()[0].getNumberOfCells(),2*7+21)
+         pass
++    def testVoronoi3D_8(self):
++        """More aggressive 3D test. Bug EDF 15094"""
++        mesh = MEDCouplingUMesh("myMeshForAnthony",3)
++        coords = [2.20449946892035, 0.0015302058397972198, -0.014025000000000001, 2.20449522028465, 0.00459061457029268, -0.0109750000232271, 2.20449946892035, 0.0015302058397972198, -0.0125000000116135, 2.20577243296484, 0.00153108944037966, -0.0137555135576553, 2.20517315768831, 0.0045920262990614006, -0.010764118475206199, 2.2054749202977, 0.0015308829283677198, -0.012259816016430801, 2.20449787568164, 0.00306041094231961, -0.0125000000116135, 2.20449787568164, 0.00306041094231961, -0.011737500017420301, 2.20449946892035, 0.0015302058397972198, -0.0132625000058068, 2.20513595094259, 0.0015306476400884401, -0.0138902567788277, 2.20483418898648, 0.0045913204346770395, -0.0108695592492167, 2.20498719460902, 0.00153054438408247, -0.0123799080140222, 2.20547332635401, 0.0030617651191343705, -0.012259816016430801, 2.20532457012796, 0.00306155860717217, -0.0115119672458185, 2.20562367663127, 0.0015309861843736902, -0.013007664787043, 2.20582504233773, 0.0045933837758852306, -0.010139577890770399, 2.20642582267143, 0.004594634833691141, -0.009125379014333041, 2.20612543250458, 0.00459400930478819, -0.00963247845255172, 2.2069524110381, 0.004595731395029229, -0.00776049693994639, 2.20668911685476, 0.004595183114360191, -0.00844293797713971, 2.20832419990944, 0.0076643330146060895, -0.0108392857142857, 2.20832419990944, 0.0076643330146060895, -0.008671428571428571, 2.20704504094678, 0.00765989349423635, -0.008671428571428571, 2.20704504094678, 0.00765989349423635, -0.0108392857142857, 2.2062381754171, 0.00459424407928538, -0.00868052596233734, 2.20832419990944, 0.0076643330146060895, -0.00975535714285714, 2.20768462042811, 0.00766211325442122, -0.008671428571428571, 2.20704504094678, 0.00765989349423635, -0.00975535714285714, 2.20768462042811, 0.00766211325442122, -0.0108392857142857, 2.20737554490036, 0.00612882358882901, -0.009982332364309381, 2.20763883863969, 0.00612955462931014, -0.00821596275568748, 2.2066421405633703, 0.00612678727660696, -0.00867597726688296, 2.20643557437203, 0.006126213741329251, -0.0104894318025281, 2.2065952932276, 0.00459498773715731, -0.00822051145114186, 2.20603160887741, 0.00459381392758531, -0.00941005192655387]
++        da = DataArrayDouble.New(coords,35,3)
++        mesh.setCoords(da)
++        mesh.allocateCells()
++        mesh.insertNextCell(NORM_PENTA15, [0, 2, 1, 3, 5, 4, 8, 7, 6, 14, 13, 12, 9, 11, 10])
++        mesh.insertNextCell(NORM_HEXA20, [20, 23, 22, 21, 16, 15, 24, 18, 28, 27, 26, 25, 17, 34, 33, 19, 29, 32, 31, 30])
++        mesh.zipCoords()
++        f=MEDCouplingFieldDouble(ON_GAUSS_PT)
++        f.setMesh(mesh)
++        f.setName("myFieldForAnthony")
++        f.setGaussLocalizationOnCells([0],[-1, 1, 0, -1, 0, 0, -1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, -1, 0.5, 0, -1, 0, 0.5, -1, 0.5, 0.5, 1, 0.5, 0, 1, 0, 0.5, 1, 0.5, 0.5, 0, 1, 0, 0, 0, 0, 0, 0, 1],[-0.774597, 0.333333, 0.333333, -0.774597, 0.470142, 0.470142, -0.774597, 0.0597159, 0.470142, -0.774597, 0.470142, 0.0597159, -0.774597, 0.101287, 0.101287, -0.774597, 0.797427, 0.101287, -0.774597, 0.101287, 0.797427, 0, 0.333333, 0.333333, 0, 0.470142, 0.470142, 0, 0.0597159, 0.470142, 0, 0.470142, 0.0597159, 0, 0.101287, 0.101287, 0, 0.797427, 0.101287, 0, 0.101287, 0.797427, 0.774597, 0.333333, 0.333333, 0.774597, 0.470142, 0.470142, 0.774597, 0.0597159, 0.470142, 0.774597, 0.470142, 0.0597159, 0.774597, 0.101287, 0.101287, 0.774597, 0.797427, 0.101287, 0.774597, 0.101287, 0.797427],[0.0625, 0.0367762, 0.0367762, 0.0367762, 0.0349831, 0.0349831, 0.0349831, 0.1, 0.0588418, 0.0588418, 0.0588418, 0.055973, 0.055973, 0.055973, 0.0625, 0.0367762, 0.0367762, 0.0367762, 0.0349831, 0.0349831, 0.0349831])
++        f.setGaussLocalizationOnCells([1],[-1, -1, -1, -1, 1, -1, 1, 1, -1, 1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, 1, -1, 1, -1, 0, -1, 0, 1, -1, 1, 0, -1, 0, -1, -1, -1, 0, 1, 0, 1, 1, 1, 0, 1, 0, -1, 1, -1, -1, 0, -1, 1, 0, 1, 1, 0, 1, -1, 0],[-0.774597, -0.774597, -0.774597, -0.774597, -0.774597, 0, -0.774597, -0.774597, 0.774597, -0.774597, 0, -0.774597, -0.774597, 0, 0, -0.774597, 0, 0.774597, -0.774597, 0.774597, -0.774597, -0.774597, 0.774597, 0, -0.774597, 0.774597, 0.774597, 0, -0.774597, -0.774597, 0, -0.774597, 0, 0, -0.774597, 0.774597, 0, 0, -0.774597, 0, 0, 0, 0, 0, 0.774597, 0, 0.774597, -0.774597, 0, 0.774597, 0, 0, 0.774597, 0.774597, 0.774597, -0.774597, -0.774597, 0.774597, -0.774597, 0, 0.774597, -0.774597, 0.774597, 0.774597, 0, -0.774597, 0.774597, 0, 0, 0.774597, 0, 0.774597, 0.774597, 0.774597, -0.774597, 0.774597, 0.774597, 0, 0.774597, 0.774597, 0.774597],[0.171468, 0.274348, 0.171468, 0.274348, 0.438957, 0.274348, 0.171468, 0.274348, 0.171468, 0.274348, 0.438957, 0.274348, 0.438957, 0.702332, 0.438957, 0.274348, 0.438957, 0.274348, 0.171468, 0.274348, 0.171468, 0.274348, 0.438957, 0.274348, 0.171468, 0.274348, 0.171468])
++        arr = DataArrayDouble(48, 3)
++        arr[:, 0] = list(range(48))
++        arr[:, 1] = 100 + arr[:, 0]
++        arr[:, 2] = 200 + arr[:, 0]
++        f.setArray(arr)
++        fieldOnCell=f.voronoize(1e-12) # hot point
++        fieldOnCell.checkConsistencyLight()
++        self.assertEqual(fieldOnCell.getMesh().getNumberOfCells(),48)
++        self.assertEqual(fieldOnCell.getMesh().getNumberOfNodes(),127)
++        meaRef=f.getMesh().getMeasureField(True).getArray(); meaRef.rearrange(2); meaRef2 = meaRef.sumPerTuple()
++        mea=fieldOnCell.getMesh().getMeasureField(True).getArray(); mea.rearrange(48); mea2 = mea.sumPerTuple()
++        self.assertTrue(mea2.isEqual(meaRef2,1e-9))
++        pass
++
+     def testVoronoi3DSurf_1(self):
+         tmp=MEDCouplingCMesh("mesh")
+         arr=DataArrayDouble(5) ; arr.iota()
+@@ -4445,7 +4473,7 @@
+         self.assertTrue(f3.getMesh().getMeasureField(False).getArray().isEqual(ref,1e-12))
+         self.assertTrue(f3.getArray().isEqual(DataArrayDouble([0,1,2,3]),1e-12))
+         pass
+-    
++
+     def testVoronoi3D_4(self):
+         """Idem testVoronoi3D_3 except that here quadratic cells are considered"""
+         coo=DataArrayDouble([0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.5,0.0,0.0,0.0,0.5,0.0,0.5,0.5,0.5,0.5,0.0,0.5,0.0,0.0,0.5,0.0,0.5],10,3)
+@@ -4592,8 +4620,16 @@
+     def testUMeshComputeEnlargedNeighborsOfNodes(self):
+         m=MEDCouplingCMesh() ; arr=DataArrayDouble(4) ; arr.iota() ; m.setCoords(arr,arr) ; m=m.buildUnstructured()
+         a,b=m.computeEnlargedNeighborsOfNodes()
+-        self.assertTrue(a.isEqual(DataArrayInt([1,4,5,0,2,4,5,6,1,3,5,6,7,2,6,7,0,1,5,8,9,0,1,2,4,6,8,9,10,1,2,3,5,7,9,10,11,2,3,6,10,11,4,5,9,12,13,4,5,6,8,10,12,13,14,5,6,7,9,11,13,14,15,6,7,10,14,15,8,9,13,8,9,10,12,14,9,10,11,13,15,10,11,14])))
+-        self.assertTrue(b.isEqual(DataArrayInt([0,3,8,13,16,21,29,37,42,47,55,63,68,71,76,81,84])))
++        aExp=DataArrayInt([1,4,5,0,2,4,5,6,1,3,5,6,7,2,6,7,0,1,5,8,9,0,1,2,4,6,8,9,10,1,2,3,5,7,9,10,11,2,3,6,10,11,4,5,9,12,13,4,5,6,8,10,12,13,14,5,6,7,9,11,13,14,15,6,7,10,14,15,8,9,13,8,9,10,12,14,9,10,11,13,15,10,11,14])
++        bExp=DataArrayInt([0,3,8,13,16,21,29,37,42,47,55,63,68,71,76,81,84])
++        self.assertTrue(a.isEqual(aExp))
++        self.assertTrue(b.isEqual(bExp))
++        m2=m[[1,2,3]]
++        c,d=m2.computeEnlargedNeighborsOfNodes()
++        cExp=DataArrayInt([2,5,6,1,3,5,6,7,2,6,7,5,8,9,1,2,4,6,8,9,1,2,3,5,7,2,3,6,4,5,9,4,5,8])
++        dExp=DataArrayInt([0,0,3,8,11,14,20,25,28,31,34,34,34,34,34,34,34])
++        self.assertTrue(c.isEqual(cExp))
++        self.assertTrue(d.isEqual(dExp))
+         pass
+     def testDAIfindIdsExt1(self):
+@@ -4738,7 +4774,22 @@
+         m.insertNextCell(NORM_POLYGON,[0,1,2,3,4,5])
+         self.assertTrue(m.computePlaneEquationOf3DFaces().isEqual(DataArrayDouble([0,1,0,-1],1,4),1e-12))
+         pass
+-    
++
++    def testSimplifyPolyhedra(self):
++        mesh = MEDCouplingUMesh('mesh', 3)
++        coo = DataArrayDouble([(-0.01225,-0.0212176,0.02),(-0.00634107,-0.0236652,0.02),(1.50019e-18,-0.0245,0.02),(0.00634107,-0.0236652,0.02),(0.01225,-0.0212176,0.02),(-0.0153864,-0.02665,0),(-0.00714085,-0.02665,0),(1.63184e-18,-0.02665,0),(0.00714085,-0.02665,0),(0.0153864,-0.02665,0),(-0.00714085,-0.02665,0.0101475),(1.63184e-18,-0.02665,0.013145),(0.00714085,-0.02665,0.0101475),(-0.013,-0.0225167,0.02),(-0.0067293,-0.0251141,0.02),(1.59204e-18,-0.026,0.02),(0.0067293,-0.0251141,0.02),(0.013,-0.0225167,0.02),(-0.0161658,-0.028,0),(-0.00750258,-0.028,0),(1.71451e-18,-0.028,0),(0.00750258,-0.028,0),(0.0161658,-0.028,0),(-0.00750258,-0.028,0.0105625),(1.71451e-18,-0.028,0.0136825),(0.00750258,-0.028,0.0105625)])
++        mesh.setCoords(coo)
++        c = DataArrayInt([31, 13, 14, 15, 16, 17, 4, 3, 2, 1, 0, -1, 18, 5, 6, 7, 8, 9, 22, 21, 20, 19, -1, 19, 23, 18, -1, 23, 14, 13, 18, -1, 20, 24, 23, 19, -1, 24, 15, 14, 23, -1, 21, 25, 24, 20, -1, 25, 16, 15, 24, -1, 22, 25, 21, -1, 22, 17, 16, 25, -1, 9, 4, 17, 22, -1, 8, 12, 9, -1, 12, 3, 4, 9, -1, 7, 11, 12, 8, -1, 11, 2, 3, 12, -1, 6, 10, 11, 7, -1, 10, 1, 2, 11, -1, 5, 10, 6, -1, 5, 0, 1, 10, -1, 18, 13, 0, 5])
++        cI = DataArrayInt([0, 108])
++        mesh.setConnectivity(c, cI)
++        mesh.simplifyPolyhedra(1.0e-8)
++        c, cI = mesh.getNodalConnectivity(), mesh.getNodalConnectivityIndex()
++        tgt_c = DataArrayInt([31, 23, 18, 19, 20, 21, 22, 25, 24, -1, 12, 9, 8, 7, 6, 5, 10, 11, -1, 13, 14, 15, 16, 17, 4, 3, 2, 1, 0, -1, 18, 5, 6, 7, 8, 9, 22, 21, 20, 19, -1, 23, 14, 13, 18, -1, 24, 15, 14, 23, -1, 25, 16, 15, 24, -1, 22, 17, 16, 25, -1, 9, 4, 17, 22, -1, 12, 3, 4, 9, -1, 11, 2, 3, 12, -1, 10, 1, 2, 11, -1, 5, 0, 1, 10, -1, 18, 13, 0, 5])
++        tgt_cI = DataArrayInt([0, 90])
++        self.assertEqual(c.getValues(), tgt_c.getValues())
++        self.assertEqual(cI.getValues(), tgt_cI.getValues())
++        pass
++
+     pass
+ if __name__ == '__main__':
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingBasicsTest6.py MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingBasicsTest6.py
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingBasicsTest6.py     2018-04-19 17:04:36.732222623 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingBasicsTest6.py     2018-04-19 17:25:17.252787770 +0200
+@@ -106,6 +106,112 @@
+         level3(self)
+         gtumesh(self)
+         pass
++
++    def testPenta18_1(self):
++        arr=DataArrayDouble([
++            (0.,1.,1.),(0.,0.,1.),(1.,0.,1.),
++            (0.,1.,0.),(0.,0.,0.),(1.,0.,0.),
++            (0.,0.5,1.),(0.5,0.,1.),(0.5,0.5,1.),
++            (0.,0.5,0.),(0.5,0.,0.),(0.5,0.5,0.),
++            (0.,1.,0.5),(0.,0.,0.5),(1.,0.,0.5),
++            (0.,0.5,0.5),(0.5,0.,0.5),(0.5,0.5,0.5)])
++        m=MEDCouplingUMesh("mesh",3)
++        m.setCoords(arr)
++        m.allocateCells(1)
++        m.insertNextCell(NORM_PENTA18,list(range(18)))
++        m.checkConsistencyLight()
++        self.assertTrue(m.getMeasureField(True).getArray().isEqual(DataArrayDouble([0.5]),1e-12))
++        #
++        f=MEDCouplingFieldDouble(ON_NODES)
++        f.setMesh(m)
++        f.setName("FieldOnPenta18")
++        f.setArray(DataArrayDouble(list(range(18))))
++        f.checkConsistencyLight()
++        #
++        m2,d,di,rd,rdi=m.buildDescendingConnectivity()
++        self.assertTrue(m2.getNodalConnectivity().isEqual(DataArrayInt([6,0,1,2,6,7,8,6,3,5,4,11,10,9,9,0,3,4,1,12,9,13,6,15,9,1,4,5,2,13,10,14,7,16,9,2,4,5,0,14,11,12,8,17])))
++        self.assertTrue(m2.getNodalConnectivityIndex().isEqual(DataArrayInt([0,7,14,24,34,44])))
++        self.assertTrue(d.isEqual(DataArrayInt([0,1,2,3,4])))
++        self.assertTrue(di.isEqual(DataArrayInt([0,5])))
++        self.assertTrue(rd.isEqual(DataArrayInt([0,0,0,0,0])))
++        self.assertTrue(rdi.isEqual(DataArrayInt([0,1,2,3,4,5])))
++        #
++        f2=MEDCouplingFieldDouble(ON_NODES)
++        f2.setMesh(m)
++        f2.setName("FieldOnPenta18Sub")
++        f2.setArray(DataArrayDouble(list(range(18))))
++        f2.checkConsistencyLight()
++        pass
++
++    def testSKLAReplaceDeletePacks(self):
++        index=DataArrayInt([0,3,5,6,6])
++        value=DataArrayInt([1,2,3, 2,3, 3  ])
++        sla=MEDCouplingSkyLineArray(index,value)
++        idx=DataArrayInt([0,3])
++        packs=[DataArrayInt([4,5]),DataArrayInt([6,7,8])]
++        sla.replaceSimplePacks(idx,packs)
++        self.assertTrue(sla.getIndexArray().isEqual(DataArrayInt([0,2,4,5,8])))
++        self.assertTrue(sla.getValuesArray().isEqual(DataArrayInt([4,5, 2,3, 3, 6,7,8])))
++        sla.deleteSimplePacks(idx)
++        self.assertTrue(sla.getIndexArray().isEqual(DataArrayInt([0,2,3])))
++        self.assertTrue(sla.getValuesArray().isEqual(DataArrayInt([2,3, 3])))
++        sla.deleteSimplePack(1)
++        self.assertTrue(sla.getIndexArray().isEqual(DataArrayInt([0,2])))
++        self.assertTrue(sla.getValuesArray().isEqual(DataArrayInt([2,3])))
++        pass
++
++    def testDADAsArcOfCircle(self):
++        d=DataArrayDouble([3.06915124862645,2.1464466094067824,2.85355345827285,2.3620444674400574,2.637955532559882,2.1464467447661937],3,2)
++        center,radius,ang=d.asArcOfCircle()
++        self.assertTrue((d-center).magnitude().isUniform(radius,1e-10))
++        self.assertAlmostEqual(ang,-4.712389294301196,12)
++        pass
++
++    def testDAMaxAbsValue(self):
++        d=DataArrayDouble([-2,3,1.2,-2.9])
++        a,b=d.getMaxAbsValue()
++        self.assertAlmostEqual(a,3.,13)
++        self.assertEqual(b,1)
++        a,b=(-d).getMaxAbsValue()
++        self.assertAlmostEqual(a,-3.,13)
++        self.assertEqual(b,1)
++        self.assertAlmostEqual((-d).getMaxAbsValueInArray(),-3.,13)
++        pass
++
++    def testDAIFindIdForEach1(self):
++        a1=DataArrayInt([17,27,2,10,-4,3,12,27,16])
++        b1=DataArrayInt([3,16,-4,27,17])
++        ret=a1.findIdForEach(b1)
++        self.assertTrue(ret.isEqual(DataArrayInt([5,8,4,7,0])))
++        self.assertTrue(a1[ret].isEqual(b1))
++        b2=DataArrayInt([3,16,22,27,17])
++        self.assertRaises(InterpKernelException,a1.findIdForEach,b2) # 22 not in a1 !
++        a1.rearrange(3)
++        self.assertRaises(InterpKernelException,a1.findIdForEach,b1) # a1 is not single component
++        pass
++    
++    @unittest.skipUnless(IsCXX11Compiled(),"requires C++11")
++    def testAttractSeg3MidPtsAroundNodes1(self):
++        """ Test of MEDCouplingUMesh.attractSeg3MidPtsAroundNodes methods """
++        ptsExpToBeModified=DataArrayInt([95,96,97,98,101,103,104,106,108,110])
++        eps=1e-12
++        a=2./3.
++        b=1./3.
++        coo=DataArrayDouble([10,0,0,10,10,0,10,0,3.+b,10,0,6.+a,10,10,3.+b,10,10,6.+a,10,3.+b,0,10,6.+a,0,3.+b,0,0,6.+a,0,0,3.+b,10,0,6.+a,10,0,10,3.+b,6.+a,10,6.+a,6.+a,10,3.+b,3.+b,10,6.+a,3.+b,3.+b,0,3.+b,3.+b,0,6.+a,6.+a,0,3.+b,6.+a,0,6.+a,6.+a,10,3.+b,6.+a,10,6.+a,3.+b,10,3.+b,3.+b,10,6.+a,3.+b,3.+b,0,6.+a,3.+b,0,3.+b,6.+a,0,6.+a,6.+a,0,3.+b,3.+b,6.+a,6.+a,3.+b,6.+a,3.+b,6.+a,6.+a,6.+a,6.+a,6.+a,3.+b,3.+b,3.+b,6.+a,3.+b,3.+b,3.+b,6.+a,3.+b,6.+a,6.+a,3.+b,10,0,1.+a,10,0,5.,10,10,1.+a,10,10,5.,10,1.+a,0,10,5.,0,10,8.+b,0,5.,0,0,8.+b,0,0,5.,10,0,8.+b,10,0,10,1.+a,6.+a,10,5.,6.+a,10,8.+b,6.+a,10,1.+a,3.+b,10,3.+b,5.,10,5.,3.+b,10,6.+a,5.,10,8.+b,3.+b,10,3.+b,1.+a,10,6.+a,1.+a,3.+b,0,1.+a,3.+b,0,5.,6.+a,0,1.+a,5.,0,3.+b,6.+a,0,5.,5.,0,6.+a,8.+b,0,3.+b,8.+b,0,6.+a,6.+a,10,1.+a,8.+b,10,3.+b,6.+a,10,5.,8.+b,10,6.+a,3.+b,10,1.+a,5.,10,3.+b,3.+b,10,5.,5.,10,6.+a,3.+b,1.+a,0,5.,3.+b,0,6.+a,1.+a,0,8.+b,3.+b,0,3.+b,5.,0,5.,6.+a,0,6.+a,5.,0,8.+b,6.+a,0,3.+b,8.+b,0,6.+a,8.+b,0,3.+b,1.+a,6.+a,6.+a,1.+a,6.+a,5.,3.+b,6.+a,8.+b,3.+b,6.+a,3.+b,5.,6.+a,6.+a,5.,6.+a,5.,6.+a,6.+a,8.+b,6.+a,6.+a,3.+b,8.+b,6.+a,6.+a,8.+b,6.+a,3.+b,3.+b,5,3.+b,1.+a,3.+b,6.+a,3.+b,5.,6.+a,1.+a,3.+b,5.,3.+b,3.+b,8.+b,3.+b,3.+b,3.+b,6.+a,5.,3.+b,5.,3.+b,6.+a,6.+a,5.,6.+a,5.,3.+b,5.,6.+a,3.+b,8.+b,6.+a,3.+b,3.+b,8.+b,3.+b,6.+a,8.+b,3.+b,3.+b,3.+b,1.+a,6.+a,3.+b,1.+a,3.+b,6.+a,1.+a,6.+a,6.+a,1.+a],111,3)
++        conn=DataArrayInt([30,17,28,32,16,19,29,33,18,83,93,94,58,84,95,96,61,62,85,97,60,30,19,29,33,18,3,12,14,2,84,95,96,61,47,51,50,37,64,86,98,63,30,28,30,34,32,29,31,35,33,87,99,100,93,88,101,102,95,85,89,103,97,30,29,31,35,33,12,13,15,14,88,101,102,95,48,53,52,51,86,90,104,98,30,30,23,22,34,31,21,20,35,91,71,105,99,92,67,106,101,89,72,70,103,30,31,21,20,35,13,5,4,15,92,67,106,101,49,39,54,53,90,68,66,104,30,16,32,24,8,18,33,25,9,94,107,73,57,96,108,75,59,60,97,74,43,30,18,33,25,9,2,14,6,0,96,108,75,59,50,55,40,36,63,98,76,44,30,32,34,26,24,33,35,27,25,100,109,77,107,102,110,79,108,97,103,78,74,30,33,35,27,25,14,15,7,6,102,110,79,108,52,56,41,55,98,104,80,76,30,34,22,10,26,35,20,11,27,105,69,81,109,106,65,82,110,103,70,45,78,30,35,20,11,27,15,4,1,7,106,65,82,110,54,38,42,56,104,66,46,80])
++        connI=DataArrayInt([0,21,42,63,84,105,126,147,168,189,210,231,252])
++        m=MEDCouplingUMesh("mesh",3)
++        m.setConnectivity(conn,connI,True)
++        m.setCoords(coo.deepCopy())# deep copy coo because next line is going to modify it, if it works normaly
++        m.attractSeg3MidPtsAroundNodes(0.1,DataArrayInt([33,35])) # ze call is here !
++        self.assertTrue(not m.getCoords().isEqual(coo,eps)) # some points have had their position changed...
++        ptsExpNotToBeModified=ptsExpToBeModified.buildComplement(len(coo))
++        self.assertTrue(m.getCoords()[ptsExpNotToBeModified].isEqual(coo[ptsExpNotToBeModified],eps))
++        self.assertTrue((m.getCoords()[ptsExpToBeModified]-coo[ptsExpToBeModified]).magnitude().isUniform(4./3.,1e-12))
++        ptsPosExp=DataArrayDouble([6.+a,3.+b,3.+a,6.+a,3.,3.+b,6.+b,3.+b,3.+b,7.,3.+b,3.+b,6.+a,6.+a,3.+a,6.+b,6.+a,3.+b,7.,6.+a,3.+b,6.+a,7.,3.+b,6.+a,3.+b,3.,6.+a,6.+a,3.],10,3)
++        self.assertTrue(m.getCoords()[ptsExpToBeModified].isEqual(ptsPosExp,1e-12))
++        pass
++    
+     pass
+ if __name__ == '__main__':
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingCommon.i MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingCommon.i
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingCommon.i   2018-04-19 17:04:36.733222643 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingCommon.i   2018-04-19 17:25:17.277788264 +0200
+@@ -1,4 +1,4 @@
+-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
++// Copyright (C) 2017  CEA/DEN, EDF R&D
+ //
+ // This library is free software; you can redistribute it and/or
+ // modify it under the terms of the GNU Lesser General Public
+@@ -16,9 +16,7 @@
+ //
+ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+ //
+-// Author : Anthony Geay (CEA/DEN)
+-
+-%module MEDCoupling
++// Author : Anthony Geay (EDF R&D)
+ #ifdef WITH_DOCSTRINGS
+ %include MEDCoupling_doc.i
+@@ -147,6 +145,18 @@
+ //$$$$$$$$$$$$$$$$$$
+ ////////////////////
++%typemap(out) MEDCoupling::MEDCouplingField*
++{
++  $result=convertField($1,$owner);
++}
++
++%typemap(out) MEDCouplingField*
++{
++  $result=convertField($1,$owner);
++}
++//$$$$$$$$$$$$$$$$$$
++
++////////////////////
+ %typemap(out) MEDCoupling::MEDCouplingMultiFields*
+ {
+   $result=convertMultiFields($1,$owner);
+@@ -188,6 +198,7 @@
+ %newobject MEDCoupling::MEDCouplingFieldDouble::MergeFields;
+ %newobject MEDCoupling::MEDCouplingFieldDouble::MeldFields;
+ %newobject MEDCoupling::MEDCouplingFieldDouble::convertToIntField;
++%newobject MEDCoupling::MEDCouplingFieldDouble::convertToFloatField;
+ %newobject MEDCoupling::MEDCouplingFieldDouble::doublyContractedProduct;
+ %newobject MEDCoupling::MEDCouplingFieldDouble::determinant;
+ %newobject MEDCoupling::MEDCouplingFieldDouble::eigenValues;
+@@ -448,6 +459,8 @@
+ %feature("unref") MEDCouplingFieldDiscretizationGaussNE "$this->decrRef();"
+ %feature("unref") MEDCouplingFieldDiscretizationKriging "$this->decrRef();"
+ %feature("unref") MEDCouplingFieldDouble "$this->decrRef();"
++%feature("unref") MEDCouplingFieldFloat "$this->decrRef();"
++%feature("unref") MEDCouplingFieldInt "$this->decrRef();"
+ %feature("unref") MEDCouplingMultiFields "$this->decrRef();"
+ %feature("unref") MEDCouplingFieldTemplate "$this->decrRef();"
+ %feature("unref") MEDCouplingMultiFields "$this->decrRef();"
+@@ -951,12 +964,12 @@
+           return self->checkTypeConsistencyAndContig(code,idsPerType);
+         }
+-        PyObject *splitProfilePerType(const DataArrayInt *profile) const throw(INTERP_KERNEL::Exception)
++        PyObject *splitProfilePerType(const DataArrayInt *profile, bool smartPflKiller=true) const throw(INTERP_KERNEL::Exception)
+         {
+           std::vector<int> code;
+           std::vector<DataArrayInt *> idsInPflPerType;
+           std::vector<DataArrayInt *> idsPerType;
+-          self->splitProfilePerType(profile,code,idsInPflPerType,idsPerType);
++          self->splitProfilePerType(profile,code,idsInPflPerType,idsPerType,smartPflKiller);
+           PyObject *ret=PyTuple_New(3);
+           //
+           if(code.size()%3!=0)
+@@ -1070,14 +1083,6 @@
+            self->resizeForUnserialization(tinyInfo,a1,a2,littleStrings);
+          }
+          
+-         PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception)
+-         {// put an empty dict in input to say to __new__ to call __init__...
+-           PyObject *ret(PyTuple_New(1));
+-           PyObject *ret0(PyDict_New());
+-           PyTuple_SetItem(ret,0,ret0);
+-           return ret;
+-         }
+-         
+          PyObject *__getstate__() const throw(INTERP_KERNEL::Exception)
+          {
+            PyObject *ret0(MEDCoupling_MEDCouplingMesh_getTinySerializationInformation(self));
+@@ -1221,6 +1226,9 @@
+     
+     void deletePack(const int i, const int j) throw(INTERP_KERNEL::Exception);
+     
++    void deleteSimplePack(const int i) throw(INTERP_KERNEL::Exception);
++    void deleteSimplePacks(const DataArrayInt* idx) throw(INTERP_KERNEL::Exception);
++    
+     %extend 
+     {
+       MEDCouplingSkyLineArray() throw(INTERP_KERNEL::Exception)
+@@ -1304,6 +1312,13 @@
+           self->replaceSimplePack(idx, vpack.data(), vpack.data()+vpack.size());
+         }
+         
++      void replaceSimplePacks(const DataArrayInt* idx, PyObject *listePacks) throw(INTERP_KERNEL::Exception)
++        {
++          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)
+         {
+           std::vector<int> vpack;
+@@ -1497,8 +1512,8 @@
+                DataArrayDoubleTuple *aa,*aa2;
+                std::vector<double> bb,bb2;
+                int sw;
+-               const char msg[]="Python wrap of MEDCouplingPointSet::findNodesOnLine : 1st paramater for point.";
+-               const char msg2[]="Python wrap of MEDCouplingPointSet::findNodesOnLine : 2nd paramater for vector.";
++               const char msg[]="Python wrap of MEDCouplingPointSet::findNodesOnLine : 1st parameter for point.";
++               const char msg2[]="Python wrap of MEDCouplingPointSet::findNodesOnLine : 2nd parameter for vector.";
+                const double *p=convertObjToPossibleCpp5_Safe(pt,sw,val,a,aa,bb,msg,1,spaceDim,true);
+                const double *v=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
+                std::vector<int> nodes;
+@@ -1516,8 +1531,8 @@
+                DataArrayDoubleTuple *aa,*aa2;
+                std::vector<double> bb,bb2;
+                int sw;
+-               const char msg[]="Python wrap of MEDCouplingPointSet::findNodesOnPlane : 1st paramater for point.";
+-               const char msg2[]="Python wrap of MEDCouplingPointSet::findNodesOnPlane : 2nd paramater for vector.";
++               const char msg[]="Python wrap of MEDCouplingPointSet::findNodesOnPlane : 1st parameter for point.";
++               const char msg2[]="Python wrap of MEDCouplingPointSet::findNodesOnPlane : 2nd parameter for vector.";
+                const double *p=convertObjToPossibleCpp5_Safe(pt,sw,val,a,aa,bb,msg,1,spaceDim,true);
+                const double *v=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
+                std::vector<int> nodes;
+@@ -1994,12 +2009,6 @@
+         return MEDCouplingUMesh::New(meshName,meshDim);
+       }
+-      // serialization
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCouplingUMesh");
+-      }
+-
+       std::string __str__() const throw(INTERP_KERNEL::Exception)
+       {
+         return self->simpleRepr();
+@@ -2380,6 +2389,14 @@
+           }
+       }
++      void attractSeg3MidPtsAroundNodes(double ratio, PyObject *nodeIds) throw(INTERP_KERNEL::Exception)
++      {
++        int szArr,sw,iTypppArr;
++        std::vector<int> stdvecTyyppArr;
++        const int *nodeIdsPtr(convertIntStarLikePyObjToCppIntStar(nodeIds,sw,szArr,iTypppArr,stdvecTyyppArr));
++        self->attractSeg3MidPtsAroundNodes(ratio,nodeIdsPtr,nodeIdsPtr+szArr);
++      }
++
+       PyObject *getLevArrPerCellTypes(PyObject *li) const throw(INTERP_KERNEL::Exception)
+       {
+         int sz;
+@@ -2924,8 +2941,8 @@
+         DataArrayDoubleTuple *aa,*aa2;
+         std::vector<double> bb,bb2;
+         int sw;
+-        const char msg[]="Python wrap of MEDCouplingUMesh::buildSlice3D : 1st paramater for origin.";
+-        const char msg2[]="Python wrap of MEDCouplingUMesh::buildSlice3D : 2nd paramater for vector.";
++        const char msg[]="Python wrap of MEDCouplingUMesh::buildSlice3D : 1st parameter for origin.";
++        const char msg2[]="Python wrap of MEDCouplingUMesh::buildSlice3D : 2nd parameter for vector.";
+         const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true);
+         const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
+         //
+@@ -2947,8 +2964,8 @@
+         DataArrayDoubleTuple *aa,*aa2;
+         std::vector<double> bb,bb2;
+         int sw;
+-        const char msg[]="Python wrap of MEDCouplingUMesh::buildSlice3DSurf : 1st paramater for origin.";
+-        const char msg2[]="Python wrap of MEDCouplingUMesh::buildSlice3DSurf : 2nd paramater for vector.";
++        const char msg[]="Python wrap of MEDCouplingUMesh::buildSlice3DSurf : 1st parameter for origin.";
++        const char msg2[]="Python wrap of MEDCouplingUMesh::buildSlice3DSurf : 2nd parameter for vector.";
+         const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true);
+         const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
+         //
+@@ -2967,8 +2984,8 @@
+         DataArrayDoubleTuple *aa,*aa2;
+         std::vector<double> bb,bb2;
+         int sw;
+-        const char msg[]="Python wrap of MEDCouplingUMesh::clipSingle3DCellByPlane : 1st paramater for origin.";
+-        const char msg2[]="Python wrap of MEDCouplingUMesh::clipSingle3DCellByPlane : 2nd paramater for vector.";
++        const char msg[]="Python wrap of MEDCouplingUMesh::clipSingle3DCellByPlane : 1st parameter for origin.";
++        const char msg2[]="Python wrap of MEDCouplingUMesh::clipSingle3DCellByPlane : 2nd parameter for vector.";
+         const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,3,true);
+         const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,3,true);
+         MCAuto<MEDCouplingUMesh> ret(self->clipSingle3DCellByPlane(orig,vect,eps));
+@@ -2985,8 +3002,8 @@
+         DataArrayDoubleTuple *aa,*aa2;
+         std::vector<double> bb,bb2;
+         int sw;
+-        const char msg[]="Python wrap of MEDCouplingUMesh::getCellIdsCrossingPlane : 1st paramater for origin.";
+-        const char msg2[]="Python wrap of MEDCouplingUMesh::getCellIdsCrossingPlane : 2nd paramater for vector.";
++        const char msg[]="Python wrap of MEDCouplingUMesh::getCellIdsCrossingPlane : 1st parameter for origin.";
++        const char msg2[]="Python wrap of MEDCouplingUMesh::getCellIdsCrossingPlane : 2nd parameter for vector.";
+         const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true);
+         const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
+         return self->getCellIdsCrossingPlane(orig,vect,eps);
+@@ -3058,11 +3075,6 @@
+       {
+         return MEDCouplingMappedExtrudedMesh::New();
+       }
+-
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCouplingMappedExtrudedMesh");
+-      }
+       
+       std::string __str__() const throw(INTERP_KERNEL::Exception)
+       {
+@@ -3168,11 +3180,6 @@
+         return MEDCoupling1SGTUMesh::New(m);
+       }
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCoupling1SGTUMesh");
+-      }
+-
+       std::string __str__() const throw(INTERP_KERNEL::Exception)
+       {
+         return self->simpleRepr();
+@@ -3240,11 +3247,6 @@
+         return MEDCoupling1DGTUMesh::New(m);
+       }
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCoupling1DGTUMesh");
+-      }
+-
+       std::string __str__() const throw(INTERP_KERNEL::Exception)
+       {
+         return self->simpleRepr();
+@@ -3589,11 +3591,6 @@
+       {
+         return MEDCouplingCMesh::New(meshName);
+       }
+-      // serialization
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCouplingCMesh");
+-      }
+       std::string __str__() const throw(INTERP_KERNEL::Exception)
+       {
+         return self->simpleRepr();
+@@ -3633,10 +3630,6 @@
+       {
+         return MEDCouplingCurveLinearMesh::New(meshName);
+       }
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCouplingCurveLinearMesh");
+-      }
+       std::string __str__() const throw(INTERP_KERNEL::Exception) 
+       {
+         return self->simpleRepr();
+@@ -3714,11 +3707,6 @@
+         return MEDCoupling_MEDCouplingIMesh_New__SWIG_1(meshName,spaceDim,nodeStrct,origin,dxyz);
+       }
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDCouplingIMesh");
+-      }
+-
+       void setNodeStruct(PyObject *nodeStrct) throw(INTERP_KERNEL::Exception)
+       {
+         int sw,sz,val0;
+@@ -3810,8 +3798,6 @@
+   public:
+     virtual void checkConsistencyLight() const throw(INTERP_KERNEL::Exception);
+     virtual bool areCompatibleForMerge(const MEDCouplingField *other) const throw(INTERP_KERNEL::Exception);
+-    virtual bool isEqual(const MEDCouplingField *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception);
+-    virtual bool isEqualWithoutConsideringStr(const MEDCouplingField *other, double meshPrec, double valsPrec) 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);
+@@ -3857,18 +3843,6 @@
+         return convertIntArrToPyList3(ret);
+       }
+-      PyObject *isEqualIfNotWhy(const MEDCouplingField *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception)
+-      {
+-        std::string ret1;
+-        bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1);
+-        PyObject *ret=PyTuple_New(2);
+-        PyObject *ret0Py=ret0?Py_True:Py_False;
+-        Py_XINCREF(ret0Py);
+-        PyTuple_SetItem(ret,0,ret0Py);
+-        PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str()));
+-        return ret;
+-      }
+-
+       PyObject *buildSubMeshData(PyObject *li) const throw(INTERP_KERNEL::Exception)
+       {
+         DataArrayInt *ret1=0;
+@@ -3971,6 +3945,8 @@
+     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);
+     %extend
+        {
+          MEDCouplingFieldTemplate(const MEDCouplingFieldDouble& f) throw(INTERP_KERNEL::Exception)
+@@ -4004,16 +3980,45 @@
+            self->reprQuickOverview(oss);
+            return oss.str();
+          }
++
++         PyObject *isEqualIfNotWhy(const MEDCouplingFieldTemplate *other, double meshPrec) const throw(INTERP_KERNEL::Exception)
++         {
++           std::string ret1;
++           bool ret0=self->isEqualIfNotWhy(other,meshPrec,ret1);
++           PyObject *ret=PyTuple_New(2);
++           PyObject *ret0Py=ret0?Py_True:Py_False;
++           Py_XINCREF(ret0Py);
++           PyTuple_SetItem(ret,0,ret0Py);
++           PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str()));
++           return ret;
++         }
+        }
+   };
++
++  template<class T>
++ class MEDCouplingFieldT : public MEDCoupling::MEDCouplingField
++  {
++  public:
++    TypeOfTimeDiscretization getTimeDiscretization() const throw(INTERP_KERNEL::Exception);
++  protected:
++    MEDCouplingFieldT();
++    ~MEDCouplingFieldT();
++  };
++
++  %template(MEDCouplingFieldTdouble) MEDCoupling::MEDCouplingFieldT<double>;
++  %template(MEDCouplingFieldTfloat) MEDCoupling::MEDCouplingFieldT<float>;
++  %template(MEDCouplingFieldTint) MEDCoupling::MEDCouplingFieldT<int>;
+   
+   class MEDCouplingFieldInt;
++  class MEDCouplingFieldFloat;
+   
+-  class MEDCouplingFieldDouble : public MEDCoupling::MEDCouplingField
++  class MEDCouplingFieldDouble : public MEDCouplingFieldT<double>
+   {
+   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);
+     void setTimeUnit(const std::string& unit);
+     std::string getTimeUnit() const;
+     void synchronizeTimeWithSupport() throw(INTERP_KERNEL::Exception);
+@@ -4023,13 +4028,13 @@
+     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);
+     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);
+-    TypeOfTimeDiscretization getTimeDiscretization() 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);
+@@ -4130,6 +4135,18 @@
+         self->reprQuickOverview(oss);
+         return oss.str();
+       }
++
++      PyObject *isEqualIfNotWhy(const MEDCouplingFieldDouble *other, double meshPrec, double valsPrec) const throw(INTERP_KERNEL::Exception)
++      {
++        std::string ret1;
++        bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1);
++        PyObject *ret=PyTuple_New(2);
++        PyObject *ret0Py=ret0?Py_True:Py_False;
++        Py_XINCREF(ret0Py);
++        PyTuple_SetItem(ret,0,ret0Py);
++        PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str()));
++        return ret;
++      }
+       
+       MEDCouplingFieldDouble *voronoize(double eps) const throw(INTERP_KERNEL::Exception)
+       {
+@@ -4426,8 +4443,8 @@
+         std::vector<double> bb,bb2;
+         int sw;
+         int spaceDim=3;
+-        const char msg[]="Python wrap of MEDCouplingFieldDouble::extractSlice3D : 1st paramater for origin.";
+-        const char msg2[]="Python wrap of MEDCouplingFieldDouble::extractSlice3D : 2nd paramater for vector.";
++        const char msg[]="Python wrap of MEDCouplingFieldDouble::extractSlice3D : 1st parameter for origin.";
++        const char msg2[]="Python wrap of MEDCouplingFieldDouble::extractSlice3D : 2nd parameter for vector.";
+         const double *orig=convertObjToPossibleCpp5_Safe(origin,sw,val,a,aa,bb,msg,1,spaceDim,true);
+         const double *vect=convertObjToPossibleCpp5_Safe(vec,sw,val2,a2,aa2,bb2,msg2,1,spaceDim,true);
+         //
+@@ -5028,16 +5045,6 @@
+         return field_serialize<double>(self);
+       }
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInputGeneral<SinglePyObjExpectToBeAListOfSz2>(cls,args,"MEDCouplingFieldDouble");
+-      }
+-
+-      PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception)
+-      {// put an empty dict in input to say to __new__ to call __init__...
+-        return field__getnewargs__<MEDCouplingFieldDouble>(self);
+-      }
+-
+       PyObject *__getstate__() const throw(INTERP_KERNEL::Exception)
+       {
+         return field__getstate__<MEDCouplingFieldDouble>(self,MEDCoupling_MEDCouplingFieldDouble_getTinySerializationInformation,MEDCoupling_MEDCouplingFieldDouble_serialize);
+@@ -5207,11 +5214,13 @@
+        }
+   };
+-  class MEDCouplingFieldInt : public MEDCouplingField
++  class MEDCouplingFieldInt : public MEDCouplingFieldT<int>
+   {
+   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);
+@@ -5232,6 +5241,18 @@
+         return MEDCouplingFieldInt::New(ft,td);
+       }
++      PyObject *isEqualIfNotWhy(const MEDCouplingFieldInt *other, double meshPrec, int valsPrec) const throw(INTERP_KERNEL::Exception)
++      {
++        std::string ret1;
++        bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1);
++        PyObject *ret=PyTuple_New(2);
++        PyObject *ret0Py=ret0?Py_True:Py_False;
++        Py_XINCREF(ret0Py);
++        PyTuple_SetItem(ret,0,ret0Py);
++        PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str()));
++        return ret;
++      }
++      
+       std::string __str__() const throw(INTERP_KERNEL::Exception)
+       {
+         return self->simpleRepr();
+@@ -5283,16 +5304,6 @@
+         return field_serialize<int>(self);
+       }
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInputGeneral<SinglePyObjExpectToBeAListOfSz2>(cls,args,"MEDCouplingFieldInt");
+-      }
+-
+-      PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception)
+-      {// put an empty dict in input to say to __new__ to call __init__...
+-        return field__getnewargs__<MEDCouplingFieldInt>(self);
+-      }
+-
+       PyObject *__getstate__() const throw(INTERP_KERNEL::Exception)
+       {
+         return field__getstate__<MEDCouplingFieldInt>(self,MEDCoupling_MEDCouplingFieldInt_getTinySerializationInformation,MEDCoupling_MEDCouplingFieldInt_serialize);
+@@ -5305,11 +5316,13 @@
+     }
+   };
+-  class MEDCouplingFieldFloat : public MEDCouplingField
++  class MEDCouplingFieldFloat : public MEDCouplingFieldT<float>
+   {
+   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);
+@@ -5330,6 +5343,18 @@
+         return MEDCouplingFieldFloat::New(ft,td);
+       }
++      PyObject *isEqualIfNotWhy(const MEDCouplingFieldFloat *other, double meshPrec, float valsPrec) const throw(INTERP_KERNEL::Exception)
++      {
++        std::string ret1;
++        bool ret0=self->isEqualIfNotWhy(other,meshPrec,valsPrec,ret1);
++        PyObject *ret=PyTuple_New(2);
++        PyObject *ret0Py=ret0?Py_True:Py_False;
++        Py_XINCREF(ret0Py);
++        PyTuple_SetItem(ret,0,ret0Py);
++        PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str()));
++        return ret;
++      }
++
+       std::string __str__() const throw(INTERP_KERNEL::Exception)
+       {
+         return self->simpleRepr();
+@@ -5380,16 +5405,6 @@
+       {
+         return field_serialize<float>(self);
+       }
+-        
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInputGeneral<SinglePyObjExpectToBeAListOfSz2>(cls,args,"MEDCouplingFieldFloat");
+-      }
+-      
+-      PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception)
+-      {// put an empty dict in input to say to __new__ to call __init__...
+-        return field__getnewargs__<MEDCouplingFieldFloat>(self);
+-      }
+       
+       PyObject *__getstate__() const throw(INTERP_KERNEL::Exception)
+       {
+@@ -6000,6 +6015,35 @@
+ }
+ %pythoncode %{
++def MEDCouplingUMeshReduce(self):
++    return MEDCouplingStdReduceFunct,(MEDCouplingUMesh,((),(self.__getstate__()),))
++def MEDCouplingCMeshReduce(self):
++    return MEDCouplingStdReduceFunct,(MEDCouplingCMesh,((),(self.__getstate__()),))
++def MEDCouplingIMeshReduce(self):
++    return MEDCouplingStdReduceFunct,(MEDCouplingIMesh,((),(self.__getstate__()),))
++def MEDCouplingMappedExtrudedMeshReduce(self):
++    return MEDCouplingStdReduceFunct,(MEDCouplingMappedExtrudedMesh,((),(self.__getstate__()),))
++def MEDCouplingCurveLinearMeshReduce(self):
++    return MEDCouplingStdReduceFunct,(MEDCouplingCurveLinearMesh,((),(self.__getstate__()),))
++def MEDCoupling1SGTUMeshReduce(self):
++    return MEDCouplingStdReduceFunct,(MEDCoupling1SGTUMesh,((),(self.__getstate__()),))
++def MEDCoupling1DGTUMeshReduce(self):
++    return MEDCouplingStdReduceFunct,(MEDCoupling1DGTUMesh,((),(self.__getstate__()),))
++def MEDCouplingFieldDoubleReduce(self):
++    self.checkConsistencyLight()
++    d=(self.getTypeOfField(),self.getTimeDiscretization())
++    return MEDCouplingStdReduceFunct,(MEDCouplingFieldDouble,(d,(self.__getstate__()),))
++def MEDCouplingFieldIntReduce(self):
++    self.checkConsistencyLight()
++    d=(self.getTypeOfField(),self.getTimeDiscretization())
++    return MEDCouplingStdReduceFunct,(MEDCouplingFieldInt,(d,(self.__getstate__()),))
++def MEDCouplingFieldFloatReduce(self):
++    self.checkConsistencyLight()
++    d=(self.getTypeOfField(),self.getTimeDiscretization())
++    return MEDCouplingStdReduceFunct,(MEDCouplingFieldFloat,(d,(self.__getstate__()),))
++%}
++
++%pythoncode %{
+ import os
+ __filename=os.environ.get('PYTHONSTARTUP')
+ if __filename and os.path.isfile(__filename):
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingDataArrayTraits.hxx MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingDataArrayTraits.hxx
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingDataArrayTraits.hxx        2018-04-19 17:04:36.733222643 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingDataArrayTraits.hxx        2018-04-19 17:25:17.286788442 +0200
+@@ -37,7 +37,7 @@
+ #ifdef WITH_NUMPY
+ // specific DataArray deallocator callback. This deallocator is used both in the constructor of DataArray and in the toNumPyArr
+ // method. This dellocator uses weakref to determine if the linked numArr is still alive or not. If alive the ownership is given to it.
+-// if no more alive the "standart" DataArray deallocator is called.
++// if no more alive the "standard" DataArray deallocator is called.
+ void numarrdeal(void *pt, void *wron)
+ {
+   void **wronc=(void **)wron;
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingDataArrayTypemaps.i MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingDataArrayTypemaps.i
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingDataArrayTypemaps.i        2018-04-19 17:04:36.733222643 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingDataArrayTypemaps.i        2018-04-19 17:25:17.255787829 +0200
+@@ -1,4 +1,4 @@
+-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
++// Copyright (C) 2007-2017  CEA/DEN, EDF 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,7 +50,7 @@
+ }
+ /*!
+- * This method is an extention of PySlice_GetIndices but less
++ * This method is an extension of PySlice_GetIndices but less
+  * open than PySlice_GetIndicesEx that accepts too many situations.
+  */
+ void GetIndicesOfSlice(PyObject *slice, Py_ssize_t length, Py_ssize_t *start, Py_ssize_t *stop, Py_ssize_t *step, const char *msgInCaseOfFailure)
+@@ -236,27 +236,27 @@
+     /*
+      * Don't allow infinite chains of views, always set the base
+-     * to the first owner of the data.  
+-     * That is, either the first object which isn't an array, 
++     * to the first owner of the data.
++     * That is, either the first object which isn't an array,
+      * or the first object which owns its own data.
+      */
+     while (PyArray_Check(obj) && (PyObject *)arr != obj) {
+         PyArrayObject *obj_arr = (PyArrayObject *)obj;
+         PyObject *tmp;
+- 
++
+         /* If this array owns its own data, stop collapsing */
+-        if (PyArray_CHKFLAGS(obj_arr, MED_NUMPY_OWNDATA )) { 
++        if (PyArray_CHKFLAGS(obj_arr, MED_NUMPY_OWNDATA )) {
+             break;
+-        }   
++        }
+         tmp = PyArray_BASE(obj_arr);
+         /* If there's no base, stop collapsing */
+         if (tmp == NULL) {
+             break;
+         }
+-        /* Stop the collapse new base when the would not be of the same 
++        /* Stop the collapse new base when the would not be of the same
+          * type (i.e. different subclass).
+          */
+         if (Py_TYPE(tmp) != Py_TYPE(arr)) {
+@@ -293,7 +293,7 @@
+   MEDCoupling::MemArray<T>& mem=self->accessToMemArray();
+   if(nbComp==0)
+     {
+-      std::ostringstream oss; oss << MCDataStr << "::toNumPyArray : number of components of this is 0 ! Should be > 0 !"; 
++      std::ostringstream oss; oss << MCDataStr << "::toNumPyArray : number of components of this is 0 ! Should be > 0 !";
+       throw INTERP_KERNEL::Exception(oss.str().c_str());
+     }
+   int nbDims=nbComp==1?1:2;
+@@ -489,7 +489,7 @@
+       if(msg)
+         oss << msg;
+       else
+-        oss << "PyWrap convertPyObjectToStr : expect a sting like py object !";
++        oss << "PyWrap convertPyObjectToStr : expect a string like py object !";
+       throw INTERP_KERNEL::Exception(oss.str());
+     }
+   return ret;
+@@ -1394,7 +1394,7 @@
+     }
+   status=SWIG_ConvertPtr(value,&argp,SWIGTYPE_p_MEDCoupling__DataArrayIntTuple,0|0);
+   if(SWIG_IsOK(status))
+-    {  
++    {
+       daIntTuple=reinterpret_cast< MEDCoupling::DataArrayIntTuple * >(argp);
+       sw=4;
+       return ;
+@@ -1474,7 +1474,7 @@
+     }
+   status=SWIG_ConvertPtr(value,&argp,SWIGTYPE_p_MEDCoupling__DataArrayIntTuple,0|0);
+   if(SWIG_IsOK(status))
+-    {  
++    {
+       MEDCoupling::DataArrayIntTuple *daIntTuple=reinterpret_cast< MEDCoupling::DataArrayIntTuple * >(argp);
+       sw=4; sz=daIntTuple->getNumberOfCompo();
+       return daIntTuple->getConstPointer();
+@@ -1690,14 +1690,14 @@
+   void *argp;
+   int status=SWIG_ConvertPtr(value,&argp,ti_da,0|0);
+   if(SWIG_IsOK(status))
+-    {  
++    {
+       d=reinterpret_cast< typename MEDCoupling::Traits<T>::ArrayType * >(argp);
+       sw=2;
+       return ;
+     }
+   status=SWIG_ConvertPtr(value,&argp,ti_tuple,0|0);
+   if(SWIG_IsOK(status))
+-    {  
++    {
+       e=reinterpret_cast< typename MEDCoupling::Traits<T>::ArrayTuple * >(argp);
+       sw=3;
+       return ;
+@@ -1719,6 +1719,19 @@
+ }
+ /*!
++ * if value int -> cpp val sw=1
++ * if value double -> cpp val sw=1
++ * if value DataArrayDouble -> cpp DataArrayDouble sw=2
++ * if value DataArrayDoubleTuple -> cpp DataArrayDoubleTuple sw=3
++ * if value list[int,double] -> cpp std::vector<double> sw=4
++ * if value tuple[int,double] -> cpp std::vector<double> sw=4
++ */
++static void convertFloatStarLikePyObjToCpp_2(PyObject *value, int& sw, float& val, MEDCoupling::DataArrayFloat *&d, MEDCoupling::DataArrayFloatTuple *&e, std::vector<float>& f)
++{
++  convertFPStarLikePyObjToCpp_2<float>(value,sw,val,d,e,f,SWIGTYPE_p_MEDCoupling__DataArrayFloat,SWIGTYPE_p_MEDCoupling__DataArrayFloatTuple);
++}
++
++/*!
+  * if python int -> cpp int sw=1
+  * if python list[int] -> cpp vector<int> sw=2
+  * if python tuple[int] -> cpp vector<int> sw=2
+@@ -2068,7 +2081,7 @@
+       sw=1;
+       if(nbTuplesExpected*nbCompExpected!=1)
+         {
+-          std::ostringstream oss; oss << msg << "dimension expected to be " << nbTuplesExpected*nbCompExpected << " , and your data in input has dimension one (single PyFloat) !"; 
++          std::ostringstream oss; oss << msg << "dimension expected to be " << nbTuplesExpected*nbCompExpected << " , and your data in input has dimension one (single PyFloat) !";
+           throw INTERP_KERNEL::Exception(oss.str().c_str());
+         }
+       return &val;
+@@ -2079,7 +2092,7 @@
+       sw=1;
+       if(nbTuplesExpected*nbCompExpected!=1)
+         {
+-          std::ostringstream oss; oss << msg << "dimension expected to be " << nbTuplesExpected*nbCompExpected << " , and your data in input has dimension one (single PyInt) !"; 
++          std::ostringstream oss; oss << msg << "dimension expected to be " << nbTuplesExpected*nbCompExpected << " , and your data in input has dimension one (single PyInt) !";
+           throw INTERP_KERNEL::Exception(oss.str().c_str());
+         }
+       return &val;
+@@ -2099,7 +2112,7 @@
+   void *argp;
+   int status=SWIG_ConvertPtr(value,&argp,SWIGTYPE_p_MEDCoupling__DataArrayDouble,0|0);
+   if(SWIG_IsOK(status))
+-    {  
++    {
+       d=reinterpret_cast< MEDCoupling::DataArrayDouble * >(argp);
+       sw=2;
+       if(d)
+@@ -2135,7 +2148,7 @@
+     }
+   status=SWIG_ConvertPtr(value,&argp,SWIGTYPE_p_MEDCoupling__DataArrayDoubleTuple,0|0);
+   if(SWIG_IsOK(status))
+-    {  
++    {
+       e=reinterpret_cast< MEDCoupling::DataArrayDoubleTuple * >(argp);
+       sw=3;
+       if(e->getNumberOfCompo()==nbCompExpected)
+@@ -2144,7 +2157,7 @@
+             return e->getConstPointer();
+           else
+             {
+-              std::ostringstream oss; oss << msg << "nb of tuples expected to be " << nbTuplesExpected << " , and input DataArrayDoubleTuple has always one tuple by contruction !";
++              std::ostringstream oss; oss << msg << "nb of tuples expected to be " << nbTuplesExpected << " , and input DataArrayDoubleTuple has always one tuple by construction !";
+               throw INTERP_KERNEL::Exception(oss.str().c_str());
+             }
+         }
+@@ -2175,7 +2188,7 @@
+       sw=1;
+       if(nbCompExpected!=1)
+         {
+-          std::ostringstream oss; oss << msg << "dimension expected to be " << nbCompExpected << " , and your data in input has dimension one (single PyFloat) !"; 
++          std::ostringstream oss; oss << msg << "dimension expected to be " << nbCompExpected << " , and your data in input has dimension one (single PyFloat) !";
+           throw INTERP_KERNEL::Exception(oss.str().c_str());
+         }
+       nbTuples=1;
+@@ -2187,7 +2200,7 @@
+       sw=1;
+       if(nbCompExpected!=1)
+         {
+-          std::ostringstream oss; oss << msg << "dimension expected to be " << nbCompExpected << " , and your data in input has dimension one (single PyInt) !"; 
++          std::ostringstream oss; oss << msg << "dimension expected to be " << nbCompExpected << " , and your data in input has dimension one (single PyInt) !";
+           throw INTERP_KERNEL::Exception(oss.str().c_str());
+         }
+       nbTuples=1;
+@@ -2213,7 +2226,7 @@
+       sw=4;
+       if(size%nbCompExpected!=0)
+         {
+-          std::ostringstream oss; oss << msg << "dimension expected to be a multiple of " << nbCompExpected << " , and your data in input has dimension " << f.size() << " !"; 
++          std::ostringstream oss; oss << msg << "dimension expected to be a multiple of " << nbCompExpected << " , and your data in input has dimension " << f.size() << " !";
+           throw INTERP_KERNEL::Exception(oss.str().c_str());
+         }
+       nbTuples=size/nbCompExpected;
+@@ -2239,7 +2252,7 @@
+       sw=4;
+       if(size%nbCompExpected!=0)
+         {
+-          std::ostringstream oss; oss << msg << "dimension expected to be a multiple of " << nbCompExpected << " , and your data in input has dimension " << f.size() << " !"; 
++          std::ostringstream oss; oss << msg << "dimension expected to be a multiple of " << nbCompExpected << " , and your data in input has dimension " << f.size() << " !";
+           throw INTERP_KERNEL::Exception(oss.str().c_str());
+         }
+       nbTuples=size/nbCompExpected;
+@@ -2248,7 +2261,7 @@
+   void *argp;
+   int status=SWIG_ConvertPtr(value,&argp,SWIGTYPE_p_MEDCoupling__DataArrayDouble,0|0);
+   if(SWIG_IsOK(status))
+-    {  
++    {
+       d=reinterpret_cast< MEDCoupling::DataArrayDouble * >(argp);
+       sw=2;
+       if(d)
+@@ -2277,7 +2290,7 @@
+     }
+   status=SWIG_ConvertPtr(value,&argp,SWIGTYPE_p_MEDCoupling__DataArrayDoubleTuple,0|0);
+   if(SWIG_IsOK(status))
+-    {  
++    {
+       e=reinterpret_cast< MEDCoupling::DataArrayDoubleTuple * >(argp);
+       sw=3;
+       if(e)
+@@ -2380,7 +2393,7 @@
+   void *argp;
+   int status=SWIG_ConvertPtr(value,&argp,SWIGTYPE_p_MEDCoupling__DataArrayDouble,0|0);
+   if(SWIG_IsOK(status))
+-    {  
++    {
+       d=reinterpret_cast< MEDCoupling::DataArrayDouble * >(argp);
+       sw=2;
+       if(d)
+@@ -2409,7 +2422,7 @@
+     }
+   status=SWIG_ConvertPtr(value,&argp,SWIGTYPE_p_MEDCoupling__DataArrayDoubleTuple,0|0);
+   if(SWIG_IsOK(status))
+-    {  
++    {
+       e=reinterpret_cast< MEDCoupling::DataArrayDoubleTuple * >(argp);
+       sw=3;
+       if(e)
+@@ -2456,114 +2469,6 @@
+   return reinterpret_cast< MEDCoupling::DataArray * >(aBasePtrVS);
+ }
+-static PyObject *NewMethWrapCallInitOnlyIfEmptyDictInInput(PyObject *cls, PyObject *args, const char *clsName)
+-{
+-  if(!PyTuple_Check(args))
+-    {
+-      std::ostringstream oss; oss << clsName << ".__new__ : the args in input is expected to be a tuple !";
+-      throw INTERP_KERNEL::Exception(oss.str().c_str());
+-    }
+-  PyObject *builtinsd(PyEval_GetBuiltins());//borrowed
+-  PyObject *obj(PyDict_GetItemString(builtinsd,"object"));//borrowed
+-  PyObject *selfMeth(PyObject_GetAttrString(obj,"__new__"));
+-  //
+-  PyObject *tmp0(PyTuple_New(1));
+-  PyTuple_SetItem(tmp0,0,cls); Py_XINCREF(cls);
+-  PyObject *instance(PyObject_CallObject(selfMeth,tmp0));
+-  Py_DECREF(tmp0);
+-  Py_DECREF(selfMeth);
+-  if(PyTuple_Size(args)==2 && PyDict_Check(PyTuple_GetItem(args,1)) && PyDict_Size(PyTuple_GetItem(args,1))==0 )
+-    {// NOT general case. only true if in unpickeling context ! call __init__. Because for all other cases, __init__ is called right after __new__ !
+-      PyObject *initMeth(PyObject_GetAttrString(instance,"__init__"));
+-      PyObject *tmp3(PyTuple_New(0));
+-      PyObject *tmp2(PyObject_CallObject(initMeth,tmp3));
+-      Py_XDECREF(tmp2);
+-      Py_DECREF(tmp3);
+-      Py_DECREF(initMeth);
+-    }
+-  return instance;
+-}
+-
+-template<class T>
+-static PyObject *NewMethWrapCallInitOnlyIfDictWithSingleEltInInputGeneral(PyObject *cls, PyObject *args, const char *clsName)
+-{
+-  if(!PyTuple_Check(args))
+-    {
+-      std::ostringstream oss; oss << clsName << ".__new__ : the args in input is expected to be a tuple !";
+-      throw INTERP_KERNEL::Exception(oss.str().c_str());
+-    }
+-  PyObject *builtinsd(PyEval_GetBuiltins());//borrowed
+-  PyObject *obj(PyDict_GetItemString(builtinsd,"object"));//borrowed
+-  PyObject *selfMeth(PyObject_GetAttrString(obj,"__new__"));
+-  //
+-  PyObject *tmp0(PyTuple_New(1));
+-  PyTuple_SetItem(tmp0,0,cls); Py_XINCREF(cls);
+-  PyObject *instance(PyObject_CallObject(selfMeth,tmp0));
+-  Py_DECREF(tmp0);
+-  Py_DECREF(selfMeth);
+-  if(PyTuple_Size(args)==2 && PyDict_Check(PyTuple_GetItem(args,1)) && PyDict_Size(PyTuple_GetItem(args,1))==1 )
+-    {// NOT general case. only true if in unpickeling context ! call __init__. Because for all other cases, __init__ is called right after __new__ !
+-      PyObject *initMeth(PyObject_GetAttrString(instance,"__init__"));
+-      PyObject *zeNumpyRepr(0);
+-      {
+-        PyObject *tmp1(PyInt_FromLong(0));
+-       zeNumpyRepr=PyDict_GetItem(PyTuple_GetItem(args,1),tmp1);//borrowed
+-        Py_DECREF(tmp1);
+-      }
+-      if(!zeNumpyRepr)
+-        {
+-          std::ostringstream oss; oss << clsName << ".__new__ : the args in input is expected to be a tuple !";
+-          throw INTERP_KERNEL::Exception(oss.str().c_str());
+-        }
+-      T tt;
+-      {
+-        PyObject *tmp3(0);
+-        try
+-          {
+-            tmp3=tt(zeNumpyRepr);
+-          }
+-        catch(INTERP_KERNEL::Exception& e)
+-          {
+-            std::ostringstream oss; oss << clsName << ".__new__ : Invalid type in input " << " : " << e.what();
+-            throw INTERP_KERNEL::Exception(oss.str());
+-          }
+-        {
+-          PyObject *tmp2(PyObject_CallObject(initMeth,tmp3));
+-          Py_XDECREF(tmp2);
+-        }
+-        Py_DECREF(tmp3);
+-      }
+-      Py_DECREF(initMeth);
+-    }
+-  return instance;
+-}
+-
+-struct SinglePyObjToBePutInATuple
+-{
+-  PyObject *operator()(PyObject *zeNumpyRepr)
+-  {
+-    PyObject *tmp3(PyTuple_New(1));
+-    PyTuple_SetItem(tmp3,0,zeNumpyRepr); Py_XINCREF(zeNumpyRepr);
+-    return tmp3;
+-  }
+-};
+-
+-struct SinglePyObjExpectToBeAListOfSz2
+-{
+-  PyObject *operator()(PyObject *uniqueElt)
+-  {
+-    if(!PyTuple_Check(uniqueElt) || PyTuple_Size(uniqueElt)!=2)
+-      throw INTERP_KERNEL::Exception("Not a tuple of size 2 !");
+-    Py_XINCREF(uniqueElt);
+-    return uniqueElt;
+-  }
+-};
+-
+-static PyObject *NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(PyObject *cls, PyObject *args, const char *clsName)
+-{
+-  return NewMethWrapCallInitOnlyIfDictWithSingleEltInInputGeneral<SinglePyObjToBePutInATuple>(cls,args,clsName);
+-}
+-
+ static PyObject *convertPartDefinition(MEDCoupling::PartDefinition *pd, int owner)
+ {
+   PyObject *ret=0;
+@@ -3127,6 +3032,83 @@
+     }
+ }
++bool isCSRMatrix(PyObject *m)
++{
++#if defined(WITH_NUMPY) && defined(WITH_SCIPY)
++  PyObject* pdict(PyDict_New());
++  PyDict_SetItemString(pdict, "__builtins__", PyEval_GetBuiltins());
++  PyObject *tmp(PyRun_String("from scipy.sparse import csr_matrix", Py_single_input, pdict, pdict));
++  if(!tmp)
++    throw INTERP_KERNEL::Exception("Problem during loading csr_matrix in scipy.sparse ! Is Scipy module available in present ?");
++  PyObject *csrMatrixCls=PyDict_GetItemString(pdict,"csr_matrix");
++  if(!csrMatrixCls)
++    throw INTERP_KERNEL::Exception("csr_matrix not found in scipy.sparse ! Is Scipy module available in present ?");
++  bool ret(PyObject_IsInstance(m,csrMatrixCls));
++  Py_DECREF(pdict); Py_XDECREF(tmp);
++  return ret;
++#else
++  return false;
++#endif
++}
++
++void convertCSR_MCDataToVectMapIntDouble(const MEDCoupling::DataArrayInt *indptrPtr, const MEDCoupling::DataArrayInt *indicesPtr, const MEDCoupling::DataArrayDouble *dataPtr, std::vector<std::map<int,double> >& mCpp)
++{
++#if __cplusplus >= 201103L
++  auto nbOfRows(indptrPtr->getNumberOfTuples()-1);
++  if(nbOfRows<0)
++    throw INTERP_KERNEL::Exception("pywrap of MEDCouplingRemapper::setMatrix : input CSR matrix looks bad regarding indptr array !");
++  mCpp.resize(nbOfRows);
++  auto indPtrCPtr(indptrPtr->begin());
++  auto indicesCPtr(indicesPtr->begin());
++  auto dataCPtr(dataPtr->begin());
++  for(auto i=0;i<nbOfRows;i++)
++    {
++      auto& line(mCpp[i]);
++      for(auto j=indPtrCPtr[i];j<indPtrCPtr[i+1];j++)
++        {
++          line[indicesCPtr[j]]=dataCPtr[j];
++        }
++    }
++#else
++  throw INTERP_KERNEL::Exception("Breaking news : 10% off for C++11 compiler :)");
++#endif
++}
++
++void convertToVectMapIntDouble(PyObject *pyobj, std::vector<std::map<int,double> >& mCpp)
++{
++  if(!PyList_Check(pyobj))
++    throw INTERP_KERNEL::Exception("convertToVectMapIntDouble : input is not a python list !");
++  mCpp.clear();
++  Py_ssize_t sz(PyList_Size(pyobj));
++  mCpp.resize(sz);
++  for(Py_ssize_t i=0;i<sz;i++)
++    {
++      PyObject *elt(PyList_GetItem(pyobj,i));
++      if(!PyDict_Check(elt))
++        {
++          std::ostringstream oss; oss << "convertToVectMapIntDouble : at pos # " << i << " of pylist a dict is exepect !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      PyObject *key, *value;
++      Py_ssize_t pos(0);
++      std::map<int,double>& mapCpp(mCpp[i]);
++      while(PyDict_Next(elt,&pos,&key,&value))
++        {
++          if(!PyInt_Check(key))
++            {
++              std::ostringstream oss; oss << "convertToVectMapIntDouble : at pos # " << i << " of pylist the dict contains at pos " << pos << " a key not mappable to pyint !";
++              throw INTERP_KERNEL::Exception(oss.str());
++            }
++          if(!PyFloat_Check(value))
++            {
++              std::ostringstream oss; oss << "convertToVectMapIntDouble : at pos # " << i << " of pylist the dict contains at pos " << pos << " the value not mappable to pyfloat !";
++              throw INTERP_KERNEL::Exception(oss.str());
++            }
++          mapCpp[(int)PyInt_AS_LONG(key)]=PyFloat_AS_DOUBLE(value);
++        }
++    }
++}
++
+ template<class T>
+ PyObject *DataArrayT_imul__internal(PyObject *trueSelf, PyObject *obj, typename MEDCoupling::Traits<T>::ArrayType *self, swig_type_info *ti_da, swig_type_info *ti_tuple)
+ {
+@@ -3257,7 +3239,7 @@
+       throw INTERP_KERNEL::Exception(msg);
+     }
+ }
+-  
++
+ template<class T>
+ PyObject *DataArrayT_isub__internal(PyObject *trueSelf, PyObject *obj, typename MEDCoupling::Traits<T>::ArrayType *self, swig_type_info *ti_da, swig_type_info *ti_tuple)
+ {
+@@ -3324,9 +3306,11 @@
+ swig_type_info *SWIGTITraits<float>::TI_TUPLE=NULL;//unfortunately SWIGTYPE_p_MEDCoupling__DataArrayFloat is null when called here ! Postpone initialization at inlined initializeMe()
+ swig_type_info *SWIGTITraits<int>::TI_TUPLE=NULL;//unfortunately SWIGTYPE_p_MEDCoupling__DataArrayFloat is null when called here ! Postpone initialization at inlined initializeMe()
++#ifdef WITH_NUMPY
+ PyTypeObject *NPYTraits<double>::NPYFunc=&PyCallBackDataArrayDouble_RefType;
+ PyTypeObject *NPYTraits<float>::NPYFunc=&PyCallBackDataArrayFloat_RefType;
++#endif
+ template<class T>
+ typename MEDCoupling::Traits<T>::ArrayType *DataArrayT__setitem__(typename MEDCoupling::Traits<T>::ArrayType *self, PyObject *obj, PyObject *value)
+@@ -3364,4 +3348,37 @@
+   return DataArrayT_isub__internal<T>(trueSelf,obj,self,SWIGTITraits<T>::TI,SWIGTITraits<T>::TI_TUPLE);
+ }
++template<class T>
++typename MEDCoupling::Traits<T>::ArrayType *DataArrayFPT_rmul(typename MEDCoupling::Traits<T>::ArrayType *self, PyObject *obj)
++{
++  const char msg[]="Unexpected situation in __rmul__ !";
++  T val;
++  typename MEDCoupling::Traits<T>::ArrayType *a;
++  typename MEDCoupling::Traits<T>::ArrayTuple *aa;
++  std::vector<T> bb;
++  int sw;
++  convertFPStarLikePyObjToCpp_2<T>(obj,sw,val,a,aa,bb,SWIGTITraits<T>::TI,SWIGTITraits<T>::TI_TUPLE);
++  switch(sw)
++    {
++    case 1:
++      {
++        typename MEDCoupling::MCAuto<typename MEDCoupling::Traits<T>::ArrayType> ret(self->deepCopy());
++        ret->applyLin(val,0.);
++        return ret.retn();
++      }
++    case 3:
++      {
++        typename MEDCoupling::MCAuto<typename MEDCoupling::Traits<T>::ArrayType> aaa(aa->buildDA(1,self->getNumberOfComponents()));
++        return MEDCoupling::Traits<T>::ArrayType::Multiply(self,aaa);
++      }
++    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());
++        return MEDCoupling::Traits<T>::ArrayType::Multiply(self,aaa);
++      }
++    default:
++      throw INTERP_KERNEL::Exception(msg);
++    }
++}
++
+ #endif
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyc MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyc
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyc    1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyc    2018-04-19 17:25:17.266788047 +0200
+@@ -0,0 +1,271 @@
++\ 3ó\r
++\18;ÕZc\0\0\0\0\0\0\0\0\ 3\0\0\0@\0\0\0s!\0\0\0d\0\0d\ 1\0l\0\0Td\ 2\0d\ 5\0d\ 3\0\84\0\0\83\0\0YZ\ 1\0d\ 4\0S(\ 6\0\0\0iÿÿÿÿ(\ 1\0\0\0t\ 1\0\0\0*t\16\0\0\0MEDCouplingDataForTestc\0\0\0\0\0\0\0\0\ 2\0\0\0B\0\0\0s~\ 2\0\0e\0\0Z\ 1\0d\0\0\84\0\0Z\ 2\0d\ 1\0\84\0\0Z\ 3\0d\ 2\0\84\0\0Z\ 4\0d\ 3\0\84\0\0Z\ 5\0d\ 4\0\84\0\0Z\ 6\0d\ 5\0\84\0\0Z\a\0d\ 6\0\84\0\0Z\b\0d\a\0\84\0\0\0d\b\0\84\0\0Z
++\0d    \0\84\0\0Z\v\0d
++\0\84\0\0Z\f\0d\v\0\84\0\0Z\r\0d\f\0\84\0\0Z\ e\0d\r\0\84\0\0Z\ f\0d\ e\0\84\0\0Z\10\0d\ f\0\84\0\0Z\11\0d\10\0\84\0\0Z\12\0d\11\0\84\0\0Z\13\0d\12\0\84\0\0Z\14\0d\13\0\84\0\0Z\15\0d\14\0\84\0\0Z\16\0d\15\0\84\0\0Z\17\0d\16\0\84\0\0Z\18\0d\17\0\84\0\0Z\19\0d\18\0\84\0\0Z\1a\0d\19\0\84\0\0Z\e\0d\1a\0\84\0\0Z\1c\0d\e\0\84\0\0Z\1d\0d\1c\0\84\0\0Z\1e\0d\1d\0\84\0\0Z\1f\0\0e\ 2\0\83\ 1\0Z\ 2\0\0e\ 3\0\83\ 1\0Z\ 3\0\0e\ 4\0\83\ 1\0Z\ 4\0\0e\ 5\0\83\ 1\0Z\ 5\0\0e\ 6\0\83\ 1\0Z\ 6\0\0e\a\0\83\ 1\0Z\a\0\0e\b\0\83\ 1\0Z\b\0\0e    \0\83\ 1\0Z   \0\0e
++\0\83\ 1\0Z
++\0\0e\v\0\83\ 1\0Z\v\0\0e\f\0\83\ 1\0Z\f\0\0e\r\0\83\ 1\0Z\r\0\0e\ e\0\83\ 1\0Z\ e\0\0e\ f\0\83\ 1\0Z\ f\0\0e\10\0\83\ 1\0Z\10\0\0e\11\0\83\ 1\0Z\11\0\0e\12\0\83\ 1\0Z\12\0\0e\13\0\83\ 1\0Z\13\0\0e\14\0\83\ 1\0Z\14\0\0e\15\0\83\ 1\0Z\15\0\0e\16\0\83\ 1\0Z\16\0\0e\17\0\83\ 1\0Z\17\0\0e\18\0\83\ 1\0Z\18\0\0e\19\0\83\ 1\0Z\19\0\0e\1a\0\83\ 1\0Z\1a\0\0e\e\0\83\ 1\0Z\e\0\0e\1c\0\83\ 1\0Z\1c\0\0e\1d\0\83\ 1\0Z\1d\0\0e\1e\0\83\ 1\0Z\1e\0\0e\1f\0\83\ 1\0Z\1f\0RS(\1e\0\0\0c\ 1\0\0\0\ 5\0\0\0\12\0\0\0C\0\0\0sZ\ 1\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0g\12\0}\ 1\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\a\0d\ 6\0d\b\0d\ 6\0d       \0d\b\0d
++\0d\v\0d\ 6\0d\ 5\0d\v\0d\f\0d     \0d\ 6\0g\12\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d\b\0\83\ 1\0\ 1|\ 3\0j\ 3\0d      \0\83\ 1\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 6\0|\ 2\0d\ 4\0d\ 6\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 6\0d\ 5\0|\ 2\0d\ 6\0d\v\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 6\0d\ 5\0|\ 2\0d\v\0d\r\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 6\0|\ 2\0d\r\0d\ e\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 6\0|\ 2\0d\ e\0d\ f\0!\83\ 3\0\ 1|\ 3\0j\a\0\83\0\0\ 1t\b\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j       \0|\ 1\0d\10\0d\b\0\83\ 3\0\ 1|\ 3\0j
++\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\11\0\0\0Ng333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?i\0\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i
++\0\0\0i\ e\0\0\0i\12\0\0\0i        \0\0\0(\v\0\0\0t\10\0\0\0MEDCouplingUMesht\ 3\0\0\0Newt\10\0\0\0setMeshDimensiont\r\0\0\0allocateCellst\ e\0\0\0insertNextCellt
++\0\0\0NORM_QUAD4t        \0\0\0NORM_TRI3t\14\0\0\0finishInsertingCellst\ f\0\0\0DataArrayDoublet      \0\0\0setValuest   \0\0\0setCoords(\ 5\0\0\0t\ 3\0\0\0clst\f\0\0\0targetCoordst
++\0\0\0targetConnt
++\0\0\0targetMesht\b\0\0\0myCoords(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build2DTargetMesh_1\18\0\0\0s\1e\0\0\0\0\ 1<\ 1<\ 1\f\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0\b\0\0\0C\0\0\0\0\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0g\b\0}\ 1\0d\ 3\0d\ 4\0d\ 5\0d\ 3\0d\ 6\0d\ 4\0g\ 6\0}\ 2\0t\0\0j\ 1\0d\a\0d\ 6\0\83\ 2\0}\ 3\0|\ 3\0j\ 2\0d\ 6\0\83\ 1\0\ 1|\ 3\0j\ 3\0t\ 4\0d\ 4\0|\ 2\0d\ 3\0d\ 4\0!\83\ 3\0\ 1|\ 3\0j\ 3\0t\ 4\0d\ 4\0|\ 2\0d\ 4\0d\b\0!\83\ 3\0\ 1|\ 3\0j\ 5\0\83\0\0\ 1t\ 6\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\a\0|\ 1\0d        \0d\ 6\0\83\ 3\0\ 1|\ 3\0j\b\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(
++\0\0\0Ng333333Ó¿gffffffæ?i\0\0\0\0i\ 3\0\0\0i\ 1\0\0\0i\ 2\0\0\0s\12\0\0\0my name of mesh 2Di\ 6\0\0\0i\ 4\0\0\0(  \0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\b\0\0\0R   \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 5\0\0\0R\r\0\0\0t\f\0\0\0sourceCoordst
++\0\0\0sourceConnt
++\0\0\0sourceMeshR\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build2DSourceMesh_1)\0\0\0s\16\0\0\0\0\ 1\1e\ 1\18\ 1\12\ 1\r\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 6\0\0\0Q\0\0\0C\0\0\0s\\ 2\0\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 1\0d\ 1\0d\ 3\0d\ 1\0d\ 2\0d\ 3\0d\ 1\0d\ 3\0d\ 3\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 3\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 2\0d\ 1\0d\ 1\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 3\0d\ 1\0d\ 3\0d\ 1\0d\ 2\0d\ 3\0d\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 2\0d\ 3\0d\ 1\0d\ 3\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0gQ\0}\ 1\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d        \0d
++\0d\v\0d\ 5\0d\f\0d\r\0d\ 6\0d     \0d\ e\0d\ f\0d
++\0d\a\0d\ 6\0d\10\0d\11\0d\v\0d
++\0d\12\0d\13\0d\ 6\0d\r\0d\14\0d\10\0d
++\0d\ f\0d\15\0d\12\0d\b\0d        \0d
++\0d\v\0d\16\0d\17\0d\18\0d\19\0d     \0d\ e\0d\ f\0d
++\0d\17\0d\1a\0d\e\0d\18\0d\v\0d
++\0d\12\0d\13\0d\19\0d\18\0d\1c\0d\1d\0d
++\0d\ f\0d\15\0d\12\0d\18\0d\e\0d\1e\0d\1c\0g@\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d\a\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\v\0\83\ 1\0\ 1x:\0t\ 4\0d\14\0\83\ 1\0D],\0}\ 4\0|\ 3\0j\ 5\0t\ 6\0d\14\0|\ 2\0d\14\0|\ 4\0\14d\14\0|\ 4\0\14d\14\0\17!\83\ 3\0\ 1\ 1W|\ 3\0j\a\0\83\0\0\ 1t\b\0j\ 1\0\83\0\0}\ 5\0|\ 5\0j     \0|\ 1\0d\1f\0d\a\0\83\ 3\0\ 1|\ 3\0j
++\0|\ 5\0\83\ 1\0\ 1|\ 3\0S( \0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0I@g\0\0\0\0\0\0i@i\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 3\0\0\0i    \0\0\0i
++\0\0\0i\r\0\0\0i\f\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\v\0\0\0i\ e\0\0\0i\a\0\0\0i\ 6\0\0\0i\10\0\0\0i\ f\0\0\0i\b\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0i\16\0\0\0i\15\0\0\0i\14\0\0\0i\17\0\0\0i\19\0\0\0i\18\0\0\0i\1a\0\0\0i\e\0\0\0(\v\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0R\ 5\0\0\0t\ 5\0\0\0rangeR\ 6\0\0\0t
++\0\0\0NORM_HEXA8R        \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 6\0\0\0R\r\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0t\ 1\0\0\0iR\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build3DTargetMesh_16\0\0\0\0\0\0\0\ 1Q\ 1Q\ 1W\ 1`\ 1f\ 1\f\ 1\r\ 1\r\ 1\13\ 1&\ 1\ 4\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\00\0\0\0C\0\0\0s\85\ 2\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 1\0d\ 3\0d\ 3\0d\ 3\0g\e\0}\ 1\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d  \0d\ 4\0d
++\0d\ 6\0d\v\0d\f\0d\ 4\0d\b\0d\ 4\0d\v\0d\ 6\0d\b\0d\ 4\0d      \0d\v\0d\b\0d\ 4\0d\ 6\0d\a\0d\ 4\0d\ 5\0d\a\0d      \0d\v\0d\ 5\0d\f\0d\ 4\0d\ 5\0d\ 6\0d\f\0d\ 4\0d      \0d\a\0d\ 4\0d
++\0d\ 4\0d\ 5\0d      \0d\v\0d\a\0d\b\0d\ 4\0d
++\0g0\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d\a\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\r\0\83\ 1\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0\0d\v\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0d\v\0d\ 4\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0d\ 4\0d\r\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0d\r\0d\ e\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0d\ e\0d\ f\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0d\ f\0d\10\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0d\10\0d\11\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0d\11\0d\12\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0d\12\0d\13\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0d\13\0d\14\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0d\14\0d\15\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\v\0|\ 2\0d\15\0d\16\0!\83\ 3\0\ 1|\ 3\0j\ 6\0\83\0\0\ 1t\a\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\b\0|\ 1\0d\17\0d\a\0\83\ 3\0\ 1|\ 3\0j    \0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\18\0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0i@g\0\0\0\0\0\0Y@i\b\0\0\0i\ 1\0\0\0i\a\0\0\0i\ 3\0\0\0i\ 6\0\0\0i\0\0\0\0i\ 2\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\f\0\0\0i\10\0\0\0i\14\0\0\0i\18\0\0\0i\1c\0\0\0\0\0\0i$\0\0\0i(\0\0\0i,\0\0\0i0\0\0\0i   \0\0\0(
++\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0R\ 5\0\0\0R\ 6\0\0\0t\v\0\0\0NORM_TETRA4R \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 5\0\0\0t\ 4\0\0\0selfR\13\0\0\0R\14\0\0\0R\15\0\0\0R\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build3DSourceMesh_1H\0\0\0s.\0\0\0\0\ 1-\ 1*\ 1\96\ 1\f\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0\e\0\0\0C\0\0\0su\ 1\0\0d\ 1\0d\ 1\0d\ 2\0d\ 3\0d\ 1\0d\ 4\0d\ 5\0d\ 1\0d\ 6\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 4\0d\ 5\0d\ 3\0d\ 6\0d\ 1\0d\ 5\0d\ 2\0d\ 3\0d\ 5\0d\ 4\0d\ 5\0d\ 5\0d\ 6\0g\e\0}\ 1\0d\a\0d\b\0d   \0d
++\0d
++\0d    \0d\v\0d   \0d\f\0d\v\0d\r\0d\ e\0d  \0d\b\0d\ e\0d\ f\0d\f\0d  \0g\12\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d\v\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\f\0\83\ 1\0\ 1|\ 3\0j\ 4\0t\ 5\0\0|\ 2\0d\a\0d        \0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 6\0d\b\0|\ 2\0d  \0d\ e\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 6\0d\b\0|\ 2\0d\ e\0d\10\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d   \0|\ 2\0d\10\0d\11\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d       \0|\ 2\0d\11\0d\12\0!\83\ 3\0\ 1|\ 3\0j\a\0\83\0\0\ 1t\b\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j       \0|\ 1\0d\13\0d\b\0\83\ 3\0\ 1|\ 3\0j
++\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\14\0\0\0Ng333333Ó¿g\0\0\0\0\0\0à?g\9a\99\99\99\99\99É?g\0\0\0\0\0\0ð?gffffffæ?g\0\0\0\0\0\0ø?i\0\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i
++\0\0\0i\ e\0\0\0i\12\0\0\0i        \0\0\0(\v\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\a\0\0\0R\b\0\0\0R    \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 5\0\0\0R\1c\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\17\0\0\0build3DSurfTargetMesh_1b\0\0\0s\1e\0\0\0\0\ 1W\ 1<\ 1\f\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\a\0\0\0b\ 1\0\0C\0\0\0s»    \0\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 3\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 2\0d\ 4\0d\ 1\0d\ 5\0d\ 1\0d\ 1\0d\ 5\0d\ 2\0d\ 1\0d\ 2\0d\ 5\0d\ 1\0d\ 1\0d\ 5\0d\ 1\0d\ 6\0d\ 2\0d\ 1\0d\ 6\0d\ 5\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 6\0d\ 1\0d\ 5\0d\ 5\0d\ 1\0d\ 5\0d\ 6\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 4\0d\ 2\0d\ 5\0d\ 1\0d\ 2\0d\ 5\0d\ 2\0d\ 2\0d\ 2\0d\ 5\0d\ 2\0d\ 1\0d\ 5\0d\ 2\0d\ 6\0d\ 2\0d\ 2\0d\ 6\0d\ 5\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 6\0d\ 2\0d\ 5\0d\ 5\0d\ 2\0d\ 5\0d\ 6\0d\ 2\0d\ 1\0d\ 1\0d\ 5\0d\ 2\0d\ 2\0d\ 5\0d\ 2\0d\ 3\0d\ 5\0d\ 2\0d\ 1\0d\ 5\0d\ 2\0d\ 4\0d\ 5\0d\ 5\0d\ 1\0d\ 5\0d\ 5\0d\ 2\0d\ 5\0d\ 2\0d\ 5\0d\ 5\0d\ 1\0d\ 5\0d\ 5\0d\ 6\0d\ 2\0d\ 5\0d\ 6\0d\ 5\0d\ 5\0d\ 1\0d\ 2\0d\ 5\0d\ 2\0d\ 6\0d\ 5\0d\ 5\0d\ 5\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 1\0d\ 1\0d\ 6\0d\ 2\0d\ 2\0d\ 6\0d\ 2\0d\ 3\0d\ 6\0d\ 2\0d\ 1\0d\ 6\0d\ 2\0d\ 4\0d\ 6\0d\ 5\0d\ 1\0d\ 6\0d\ 5\0d\ 2\0d\ 6\0d\ 2\0d\ 5\0d\ 6\0d\ 1\0d\ 5\0d\ 6\0d\ 6\0d\ 2\0d\ 6\0d\ 6\0d\ 5\0d\ 6\0d\ 1\0d\ 2\0d\ 6\0d\ 2\0d\ 6\0d\ 6\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 6\0d\ 6\0\0}\ 1\0d\a\0d\b\0d     \0d
++\0d\v\0d\f\0d\r\0d\ e\0d        \0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d    \0d\r\0d\15\0d\13\0d\14\0d\13\0d\15\0d\16\0d\12\0d\14\0d\12\0d\11\0d\17\0d\16\0d\14\0d\11\0d\10\0d\18\0d\17\0d\14\0d\10\0d\ f\0d\19\0d\18\0d\14\0d\ f\0d   \0d\r\0d\19\0d\14\0d\r\0d\15\0d\16\0d\17\0d\18\0d\19\0d   \0d\13\0d\1a\0d
++\0d\r\0d\15\0d\e\0d\ e\0d\12\0d\1c\0d\1d\0d\13\0d\16\0d\1e\0d\1f\0d\15\0d\b\0\0d\11\0d\10\0d\ f\0\0d\14\0d\b\0d\f\0d\r\0d  \0d\14\0d   \0d\r\0d\19\0d\ f\0d\14\0d\ f\0d\19\0d\18\0d\10\0d\14\0d\10\0d\18\0d\17\0d\11\0d\14\0d\11\0\0d!\0d\17\0d\14\0\0d\b\0d\f\0d!\0d\14\0d\f\0d\r\0d\19\0d\18\0d\17\0d!\0d\11\0d"\0d#\0d\12\0d\17\0d$\0d%\0d\16\0d\v\0d\f\0d\r\0d\ e\0d&\0d'\0d(\0d)\0d\r\0d\19\0d\18\0d\17\0d\16\0d\15\0d\14\0d\r\0d(\0d*\0d\15\0d\14\0d\15\0d*\0d+\0d\16\0d\14\0d\16\0d\17\0d,\0d+\0d\14\0d\17\0d\18\0d-\0d,\0d\14\0d\18\0d\19\0d.\0d-\0d\14\0d\19\0d\r\0d(\0d.\0d\14\0d(\0d*\0d+\0d,\0d-\0d.\0d\r\0d\15\0d\e\0d\ e\0d(\0d*\0d/\0d)\0d\16\0d\1e\0d\1f\0d\15\0d+\0d0\0d1\0d*\0d\f\0d!\0d\17\0d\18\0d\19\0d\r\0d\14\0d\f\0d'\0d(\0d\r\0d\14\0d\r\0d(\0d.\0d\19\0d\14\0d\19\0d.\0d-\0d\18\0d\14\0d\18\0d-\0d,\0d\17\0d\14\0d\17\0d!\0d2\0d,\0d\14\0d!\0d\f\0d'\0d2\0d\14\0d'\0d(\0d.\0d-\0d,\0d2\0d\17\0d$\0d%\0d\16\0d,\0d3\0d4\0d+\0d&\0d'\0d(\0d)\0d5\0d6\0d7\0d8\0d(\0d.\0d-\0d,\0d+\0d*\0d\14\0d(\0d7\0d9\0d*\0d\14\0d*\0d9\0d:\0d+\0d\14\0d+\0d,\0d;\0d:\0d\14\0d,\0d-\0d<\0d;\0d\14\0d-\0d.\0d=\0d<\0d\14\0d.\0d(\0d7\0d=\0d\14\0d7\0d9\0d:\0d;\0d<\0d=\0d(\0d*\0d/\0d)\0d7\0d9\0d>\0d8\0d+\0d0\0d1\0d*\0d:\0d?\0d@\0d9\0d'\0d2\0d,\0d-\0d.\0d(\0d\14\0d'\0d6\0d7\0d(\0d\14\0d(\0d7\0d=\0d.\0d\14\0d.\0d=\0d<\0d-\0d\14\0d-\0d<\0d;\0d,\0d\14\0d,\0d2\0dA\0d;\0d\14\0d2\0d'\0d6\0dA\0d\14\0d6\0d7\0d=\0d<\0d;\0dA\0d,\0d3\0d4\0d+\0d;\0dB\0dC\0d:\0gb\ 1}\ 2\0d\11\0d"\0d#\0d\12\0d\b\0\0d\11\0d\10\0d\ f\0d       \0d\12\0d\1c\0d\1d\0d\13\0d  \0d\13\0d\1a\0d
++\0d    \0d\ f\0d\10\0d\11\0d\12\0d\13\0d\a\0d\b\0\0d
++\0g\1c\0}\ 3\0t\0\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 2\0d
++\0\83\ 1\0\ 1|\ 4\0j\ 3\0d\ e\0\83\ 1\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0d\a\0\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 6\0d+\0|\ 2\0\0d9\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0d9\0dC\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0dC\0dD\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 6\0d+\0|\ 2\0dD\0dE\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0dE\0dF\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0dF\0dG\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 6\0d+\0|\ 2\0dG\0dH\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0dH\0dI\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0dI\0dJ\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 6\0d+\0|\ 2\0dJ\0dK\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0dK\0dL\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0dL\0dM\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 6\0d+\0|\ 2\0dM\0dN\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0dN\0dO\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0dO\0dP\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 6\0d+\0|\ 2\0dP\0dQ\0!\83\ 3\0\ 1|\ 4\0j\ 4\0t\ 5\0\0|\ 2\0dQ\0dR\0!\83\ 3\0\ 1|\ 4\0j\a\0\83\0\0\ 1t\b\0j\ 1\0\83\0\0}\ 5\0|\ 5\0j      \0|\ 1\0dS\0d
++\0\83\ 3\0\ 1|\ 4\0j
++\0|\ 5\0\83\ 1\0\ 1t\0\0j\ 1\0\83\0\0}\ 6\0|\ 6\0j\ 2\0d\ f\0\83\ 1\0\ 1|\ 6\0j\ 3\0d\13\0\83\ 1\0\ 1|\ 6\0j\ 4\0t\v\0d\10\0|\ 3\0d\a\0d\10\0!\83\ 3\0\ 1|\ 6\0j\ 4\0t\f\0d\13\0|\ 3\0d\10\0d\1c\0!\83\ 3\0\ 1|\ 6\0j\ 4\0t\v\0d\10\0|\ 3\0d\1c\0d#\0!\83\ 3\0\ 1|\ 6\0j\ 4\0t\v\0d\10\0|\ 3\0d#\0d\ e\0!\83\ 3\0\ 1|\ 6\0j\ 4\0t\f\0d\13\0|\ 3\0d\ e\0d\1f\0!\83\ 3\0\ 1|\ 6\0j\ 4\0t\v\0d\10\0|\ 3\0d\1f\0d\16\0!\83\ 3\0\ 1|\ 6\0j\a\0\83\0\0\ 1|\ 6\0j
++\0|\ 5\0\83\ 1\0\ 1|\ 4\0|\ 6\0f\ 2\0S(T\0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0ô?g\0\0\0\0\0\0ø?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@i\0\0\0\0i\v\0\0\0i\ 1\0\0\0i\ 3\0\0\0i\ f\0\0\0i\1a\0\0\0i\10\0\0\0i\12\0\0\0i\ 2\0\0\0i\ 4\0\0\0i\a\0\0\0i\r\0\0\0i\ 6\0\0\0iÿÿÿÿi\15\0\0\0i\1c\0\0\0i\16\0\0\0i\13\0\0\0i\11\0\0\0i\ 5\0\0\0i\14\0\0\0i
++\0\0\0i  \0\0\0i\19\0\0\0i\18\0\0\0i\b\0\0\0i\17\0\0\0i\f\0\0\0i\ e\0\0\0i\e\0\0\0i\1d\0\0\0i\1e\0\0\0i)\0\0\0i\1f\0\0\0i!\0\0\0i$\0\0\0i+\0\0\0i%\0\0\0i"\0\0\0\0\0\0i#\0\0\0i(\0\0\0i'\0\0\0i&\0\0\0i*\0\0\0i,\0\0\0i-\0\0\0i8\0\0\0i.\0\0\0i0\0\0\0i3\0\0\0i:\0\0\0i4\0\0\0i1\0\0\0i/\0\0\0i2\0\0\0i7\0\0\0i6\0\0\0i5\0\0\0i9\0\0\0i;\0\0\0iC\0\0\0in\0\0\0iv\0\0\0i~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\1f\ 1\0\0i'\ 1\0\0i/\ 1\0\0iZ\ 1\0\0ib\ 1\0\0i<\0\0\0(\r\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\18\0\0\0t\f\0\0\0NORM_POLYHEDR  \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\a\0\0\0t\f\0\0\0NORM_POLYGON(\a\0\0\0R\1c\0\0\0t\ 6\0\0\0coordst\ 4\0\0\0connt\ 5\0\0\0conn2t\ 3\0\0\0retR\11\0\0\0t\ 6\0\0\0mesh2D(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\16\0\0\0build3DExtrudedUMesh_1s\0\0\0st\0\0\0\0\ 2Z\ 1-\ 1Z\ 1-\ 1Z\ 1-\ 1Z\ 13\ 4\99\ 10\ 1\81\ 1\18\ 2\99\ 10\ 1\81\ 1\18\ 2\99\ 10\ 1\81\ 1\1e\ 1Z\ 2\f\ 1\r\ 1\r\ 2\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 2\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 2\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 2
++\ 1\f\ 1\13\ 1\r\ 2\f\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0\ 6\0\0\0C\0\0\0\0\0\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0g\ 4\0}\ 1\0d\ 5\0d\ 6\0d\ 6\0d\a\0d\a\0d\b\0g\ 6\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d\ 6\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\b\0\83\ 1\0\ 1|\ 3\0j\ 4\0t\ 5\0d\a\0|\ 2\0d\ 5\0d\a\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\a\0|\ 2\0d\a\0d        \0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\a\0|\ 2\0d  \0d
++\0!\83\ 3\0\ 1|\ 3\0j\ 6\0\83\0\0\ 1t\a\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\b\0|\ 1\0d        \0d\ 6\0\83\ 3\0\ 1|\ 3\0j    \0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\v\0\0\0Ng\0\0\0\0\0\0\0\0g333333Ó?g\0\0\0\0\0\0è?g\0\0\0\0\0\0ð?i\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 6\0\0\0(
++\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0R\ 5\0\0\0R\ 6\0\0\0\0\0\0NORM_SEG2R   \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 5\0\0\0R\1c\0\0\0R!\0\0\0R"\0\0\0t\ 4\0\0\0meshR\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\ f\0\0\0buildCU1DMesh_U»\0\0\0s\1a\0\0\0\0\ 1\12\ 1\18\ 1\f\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0$\0\0\0C\0\0\0s\90\ 1\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 2\0d\ 3\0g$\0}\ 1\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d       \0d
++\0d\v\0d\f\0d\r\0d\ 5\0d\ e\0d\ f\0d\ 6\0d\10\0d\11\0d\12\0d      \0g\12\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d
++\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\a\0\83\ 1\0\ 1|\ 3\0j\ 4\0t\ 5\0d\b\0|\ 2\0d\ 4\0d\b\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 6\0d\13\0|\ 2\0d\b\0d\ 6\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 6\0d\13\0|\ 2\0d\ 6\0d\v\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\b\0|\ 2\0d\v\0d\ e\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\b\0|\ 2\0d\ e\0d\14\0!\83\ 3\0\ 1|\ 3\0j\a\0\83\0\0\ 1t\b\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j        \0|\ 1\0d\14\0d
++\0\83\ 3\0\ 1|\ 3\0j
++\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\15\0\0\0Ng333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?i\0\0\0\0i   \0\0\0i\a\0\0\0i\ 5\0\0\0i\ 4\0\0\0i\ 6\0\0\0i\ 2\0\0\0i
++\0\0\0i\v\0\0\0i\b\0\0\0i\ e\0\0\0i\ f\0\0\0i\11\0\0\0i\10\0\0\0i\r\0\0\0i\ 3\0\0\0i\12\0\0\0(\v\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\a\0\0\0R\b\0\0\0R     \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 5\0\0\0R\1c\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\1c\0\0\0build2DTargetMeshMergeNode_1Ê\0\0\0s\1e\0\0\0\0\ 1r\ 1<\ 1\f\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 6\0\0\0]\0\0\0C\0\0\0s\80\ 2\0\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 1\0d\ 1\0d\ 3\0d\ 1\0d\ 2\0d\ 3\0d\ 1\0d\ 3\0d\ 3\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 3\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 2\0d\ 1\0d\ 1\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 3\0d\ 1\0d\ 3\0d\ 1\0d\ 2\0d\ 3\0d\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 2\0d\ 3\0d\ 1\0d\ 3\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 2\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0g]\0}\ 1\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d    \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ 6\0d     \0d\ f\0d\10\0d
++\0d\a\0d\ 6\0d\11\0d\12\0d\v\0d
++\0d\13\0d\14\0d\ 6\0d\ e\0d\15\0d\11\0d
++\0d\10\0d\16\0d\13\0d\b\0d        \0d
++\0d\v\0d\17\0d\18\0d\19\0d\1a\0d     \0d\ f\0d\10\0d
++\0d\18\0d\e\0d\1c\0d\19\0d\v\0d
++\0d\13\0d\14\0d\1a\0d\19\0d\1d\0d\1e\0d
++\0d\10\0d\16\0d\13\0d\19\0d\1f\0\0d\1d\0g@\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d\a\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\v\0\83\ 1\0\ 1x:\0t\ 4\0d\15\0\83\ 1\0D],\0}\ 4\0|\ 3\0j\ 5\0t\ 6\0d\15\0|\ 2\0d\15\0|\ 4\0\14d\15\0|\ 4\0d!\0\17\14!\83\ 3\0\ 1q\16\ 2W|\ 3\0j\a\0\83\0\0\ 1t\b\0j\ 1\0\83\0\0}\ 5\0|\ 5\0j     \0|\ 1\0d"\0d\a\0\83\ 3\0\ 1|\ 3\0j
++\0|\ 5\0\83\ 1\0\ 1|\ 3\0S(#\0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0I@g\0\0\0\0\0\0i@i\0\0\0\0i\1d\0\0\0i\ 4\0\0\0i\ 3\0\0\0i    \0\0\0i
++\0\0\0i\r\0\0\0i\f\0\0\0i\1c\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\v\0\0\0i\ e\0\0\0i\a\0\0\0i\ 6\0\0\0i\10\0\0\0i\ f\0\0\0i\b\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0i\16\0\0\0i\15\0\0\0i\14\0\0\0i\17\0\0\0i\19\0\0\0i\18\0\0\0i\1e\0\0\0i\1a\0\0\0i\ 1\0\0\0i\1f\0\0\0(\v\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0R\ 5\0\0\0R\17\0\0\0R\ 6\0\0\0R\18\0\0\0R     \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 6\0\0\0R\1c\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\19\0\0\0R\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\1c\0\0\0build3DTargetMeshMergeNode_1Û\0\0\0\0\0\0\0\ 1Q\ 1Q\ 1{\ 1`\ 1f\ 1\f\ 1\r\ 1\r\ 1\13\ 1&\ 1\ 4\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0\1a\0\0\0C\0\0\0\ 1\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 1\0d\ 4\0d\ 1\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0g\1a\0}\ 1\0d\ 5\0d\ 6\0d\a\0d\b\0d\b\0d\a\0d  \0d\a\0d
++\0d    \0d\v\0d\f\0d\a\0d\ 6\0d\f\0d\r\0d
++\0d\a\0d\ e\0d\ f\0d\10\0d\ e\0d\11\0d\ f\0g\18\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d\12\0\83\ 1\0\ 1|\ 3\0j\ 3\0d  \0\83\ 1\0\ 1|\ 3\0j\ 4\0d\10\0\83\ 1\0\ 1|\ 3\0j\ 5\0t\ 6\0d\a\0|\ 2\0d\ 5\0d\a\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d\ 6\0|\ 2\0d\a\0d\f\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d\ 6\0|\ 2\0d\f\0d\10\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d\a\0|\ 2\0d\10\0d\13\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d\a\0|\ 2\0d\13\0d\14\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d\ 6\0|\ 2\0d\14\0d\15\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d\ 6\0|\ 2\0d\15\0d\16\0!\83\ 3\0\ 1|\ 3\0j\b\0\83\0\0\ 1t     \0j\ 1\0\83\0\0}\ 4\0|\ 4\0j
++\0|\ 1\0d\17\0d      \0\83\ 3\0\ 1|\ 3\0j\v\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\18\0\0\0Ng333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?g333333û?i\0\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i  \0\0\0i\f\0\0\0i
++\0\0\0i\v\0\0\0t\ 5\0\0\0mergei\ e\0\0\0i\12\0\0\0i\15\0\0\0i\18\0\0\0i\r\0\0\0(\f\0\0\0R\ 2\0\0\0R\ 3\0\0\0t\a\0\0\0setNameR\ 4\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\a\0\0\0R\b\0\0\0R      \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 5\0\0\0R\1c\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\19\0\0\0build2DTargetMeshMerged_1í\0\0\0s(\0\0\0\0\ 26\ 1\1e\ 36\ 1\18\ 2\f\ 1\r\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0\18\0\0\0C\0\0\0\ 1\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0g\12\0}\ 1\0d\ 4\0d\ 5\0d\ 6\0d\ 4\0d\ 6\0d\a\0d\a\0d\ 6\0d\b\0d\ 6\0d      \0d\b\0d\ 5\0d
++\0d\ 6\0d
++\0d\v\0d\ 6\0d\ 6\0d\v\0d        \0d\v\0d\f\0d        \0g\18\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d\b\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\f\0\83\ 1\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d\ 4\0d\ 5\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d\ 5\0d
++\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d
++\0d\r\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d\r\0d\ e\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d\ e\0d\ f\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d\ f\0d\10\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d\10\0d\11\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d\11\0d\12\0!\83\ 3\0\ 1|\ 3\0j\ 6\0\83\0\0\ 1t\a\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\b\0|\ 1\0d\r\0d\b\0\83\ 3\0\ 1|\ 3\0j      \0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\13\0\0\0Ng333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?i\0\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i     \0\0\0i\f\0\0\0i\ f\0\0\0i\12\0\0\0i\15\0\0\0i\18\0\0\0(
++\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\b\0\0\0R    \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 5\0\0\0R\r\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build2DTargetMesh_2\a\ 1\0\0s$\0\0\0\0\ 1<\ 1N\ 1\f\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0\b\0\0\0C\0\0\0\0\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0|\ 1\0j\ 2\0d\ 3\0\83\ 1\0\ 1d\ 4\0d\ 2\0d\ 5\0d\ 6\0d\ 2\0d\ 5\0d\ 6\0d\ 3\0g\b\0}\ 2\0x:\0t\ 3\0d\ 3\0\83\ 1\0D],\0}\ 3\0|\ 1\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d\ 5\0|\ 3\0\14d\ 5\0|\ 3\0\14d\ 5\0\17!\83\ 3\0\ 1qJ\0W|\ 1\0j\ 6\0\83\0\0\ 1t\a\0j\ 1\0d\a\0d\b\0d        \0d
++\0d\v\0g\ 5\0d\f\0d\ 2\0\83\ 3\0}\ 4\0|\ 1\0j\b\0|\ 4\0\83\ 1\0\ 1|\ 1\0S(\r\0\0\0Nt\f\0\0\01DSourceMeshi\ 1\0\0\0i\ 4\0\0\0i\0\0\0\0i\ 2\0\0\0i\ 3\0\0\0g333333Ó?gffffffæ?gÍÌÌÌÌÌì?g\0\0\0\0\0\0ð?gìQ¸\1e\85ëñ?i\ 5\0\0\0(       \0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 5\0\0\0R\17\0\0\0R\ 6\0\0\0R'\0\0\0R      \0\0\0R
++\0\0\0R\f\0\0\0(\ 5\0\0\0R\r\0\0\0R$\0\0\0R"\0\0\0R\19\0\0\0R\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build1DSourceMesh_2\e\ 1\0\0s\14\0\0\0\0\ 1\12\ 1\r\ 1\1e\ 1\13\ 1&\ 1\ 4\ 1
++\ 1$\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0
++\0\0\0C\0\0\0s      \ 1\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0|\ 1\0j\ 2\0d\ 3\0\83\ 1\0\ 1d\ 4\0d\ 2\0d\ 5\0d\ 6\0d\ 3\0d\a\0d\b\0d        \0d
++\0d\v\0g
++\0}\ 2\0|\ 1\0j\ 3\0t\ 4\0d\ 6\0|\ 2\0d\ 4\0d\ 6\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\ 5\0d\ 5\0|\ 2\0d\ 6\0d\b\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\ 4\0d\ 6\0|\ 2\0d\b\0d\v\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\ 5\0d\ 5\0|\ 2\0d\v\0d\f\0!\83\ 3\0\ 1|\ 1\0j\ 6\0\83\0\0\ 1d\r\0d\ e\0d\ f\0d\10\0d\11\0d\r\0d\12\0d\13\0d\10\0d\14\0g
++\0}\ 3\0t\a\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\b\0|\ 3\0d\f\0d\ 2\0\83\ 3\0\ 1|\ 1\0j       \0|\ 4\0\83\ 1\0\ 1|\ 1\0S(\15\0\0\0Nt\b\0\0\01DMesh_3i\ 1\0\0\0i\ 4\0\0\0i\0\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 6\0\0\0i\ 5\0\0\0i\a\0\0\0i        \0\0\0i\b\0\0\0i
++\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0ð?g\9a\99\99\99\99\99é?g\0\0\0\0\0\0\14@g×£p=
++×\14@g\9a\99\99\99\99\99ñ?gffffffæ?g=
++ףp=\15@(
++\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 5\0\0\0R\ 6\0\0\0t      \0\0\0NORM_SEG3R'\0\0\0R      \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 5\0\0\0R\r\0\0\0R$\0\0\0R"\0\0\0R!\0\0\0R\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build1DTargetMesh_3'\ 1\0\0s\1a\0\0\0\0\ 1\12\ 1\r\ 1$\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1$\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0\14\0\0\0C\0\0\0s'\ 1\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0|\ 1\0j\ 2\0d\ 3\0\83\ 1\0\ 1d\ 4\0d\ 2\0d\ 5\0d\ 6\0d\ 3\0d\a\0d\b\0d  \0d
++\0d\v\0g
++\0}\ 2\0|\ 1\0j\ 3\0t\ 4\0d\ 6\0|\ 2\0d\ 4\0d\ 6\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\ 5\0d\ 5\0|\ 2\0d\ 6\0d\b\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\ 4\0d\ 6\0|\ 2\0d\b\0d\v\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\ 5\0d\ 5\0|\ 2\0d\v\0d\f\0!\83\ 3\0\ 1|\ 1\0j\ 6\0\83\0\0\ 1d\r\0d\r\0d\ e\0d\ e\0d\ f\0d\ f\0d\10\0d\10\0d\11\0d\11\0d\r\0d\r\0d\12\0d\12\0d\13\0d\13\0d\10\0d\10\0d\14\0d\14\0g\14\0}\ 3\0t\a\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\b\0|\ 3\0d\f\0d\ 5\0\83\ 3\0\ 1|\ 1\0j   \0|\ 4\0\83\ 1\0\ 1|\ 1\0S(\15\0\0\0Nt\r\0\0\02DCurveMesh_3i\ 1\0\0\0i\ 4\0\0\0i\0\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 6\0\0\0i\ 5\0\0\0i\a\0\0\0i   \0\0\0i\b\0\0\0i
++\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0ð?g\9a\99\99\99\99\99é?g\0\0\0\0\0\0\14@g×£p=
++×\14@g\9a\99\99\99\99\99ñ?gffffffæ?g=
++ףp=\15@(
++\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 5\0\0\0R\ 6\0\0\0R3\0\0\0R'\0\0\0R    \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 5\0\0\0R\r\0\0\0R$\0\0\0R"\0\0\0R!\0\0\0R\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\18\0\0\0build2DCurveTargetMesh_36\ 1\0\0s\1a\0\0\0\0\ 1\12\ 1\r\ 1$\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1B\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\04\0\0\0C\0\0\0sQ\ 2\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0|\ 1\0j\ 2\0d\ 3\0\83\ 1\0\ 1d\ 4\0d\ 5\0d\ 2\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\ 4\0d\ 5\0d\ 6\0d\b\0d\a\0d\ 4\0d\ 5\0d\ 2\0d  \0d
++\0d\v\0d\ 4\0d\ 5\0d\ 6\0d\a\0d     \0d\f\0d\ 2\0d\ 3\0d\ 4\0d\ 2\0d\ 5\0d\ 4\0d\a\0d\ 6\0d\ 5\0d\ 4\0d\a\0d\b\0d\ 6\0d\ 5\0d\ 4\0d\ 2\0d\ 5\0d\v\0d
++\0d    \0d\ 4\0d\a\0d\ 6\0d\ 5\0d\ 3\0d\ 2\0d\f\0\0g4\0}\ 2\0|\ 1\0j\ 3\0t\ 4\0d\ 6\0|\ 2\0d\ 4\0d\ 6\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\ 5\0d\a\0|\ 2\0d\ 6\0d
++\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\ 6\0d\b\0|\ 2\0d
++\0d\r\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\a\0d   \0|\ 2\0d\r\0d\ e\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\b\0d\v\0|\ 2\0d\ e\0d\ f\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\ 4\0d\ 6\0|\ 2\0d\ f\0d\10\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\ 5\0d\a\0|\ 2\0d\10\0d\11\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\ 6\0d\b\0|\ 2\0d\11\0d\12\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\a\0d       \0|\ 2\0d\12\0d\13\0!\83\ 3\0\ 1|\ 1\0j\ 3\0t\b\0d\v\0|\ 2\0d\13\0d\14\0!\83\ 3\0\ 1|\ 1\0j   \0\83\0\0\ 1d\15\0d\15\0d\16\0d\15\0d\17\0d\16\0d\16\0d\16\0d\15\0d\16\0d\17\0d\18\0d\17\0d\15\0d\19\0d\17\0d\1a\0d\17\0d\16\0d\17\0d\15\0d\17\0g\16\0}\ 3\0t
++\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\v\0|\ 3\0d\e\0d\ 2\0\83\ 3\0\ 1|\ 1\0j\f\0|\ 4\0\83\ 1\0\ 1|\ 1\0j\r\0\83\0\0\ 1|\ 1\0S(\1c\0\0\0Nt\b\0\0\02DMesh_3i\ 2\0\0\0i
++\0\0\0i\0\0\0\0i\ 1\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i  \0\0\0i\f\0\0\0i\12\0\0\0i\1a\0\0\0i\1d\0\0\0i!\0\0\0i&\0\0\0i,\0\0\0i4\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0à?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0è?g\0\0\0\0\0\0Ð?i\v\0\0\0(\ e\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\b\0\0\0R\a\0\0\0\0\0\0\0\0\0NORM_TRI6t
++\0\0\0NORM_QUAD8R        \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0t\15\0\0\0checkConsistencyLight(\ 5\0\0\0R\r\0\0\0R$\0\0\0R"\0\0\0R!\0\0\0R\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build2DTargetMesh_3E\ 1\0\0s(\0\0\0\0\ 1\12\ 1\r\ 1¢\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1H\ 1\f\ 1\13\ 1\r\ 1
++\ 1c\ 1\0\0\0\ 5\0\0\0\14\0\0\0C\0\0\0s`\ 1\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0g\14\0}\ 1\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\a\0d\ 6\0d\b\0d\ 6\0d    \0d
++\0d\v\0d\f\0d\ 6\0d\ 5\0d\f\0d\r\0d  \0d\ 6\0g\12\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d
++\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\ 6\0\83\ 1\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d\ 4\0d\ 5\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 6\0d\b\0|\ 2\0d\ 5\0d\v\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 6\0d\b\0|\ 2\0d\v\0d\ e\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d\ e\0d\ f\0!\83\ 3\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 5\0|\ 2\0d\ f\0d\10\0!\83\ 3\0\ 1|\ 3\0j\a\0\83\0\0\ 1t\b\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j        \0|\ 1\0d\ e\0d
++\0\83\ 3\0\ 1|\ 3\0j
++\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\11\0\0\0Ng333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?i\0\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 1\0\0\0i\ 3\0\0\0i\ 6\0\0\0i\ 2\0\0\0i\a\0\0\0i\b\0\0\0i   \0\0\0i
++\0\0\0i\ e\0\0\0i\12\0\0\0(\v\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\a\0\0\0R\b\0\0\0R        \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0(\ 5\0\0\0R\r\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\11\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build2DTargetMesh_4[\ 1\0\0s\1e\0\0\0\0\ 1B\ 1<\ 1\f\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\13\0\0\0      \0\0\0C\0\0\0s\96\ 3\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0d\ 1\0\83\ 1\0\ 1t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0\83\ 1\0\ 1d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 5\0}\ 3\0d\b\0\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0g  \0}\ 4\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0g        \0}\ 5\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0g\ 5\0}\ 6\0d\1f\0\0d!\0d"\0d#\0g\ 5\0}\a\0t\ 3\0j\ 4\0\83\0\0}\b\0|\b\0j\ 5\0|\ 3\0d$\0d%\0\83\ 3\0\ 1t\ 3\0j\ 4\0\83\0\0\0|      \0j\ 5\0|\ 4\0d&\0d%\0\83\ 3\0\ 1t\ 3\0j\ 4\0\83\0\0}
++\0|
++\0j\ 5\0|\ 5\0d&\0d%\0\83\ 3\0\ 1t\ 3\0j\ 4\0\83\0\0}\v\0|\v\0j\ 5\0|\ 6\0d$\0d%\0\83\ 3\0\ 1t\ 3\0j\ 4\0\83\0\0}\f\0|\f\0j\ 5\0|\a\0d$\0d%\0\83\ 3\0\ 1|\b\0j\ 2\0d'\0\83\ 1\0\ 1\0j\ 2\0d(\0\83\ 1\0\ 1|
++\0j\ 2\0d)\0\83\ 1\0\ 1|\v\0j\ 2\0d*\0\83\ 1\0\ 1|\f\0j\ 2\0d+\0\83\ 1\0\ 1|\b\0j\ 6\0d,\0d-\0\83\ 2\0\ 1|        \0j\ 6\0d,\0d.\0\83\ 2\0\ 1|
++\0j\ 6\0d,\0d/\0\83\ 2\0\ 1|\v\0j\ 6\0d,\0d0\0\83\ 2\0\ 1|\f\0j\ 6\0d,\0d1\0\83\ 2\0\ 1t\a\0j\ 4\0t\b\0t      \0\83\ 2\0}\r\0|\r\0j
++\0|\ 1\0\83\ 1\0\ 1|\r\0j\v\0|\b\0\83\ 1\0\ 1|\r\0j\f\0d\ e\0d$\0d2\0\83\ 3\0\ 1|\r\0j\ 2\0d3\0\83\ 1\0\ 1t\a\0j\ 4\0t\r\0t\ e\0\83\ 2\0}\ e\0|\ e\0j
++\0|\ 1\0\83\ 1\0\ 1|\ e\0j\ f\0|       \0|
++\0g\ 2\0\83\ 1\0\ 1|\ e\0j\10\0d4\0d5\0d6\0\83\ 3\0\ 1|\ e\0j\11\0d7\0d&\0d8\0\83\ 3\0\ 1|\ e\0j\ 2\0d9\0\83\ 1\0\ 1t\a\0j\ 4\0t\b\0t\12\0\83\ 2\0}\ f\0|\ f\0j
++\0|\ 2\0\83\ 1\0\ 1|\ f\0j\v\0|\v\0\83\ 1\0\ 1|\ f\0j\f\0d7\0d:\0d;\0\83\ 3\0\ 1|\ f\0j\11\0d<\0d=\0d>\0\83\ 3\0\ 1|\ f\0j\ 2\0d?\0\83\ 1\0\ 1t\a\0j\ 4\0t\b\0t    \0\83\ 2\0}\10\0|\10\0j
++\0|\ 1\0\83\ 1\0\ 1|\10\0j\v\0|\v\0\83\ 1\0\ 1|\10\0j\f\0d@\0dA\0dB\0\83\ 3\0\ 1|\10\0j\ 2\0dC\0\83\ 1\0\ 1t\a\0j\ 4\0t\b\0t\13\0\83\ 2\0}\11\0|\11\0j
++\0|\ 2\0\83\ 1\0\ 1|\11\0j\v\0|\f\0\83\ 1\0\ 1|\11\0j\ 2\0dD\0\83\ 1\0\ 1t\14\0j\ 4\0|\r\0|\ e\0|\ f\0|\10\0|\11\0g\ 5\0\83\ 1\0}\12\0|\12\0S(E\0\0\0Nt\ 2\0\0\0m1t\ 2\0\0\0m2gffffffæ¿g\0\0\0\0\0\0ð¿g\0\0\0\0\0\0\0Àg\0\0\0\0\0\0\bÀg\0\0\0\0\0\0\10Àg\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@g\0\0\0\0\0\0\10@g\9a\99\99\99\99\99¹?g\9a\99\99\99\99\99É?g333333Ó?g\9a\99\99\99\99\99Ù?g\0\0\0\0\0@e@g\0\0\0\0\0`e@g\0\0\0\0\0\80e@g\0\0\0\0\0 e@g\0\0\0\0\0Àe@g33333Ce@gfffffFe@g\9a\99\99\99\99Ie@gÍÌÌÌÌLe@g\0\0\0\0\0\0\14@g\0\0\0\0\0\0\18@g\0\0\0\0\0\0\1c@g\0\0\0\0\0\0 @g\0\0\0\0\0\0"@g\0\0\0\0\0\0.@g\0\0\0\0\0\00@g\0\0\0\0\0\01@g\0\0\0\0\0\02@g\0\0\0\0\0\03@i\ 5\0\0\0i\ 1\0\0\0i  \0\0\0t\ 2\0\0\0d0t\ 2\0\0\0d1t\ 4\0\0\0d1_1t\ 2\0\0\0d2t\ 2\0\0\0d4i\0\0\0\0t\ 2\0\0\0c1t\ 2\0\0\0c6t\ 2\0\0\0c9t\ 2\0\0\0c5t\ 2\0\0\0c7i\ 6\0\0\0t\ 2\0\0\0f0gffffffæ?i\a\0\0\0i\b\0\0\0g333333ó?i
++\0\0\0t\ 2\0\0\0f1i\v\0\0\0i\f\0\0\0g\0\0\0\0\0\0ø?i\r\0\0\0i\ e\0\0\0t\ 2\0\0\0f2g333333û?i\ f\0\0\0i\10\0\0\0t\ 2\0\0\0f3t\ 2\0\0\0f4(\15\0\0\0R\ 1\0\0\0R\12\0\0\0R-\0\0\0R
++\0\0\0R\ 3\0\0\0R\v\0\0\0t\12\0\0\0setInfoOnComponentt\16\0\0\0MEDCouplingFieldDoublet\b\0\0\0ON_CELLSt\b\0\0\0ONE_TIMEt\a\0\0\0setMesht\b\0\0\0setArrayt\a\0\0\0setTimet\b\0\0\0ON_NODESt\v\0\0\0LINEAR_TIMEt  \0\0\0setArrayst\f\0\0\0setStartTimet
++\0\0\0setEndTimet\16\0\0\0CONST_ON_TIME_INTERVALt\a\0\0\0NO_TIMEt\16\0\0\0MEDCouplingMultiFields(\13\0\0\0R\r\0\0\0R=\0\0\0R>\0\0\0t\ 5\0\0\0vals0t\ 5\0\0\0vals1t\a\0\0\0vals1_1t\ 5\0\0\0vals2t\ 5\0\0\0vals4R?\0\0\0R@\0\0\0RA\0\0\0RB\0\0\0RC\0\0\0RI\0\0\0RJ\0\0\0RK\0\0\0RL\0\0\0RM\0\0\0R$\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\12\0\0\0buildMultiFields_1l\ 1\0\0sr\0\0\0\0\ 1\f\ 1\r\ 1\f\ 1\r\ 1\15\ 1!\ 1!\ 1\15\ 1\15\ 1\f\ 1\13\ 1\f\ 1\13\ 1\f\ 1\13\ 1\f\ 1\13\ 1\f\ 1\13\ 1\r\0\r\0\r\0\r\0\r\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\12\ 1\r\ 1\r\ 1\13\ 1\r\ 1\12\ 1\r\ 1\13\ 1\13\ 1\13\ 1\r\ 1\12\ 1\r\ 1\r\ 1\13\ 1\13\ 1\r\ 1\12\ 1\r\ 1\r\ 1\13\ 1\r\ 1\12\ 1\r\ 1\r\ 1\r\ 1\1e\ 1c\ 1\0\0\0\12\0\0\0\ 5\0\0\0C\0\0\0so\ 3\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0d\ 1\0\83\ 1\0\ 1t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0\83\ 1\0\ 1d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 5\0}\ 3\0d\b\0\0d
++\0d\v\0d\f\0g\ 5\0}\ 4\0d\r\0d\ e\0d\ f\0d\10\0d\11\0g\ 5\0}\ 5\0d\12\0d\13\0d\14\0d\15\0d\16\0g\ 5\0}\ 6\0d\17\0d\18\0d\19\0d\1a\0d\e\0g\ 5\0}\a\0t\ 3\0j\ 4\0\83\0\0}\b\0|\b\0j\ 5\0|\ 3\0d\1c\0d\1d\0\83\ 3\0\ 1t\ 3\0j\ 4\0\83\0\0\0|      \0j\ 5\0|\ 4\0d\1c\0d\1d\0\83\ 3\0\ 1t\ 3\0j\ 4\0\83\0\0}
++\0|
++\0j\ 5\0|\ 5\0d\1c\0d\1d\0\83\ 3\0\ 1t\ 3\0j\ 4\0\83\0\0}\v\0|\v\0j\ 5\0|\ 6\0d\1c\0d\1d\0\83\ 3\0\ 1t\ 3\0j\ 4\0\83\0\0}\f\0|\f\0j\ 5\0|\a\0d\1c\0d\1d\0\83\ 3\0\ 1|\b\0j\ 2\0d\1e\0\83\ 1\0\ 1\0j\ 2\0d\1f\0\83\ 1\0\ 1|
++\0j\ 2\0\0\83\ 1\0\ 1|\v\0j\ 2\0d!\0\83\ 1\0\ 1|\f\0j\ 2\0d"\0\83\ 1\0\ 1|\b\0j\ 6\0d#\0d$\0\83\ 2\0\ 1|        \0j\ 6\0d#\0d%\0\83\ 2\0\ 1|
++\0j\ 6\0d#\0d&\0\83\ 2\0\ 1|\v\0j\ 6\0d#\0d'\0\83\ 2\0\ 1|\f\0j\ 6\0d#\0d(\0\83\ 2\0\ 1t\a\0j\ 4\0t\b\0t      \0\83\ 2\0}\r\0|\r\0j
++\0|\ 1\0\83\ 1\0\ 1|\r\0j\v\0|\b\0\83\ 1\0\ 1|\r\0j\f\0d)\0d\1c\0d*\0\83\ 3\0\ 1|\r\0j\ 2\0d+\0\83\ 1\0\ 1t\a\0j\ 4\0t\b\0t\r\0\83\ 2\0}\ e\0|\ e\0j
++\0|\ 1\0\83\ 1\0\ 1|\ e\0j\ e\0|       \0|
++\0g\ 2\0\83\ 1\0\ 1|\ e\0j\ f\0d,\0d-\0d.\0\83\ 3\0\ 1|\ e\0j\10\0d/\0d0\0d1\0\83\ 3\0\ 1|\ e\0j\ 2\0d2\0\83\ 1\0\ 1t\a\0j\ 4\0t\b\0t\11\0\83\ 2\0}\ f\0|\ f\0j
++\0|\ 2\0\83\ 1\0\ 1|\ f\0j\v\0|\v\0\83\ 1\0\ 1|\ f\0j\f\0d/\0d3\0d4\0\83\ 3\0\ 1|\ f\0j\10\0d5\0d6\0d7\0\83\ 3\0\ 1|\ f\0j\ 2\0d8\0\83\ 1\0\ 1t\a\0j\ 4\0t\b\0t    \0\83\ 2\0}\10\0|\10\0j
++\0|\ 1\0\83\ 1\0\ 1|\10\0j\v\0|\v\0\83\ 1\0\ 1|\10\0j\f\0d9\0d:\0d;\0\83\ 3\0\ 1|\10\0j\ 2\0d<\0\83\ 1\0\ 1t\a\0j\ 4\0t\b\0t\12\0\83\ 2\0}\11\0|\11\0j
++\0|\ 2\0\83\ 1\0\ 1|\11\0j\v\0|\f\0\83\ 1\0\ 1|\11\0j\ 2\0d=\0\83\ 1\0\ 1|\r\0|\ e\0|\ f\0|\10\0|\11\0g\ 5\0S(>\0\0\0NR=\0\0\0R>\0\0\0gffffffæ¿g\0\0\0\0\0\0ð¿g\0\0\0\0\0\0\0Àg\0\0\0\0\0\0\bÀg\0\0\0\0\0\0\10Àg\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@g\0\0\0\0\0\0\10@g\0\0\0\0\0@e@g\0\0\0\0\0`e@g\0\0\0\0\0\80e@g\0\0\0\0\0 e@g\0\0\0\0\0Àe@g\0\0\0\0\0\0\14@g\0\0\0\0\0\0\18@g\0\0\0\0\0\0\1c@g\0\0\0\0\0\0 @g\0\0\0\0\0\0"@g\0\0\0\0\0\0.@g\0\0\0\0\0\00@g\0\0\0\0\0\01@g\0\0\0\0\0\02@g\0\0\0\0\0\03@i\ 5\0\0\0i\ 1\0\0\0R?\0\0\0R@\0\0\0RA\0\0\0RB\0\0\0RC\0\0\0i\0\0\0\0RD\0\0\0RE\0\0\0RF\0\0\0RG\0\0\0RH\0\0\0g\9a\99\99\99\99\99É?i\ 6\0\0\0RI\0\0\0gffffffæ?i\a\0\0\0i\b\0\0\0g333333ó?i       \0\0\0i
++\0\0\0RJ\0\0\0i\v\0\0\0i\f\0\0\0g\0\0\0\0\0\0ø?i\r\0\0\0i\ e\0\0\0RK\0\0\0g333333û?i\ f\0\0\0i\10\0\0\0RL\0\0\0RM\0\0\0(\13\0\0\0R\ 1\0\0\0R\12\0\0\0R-\0\0\0R
++\0\0\0R\ 3\0\0\0R\v\0\0\0RN\0\0\0RO\0\0\0RP\0\0\0RQ\0\0\0RR\0\0\0RS\0\0\0RT\0\0\0RV\0\0\0RW\0\0\0RX\0\0\0RY\0\0\0RZ\0\0\0R[\0\0\0(\12\0\0\0R\r\0\0\0R=\0\0\0R>\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0Ra\0\0\0R?\0\0\0R@\0\0\0RA\0\0\0RB\0\0\0RC\0\0\0RI\0\0\0RJ\0\0\0RK\0\0\0RL\0\0\0RM\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\12\0\0\0buildMultiFields_2£\ 1\0\0sp\0\0\0\0\ 1\f\ 1\r\ 1\f\ 1\r\ 1\15\ 1\15\ 1\15\ 1\15\ 1\15\ 1\f\ 1\13\ 1\f\ 1\13\ 1\f\ 1\13\ 1\f\ 1\13\ 1\f\ 1\13\ 1\r\0\r\0\r\0\r\0\r\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\12\ 1\r\ 1\r\ 1\13\ 1\r\ 1\12\ 1\r\ 1\13\ 1\13\ 1\13\ 1\r\ 1\12\ 1\r\ 1\r\ 1\13\ 1\13\ 1\r\ 1\12\ 1\r\ 1\r\ 1\13\ 1\r\ 1\12\ 1\r\ 1\r\ 1\r\ 1c\ 1\0\0\0\ 4\0\0\0\ 6\0\0\0C\0\0\0s\8f\0\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0t\ 2\0j\ 3\0\83\0\0}\ 2\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 2\0g\ 5\0}\ 3\0|\ 1\0j\ 4\0d\ 4\0\83\ 1\0\ 1|\ 1\0j\ 5\0t\ 6\0d\ 4\0|\ 3\0d\ 3\0d\ 4\0!\83\ 3\0\ 1|\ 1\0j\ 5\0t\a\0d\ 5\0|\ 3\0d\ 4\0d\ 6\0!\83\ 3\0\ 1|\ 1\0j\b\0\83\0\0\ 1|\ 1\0j     \0|\ 2\0\83\ 1\0\ 1|\ 1\0S(\a\0\0\0Nt\v\0\0\0Multi1DMeshi\ 1\0\0\0i\0\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0(
++\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 1\0\0\0t\1a\0\0\0buildCoordsForMultiTypes_1R\ 5\0\0\0R\ 6\0\0\0R'\0\0\0R3\0\0\0R        \0\0\0R\f\0\0\0(\ 4\0\0\0R\1c\0\0\0R(\0\0\0t\ 3\0\0\0cooR"\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build1DMultiTypes_1Ù\ 1\0\0s\12\0\0\0\0\ 1\12\ 1\f\ 1\15\ 1\r\ 1\1a\ 1\1a\ 1
++\ 1\r\ 1c\ 1\0\0\0\ 4\0\0\0\15\0\0\0C\0\0\0\0\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0t\ 2\0j\ 3\0\83\0\0}\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d   \0d
++\0d\v\0d\f\0d      \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0g\15\0}\ 3\0|\ 1\0j\ 4\0d\ 4\0\83\ 1\0\ 1|\ 1\0j\ 5\0t\ 6\0d\ 3\0|\ 3\0d        \0d\ 3\0!\83\ 3\0\ 1|\ 1\0j\ 5\0t\a\0d\ 6\0|\ 3\0d\ 3\0d
++\0!\83\ 3\0\ 1|\ 1\0j\ 5\0t\b\0d\ 4\0|\ 3\0d
++\0d\ e\0!\83\ 3\0\ 1|\ 1\0j\ 5\0t      \0d\b\0|\ 3\0d\ e\0d\11\0!\83\ 3\0\ 1|\ 1\0j
++\0\83\0\0\ 1|\ 1\0j\v\0|\ 2\0\83\ 1\0\ 1|\ 1\0S(\12\0\0\0Nt\v\0\0\0Multi2DMeshi\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i\0\0\0\0\0\0\0i
++\0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0i\ e\0\0\0i\ f\0\0\0i\15\0\0\0(\f\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 1\0\0\0Re\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\b\0\0\0R8\0\0\0R\a\0\0\0R9\0\0\0R     \0\0\0R\f\0\0\0(\ 4\0\0\0R\1c\0\0\0R(\0\0\0Rf\0\0\0R"\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build2DMultiTypes_1ä\ 1\0\0s\16\0\0\0\0\ 1\12\ 1\f\ 1E\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\r\ 1c\ 1\0\0\0\ 4\0\0\0Q\0\0\0C\0\0\0s\ f\ 2\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0t\ 2\0j\ 3\0\83\0\0}\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d        \0d
++\0d\v\0d\f\0d\ 3\0d\r\0d\ e\0d\ f\0d\10\0d\ 3\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\ 3\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\ 3\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0d#\0d$\0d%\0d&\0d\ 3\0d\ f\0d\ e\0d\r\0d'\0d(\0d)\0d*\0d\ 3\0d\ f\0d\ e\0d\r\0d'\0d(\0d)\0d*\0d\14\0d\13\0d\12\0d\11\0d+\0d,\0d-\0d.\0d/\0d0\0d1\0d2\0gQ\0}\ 3\0|\ 1\0j\ 4\0d3\0\83\ 1\0\ 1|\ 1\0j\ 5\0t\ 6\0d4\0|\ 3\0d\ 3\0d4\0!\83\ 3\0\ 1|\ 1\0j\ 5\0t\a\0d\ e\0|\ 3\0d4\0d\12\0!\83\ 3\0\ 1|\ 1\0j\ 5\0t\b\0d5\0|\ 3\0d\12\0d\a\0!\83\ 3\0\ 1|\ 1\0j\ 5\0t      \0d\13\0|\ 3\0d\a\0d\e\0!\83\ 3\0\ 1|\ 1\0j\ 5\0t
++\0d6\0|\ 3\0d\e\0d!\0!\83\ 3\0\ 1|\ 1\0j\ 5\0t\v\0d\11\0|\ 3\0d!\0d0\0!\83\ 3\0\ 1|\ 1\0j\ 5\0t\f\0d3\0|\ 3\0d0\0d7\0!\83\ 3\0\ 1|\ 1\0j\ 5\0t\r\0d\b\0|\ 3\0d7\0d8\0!\83\ 3\0\ 1|\ 1\0j\ e\0\83\0\0\ 1|\ 1\0j\ f\0|\ 2\0\83\ 1\0\ 1|\ 1\0S(9\0\0\0Nt\v\0\0\0Multi3DMeshi\ 3\0\0\0i\0\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\v\0\0\0i
++\0\0\0i  \0\0\0i\19\0\0\0i\ f\0\0\0i\ e\0\0\0i\r\0\0\0i\f\0\0\0i\1a\0\0\0i\e\0\0\0i\1c\0\0\0i\1d\0\0\0i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i#\0\0\0i$\0\0\0i%\0\0\0i&\0\0\0i'\0\0\0i(\0\0\0i)\0\0\0i*\0\0\0i+\0\0\0i,\0\0\0i-\0\0\0i.\0\0\0i/\0\0\0i0\0\0\0i1\0\0\0i2\0\0\0i3\0\0\0i4\0\0\0i5\0\0\0i6\0\0\0i7\0\0\0i\b\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 6\0\0\0i=\0\0\0iQ\0\0\0(\10\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 1\0\0\0Re\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\e\0\0\0t\f\0\0\0NORM_TETRA10t
++\0\0\0NORM_PYRA5t\v\0\0\0NORM_PYRA13t\v\0\0\0NORM_PENTA6t\f\0\0\0NORM_PENTA15R\18\0\0\0t\v\0\0\0NORM_HEXA20R  \0\0\0R\f\0\0\0(\ 4\0\0\0R\1c\0\0\0R(\0\0\0Rf\0\0\0R"\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0build3DMultiTypes_1ñ\ 1\0\0s,\0\0\0\0\ 1\12\ 1\f\ 1\f\ 1\1e\ 1\ f\ 1'\ 1\12\ 1-\ 1\18\ 1B\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\r\ 1c\ 1\0\0\0\ 3\0\0\0¨\0\0\0C\0\0\0sQ\ 2\0\0t\0\0j\ 1\0\83\0\0}\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 1\0d\ 4\0d\ 5\0d\ 1\0d\ 6\0d\a\0d\ 1\0d\ 3\0d\ 4\0d\ 1\0d\b\0d\ 5\0d\ 1\0d        \0d\ 2\0d\ 1\0d\ 1\0d     \0d\ 1\0d   \0d      \0d\ 1\0d   \0d\ 1\0d\ 1\0d\ 1\0d\ 4\0d\ 1\0d\ 4\0d    \0d\ 1\0d   \0d\ 4\0d\ 1\0d\ 4\0d\ 1\0d\ 1\0d\ 1\0d\ 6\0d\ 1\0d
++\0d
++\0d\ 1\0d\v\0d
++\0d
++\0d\ 1\0d
++\0d\ 1\0d\a\0d\b\0d\ 1\0d\a\0d\a\0d\ 1\0d\f\0d\a\0d\a\0d\f\0d\b\0d\a\0d\r\0d
++\0d\a\0d\ 4\0d\ 4\0d\ 4\0d
++\0d\ 3\0d\ 3\0d
++\0d
++\0d\ 3\0d\ 3\0d
++\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 1\0d
++\0d\ 1\0d\ 4\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 6\0d\ 1\0d
++\0d\ 6\0d
++\0d\ 1\0d\ 6\0d\ 1\0d\a\0d\ 1\0d\a\0d\a\0d\ 1\0d\a\0d\ 1\0d\ 1\0d\ 1\0d\a\0d\ 6\0d\a\0d\a\0d\ 6\0d\a\0d\ 1\0d\ 6\0d\ 1\0d\ 1\0d
++\0d\ 1\0d
++\0d
++\0d
++\0d\ 1\0d
++\0d\ 1\0d\ 1\0d      \0d\ 1\0d   \0d      \0d      \0d      \0d      \0d      \0d\ 1\0d   \0d\ 1\0d\ 4\0d        \0d\ 4\0d   \0d      \0d      \0d\ 4\0d   \0d\ 4\0d\ 1\0d        \0d\ 1\0d\ 1\0d\ 4\0d\ 1\0d  \0d\ 4\0d   \0d      \0d\ 4\0d   \0d\ 1\0d\ 4\0\0}\ 2\0|\ 1\0j\ 2\0|\ 2\0d\ e\0d\ f\0\83\ 3\0\ 1|\ 1\0j\ 3\0d\10\0d\11\0\83\ 2\0\ 1|\ 1\0j\ 3\0d\12\0d\13\0\83\ 2\0\ 1|\ 1\0j\ 3\0d\14\0d\15\0\83\ 2\0\ 1|\ 1\0S(\16\0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\ 4@g\0\0\0\0\0\0\18@g\0\0\0\0\0\0ø?g\0\0\0\0\0\0\12@g\0\0\0\0\0\0\10@g\0\0\0\0\0\0\b@gÍÌÌÌÌÌô?gÍÌÌÌÌÌä?g333333\ 1@i8\0\0\0i\ 3\0\0\0i\0\0\0\0s\ 6\0\0\0X (cm)i\ 1\0\0\0s\ 6\0\0\0Y (cm)i\ 2\0\0\0s\ 6\0\0\0Z (cm)(\ 4\0\0\0R
++\0\0\0R\ 3\0\0\0R\v\0\0\0RN\0\0\0(\ 3\0\0\0R\1c\0\0\0R!\0\0\0t\ 4\0\0\0data(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyRe\0\0\0   \ 2\0\0s\12\0\0\0\0\ 1\f\ 1ÿ\0ÿ\0\0\ 1\13\ 1\10\ 1\10\ 1\10\ 1c\ 1\0\0\0\ 6\0\0\0Q\0\0\0C\0\0\0sU\ 2\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0t\ 2\0j\ 1\0\83\0\0}\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 3\0d\ 5\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 3\0d\ 5\0d\ 4\0d\ 3\0d\ 3\0d\ 5\0d\ 3\0d\ 4\0d\ 5\0d\ 3\0d\ 5\0d\ 5\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 4\0d\ 3\0d\ 4\0d\ 5\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 5\0d\ 4\0d\ 4\0d\ 3\0d\ 5\0d\ 4\0d\ 4\0d\ 5\0d\ 4\0d\ 5\0d\ 5\0d\ 4\0d\ 3\0d\ 3\0d\ 5\0d\ 4\0d\ 3\0d\ 5\0d\ 5\0d\ 3\0d\ 5\0d\ 3\0d\ 4\0d\ 5\0d\ 4\0d\ 4\0d\ 5\0d\ 5\0d\ 4\0d\ 5\0d\ 3\0d\ 5\0d\ 5\0d\ 4\0d\ 5\0d\ 5\0d\ 5\0d\ 5\0d\ 5\0gQ\0}\ 3\0|\ 2\0j\ 3\0|\ 3\0d\ 6\0d\ 2\0\83\ 3\0\ 1d\ 2\0d\a\0d\b\0d    \0d
++\0d\v\0d\f\0d\r\0d   \0d\b\0d\ e\0d\ f\0d\r\0d\f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\ 2\0d\a\0d\b\0d    \0d\15\0d\14\0d\16\0d\17\0d  \0d\b\0d\ e\0d\ f\0d\a\0d\18\0d\19\0d\b\0d\v\0d\1a\0d\e\0d\f\0d\b\0d\19\0d\1c\0d\ e\0d\f\0d\e\0d\1d\0d\10\0d\13\0d\1e\0d\1f\0d\14\0d\a\0d\18\0d\19\0d\b\0d\14\0d\1f\0\0d\16\0d\b\0d\19\0d\1c\0d\ e\0g@\0}\ 4\0|\ 1\0j\ 4\0d\17\0\83\ 1\0\ 1x:\0t\ 5\0d\17\0\83\ 1\0D],\0}\ 5\0|\ 1\0j\ 6\0t\a\0d\17\0|\ 4\0d\17\0|\ 5\0\14d\17\0|\ 5\0d\r\0\17\14!\83\ 3\0\ 1q
++\ 2W|\ 1\0j\b\0\83\0\0\ 1|\ 1\0j      \0|\ 2\0\83\ 1\0\ 1|\ 1\0S(!\0\0\0Nt     \0\0\0Hexa8Onlyi\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0ð?i\e\0\0\0i\f\0\0\0i\r\0\0\0i\ 4\0\0\0i\0\0\0\0i  \0\0\0i
++\0\0\0i\ 1\0\0\0i\ e\0\0\0i\ 5\0\0\0i\v\0\0\0i\ 2\0\0\0i\ 6\0\0\0i\ f\0\0\0i\10\0\0\0i\a\0\0\0i\11\0\0\0i\b\0\0\0i\15\0\0\0i\16\0\0\0i\12\0\0\0i\13\0\0\0i\17\0\0\0i\14\0\0\0i\18\0\0\0i\19\0\0\0i\1a\0\0\0(
++\0\0\0R\ 2\0\0\0R\ 3\0\0\0R
++\0\0\0R\v\0\0\0R\ 5\0\0\0R\17\0\0\0R\ 6\0\0\0R\18\0\0\0\0\0\0R\f\0\0\0(\ 6\0\0\0R\1c\0\0\0R(\0\0\0Rf\0\0\0R!\0\0\0R"\0\0\0R\19\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\10\0\0\0buildHexa8Mesh_1\12\ 2\0\0s&\0\0\0\0\ 1\12\ 1\f\ 1ù\ 1\13\ 1\18\ 1\18\ 1\18\ 1\18\ 1\18\ 1\18\ 1\18\ 1\1e\ 1\r\ 1\13\ 1&\ 1\ 4\ 1
++\ 1\r\ 1c\ 1\0\0\0\b\0\0\0J\0\0\0C\0\0\0s\82\ 3\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0t\0\0j\ 1\0d\ 1\0d\ 3\0\83\ 2\0}\ 2\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 5\0d\ 6\0d\ 4\0d\ 5\0d\ 4\0d\ 6\0d\ 5\0d\a\0d\ 4\0d\ 5\0d\ 4\0d\a\0d\ 5\0d\ 5\0d\ 5\0d\ 6\0d\b\0d\ 5\0d\ 6\0d\b\0d\b\0d\ 6\0d\ 5\0d\b\0d\ 6\0d\ 5\0d\ 5\0d        \0d\b\0d\ 5\0d        \0d\b\0d\b\0d        \0d\ 5\0d\b\0d        \0d\ 5\0d\ 5\0d
++\0d\b\0d\ 5\0d
++\0d\b\0d\b\0d
++\0d\ 5\0d\b\0d
++\0d\ 4\0d\ 4\0d\v\0g9\0}\ 3\0d\f\0d\r\0d\ 3\0d\ e\0d\f\0d\r\0d\ 2\0d\ 3\0d\f\0d\r\0d\ f\0d\ 2\0d\f\0d\r\0d\ e\0d\ f\0d\r\0d\10\0d\ 2\0d\ 3\0d\r\0d\11\0d\ f\0d\ 2\0d\r\0d\12\0d\ e\0d\ f\0d\r\0d\13\0d\ 3\0d\ e\0d\r\0d\10\0d\ 3\0d\13\0d\r\0d\11\0d\ 2\0d\10\0d\r\0d\12\0d\ f\0d\11\0d\r\0d\13\0d\ e\0d\12\0d\10\0d\11\0d\12\0d\13\0d\r\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\10\0d\11\0d\12\0d\13\0d\14\0d\17\0d\16\0d\15\0d\19\0d\1a\0d\e\0d\1c\0gJ\0}\ 4\0t\ 2\0j\ 1\0\83\0\0}\ 5\0|\ 5\0j\ 3\0|\ 3\0d\1d\0d\ 2\0\83\ 3\0\ 1|\ 1\0j\ 4\0|\ 5\0\83\ 1\0\ 1|\ 2\0j\ 4\0|\ 5\0\83\ 1\0\ 1|\ 1\0j\ 5\0d\16\0\83\ 1\0\ 1x:\0t\ 6\0d\e\0\83\ 1\0D],\0}\ 6\0|\ 1\0j\a\0t\b\0d\ f\0|\ 4\0d\ f\0|\ 6\0\14d\ f\0|\ 6\0\14d\ f\0\17!\83\ 3\0\ 1q\f\ 2W|\ 1\0j\a\0t        \0d\ e\0|\ 4\0d\1e\0d\1f\0!\83\ 3\0\ 1|\ 1\0j\a\0t       \0d\ e\0|\ 4\0d\1f\0\0!\83\ 3\0\ 1|\ 1\0j\a\0t
++\0d\12\0|\ 4\0\0d!\0!\83\ 3\0\ 1|\ 1\0j\a\0t
++\0d\12\0|\ 4\0d!\0d"\0!\83\ 3\0\ 1|\ 1\0j\v\0\83\0\0\ 1d\f\0d\ e\0d\r\0d\14\0d\18\0d\15\0d\12\0d\11\0d\ f\0d\13\0d\ e\0d\ 3\0d\e\0d\12\0d\13\0d\1c\0d\10\0d\11\0d\12\0d\13\0g\14\0}\a\0|\ 2\0j\ 5\0d\10\0\83\ 1\0\ 1x:\0t\ 6\0d\ f\0\83\ 1\0D],\0}\ 6\0|\ 2\0j\a\0t\f\0d\ 2\0|\a\0d\ 2\0|\ 6\0\14d\ 2\0|\ 6\0\14d\ 2\0\17!\83\ 3\0\ 1q
++\ 3W|\ 2\0j\a\0t\r\0d\ f\0|\a\0d\e\0d\16\0!\83\ 3\0\ 1|\ 2\0j\a\0t\r\0d\ f\0|\a\0d\16\0d#\0!\83\ 3\0\ 1|\ 2\0j\v\0\83\0\0\ 1|\ 1\0|\ 2\0g\ 2\0S($\0\0\0Ns
++\0\0\0Pointe.medi\ 3\0\0\0i\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\0Àg\0\0\0\0\0\0ð¿g\0\0\0\0\0\0\b@g\0\0\0\0\0\0\10@g\0\0\0\0\0\0\14@i\0\0\0\0i\ 1\0\0\0i\ 5\0\0\0i\ 4\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i   \0\0\0i\ e\0\0\0i\11\0\0\0i\10\0\0\0i\ f\0\0\0i\12\0\0\0i
++\0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0i\13\0\0\0i0\0\0\0i5\0\0\0i:\0\0\0iB\0\0\0iJ\0\0\0i\14\0\0\0(\ e\0\0\0R\ 2\0\0\0R\ 3\0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\ 5\0\0\0R\17\0\0\0R\ 6\0\0\0R\e\0\0\0Rl\0\0\0R\18\0\0\0R  \0\0\0R\b\0\0\0R\a\0\0\0(\b\0\0\0R\1c\0\0\0R(\0\0\0t\ 5\0\0\0mesh2R!\0\0\0R"\0\0\0Rf\0\0\0R\19\0\0\0R#\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\r\0\0\0buildPointe_1'\ 2\0\0s4\0\0\0\0\ 1\12\ 1\12\ 1±\ 1ä\ 1\f\ 1\13\ 1\r\ 1\r\ 1\r\ 1\13\ 1&\ 1\ 4\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 2B\ 1\r\ 1\13\ 1&\ 1\ 4\ 1\1a\ 1\1a\ 1
++\ 1c\ 1\0\0\0\ 6\0\0\0\93\0\0\0C\0\0\0s_\a\0\0t\0\0d\ 1\0d\ 2\0d\ 3\0d\ 2\0d\ 4\0d\ 2\0d\ 5\0d\ 6\0d\a\0d\b\0d     \0d
++\0d\v\0d\ 2\0d\f\0d\r\0d\ e\0d\ e\0d\ f\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\ 6\0d\ 5\0d\b\0d\a\0d
++\0d    \0d\r\0d\f\0d\14\0d\ 3\0d\15\0d\ 4\0d\16\0d\v\0d\17\0d\ 1\0d\18\0d\ 2\0d\19\0d
++\0d\1a\0d\ 2\0d\e\0d\ 2\0d\1c\0d\ 6\0d\1d\0d\r\0d\1e\0d\ e\0d\1f\0d\b\0\0d\ 2\0d!\0d"\0d#\0d\ 2\0d$\0d%\0d&\0d\ 2\0d'\0d(\0d)\0d*\0d+\0d,\0d-\0d.\0d/\0d0\0d1\0d\ 2\0d2\0d\ f\0d3\0d\13\0d4\0d5\0d6\0d7\0d8\0d9\0d:\0d;\0d<\0d=\0d>\0d?\0d@\0dA\0dB\0dC\0dD\0dE\0dF\0d\11\0dG\0dH\0dI\0dJ\0dK\0dL\0dM\0dN\0dO\0d\f\0dP\0d     \0dQ\0d\a\0dR\0dS\0dT\0dU\0dV\0dW\0dX\0d\ 5\0dY\0dZ\0d[\0d\\0d]\0d^\0d_\0d`\0da\0db\0dc\0dd\0de\0df\0dg\0dh\0di\0dj\0dk\0dl\0dm\0dn\0g\92\0do\0dp\0\83\ 3\0}\ 1\0|\ 1\0j\ 1\0dq\0dr\0g\ 2\0\83\ 1\0\ 1t\ 2\0ds\0dp\0\83\ 2\0}\ 2\0|\ 2\0j\ 3\0dt\0\83\ 1\0\ 1|\ 2\0j\ 4\0du\0\83\ 1\0\ 1|\ 2\0j\ 5\0d1\0dv\0dv\0\83\ 3\0\ 1|\ 2\0j\ 6\0|\ 1\0\83\ 1\0\ 1|\ 2\0j\a\0\83\0\0\ 1dw\0dx\0dy\0g\ 3\0dw\0dy\0dz\0g\ 3\0dx\0d{\0dy\0g\ 3\0d{\0d|\0dy\0g\ 3\0d{\0d}\0d~\0g\ 3\0d{\0d~\0d|\0g\ 3\0dz\0dy\0d\7f\0g\ 3\0dy\0d\80\0d\7f\0g\ 3\0dy\0d|\0d\81\0g\ 3\0dy\0d\81\0d\80\0g\ 3\0d|\0d~\0d\81\0g\ 3\0d~\0d\82\0d\81\0g\ 3\0d\83\0d\84\0d\85\0d\86\0g\ 4\0d\84\0dp\0d\87\0d\85\0g\ 4\0dp\0d\88\0d\89\0d\87\0g\ 4\0d\86\0d\85\0dx\0dw\0g\ 4\0d\85\0d\87\0d{\0dx\0g\ 4\0d\87\0d\89\0d}\0d{\0g\ 4\0d\8a\0d\8b\0d\8c\0d\8d\0d\8e\0d\8f\0g\ 6\0d\8c\0d\90\0d\8a\0d\91\0d\92\0d\8f\0g\ 6\0d\8b\0d\93\0d\8c\0d\94\0d\95\0d\8e\0g\ 6\0d\93\0d\96\0d\8c\0d\97\0d\98\0d\95\0g\ 6\0d\93\0d\99\0d\9a\0d\9b\0d\9c\0d\9d\0g\ 6\0d\9a\0d\96\0d\93\0d\9e\0d\97\0d\9d\0g\ 6\0d\90\0d\8c\0d\9f\0d\91\0\0\0g\ 6\0d\8c\0\0d\9f\0\0\0\0g\ 6\0d\8c\0d\96\0\0d\98\0\0\0g\ 6\0\0\0d\8c\0\0\0\0g\ 6\0d\96\0d\9a\0\0d\9e\0\0\0g\ 6\0d\9a\0\0\0\0\0\0g\ 6\0d\9f\0\0\0\0\0\0\0\0g\b\0\0\0\0\0\0\0\0\0g\b\0\0\0\0\0\0\0\0\0g\b\0\0\0d\81\0d\82\0\0\0\0\0g\b\0\0\0d\80\0d\81\0\0\0\0\0g\b\0\0\0d\7f\0d\80\0\0\0\0\0g\b\0g$\0}\ 3\0x+\0t\b\0d\83\0dz\0\83\ 2\0D]\1a\0}\ 4\0|\ 2\0j  \0t
++\0|\ 3\0|\ 4\0\19\83\ 2\0\ 1\ 4Wx+\0t\b\0dz\0d\82\0\83\ 2\0D]\1a\0}\ 4\0|\ 2\0j    \0t\v\0|\ 3\0|\ 4\0\19\83\ 2\0\ 1\ 4Wx+\0t\b\0d\82\0d\94\0\83\ 2\0D]\1a\0}\ 4\0|\ 2\0j   \0t\f\0|\ 3\0|\ 4\0\19\83\ 2\0\ 1q(\ 5Wx+\0t\b\0d\94\0\0\83\ 2\0D]\1a\0}\ 4\0|\ 2\0j   \0t\r\0|\ 3\0|\ 4\0\19\83\ 2\0\ 1qV\ 5Wt\ e\0j\ f\0t\10\0\83\ 1\0}\ 5\0|\ 5\0j\11\0d¿\0\83\ 1\0\ 1|\ 5\0j\12\0t\13\0\83\ 1\0\ 1|\ 5\0j\14\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\15\0t\16\0t\b\0d\83\0dz\0\83\ 2\0\83\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0g\ 6\0\0\0g\ 2\0\0g\ 1\0\83\ 4\0\ 1|\ 5\0j\15\0t\16\0t\b\0dz\0d\82\0\83\ 2\0\83\ 1\0d1\0d1\0d\ 1\0d1\0d\ 1\0d\ 1\0d1\0d\ 1\0g\b\0\0\0\0\0\0\0\0\0g\b\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0g\ 4\0\83\ 4\0\ 1|\ 5\0j\15\0t\16\0t\b\0d\82\0d\94\0\83\ 2\0\83\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0\0d\ 2\0\0\0d\ 2\0\0g\f\0\0\0\0\0\0\0g\ 6\0\0\0\0g\ 3\0\83\ 4\0\ 1|\ 5\0j\15\0t\16\0t\b\0d\94\0\0\83\ 2\0\83\ 1\0d1\0d1\0d\ 1\0d1\0d\ 1\0d\ 1\0d1\0d\ 1\0d\ 2\0d1\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d1\0d\ 2\0g\10\0\0\0\0\0\0\0\0\0d\ 2\0\0\0d\ 2\0d\ 2\0\0\0d\ 2\0d\ 2\0d\ 2\0g\12\0\0\0\0\0\0\0\0\0\0g  \0\83\ 4\0\ 1t\17\0|\ 5\0\83\ 1\0S(Ë\0\0\0Ng\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0gFUUUUUõ?gºªªªªªú?gH\8d2Ïk\90í?gh©®¦â}Ø?gB^Ì4\9dµó?g\94\e\1foìSà?g¦uÿ\81\ 4£ø?g~âæ\8açhä?g\0\0\0\0\0\0\0@g7\8d2Ïk\90ý?gh©®¦â}è?gdúþÝ}+î?g\84\¿ª.Ûò?gã;\7ff\9e ö?g¶;\7ff\9e ö?gÑ;\7ff\9e æ?gÈ;\7ff\9e æ?g\ 4\0\0\0\00\82<g\ 2\0\0\0\0Àj<gúÿÿÿÿæ³¼gúÿÿÿÿ棼g\0\0\0\0\0\0\0Àg¦uÿ\81\ 4£ø¿gºªªªªªú¿gFUUUUUõ¿gH\8d2Ïk\90í¿g7\8d2Ïk\90ý¿gdúþÝ}+î¿gB^Ì4\9dµó¿gFUUUUUý¿g\84\ 1\99\19û¿gîÅÊ\18esæ?g\0\0\0\0\0\0ø¿g,\93O5eìô¿g¸nF(Ð¥Ð?gºªªªªªò¿gcÒ2\8eé>ñ¿gHpvÂÝ\92Ü?gc1\8cw*,ö¿gü\ 3xµb¡í?gôéeÛP,ö¿g\rÿ\ 2ýi^â?gÔlßÌvøð¿gÔlßÌvøð?g¢¡\ e)f\9bê¿gÇh®9;Çá?g\0\0\0\0\0\0ð¿g\84\¿ª.Ûò¿gÑ;\7ff\9e æ¿gÖw£\82~'ú¿g\
++X2DÏÔ?g«\÷Ï\97bÿ¿g\ 1¦i<¸øØ?g\98\85ùÛñ\89÷¿g\81<O-\8aºÒ?g­\÷Ï\97bï¿g\ 2¦i<¸øÈ?g\82iMPÈcø¿gP55JöKð?g4L\9f\88æ½ô¿g4L\9f\88æ½ô?g%Á   Æî¼ñ¿ga6\93÷N´ç?gè\11\91Ú¡
++ï¿g\90Ï \18Žä?g\15\e?"\ efê¿g\15\e?"\ efê?gã;\7ff\9e ö¿g@jM)\vÅü¿g8Ø`7þãÖ?g ¥\8eØNò¿g¸A{F,"Í?g¡¡\ e)f\9bú¿g´h®9;Çñ?gDùÊ\9e\8côó¿g*\9d\85Öتê?gh©®¦â}è¿g~âæ\8açhä¿g\94\e\1foìSà¿gîÅÊ\18esæ¿g\84\ 1\99\19û?g\rÿ\ 2ýi^â¿gôéeÛP,ö?gHpvÂÝ\92Ü¿gcÒ2\8eé>ñ?gh©®¦â}Ø¿gü\ 3xµb¡í¿gc1\8cw*,ö?ga6\93÷N´ç¿g%Á        Æî¼ñ?gÇh®9;Çá¿g¢¡\ e)f\9bê?g\
++X2DÏÔ¿gÖw£\82~'ú?g¸nF(Хпg,\93O5eìô?g\ 2¦i<¸øÈ¿g­\÷Ï\97bï?gõÿÿÿÿÿ><gFUUUUUý?güÿÿÿÿÁ±¼g\0\0\0\0\0\0ø?gñÿÿÿÿS¥¼gºªªªªªò?g´h®9;Çñ¿g¡¡\ e)f\9bú?g\14¦i<¸øØ¿g«\÷Ï\97bÿ?iI\0\0\0i\ 2\0\0\0s\f\0\0\0X [INCONNUE]s\f\0\0\0Y [INCONNUE]t\ 3\0\0\0MA1s\13\0\0\0CREE PAR CODE_ASTERs\v\0\0\0SANS UNITESiÿÿÿÿi\v\0\0\0i\b\0\0\0i\r\0\0\0i\f\0\0\0i   \0\0\0i\ e\0\0\0i
++\0\0\0i\ f\0\0\0i\13\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0i\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 3\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\14\0\0\0i\16\0\0\0i\15\0\0\0i\1c\0\0\0i)\0\0\0i3\0\0\0i\19\0\0\0i\1d\0\0\0i*\0\0\0i\17\0\0\0i\1e\0\0\0i+\0\0\0i\e\0\0\0i\1f\0\0\0i#\0\0\0i&\0\0\0i\18\0\0\0\0\0\0i,\0\0\0i4\0\0\0i!\0\0\0i2\0\0\0i-\0\0\0i5\0\0\0i'\0\0\0i"\0\0\0i.\0\0\0i\1a\0\0\0i/\0\0\0i6\0\0\0i$\0\0\0i0\0\0\0i(\0\0\0i%\0\0\0i1\0\0\0i8\0\0\0i7\0\0\0i>\0\0\0i:\0\0\0iG\0\0\0i9\0\0\0i?\0\0\0i;\0\0\0i=\0\0\0i@\0\0\0i<\0\0\0iA\0\0\0iD\0\0\0iH\0\0\0iB\0\0\0iE\0\0\0iC\0\0\0iF\0\0\0t\ 5\0\0\0CH1RBgUUUUUUÕ?g\0\0\0\0\0\0à?g\1e3\90E§yâ¿g\1e3\90E§yâ?gUUUUUUÅ?gUUUUUUå?gDr?ô~Éè¿gDr?ô~Éè?g·æ\87EÊÀÓ?gX¤\f\9aß?gàéÖü°Hé?(\18\0\0\0R
++\0\0\0t\13\0\0\0setInfoOnComponentsR\ 2\0\0\0t\ e\0\0\0setDescriptiont\v\0\0\0setTimeUnitRT\0\0\0R\f\0\0\0R\ 5\0\0\0R\17\0\0\0R\ 6\0\0\0R\b\0\0\0R\a\0\0\0R8\0\0\0R9\0\0\0RO\0\0\0R\ 3\0\0\0t\v\0\0\0ON_GAUSS_PTR-\0\0\0t      \0\0\0setNaturet\10\0\0\0IntensiveMaximumRR\0\0\0t\e\0\0\0setGaussLocalizationOnCellst\ 4\0\0\0listt\18\0\0\0MEDCouplingFieldTemplate(\ 6\0\0\0R\1c\0\0\0Rf\0\0\0t\ 1\0\0\0mR"\0\0\0R\19\0\0\0t\ 3\0\0\0fff(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0buildFieldOnGauss_1E\ 2\0\0sB\0\0\0\0\ 1ÿ\0É\ 1\13\ 1\ f\ 1\r\0\r\0\13\ 1\r\ 1
++\ 1ÿ\0ÿ\0\90\ 1\16\ 1\14\ 1\ 4\ 1\16\ 1\14\ 1\ 4\ 1\16\ 1\14\ 1\ 4\ 1\16\ 1\14\ 1\ 4\ 1\ f\0\r\0\r\ 1\r\ 1@\ 1a\ 1d\ 1¦\ 1c\ 1\0\0\0\ 6\0\0\0·\ 1\0\0C\0\0\0\10\0\0t\0\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 2\0d\ 6\0d\ 2\0d\a\0d\b\0d       \0d\ 2\0d
++\0d\ 2\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0d#\0d$\0d%\0d&\0d'\0d(\0d)\0d*\0d+\0d,\0d-\0d.\0d/\0d0\0d1\0d2\0d3\0d\ 2\0d4\0d5\0d6\0d\ 2\0d7\0d8\0d9\0d\ 2\0d:\0d;\0d<\0d\ 2\0d=\0d>\0d?\0d@\0dA\0dB\0dC\0dD\0dE\0dF\0dG\0dH\0dI\0dJ\0dK\0dL\0dM\0dN\0dO\0dP\0dQ\0dR\0dS\0dT\0dU\0dV\0dW\0dX\0dY\0dZ\0d[\0d\\0d]\0d^\0d_\0d`\0da\0db\0dc\0dd\0de\0df\0dg\0dh\0di\0dj\0dk\0dl\0dm\0dn\0do\0dp\0dq\0dr\0ds\0dt\0du\0dv\0dw\0dx\0dy\0dz\0d{\0d|\0d}\0d~\0d\7f\0d\80\0d\81\0d\82\0d\83\0d\84\0d\85\0d\86\0d\87\0d\88\0d\89\0d\8a\0d\8b\0d\8c\0d\8d\0d\8e\0d\8f\0d\90\0d\91\0d\92\0d\93\0d\94\0d\95\0d\96\0d\97\0d\98\0d\99\0d\9a\0d\9b\0d\9c\0d\9d\0d\9e\0d\9f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0d¿\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dÿ\0d\0\ 1d\ 1\ 1d\ 2\ 1d\ 3\ 1d\ 4\ 1d\ 5\ 1d\ 6\ 1d\a\ 1d\b\ 1d   \ 1d
++\ 1d\v\ 1d\f\ 1d\r\ 1d\ e\ 1d\ f\ 1d\10\ 1d\11\ 1d\12\ 1d\13\ 1d\14\ 1d\15\ 1d\16\ 1d\17\ 1d\18\ 1d\19\ 1d\1a\ 1d\e\ 1d\1c\ 1d\1d\ 1d\1e\ 1d\1f\ 1\ 1d!\ 1d"\ 1d#\ 1d$\ 1d%\ 1d&\ 1d'\ 1d(\ 1d)\ 1d*\ 1d+\ 1d,\ 1d-\ 1d.\ 1d/\ 1d0\ 1d1\ 1d2\ 1d3\ 1d4\ 1d5\ 1d6\ 1d7\ 1d8\ 1d9\ 1d:\ 1d;\ 1d<\ 1d=\ 1d>\ 1d?\ 1d@\ 1dA\ 1dB\ 1dC\ 1dD\ 1dE\ 1dF\ 1dG\ 1dH\ 1dI\ 1dJ\ 1dK\ 1d\ 2\0dL\ 1d\ 2\0dM\ 1d\ 2\0dN\ 1d\ 2\0dO\ 1dP\ 1dQ\ 1dR\ 1dS\ 1dT\ 1dU\ 1dV\ 1dW\ 1dX\ 1dY\ 1dZ\ 1d[\ 1d\\ 1d]\ 1d^\ 1d_\ 1d`\ 1da\ 1db\ 1dc\ 1dd\ 1de\ 1df\ 1dg\ 1dh\ 1di\ 1dj\ 1dk\ 1dl\ 1dm\ 1dn\ 1do\ 1d\ 2\0dp\ 1dq\ 1dr\ 1ds\ 1dt\ 1du\ 1dv\ 1dw\ 1dx\ 1d/\0dy\ 1dq\0dz\ 1d+\0d{\ 1do\0d|\ 1ds\0d}\ 1d~\ 1d\7f\ 1d\80\ 1d\81\ 1d\82\ 1d\83\ 1d\84\ 1d\85\ 1d\86\ 1d\87\ 1d\88\ 1d\89\ 1d\8a\ 1d\8b\ 1d\8c\ 1d\8d\ 1d\8e\ 1d\8f\ 1d\90\ 1d\91\ 1d\92\ 1d\93\ 1d\94\ 1d\95\ 1d\96\ 1d\97\ 1d\98\ 1d\99\ 1d\9a\ 1d\9b\ 1d\9c\ 1d\9d\ 1d\9e\ 1d\9f\ 1\ 1\ 1\ 1\ 1\ 1\ 1\ 1\ 1\83\ 3\0}\ 1\0|\ 1\0j\ 1\0\ 1\ 1g\ 2\0\83\ 1\0\ 1t\ 2\0\ 1\ 1\83\ 2\0}\ 2\0|\ 2\0j\ 3\0\ 1\83\ 1\0\ 1|\ 2\0j\ 4\0\ 1\83\ 1\0\ 1|\ 2\0j\ 5\0do\ 1\ 1\ 1\83\ 3\0\ 1|\ 2\0j\ 6\0|\ 1\0\83\ 1\0\ 1|\ 2\0j\a\0\ 1\83\ 1\0\ 1\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1d¿\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1d¿\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1d¿\ 1\ 1g\ 3\0d¿\ 1\ 1\ 1g\ 3\0d¿\ 1\ 1\ 1g\ 3\0d¿\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1g\ 3\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1g\ 4\0\ 1\ 1\ 1\ 1\ 1\ 1g\ 6\0\ 1\ 1\ 1\ 1\ 1\ 1g\ 6\0\ 1\ 1\ 1\ 1\ 1\ 1g\ 6\0\ 1\ 1\ 1\ 1\ 1\ 1g\ 6\0\ 1\ 1\ 1\ 1\ 1\ 1g\ 6\0\ 1\ 1\ 1\ 1\ 1\ 1g\ 6\0\ 1\ 1\ 1\ 1\ 1\ 1g\ 6\0\ 1\ 1\ 1\ 1\ 1\ 1g\ 6\0\ 1\ 1\ 1\ 1dÿ\ 1d\0\ 2g\ 6\0\ 1d\ 1\ 2\ 1d\ 2\ 2d\ 3\ 2d\0\ 2g\ 6\0\ 1\ 1\ 1\ 1d\ 4\ 2dÿ\ 1g\ 6\0\ 1d\ 5\ 2\ 1d\ 6\ 2d\a\ 2d\ 4\ 2g\ 6\0\ 1\ 1d\b\ 2\ 1d    \ 2d
++\ 2g\ 6\0d\b\ 2d\ 5\ 2\ 1d\v\ 2d\ 6\ 2d
++\ 2g\ 6\0\ 1\ 1d\b\ 2\ 1d\f\ 2d  \ 2g\ 6\0\ 1d\r\ 2d\b\ 2d\ e\ 2d\ f\ 2d\f\ 2g\ 6\0d\ 1\ 2\ 1d\10\ 2d\ 2\ 2d\11\ 2d\12\ 2g\ 6\0d\10\ 2d\13\ 2d\ 1\ 2d\14\ 2d\15\ 2d\12\ 2g\ 6\0\ 1d\ 5\ 2d\10\ 2d\a\ 2d\16\ 2d\11\ 2g\ 6\0d\ 5\ 2d\17\ 2d\10\ 2d\18\ 2d\19\ 2d\16\ 2g\ 6\0d\ 5\ 2d\b\ 2d\1a\ 2d\v\ 2d\e\ 2d\1c\ 2g\ 6\0d\1a\ 2d\17\ 2d\ 5\ 2d\1d\ 2d\18\ 2d\1c\ 2g\ 6\0d\b\ 2d\r\ 2d\1a\ 2d\ f\ 2d\1e\ 2d\e\ 2g\ 6\0d\r\ 2d\1f\ 2d\1a\ 2\ 2d!\ 2d\1e\ 2g\ 6\0d\13\ 2d\10\ 2d"\ 2d\14\ 2d#\ 2d$\ 2g\ 6\0d"\ 2d%\ 2d\13\ 2d&\ 2d'\ 2d$\ 2g\ 6\0d\10\ 2d\17\ 2d"\ 2d\19\ 2d(\ 2d#\ 2g\ 6\0d\17\ 2d)\ 2d"\ 2d*\ 2d+\ 2d(\ 2g\ 6\0d\17\ 2d\1a\ 2d,\ 2d\1d\ 2d-\ 2d.\ 2g\ 6\0d,\ 2d)\ 2d\17\ 2d/\ 2d*\ 2d.\ 2g\ 6\0d\1a\ 2d\1f\ 2d,\ 2d!\ 2d0\ 2d-\ 2g\ 6\0d\1f\ 2d1\ 2d,\ 2d2\ 2d3\ 2d0\ 2g\ 6\0d%\ 2d"\ 2d4\ 2d&\ 2d5\ 2d6\ 2g\ 6\0d4\ 2d7\ 2d%\ 2d8\ 2d9\ 2d6\ 2g\ 6\0d"\ 2d)\ 2d4\ 2d+\ 2d:\ 2d5\ 2g\ 6\0d)\ 2d;\ 2d4\ 2d<\ 2d=\ 2d:\ 2g\ 6\0d)\ 2d,\ 2d>\ 2d/\ 2d?\ 2d@\ 2g\ 6\0d>\ 2d;\ 2d)\ 2dA\ 2d<\ 2d@\ 2g\ 6\0d,\ 2d1\ 2d>\ 2d3\ 2dB\ 2d?\ 2g\ 6\0d1\ 2dC\ 2d>\ 2dD\ 2dE\ 2dB\ 2g\ 6\0d7\ 2d4\ 2dF\ 2dG\ 2d8\ 2dH\ 2dI\ 2dJ\ 2g\b\0d4\ 2d;\ 2dK\ 2dF\ 2d=\ 2dL\ 2dM\ 2dH\ 2g\b\0d;\ 2d>\ 2dN\ 2dK\ 2dA\ 2dO\ 2dP\ 2dL\ 2g\b\0d>\ 2dC\ 2dQ\ 2dN\ 2dE\ 2dR\ 2dS\ 2dO\ 2g\b\0dG\ 2dF\ 2dT\ 2dU\ 2dI\ 2dV\ 2dW\ 2dX\ 2g\b\0dF\ 2dK\ 2dY\ 2dT\ 2dM\ 2dZ\ 2d[\ 2dV\ 2g\b\0dK\ 2dN\ 2d\\ 2dY\ 2dP\ 2d]\ 2d^\ 2dZ\ 2g\b\0dN\ 2dQ\ 2d_\ 2d\\ 2dS\ 2d`\ 2da\ 2d]\ 2g\b\0dU\ 2dT\ 2db\ 2dc\ 2dW\ 2dd\ 2de\ 2df\ 2g\b\0dT\ 2dY\ 2dg\ 2db\ 2d[\ 2dh\ 2di\ 2dd\ 2g\b\0dY\ 2d\\ 2dj\ 2dg\ 2d^\ 2dk\ 2dl\ 2dh\ 2g\b\0d\\ 2d_\ 2dm\ 2dj\ 2da\ 2dn\ 2do\ 2dk\ 2g\b\0dc\ 2db\ 2dp\ 2dq\ 2de\ 2dr\ 2ds\ 2dt\ 2g\b\0db\ 2dg\ 2du\ 2dp\ 2di\ 2dv\ 2dw\ 2dr\ 2g\b\0dg\ 2dj\ 2dx\ 2du\ 2dl\ 2dy\ 2dz\ 2dv\ 2g\b\0dj\ 2dm\ 2d{\ 2dx\ 2do\ 2d|\ 2d}\ 2dy\ 2g\b\0dq\ 2dp\ 2\ 1\ 1ds\ 2d~\ 2d\7f\ 2d\80\ 2g\b\0dp\ 2du\ 2\ 1\ 1dw\ 2d\81\ 2d\82\ 2d~\ 2g\b\0du\ 2dx\ 2\ 1\ 1dz\ 2d\83\ 2d\84\ 2d\81\ 2g\b\0dx\ 2d{\ 2\ 1\ 1d}\ 2d\85\ 2d\86\ 2d\83\ 2g\b\0gx\0}\ 3\0x+\0t\b\0\ 1d\ e\ 2\83\ 2\0D]\1a\0}\ 4\0|\ 2\0j   \0t
++\0|\ 3\0|\ 4\0\19\83\ 2\0\ 1q#\ eWx+\0t\b\0d\ e\ 2d;\ 2\83\ 2\0D]\1a\0}\ 4\0|\ 2\0j    \0t\v\0|\ 3\0|\ 4\0\19\83\ 2\0\ 1qQ\ eWx+\0t\b\0d;\ 2dF\ 2\83\ 2\0D]\1a\0}\ 4\0|\ 2\0j   \0t\f\0|\ 3\0|\ 4\0\19\83\ 2\0\ 1q\7f\ eWx+\0t\b\0dF\ 2d[\ 2\83\ 2\0D]\1a\0}\ 4\0|\ 2\0j   \0t\r\0|\ 3\0|\ 4\0\19\83\ 2\0\ 1\ eWt\ e\0j\ f\0t\10\0\83\ 1\0}\ 5\0|\ 5\0j\11\0d\87\ 2\83\ 1\0\ 1|\ 5\0j\12\0t\13\0\83\ 1\0\ 1|\ 5\0j\14\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\15\0t\16\0t\b\0\ 1d\ e\ 2\83\ 2\0\83\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0g\ 6\0d\88\ 2d\88\ 2g\ 2\0d\89\ 2g\ 1\0\83\ 4\0\ 1|\ 5\0j\15\0t\16\0t\b\0d\ e\ 2d;\ 2\83\ 2\0\83\ 1\0do\ 1do\ 1d\ 1\0do\ 1d\ 1\0d\ 1\0do\ 1d\ 1\0g\b\0d\8a\ 2d\8a\ 2d\8b\ 2d\8a\ 2d\8b\ 2d\8b\ 2d\8a\ 2d\8b\ 2g\b\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0g\ 4\0\83\ 4\0\ 1|\ 5\0j\15\0t\16\0t\b\0d;\ 2dF\ 2\83\ 2\0\83\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\89\ 2d\ 2\0d\89\ 2d\89\ 2d\ 2\0d\89\ 2g\f\0d\8c\ 2d\8c\ 2d\8d\ 2d\8c\ 2d\8c\ 2d\8d\ 2g\ 6\0d\8c\ 2d\8c\ 2d\8c\ 2g\ 3\0\83\ 4\0\ 1|\ 5\0j\15\0t\16\0t\b\0dF\ 2d[\ 2\83\ 2\0\83\ 1\0do\ 1do\ 1d\ 1\0do\ 1d\ 1\0d\ 1\0do\ 1d\ 1\0d\ 2\0do\ 1d\ 1\0d\ 2\0d\ 2\0d\ 1\0do\ 1d\ 2\0g\10\0d\8e\ 2d\8e\ 2d\8f\ 2d\8e\ 2d\8f\ 2d\8f\ 2d\8e\ 2d\8f\ 2d\ 2\0d\8e\ 2d\8f\ 2d\ 2\0d\ 2\0d\8f\ 2d\8e\ 2d\ 2\0d\ 2\0d\ 2\0g\12\0d\90\ 2d\90\ 2d\90\ 2d\90\ 2d\91\ 2d\91\ 2d\91\ 2d\91\ 2d\92\ 2g  \0\83\ 4\0\ 1t\17\0|\ 5\0\83\ 1\0S(\93\ 2\0\0Ng\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0g\fg\85\17ÖÙó?g¸\9d±¯Ä\7fÃ?g\0\0\0\0\0\0ô?g\0\0\0\0\0\0ø?gªöí \92Êû?gwvÅÂyLË?g\0\0\0\0\0\0ü?g\0\0\0\0\0\0\0@g\8c>¢%ðÂï?g²bOLÔ2¿?gk\14¬\ 3êgó?g¸óÎw\8fZÓ?gÛ®9\1c4Ò÷?g\17\8a;9\1ffÇ?gÎ\82\8ak\14+û?g\ 2"\88tb\18Û?gx>¢%ðÂÿ?gÕbOLÔ2Ï?g ºy\9f©\fï?g'¹äòK÷Î?gùÒ_\89î«ò?g\ 5\88Â'`«Ü?g\86K\9b7\7fI÷?gÝ\8a+öx9×?g÷À\1f\8dç#ú?gÐøÔ\e\90\11ä?g\18ºy\9f©\fÿ?g\15¹äòK÷Þ?g\b¸ÿ\ eäßí?g8ÓÎ\1f\80ïÖ?gk8¤\11±¨ñ?gP²\96\88cÇâ?gøÉ?\vëgö?gj\1eÛ\17 3á?g\1e\82\7få÷¸ø?glÆ\9f%XJê?gö·ÿ\ eäßý?g@ÓÎ\1f\80ïæ?g\b'mO\eAì?g}P$tÒ\vÞ?g\8et­÷\ ebð?gÚ[\9b6lñæ?gDÝ\91{Ô0õ?gY<\e×Ý\88æ?grÖò\8d®ïö?gFÀlYe\ fð?gö&mO\eAü?g}P$tÒ\vî?g\0\0\0\0\0\0ò?g;C+\15§Ýñ?g\9a§ìj\97\8cÁ?g\0\0\0\0\0\0ö?g¶P¥J\8aô÷?g\1aú'ÍPq·?g\0\0\0\0\0\0ú?gÙÒ\93\1ecÎù?gX\80\0~LYÉ?g\0\0\0\0\0\0þ?g8\16\87c¸ðÿ?gà¢\8a\11ÁA¿?gÇx´i\1fwñ?g\1d¨ ¸\1akÑ?g
++\8bß\19\ 5Öõ?gù\93vôñrÅ?g0Ù6?\1e\99÷?g\9f.OÊ\9e~Ñ?g,ç\92ÑI:ù?ggÖYµí(Ù?g©\1aH#ÁÆý?g·l\8a\a§?Í?gNÌóþÒvÿ?g0>\14c~S×?gz×oHðÍð?g§­È#pÍÙ?g\ f°£\9d´Xõ?gB?ý6\ 4JÕ?gç\81Ú\ e£ãö?g4|xN%ÞÜ?gvÅ/LéEø?g¢\vØ\19\98¢â?gt\1e\82\ 5ß\eý?g\8cm¶3×\aÝ?gÏW#iÙ\84þ?g\1c¨¥\89Ã>ã?gêËZ¹>Éï?gCmTa¦æà?gyÎOÊì\89ô?gub¼+P\89ß?gùý\bSÍÖõ?g#à\13%Àçã?gǯ\880æôö?gg\81\9aiè?gu¼\ fÎå\ 1ü?g\bæÑ\1d\88\80å?gÎRa\19g\1eý?gÔ*Å\86U\8aê?g288$N}í?g©Ò\8b\97\14¦ä?gÁ
++\9bÆÂló?gU÷د ¨ä?gøÃû\ 4\9fvô?gèÅo]v\14é?gâ}a¨FLõ?ge÷É\13sÓí?g Tv\9a      }ú?gp\vâL\15+ì?g,\ 5¥\ 6ÔHû?g§.õèN¸ð?gJ\87\15Y~6ê?gwI|ø¼Zâ?g\80%ÐÂÞ¨ó?g4nºt\e\88ë?g6\87\15Y~6ú?goI|ø¼Zò?gÞm4>söó?gÁ¥öª\18\89³?gL\16\87c¸ðï?gÑ¢\8a\11ÁA¯?g`ßlÄ~õõ?gíO\ f¼4}µ?g\8e3\16W¡òû?g\95NYï\88Y»?gã¤Nݬñý?gºøq\0¥M½?g _XßCªó?g¯MÙû](Í?gOÌóþÒvï?g\1f>\14c~SÇ?g\7f\9cG\ f±¡õ?gÅê\1däf       Ð?g¾R\15\9fø\87û?gh¶±\96\ eiÔ?gp\8f\ 4Ïe\7fý?gUúâ|FÞÕ?gÜ\16¶á\a\13ó?g\1f\12\ flt\ eØ?gâW#iÙ\84î?g\1c¨¥\89Ã>Ó?gbLHxUûô?g2ÇCÝLvÚ?gòìþ;>´ú?g\eóp\18ëÖà?gv"\91Ò\8b\9cü?g\9bM\v
++â?g»ÓÜo\03ò?gÆ:;tu\96à?g½Ra\19g\1eí?gÔ*Å\86U\8aÚ?gðèráæ\ 4ô?gt\8d§Ì\1a?â?gb(56\9azù?gv\85ìÕ
++9ç?g\98=˧\80Lû?g$ØX.°áè?g^#'\84\84\rñ?gDz2£bæä?g?\ 5¥\ 6ÔHë?g\9e.õèN¸à?g«s\91Ä\11Âò?g\e Q\80lýæ?gðÌ>Ýv\ 5ò?g\ 3åªÕÃ<é?g\92\85¹ß÷?g\8d\11­\17\8aBí?gß´:ÆF\94ù?ge·Ëô\93Yï?gÔ.\84s\16\93ø?gÚ\84ô(\115ñ?g\88üû·g÷ñ?g\95ûÝ\99ü\94±?g\fÂÝÐ\95óù?gE¤@Þle¹?gï"i¯Ö²ñ?gøÅv/î=Ê?g\ e\16&o\8b\90ù?g\8dr\80°ÖóÒ?g\84á#Kº*ñ?g\1d]Úú\9b¦Õ?gm·l¥ðËø?g41­¿ýEß?g\86¾Fþ\19að?g/Ð\9d7 ÛÝ?g.\13\9fij¨÷?gÈ2\80}e\90å?gì¥y\87î±î?glÔ\13ÆXÏâ?gE\14fE,+ö?gÀk\8e:\80+ë?gÀ¾3¨×Çç?gÖ\vâ\96\84iå?gu®@\92͹í?gÐ\8e\9a¼åÃê?g\vÏ&¾áÕñ?gî\88)q#\ fð?gêF-³ÜÎô?gTÊ\ 5\ 4T¼ò?gÒO8\81oþä?g8\1c¡´\94&è?gÈc\86a\v>ê?gEcÉá90î?g¿wÔA§}ï?g2Õx\87ï\1cò?gäE\11\91¡^ò?g¬ø\f\1eÂ!õ?g\14ý\11\84èäá?g¨î¨Íy\87ê?gS|\16¥"^æ?g\1d\95\89 ¬\94ð?g\9aû\1aÆ\×ê?gð²>Z\9båó?gàz\1fç\96Pï?gÃÐó\93\8a6÷?g\ 5ÞD+.\ eÝ?go,=\1d \83ì?g¼
++\vÛÜ(â?gÅ;F\12ôÑñ?g\80¦s ¢Êå?gJáí\15Xbõ?gBBÜehlé?gÎ\86\95\19¼òø?g\956:\9dÒÀê?gOM¾)µ\16è?g2\93£CdYð?gHÐvO\16qí?g\11\vª8_Ró?g\8b©\97º»eñ?gÃ\82°-ZKö?g\1eësMì\12ô?gÒY_q=\9eç?gº?5Kg+ë?gÈm­QÙÝì?g_Ã.<\86\9að?gÉÀý\98º\ eñ?gØæÂÒX\9fó?gÒÊ$\89\88®ó?g\7f
++Wi+¤ö?g´<\94\94\85!ä?gz\f^\aiØí?gû»\98µ¿\9aè?g\a$d½#=ò?gB;\9dÖù\13í?gÙA\19÷\12\8eõ?g@ÝÐû\99Æð?g¬_Î0\ 2ßø?gß¼VøùWà?gìhr\10 ð?g¢X¿½¿ùã?g\9e\ e\1a\14&\9aó?geô'\83\85\9bç?g"´Á\17\8a*÷?g\1f\90\90HK=ë?g¨Yi\eîºú?gɾ3¨×Ç÷?gè\vâ\96\84iõ?gÀO8\81oþô?g$\1c¡´\94&ø?g\ 2ý\11\84èäñ?g\96î¨Íy\87ú?g\ 5ÞD+.\ eí?g\7f,=\1d \83ü?gå\8e¢SèMï?g\8e\98áÄ\8cæè?g»U.2XÈò?g\14·\ e¹uáí?göc\8b:¼éõ?g¹ê\9dV/nñ?g^rèB \vù?g\12z´Ð£ëó?gR@ñ\94O  ì?g\18ûæA¯\87ì?g¦&÷òbÒð?gjcWô5\1eñ?g\b­u\e\1e ó?ghI»G\94øó?gj3ôCÙmö?g8/\1f\9bòÒö?gçXz\8f·Yè?g·í,.ð»ï?gß\9d_ßu8í?ga[\81è\
++ó?ghq¢\17\9a\vñ?gù?ì¹Á6ö?gä\13\95?ùzó?g\90$W\8b&cù?g\9aC¿]1Mä?g¨\86»\92\8a;ñ?g\1fQ²£¡\è?gó\aá|Ù­ô?g¤^¥é\11lì?g?\89\ 6g( ø?g\1d\17Á=ð?g\8a
++,Qw\92û?gø\8c»\84aæß?gB\a\ fûXWò?gÃ\87p\1cÔ#ã?g°ÕÞÆj\ 2ö?g\12I\83vwTæ?gð£®\92|­ù?gb
++\96Ð\1a\85é?g0r~^\8eXý?gõ\8e¬\91\92\Û?gF\sé9Ëò?g÷\88gW¾jà?gÊ¡½±x\8dö?gtÊøe3'ã?gyç\az·Oú?gò\v\8at¨ãå?g*-RBö\11þ?goM\e\83\1d Ø?gm9N\85\1aêð?gzÐ= \a\19Þ?gñ~\98MY¬ô?g»)°ÞøÈá?g¡Äâ\15\98nø?g8kAím\85ä?gR
++-ÞÖ0ü?gû\v\8at¨ãÕ?g"-RBö\11î?gUrèB \vé?g\13z´Ð£ëã?gt3ôCÙmæ?gJ/\1f\9bòÒæ?gí\13\95?ùzã?g\90$W\8b&cé?g\14\17Á=à?g\94
++,Qw\92ë?gX
++\96Ð\1a\85Ù?g(r~^\8eXí?g\0\0\0\0\0\0\0Àg\0\0\0\0\0\0ü¿g\0\0\0\0\0\0ø¿g\0\0\0\0\0\0ô¿gʶ8i}iÿ¿gWbvÝmlØ?gá\9f\11¼M|û¿gþ\95Ç!à^Õ?g$\89ê\ e\1e\8f÷¿g¸É\18fRQÒ?g9rÃaî¡ó¿gäúÓT\89\87Î?gBË\97y}«ý¿g\81\96åî\8dùç?göÑdÊ\röù¿g±ã\b1\úä?g}Ø1\e\9e@ö¿gá0,s*ûá?g\ 4ßþk.\8bò¿g ü\9ejñ÷Ý?gä/®¨cÖú¿g
++wp×®mñ?gØi\983\97{÷¿goÐ\ 4ùñ\7fî?g÷£\82¾Ê ô¿g¯²(C\86$ê?géÝlIþÅð¿gæ\94L\8d\1aÉå?g.M¥æÔ\ 4÷¿gürà0¤:ö?g\94£ÐI:$ô¿gÄdĪOsó?gùùû¬\9fCñ¿g_V¨$û«ð?g\88 N 
++Æì¿gØ\8f\18=MÉë?g\0\0\0\0\0\0ð¿g¶8i}iï¿gWbvÝmlÈ?gUË\97y}«í¿g\81\96åî\8dù×?gÜ/®¨cÖê¿g\1cwp×®má?g8M¥æÔ\ 4ç¿g\ esà0¤:æ?gFÀlYe\ fð¿g4nºt\e\88ë¿gÚ[\9b6lñæ¿gwI|ø¼Zâ¿goI|ø¼Zò¿g×\1a\ 6\aê¿g\8e\7fÿ®Ã;ý?gtWåüùÆæ¿g\9c\8f\1f9K\94ù?g\1a\94ÄØú\85ã¿gª\9f?ÃÒìõ?gÀУ´ûDà¿g¸¯_MZEò?gÍ\1a\ 6\aÚ¿g\97\7fÿ®Ã;í?guÆÍ62ËÜ¿g\ e\87N!
++.ÿ?g¬\rôïË1Ù¿g&¶$ÝHHû?gáT\1a©e\98Õ¿g?åú\98\87b÷?g\ 5\9c@bÿþÑ¿gW\14ÑTÆ|ó?guÆÍ62ËÌ¿g\r\87N!
++.ï?g\1eÜ÷ÉXÞ±¿ga\ 5¿x\ 2ûÿ?gEÁqa\eE¯¿gÅ$§)¢ûû?gAÊó.\85ͪ¿gýC\8fÚAü÷?g>ÓuüîU¦¿gbcw\8báüó?g\1eÜ÷ÉXÞ¡¿gj\ 5¿x\ 2ûï?gzS¨g\v\ 6Ô?gpä/\94$\9bÿ?g\aI³úI\85Ñ?gÌç©\ 1À§û?gJ}|\e\11       Î?gTë#o[´÷?gbh\92A\8e\aÉ?g°î\9dÜöÀó?gzS¨g\v\ 6Ä?g_ä/\94$\9bï?iÛ\0\0\0i\ 2\0\0\0s\f\0\0\0X [INCONNUE]s\f\0\0\0Y [INCONNUE]t\ 3\0\0\0MA2s\13\0\0\0CREE PAR CODE_ASTERs\v\0\0\0SANS UNITESiÿÿÿÿi\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\9d\0\0\0i\9e\0\0\0i\9c\0\0\0i\9b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i¿\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\ 1\0\0\0i\e\0\0\0i>\0\0\0iY\0\0\0i\a\0\0\0i\1c\0\0\0i?\0\0\0i\ 3\0\0\0i\1d\0\0\0i@\0\0\0i     \0\0\0i\1e\0\0\0i$\0\0\0i\ 5\0\0\0i\ 4\0\0\0i\1f\0\0\0iA\0\0\0iZ\0\0\0\0\0\0i\ 6\0\0\0i!\0\0\0iB\0\0\0i\v\0\0\0i"\0\0\0i'\0\0\0i\b\0\0\0iC\0\0\0i[\0\0\0i\f\0\0\0i#\0\0\0iD\0\0\0iE\0\0\0i\ e\0\0\0i%\0\0\0i*\0\0\0i
++\0\0\0iF\0\0\0i\\0\0\0i&\0\0\0iG\0\0\0i\10\0\0\0i(\0\0\0i-\0\0\0i\r\0\0\0iH\0\0\0i]\0\0\0i\11\0\0\0i)\0\0\0iI\0\0\0iJ\0\0\0i\13\0\0\0i+\0\0\0i0\0\0\0i\ f\0\0\0iK\0\0\0i^\0\0\0i,\0\0\0iL\0\0\0i\15\0\0\0i.\0\0\0i3\0\0\0i\12\0\0\0iM\0\0\0i_\0\0\0i\16\0\0\0i/\0\0\0iN\0\0\0iO\0\0\0i\18\0\0\0i1\0\0\0i6\0\0\0i\14\0\0\0iP\0\0\0i`\0\0\0i2\0\0\0iQ\0\0\0i\1a\0\0\0i4\0\0\0i9\0\0\0i\17\0\0\0iR\0\0\0ia\0\0\0i;\0\0\0i5\0\0\0iS\0\0\0iT\0\0\0i<\0\0\0i7\0\0\0iU\0\0\0i\19\0\0\0iV\0\0\0ib\0\0\0i8\0\0\0iW\0\0\0i=\0\0\0i:\0\0\0iX\0\0\0id\0\0\0ic\0\0\0i\87\0\0\0is\0\0\0\0\0\0ie\0\0\0i\88\0\0\0it\0\0\0if\0\0\0i\89\0\0\0iu\0\0\0i\83\0\0\0i\8a\0\0\0iv\0\0\0ih\0\0\0ig\0\0\0i\8b\0\0\0iw\0\0\0\0\0\0ii\0\0\0i\8c\0\0\0ix\0\0\0ij\0\0\0i\8d\0\0\0iy\0\0\0i\84\0\0\0i\8e\0\0\0iz\0\0\0il\0\0\0ik\0\0\0i\8f\0\0\0i{\0\0\0\0\0\0im\0\0\0i\90\0\0\0i|\0\0\0in\0\0\0i\91\0\0\0i}\0\0\0i\85\0\0\0i\92\0\0\0i~\0\0\0ip\0\0\0io\0\0\0i\93\0\0\0i\7f\0\0\0\0\0\0iq\0\0\0i\94\0\0\0i\80\0\0\0ir\0\0\0i\95\0\0\0i\81\0\0\0i\86\0\0\0i\96\0\0\0i\82\0\0\0i\97\0\0\0i\9f\0\0\0\0\0\0i\98\0\0\0\0\0\0i\99\0\0\0\0\0\0i\9a\0\0\0\0\0\0t\ 5\0\0\0CH2RBgUUUUUUÕ?g\0\0\0\0\0\0à?g\1e3\90E§yâ¿g\1e3\90E§yâ?gUUUUUUÅ?gUUUUUUå?gDr?ô~Éè¿gDr?ô~Éè?g·æ\87EÊÀÓ?gX¤\f\9aß?gàéÖü°Hé?(\18\0\0\0R
++\0\0\0Ry\0\0\0R\ 2\0\0\0Rz\0\0\0R{\0\0\0RT\0\0\0R\f\0\0\0R\ 5\0\0\0R\17\0\0\0R\ 6\0\0\0R\b\0\0\0R\a\0\0\0R8\0\0\0R9\0\0\0RO\0\0\0R\ 3\0\0\0R|\0\0\0R-\0\0\0R}\0\0\0R~\0\0\0RR\0\0\0R\7f\0\0\0R\80\0\0\0R\81\0\0\0(\ 6\0\0\0R\1c\0\0\0Rf\0\0\0R\82\0\0\0R"\0\0\0R\19\0\0\0R\83\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0buildFieldOnGauss_2b\ 2\0\0sV\0\0\0\0\ 1ÿ\0ÿ\0ÿ\0ÿ\0ÿ\09\ 1\13\ 1\ f\ 1\r\0\r\0\13\ 1\r\ 1\r\ 1ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0~\ 1\16\ 1\14\ 1\ 4\ 1\16\ 1\14\ 1\ 4\ 1\16\ 1\14\ 1\ 4\ 1\16\ 1\14\ 1\ 4\ 1\ f\0\r\0\r\ 1\r\ 1@\ 1a\ 1d\ 1¦\ 1c\ 1\0\0\0\ 6\0\0\0L\0\0\0C\0\0\0\ 4\0\0t\0\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 4\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 3\0d\ 1\0d\ 2\0d\ 4\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 4\0d\ 2\0d\ 5\0d\ 2\0d\ 2\0d\ 5\0d\ 4\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 4\0d\ 2\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 5\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 5\0d\ 1\0d\ 2\0d\ 5\0d\ 5\0d\ 2\0d\ 5\0d\ 2\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 5\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0gK\0d\ 6\0d\a\0\83\ 3\0}\ 1\0|\ 1\0j\ 1\0d\b\0d       \0d
++\0g\ 3\0\83\ 1\0\ 1t\ 2\0d\v\0d\a\0\83\ 2\0}\ 2\0|\ 2\0j\ 3\0d\f\0\83\ 1\0\ 1|\ 2\0j\ 4\0d\r\0\83\ 1\0\ 1|\ 2\0j\ 5\0d\ e\0d\ f\0d\ f\0\83\ 3\0\ 1|\ 2\0j\ 6\0|\ 1\0\83\ 1\0\ 1|\ 2\0j\a\0d\10\0\83\ 1\0\ 1d\a\0d\11\0d\12\0d\13\0g\ 4\0d\14\0d\15\0d\16\0d\17\0d\18\0g\ 5\0d\10\0d\19\0d\1a\0d\a\0d\12\0d\13\0g\ 6\0d\13\0d\12\0d\11\0d\e\0d\1c\0d\1d\0g\ 6\0d\1e\0d\1f\0\0d\18\0d\14\0d\17\0g\ 6\0d\18\0d\17\0d\16\0d!\0d"\0d#\0g\ 6\0d\1a\0d$\0d\e\0d\13\0d\19\0d%\0d\1c\0d\12\0g\b\0d\1e\0d&\0d!\0d\18\0\0d'\0d"\0d\17\0g\b\0g\b\0}\ 3\0|\ 2\0j\b\0t        \0|\ 3\0d\10\0\19\83\ 2\0\ 1|\ 2\0j\b\0t
++\0|\ 3\0d\1a\0\19\83\ 2\0\ 1x+\0t\v\0d$\0d\19\0\83\ 2\0D]\1a\0}\ 4\0|\ 2\0j\b\0t\f\0|\ 3\0|\ 4\0\19\83\ 2\0\ 1qH\ 2W|\ 2\0j\b\0t\r\0|\ 3\0d\19\0\19\83\ 2\0\ 1|\ 2\0j\b\0t\r\0|\ 3\0d%\0\19\83\ 2\0\ 1t\ e\0j\ f\0t\10\0\83\ 1\0}\ 5\0|\ 5\0j\11\0d(\0\83\ 1\0\ 1|\ 5\0j\12\0t\13\0\83\ 1\0\ 1|\ 5\0j\14\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\15\0d\10\0g\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 1\0g\f\0d)\0d)\0d)\0g\ 3\0d*\0g\ 1\0\83\ 4\0\ 1|\ 5\0j\15\0d\1a\0g\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 1\0d\ e\0d\ 1\0d\ e\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0g\ f\0d\ 5\0d\ 1\0d+\0d\ 1\0d\ 5\0d+\0d,\0d\ 1\0d+\0d\ 1\0d,\0d+\0d\ 1\0d\ 1\0d-\0g\ f\0d.\0d.\0d.\0d.\0d.\0g\ 5\0\83\ 4\0\ 1|\ 5\0j\15\0d$\0d\a\0d\13\0d\e\0g\ 4\0d\ e\0d\ 2\0d\ 1\0d\ e\0d\ 1\0d\ 1\0d\ e\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0g\12\0d/\0d\ 5\0d\ 5\0d/\0d\ 1\0d\ 5\0d/\0d\ 5\0d\ 1\0d0\0d\ 5\0d\ 5\0d0\0d\ 1\0d\ 5\0d0\0d\ 5\0d\ 1\0g\12\0d*\0d*\0d*\0d*\0d*\0d*\0g\ 6\0\83\ 4\0\ 1|\ 5\0j\15\0d\19\0d%\0g\ 2\0d\ e\0d\ e\0d\ e\0d\ e\0d\ 2\0d\ e\0d\ 2\0d\ 2\0d\ e\0d\ 2\0d\ e\0d\ e\0d\ e\0d\ e\0d\ 2\0d\ e\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ e\0d\ 2\0g\18\0d/\0d/\0d/\0d/\0d/\0d0\0d/\0d0\0d/\0d/\0d0\0d0\0d0\0d/\0d/\0d0\0d/\0d0\0d0\0d0\0d/\0d0\0d0\0d0\0g\18\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0g\b\0\83\ 4\0\ 1t\16\0|\ 5\0\83\ 1\0S(1\0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@g\0\0\0\0\0\0à?i\19\0\0\0i\ 3\0\0\0s\f\0\0\0X [INCONNUE]s\f\0\0\0Y [INCONNUE]s\f\0\0\0Z [INCONNUE]Rw\0\0\0s\13\0\0\0CREE PAR CODE_ASTERs\v\0\0\0SANS UNITESg\0\0\0\0\0\0ð¿iÿÿÿÿi\0\0\0\0i
++\0\0\0i\b\0\0\0i\ 4\0\0\0i\13\0\0\0i\16\0\0\0i\17\0\0\0i\14\0\0\0i\ e\0\0\0i\ 6\0\0\0i\ 1\0\0\0i\ 5\0\0\0i        \0\0\0i\v\0\0\0i\f\0\0\0i\10\0\0\0i\11\0\0\0i\ f\0\0\0i\15\0\0\0i\18\0\0\0i\ 2\0\0\0i\a\0\0\0i\r\0\0\0i\12\0\0\0t\ 4\0\0\0CH13g\0\0\0\0\0\0Ð?gUUUUUUÅ?gÝFà\85@\9bÃ?g\0\0\0\0\0\0à¿g#¹\1fz¿dä?g\10\11\11\11\11\11Á?g\1e3\90E§yâ¿g\1e3\90E§yâ?(\17\0\0\0R
++\0\0\0Ry\0\0\0R\ 2\0\0\0Rz\0\0\0R{\0\0\0RT\0\0\0R\f\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\e\0\0\0Rl\0\0\0R\17\0\0\0Rn\0\0\0R\18\0\0\0RO\0\0\0R\ 3\0\0\0R|\0\0\0R-\0\0\0R}\0\0\0R~\0\0\0RR\0\0\0R\7f\0\0\0R\81\0\0\0(\ 6\0\0\0R\1c\0\0\0Rf\0\0\0R\82\0\0\0R"\0\0\0R\19\0\0\0R\83\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0buildFieldOnGauss_3\7f\ 2\0\0s2\0\0\0\0\ 1ó\ 1\16\ 1\ f\ 1\r\0\r\0\13\ 1\r\ 1\r\ 1±\ 1\14\ 1\14\ 1\16\ 1\14\ 1\ 4\ 1\14\ 1\14\ 1\ f\0\r\0\r\ 1\r\ 1I\ 1\82\ 1 \ 1Ä\ 1c\ 1\0\0\0\ 6\0\0\0L\0\0\0C\0\0\0\ 4\0\0t\0\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 3\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 3\0d\ 1\0d\ 1\0d\ 3\0d\ 4\0d\ 2\0d\ 3\0d\ 4\0d\ 1\0d\ 3\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 1\0d\ 3\0d\ 1\0d\ 5\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 5\0d\ 1\0d\ 3\0d\ 2\0d\ 1\0d\ 1\0d\ 5\0d\ 3\0d\ 1\0d\ 6\0d\ 3\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 3\0d\ 4\0d\ 6\0d\ 3\0d\ 4\0d\ 2\0d\ 3\0d\ 3\0d\ 5\0d\ 3\0d\ 3\0d\ 6\0d\ 3\0d\ 3\0d\ 2\0d\ 3\0gK\0d\a\0d\b\0\83\ 3\0}\ 1\0|\ 1\0j\ 1\0d   \0d
++\0d\v\0g\ 3\0\83\ 1\0\ 1t\ 2\0d\f\0d\b\0\83\ 2\0}\ 2\0|\ 2\0j\ 3\0d\r\0\83\ 1\0\ 1|\ 2\0j\ 4\0d\ e\0\83\ 1\0\ 1|\ 2\0j\ 5\0d\ f\0d\10\0d\10\0\83\ 3\0\ 1|\ 2\0j\ 6\0|\ 1\0\83\ 1\0\ 1|\ 2\0j\a\0d\11\0\83\ 1\0\ 1d\b\0d\12\0d\13\0d\14\0g\ 4\0d\15\0d\16\0d\17\0d\18\0d\19\0g\ 5\0d\11\0d\1a\0d\e\0d\b\0d\13\0d\14\0g\ 6\0d\14\0d\13\0d\12\0d\1c\0d\1d\0d\1e\0g\ 6\0d\1f\0\0d!\0d\19\0d\15\0d\18\0g\ 6\0d\19\0d\18\0d\17\0d"\0d#\0d$\0g\ 6\0d\e\0d%\0d\1c\0d\14\0d\1a\0d&\0d\1d\0d\13\0g\b\0d\1f\0d'\0d"\0d\19\0d!\0d(\0d#\0d\18\0g\b\0g\b\0}\ 3\0|\ 2\0j\b\0t     \0|\ 3\0d\11\0\19\83\ 2\0\ 1|\ 2\0j\b\0t
++\0|\ 3\0d\e\0\19\83\ 2\0\ 1x+\0t\v\0d%\0d\1a\0\83\ 2\0D]\1a\0}\ 4\0|\ 2\0j\b\0t\f\0|\ 3\0|\ 4\0\19\83\ 2\0\ 1qH\ 2W|\ 2\0j\b\0t\r\0|\ 3\0d\1a\0\19\83\ 2\0\ 1|\ 2\0j\b\0t\r\0|\ 3\0d&\0\19\83\ 2\0\ 1t\ e\0j\ f\0t\10\0\83\ 1\0}\ 5\0|\ 5\0j\11\0d)\0\83\ 1\0\ 1|\ 5\0j\12\0t\13\0\83\ 1\0\ 1|\ 5\0j\14\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\15\0d\11\0g\ 1\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 3\0d\ 3\0d\ 1\0d\ 1\0g\f\0d*\0d*\0d*\0g\ 3\0d+\0g\ 1\0\83\ 4\0\ 1|\ 5\0j\15\0d\e\0g\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 1\0d\ f\0d\ 1\0d\ f\0d\ 1\0d\ 1\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 1\0d\ 3\0g\ f\0d\ 4\0d\ 1\0d,\0d\ 1\0d\ 4\0d,\0d-\0d\ 1\0d,\0d\ 1\0d-\0d,\0d\ 1\0d\ 1\0d.\0g\ f\0d/\0d/\0d/\0d/\0d/\0g\ 5\0\83\ 4\0\ 1|\ 5\0j\15\0d%\0d\b\0d\14\0d\1c\0g\ 4\0d\ f\0d\ 3\0d\ 1\0d\ f\0d\ 1\0d\ 1\0d\ f\0d\ 1\0d\ 3\0d\ 3\0d\ 3\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 3\0d\ 1\0d\ 3\0g\12\0d0\0d\ 4\0d\ 4\0d0\0d\ 1\0d\ 4\0d0\0d\ 4\0d\ 1\0d1\0d\ 4\0d\ 4\0d1\0d\ 1\0d\ 4\0d1\0d\ 4\0d\ 1\0g\12\0d+\0d+\0d+\0d+\0d+\0d+\0g\ 6\0\83\ 4\0\ 1|\ 5\0j\15\0d\1a\0d&\0g\ 2\0d\ f\0d\ f\0d\ f\0d\ f\0d\ 3\0d\ f\0d\ 3\0d\ 3\0d\ f\0d\ 3\0d\ f\0d\ f\0d\ f\0d\ f\0d\ 3\0d\ f\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ f\0d\ 3\0g\18\0d0\0d0\0d0\0d0\0d0\0d1\0d0\0d1\0d0\0d0\0d1\0d1\0d1\0d0\0d0\0d1\0d0\0d1\0d1\0d1\0d0\0d1\0d1\0d1\0g\18\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0g\b\0\83\ 4\0\ 1t\16\0|\ 5\0\83\ 1\0S(2\0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0@g\0\0\0\0\0\0ð?g\0\0\0\0\0\0à?g\0\0\0\0\0\0\b@g\0\0\0\0\0\0\ 4@i\19\0\0\0i\ 3\0\0\0s\f\0\0\0X [INCONNUE]s\f\0\0\0Y [INCONNUE]s\f\0\0\0Z [INCONNUE]R\85\0\0\0s\13\0\0\0CREE PAR CODE_ASTERs\v\0\0\0SANS UNITESg\0\0\0\0\0\0ð¿iÿÿÿÿi\0\0\0\0i
++\0\0\0i\b\0\0\0i\ 4\0\0\0i\13\0\0\0i\16\0\0\0i\17\0\0\0i\14\0\0\0i\ e\0\0\0i\ 6\0\0\0i\ 1\0\0\0i\ 5\0\0\0i        \0\0\0i\v\0\0\0i\f\0\0\0i\10\0\0\0i\11\0\0\0i\ f\0\0\0i\15\0\0\0i\18\0\0\0i\ 2\0\0\0i\a\0\0\0i\r\0\0\0i\12\0\0\0t\ 4\0\0\0CH23g\0\0\0\0\0\0Ð?gUUUUUUÅ?gÝFà\85@\9bÃ?g\0\0\0\0\0\0à¿g#¹\1fz¿dä?g\10\11\11\11\11\11Á?g\1e3\90E§yâ¿g\1e3\90E§yâ?(\17\0\0\0R
++\0\0\0Ry\0\0\0R\ 2\0\0\0Rz\0\0\0R{\0\0\0RT\0\0\0R\f\0\0\0R\ 5\0\0\0R\ 6\0\0\0R\e\0\0\0Rl\0\0\0R\17\0\0\0Rn\0\0\0R\18\0\0\0RO\0\0\0R\ 3\0\0\0R|\0\0\0R-\0\0\0R}\0\0\0R~\0\0\0RR\0\0\0R\7f\0\0\0R\81\0\0\0(\ 6\0\0\0R\1c\0\0\0Rf\0\0\0R\82\0\0\0R"\0\0\0R\19\0\0\0R\83\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\13\0\0\0buildFieldOnGauss_4\97\ 2\0\0s2\0\0\0\0\ 1ó\ 1\16\ 1\ f\ 1\r\0\r\0\13\ 1\r\ 1\r\ 1±\ 1\14\ 1\14\ 1\16\ 1\14\ 1\ 4\ 1\14\ 1\14\ 1\ f\0\r\0\r\ 1\r\ 1I\ 1\82\ 1 \ 1Ä\ 1c\ 4\0\0\0\f\0\0\0  \0\0\0C\0\0\0s1\ 1\0\0d\ 1\0d\ 2\0l\0\0m\ 1\0}\ 4\0\ 1d\ 1\0d\ 3\0l\ 2\0m\ 3\0}\ 5\0\ 1g\0\0t\ 4\0d\ 4\0\83\ 1\0D]\1d\0}\ 6\0|\ 4\0|\ 3\0|\ 6\0|\ 5\0\14d\ 5\0\15\83\ 2\0^\ 2\0q-\0}\a\0|\a\0d\ 1\0\19j\ 5\0|\a\0d\ 1\0\19j\ 6\0|\a\0d\ 6\0\19j\ 5\0|\a\0d\ 6\0\19j\ 6\0|\a\0d\a\0\19j\ 5\0|\a\0d\a\0\19j\ 6\0|\a\0d\b\0\19j\ 5\0|\a\0d\b\0\19j\ 6\0g\b\0}\b\0t\a\0t\ 4\0d       \0\83\ 1\0\83\ 1\0}        \0t\b\0j   \0d
++\0d\v\0\83\ 2\0}
++\0|
++\0j
++\0d\b\0\83\ 1\0\ 1t\v\0j  \0|\b\0t\f\0|\b\0\83\ 1\0d\v\0\1ad\v\0\83\ 3\0}\v\0|\v\0|\ 1\0|\ 2\0f\ 2\07}\v\0|
++\0j\r\0|\v\0\83\ 1\0\ 1|
++\0j\ e\0t\ f\0|      \0\83\ 2\0\ 1|
++\0j\10\0\83\0\0\ 1|
++\0S(\f\0\0\0Niÿÿÿÿ(\ 1\0\0\0t\ 4\0\0\0rect(\ 1\0\0\0t\ 2\0\0\0pii\b\0\0\0g\0\0\0\0\0\0\10@i\ 3\0\0\0i\ 5\0\0\0i\ 1\0\0\0i\ 4\0\0\0t\ 6\0\0\0circlei\ 2\0\0\0(\11\0\0\0t\ 5\0\0\0cmathR\8c\0\0\0t\ 4\0\0\0mathR\8d\0\0\0R\17\0\0\0t\ 4\0\0\0realt\ 4\0\0\0imagR\80\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 5\0\0\0R
++\0\0\0t\ 3\0\0\0lenR\f\0\0\0R\ 6\0\0\0t\v\0\0\0NORM_QPOLYGR        \0\0\0(\f\0\0\0R\1c\0\0\0t\b\0\0\0center_Xt\b\0\0\0center_Yt\ 6\0\0\0radiusR\8c\0\0\0R\8d\0\0\0R\19\0\0\0t\ 1\0\0\0cR!\0\0\0t\ 6\0\0\0connect\b\0\0\0baseMesht
++\0\0\0meshCoords(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\v\0\0\0buildCircle®\ 2\0\0s\1c\0\0\0\0\ 1\10\ 1\10\ 20\ 1(\ 1.\ 1\12\ 1\12\ 1\r\ 1\1f\ 1\10\ 1\r\ 2\10\ 1
++\ 1c\ 4\0\0\0\f\0\0\0\b\0\0\0C\0\0\0s%\ 1\0\0d\ 1\0d\ 2\0l\0\0m\ 1\0}\ 4\0\ 1d\ 1\0d\ 3\0l\ 2\0m\ 3\0}\ 5\0\ 1g\0\0t\ 4\0d\ 4\0\83\ 1\0D]\1d\0}\ 6\0|\ 4\0|\ 3\0|\ 6\0|\ 5\0\14d\ 5\0\15\83\ 2\0^\ 2\0q-\0}\a\0g\0\0}\b\0x5\0t\ 4\0d\ 4\0\83\ 1\0D]'\0}\ 6\0|\b\0j\ 5\0|\a\0|\ 6\0\19j\ 6\0|\a\0|\ 6\0\19j\a\0g\ 2\0\83\ 1\0\ 1qc\0Wd\ 6\0d\a\0d\b\0d       \0d
++\0d\v\0d\f\0d\r\0g\b\0}        \0t\b\0j   \0d\ e\0d\f\0\83\ 2\0}
++\0|
++\0j
++\0d    \0\83\ 1\0\ 1t\v\0j       \0|\b\0t\f\0|\b\0\83\ 1\0d\f\0\1ad\f\0\83\ 3\0}\v\0|\v\0|\ 1\0|\ 2\0f\ 2\07}\v\0|
++\0j\r\0|\v\0\83\ 1\0\ 1|
++\0j\ e\0t\ f\0|      \0\83\ 2\0\ 1|
++\0j\10\0\83\0\0\ 1|
++\0S(\ f\0\0\0Niÿÿÿÿ(\ 1\0\0\0R\8c\0\0\0(\ 1\0\0\0R\8d\0\0\0i\b\0\0\0g\0\0\0\0\0\0\10@i\a\0\0\0i\ 5\0\0\0i\ 3\0\0\0i\ 1\0\0\0i\ 6\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\0\0\0\0R\8e\0\0\0(\11\0\0\0R\8f\0\0\0R\8c\0\0\0R\90\0\0\0R\8d\0\0\0R\17\0\0\0t\ 6\0\0\0extendR\91\0\0\0R\92\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 5\0\0\0R
++\0\0\0R\93\0\0\0R\f\0\0\0R\ 6\0\0\0R\94\0\0\0R      \0\0\0(\f\0\0\0R\1c\0\0\0R\95\0\0\0R\96\0\0\0R\97\0\0\0R\8c\0\0\0R\8d\0\0\0R\19\0\0\0R\98\0\0\0R!\0\0\0R\99\0\0\0R\9a\0\0\0R\9b\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\f\0\0\0buildCircle2À\ 2\0\0s\1e\0\0\0\0\ 1\10\ 1\10\ 20\ 1\ 6\ 1\13\ 1%\ 1\1e\ 1\12\ 1\r\ 1\1f\ 1\10\ 1\r\ 2\10\ 1
++\ 1(!\0\0\0t\b\0\0\0__name__t
++\0\0\0__module__R\12\0\0\0R\16\0\0\0R\1a\0\0\0R\1d\0\0\0R\1e\0\0\0R&\0\0\0R)\0\0\0R*\0\0\0R+\0\0\0R.\0\0\0R/\0\0\0R1\0\0\0R4\0\0\0R6\0\0\0R;\0\0\0R<\0\0\0Rb\0\0\0Rc\0\0\0Rg\0\0\0Ri\0\0\0Rq\0\0\0Re\0\0\0Rt\0\0\0Rv\0\0\0R\84\0\0\0R\87\0\0\0R\89\0\0\0R\8b\0\0\0R\9c\0\0\0R\9e\0\0\0t\v\0\0\0classmethod(\0\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyR\ 1\0\0\0\17\0\0\0sz\0\0\0\ 6\ 1  \11       \r       \12       \1a       \11       H       \ f       \11       \12       \1a       \14       \f       \ f       \ f       \16       \11       7       6       \v       \r       \18                       \15       \1e       \1d       \1d       \18       \17       \12       \13\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1N(\0\0\0\0(\ 2\0\0\0t\v\0\0\0MEDCouplingR\ 1\0\0\0(\0\0\0\0(\0\0\0\0(\0\0\0\0s}\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDCoupling_Swig/MEDCouplingDataForTest.pyt\b\0\0\0<module>\15\0\0\0s\ 2\0\0\0
++\ 2
+\ Pas de fin de ligne à la fin du fichier
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingExamplesTest.py MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingExamplesTest.py
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingExamplesTest.py    2018-04-19 17:04:36.734222663 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingExamplesTest.py    2018-04-19 17:25:17.260787928 +0200
+@@ -2220,7 +2220,7 @@
+         fieldOnCells.setName("MyTensorFieldOnCellNoTime")
+         fieldOnCells.setMesh(mesh)
+         array=DataArrayDouble()
+-        array.alloc(fieldOnCells.getMesh().getNumberOfCells(),9) # Implicitely fieldOnCells will be a 9 components field.
++        array.alloc(fieldOnCells.getMesh().getNumberOfCells(),9) # Implicitly fieldOnCells will be a 9 components field.
+         array.fillWithValue(7.)
+         fieldOnCells.setArray(array)
+         # fieldOnCells is now usable
+@@ -2252,7 +2252,7 @@
+         fieldOnNodes.setName("MyScalarFieldOnNodeNoTime")
+         fieldOnNodes.setMesh(mesh)
+         array=DataArrayDouble()
+-        array.alloc(fieldOnNodes.getMesh().getNumberOfNodes(),1) # Implicitely fieldOnNodes will be a 1 component field.
++        array.alloc(fieldOnNodes.getMesh().getNumberOfNodes(),1) # Implicitly fieldOnNodes will be a 1 component field.
+         array.fillWithValue(7.)
+         fieldOnNodes.setArray(array)
+         # fieldOnNodes is now usable
+@@ -2272,7 +2272,7 @@
+         fieldOnCells.setTime(4.22,2,-1) # Time attached is 4.22 ms, iteration id is 2 and order id (or sub iteration id) is -1
+         fieldOnCells.setMesh(mesh)
+         array=DataArrayDouble()
+-        array.alloc(fieldOnCells.getMesh().getNumberOfCells(),2) # Implicitely fieldOnCells will be a 2 components field.
++        array.alloc(fieldOnCells.getMesh().getNumberOfCells(),2) # Implicitly fieldOnCells will be a 2 components field.
+         array.fillWithValue(7.)
+         fieldOnCells.setArray(array)
+         # fieldOnCells is now usable
+@@ -2293,7 +2293,7 @@
+         fieldOnNodes.setEndTime(6.44,4,-1)# fieldOnNodes is defined in interval [4.22 ms,6.44 ms]
+         fieldOnNodes.setMesh(mesh)
+         array=DataArrayDouble()
+-        array.alloc(fieldOnNodes.getMesh().getNumberOfNodes(),3) # Implicitely fieldOnNodes will be a 3 components field.
++        array.alloc(fieldOnNodes.getMesh().getNumberOfNodes(),3) # Implicitly fieldOnNodes will be a 3 components field.
+         array.fillWithValue(7.)
+         fieldOnNodes.setArray(array)
+         # fieldOnNodes is now usable
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingFinalize.i MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingFinalize.i
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingFinalize.i 2018-04-19 17:04:36.735222683 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingFinalize.i 2018-04-19 17:25:17.278788284 +0200
+@@ -19,7 +19,8 @@
+ %pythoncode %{
+ InterpKernelException.__reduce__=INTERPKERNELExceptionReduce
+-DataArrayDouble.__new__=classmethod(MEDCouplingDataArrayDoublenew)
++
++DataArrayDouble.__reduce__=MEDCouplingDataArrayDoubleReduce
+ DataArrayDouble.__iadd__=MEDCouplingDataArrayDoubleIadd
+ DataArrayDouble.__isub__=MEDCouplingDataArrayDoubleIsub
+ DataArrayDouble.__imul__=MEDCouplingDataArrayDoubleImul
+@@ -32,7 +33,7 @@
+ DataArrayDouble.__ifloordiv__=MEDCouplingDataArrayDoubleIdiv
+ DataArrayDouble.__rfloordiv__=DataArrayDouble.__rdiv__
+-DataArrayInt.__new__=classmethod(MEDCouplingDataArrayIntnew)
++DataArrayInt.__reduce__=MEDCouplingDataArrayIntReduce
+ DataArrayInt.__iadd__=MEDCouplingDataArrayIntIadd
+ DataArrayInt.__isub__=MEDCouplingDataArrayIntIsub
+ DataArrayInt.__imul__=MEDCouplingDataArrayIntImul
+@@ -46,9 +47,9 @@
+ DataArrayInt.__ifloordiv__=MEDCouplingDataArrayIntIdiv
+ DataArrayInt.__rfloordiv__=DataArrayInt.__rdiv__
+-DataArrayByte.__new__=classmethod(MEDCouplingDataArrayBytenew)
+-
+-DataArrayFloat.__new__=classmethod(MEDCouplingDataArrayFloatnew)
++DataArrayByte.__reduce__=MEDCouplingDataArrayByteReduce
++  
++DataArrayFloat.__reduce__=MEDCouplingDataArrayFloatReduce
+ DataArrayFloat.__iadd__=MEDCouplingDataArrayFloatIadd
+ DataArrayFloat.__isub__=MEDCouplingDataArrayFloatIsub
+ DataArrayFloat.__imul__=MEDCouplingDataArrayFloatImul
+@@ -56,7 +57,7 @@
+ DataArrayFloat.__itruediv__=MEDCouplingDataArrayFloatIdiv
+ DataArrayFloat.__ifloordiv__=MEDCouplingDataArrayFloatIdiv
+-MEDCouplingFieldDouble.__new__=classmethod(MEDCouplingFieldDoublenew)
++MEDCouplingFieldDouble.__reduce__=MEDCouplingFieldDoubleReduce
+ MEDCouplingFieldDouble.__iadd__=MEDCouplingFieldDoubleIadd
+ MEDCouplingFieldDouble.__isub__=MEDCouplingFieldDoubleIsub
+ MEDCouplingFieldDouble.__imul__=MEDCouplingFieldDoubleImul
+@@ -69,9 +70,9 @@
+ MEDCouplingFieldDouble.__rfloordiv__=MEDCouplingFieldDouble.__rdiv__
+ MEDCouplingFieldDouble.__ifloordiv__=MEDCouplingFieldDoubleIdiv
+-MEDCouplingFieldInt.__new__=classmethod(MEDCouplingFieldIntnew)
++MEDCouplingFieldInt.__reduce__=MEDCouplingFieldIntReduce
+   
+-MEDCouplingFieldFloat.__new__=classmethod(MEDCouplingFieldFloatnew)
++MEDCouplingFieldFloat.__reduce__=MEDCouplingFieldFloatReduce
+ DataArrayDoubleTuple.__iadd__=MEDCouplingDataArrayDoubleTupleIadd
+ DataArrayDoubleTuple.__isub__=MEDCouplingDataArrayDoubleTupleIsub
+@@ -88,16 +89,16 @@
+ DataArrayIntTuple.__ifloordiv__=MEDCouplingDataArrayIntTupleIdiv
+ DataArrayIntTuple.__imod__=MEDCouplingDataArrayIntTupleImod
+-DenseMatrix.__iadd__=ParaMEDMEMDenseMatrixIadd
+-DenseMatrix.__isub__=ParaMEDMEMDenseMatrixIsub
++DenseMatrix.__iadd__=MEDCouplingDenseMatrixIadd
++DenseMatrix.__isub__=MEDCouplingDenseMatrixIsub
+-MEDCouplingUMesh.__new__=classmethod(MEDCouplingUMeshnew)
+-MEDCoupling1DGTUMesh.__new__=classmethod(MEDCoupling1DGTUMeshnew)
+-MEDCoupling1SGTUMesh.__new__=classmethod(MEDCoupling1SGTUMeshnew)
+-MEDCouplingCurveLinearMesh.__new__=classmethod(MEDCouplingCurveLinearMeshnew)
+-MEDCouplingCMesh.__new__=classmethod(MEDCouplingCMeshnew)
+-MEDCouplingIMesh.__new__=classmethod(MEDCouplingIMeshnew)
+-MEDCouplingMappedExtrudedMesh.__new__=classmethod(MEDCouplingExtrudedMeshnew)
++MEDCouplingUMesh.__reduce__=MEDCouplingUMeshReduce
++MEDCoupling1DGTUMesh.__reduce__=MEDCoupling1DGTUMeshReduce
++MEDCoupling1SGTUMesh.__reduce__=MEDCoupling1SGTUMeshReduce
++MEDCouplingCurveLinearMesh.__reduce__=MEDCouplingCurveLinearMeshReduce
++MEDCouplingCMesh.__reduce__=MEDCouplingCMeshReduce
++MEDCouplingIMesh.__reduce__=MEDCouplingIMeshReduce
++MEDCouplingMappedExtrudedMesh.__reduce__=MEDCouplingMappedExtrudedMeshReduce
+ DataArrayAsciiCharIterator.__next__ = DataArrayAsciiCharIterator.next
+ DataArrayIntIterator.__next__ = DataArrayIntIterator.next
+@@ -106,7 +107,20 @@
+ MEDCouplingUMeshCellByTypeIterator.__next__ = MEDCouplingUMeshCellByTypeIterator.next
+ del INTERPKERNELExceptionReduce
+-del MEDCouplingDataArrayDoublenew
++del MEDCouplingDataArrayDoubleReduce
++del MEDCouplingDataArrayFloatReduce
++del MEDCouplingDataArrayIntReduce
++del MEDCouplingDataArrayByteReduce
++del MEDCouplingUMeshReduce
++del MEDCouplingCMeshReduce
++del MEDCouplingIMeshReduce
++del MEDCouplingMappedExtrudedMeshReduce
++del MEDCouplingCurveLinearMeshReduce
++del MEDCoupling1SGTUMeshReduce
++del MEDCoupling1DGTUMeshReduce
++del MEDCouplingFieldDoubleReduce
++del MEDCouplingFieldFloatReduce
++del MEDCouplingFieldIntReduce
+ del MEDCouplingDataArrayDoubleIadd
+ del MEDCouplingDataArrayDoubleIsub
+ del MEDCouplingDataArrayDoubleImul
+@@ -116,14 +130,11 @@
+ del MEDCouplingFieldDoubleImul
+ del MEDCouplingFieldDoubleIdiv
+ del MEDCouplingFieldDoubleIpow
+-del MEDCouplingDataArrayIntnew
+ del MEDCouplingDataArrayIntIadd
+ del MEDCouplingDataArrayIntIsub
+ del MEDCouplingDataArrayIntImul
+ del MEDCouplingDataArrayIntIdiv
+ del MEDCouplingDataArrayIntImod
+-del MEDCouplingDataArrayBytenew
+-del MEDCouplingDataArrayFloatnew
+ del MEDCouplingDataArrayFloatIadd
+ del MEDCouplingDataArrayFloatIsub
+ del MEDCouplingDataArrayFloatImul
+@@ -137,14 +148,6 @@
+ del MEDCouplingDataArrayIntTupleImul
+ del MEDCouplingDataArrayIntTupleIdiv
+ del MEDCouplingDataArrayIntTupleImod
+-del ParaMEDMEMDenseMatrixIadd
+-del ParaMEDMEMDenseMatrixIsub
+-del MEDCouplingUMeshnew
+-del MEDCoupling1DGTUMeshnew
+-del MEDCoupling1SGTUMeshnew
+-del MEDCouplingCurveLinearMeshnew
+-del MEDCouplingCMeshnew
+-del MEDCouplingIMeshnew
+-del MEDCouplingExtrudedMeshnew
+-del MEDCouplingFieldDoublenew
++del MEDCouplingDenseMatrixIadd
++del MEDCouplingDenseMatrixIsub
+ %}
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCoupling.i MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCoupling.i
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCoupling.i 2018-04-19 17:04:36.728222543 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCoupling.i 2018-04-19 17:25:17.280788323 +0200
+@@ -17,12 +17,11 @@
+ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+ //
++%module MEDCoupling
++
+ %include "MEDCouplingCommon.i"
+ %pythoncode %{
+-def MEDCouplingDataArrayDoublenew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.DataArrayDouble____new___(cls,args)
+ def MEDCouplingDataArrayDoubleIadd(self,*args):
+     import _MEDCoupling
+     return _MEDCoupling.DataArrayDouble____iadd___(self, self, *args)
+@@ -38,9 +37,6 @@
+ def MEDCouplingDataArrayDoubleIpow(self,*args):
+     import _MEDCoupling
+     return _MEDCoupling.DataArrayDouble____ipow___(self, self, *args)
+-def MEDCouplingFieldDoublenew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.MEDCouplingFieldDouble____new___(cls,args)
+ def MEDCouplingFieldDoubleIadd(self,*args):
+     import _MEDCoupling
+     return _MEDCoupling.MEDCouplingFieldDouble____iadd___(self, self, *args)
+@@ -56,15 +52,6 @@
+ def MEDCouplingFieldDoubleIpow(self,*args):
+     import _MEDCoupling
+     return _MEDCoupling.MEDCouplingFieldDouble____ipow___(self, self, *args)
+-def MEDCouplingFieldIntnew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.MEDCouplingFieldInt____new___(cls,args)
+-def MEDCouplingFieldFloatnew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.MEDCouplingFieldFloat____new___(cls,args)
+-def MEDCouplingDataArrayIntnew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.DataArrayInt____new___(cls,args)
+ def MEDCouplingDataArrayIntIadd(self,*args):
+     import _MEDCoupling
+     return _MEDCoupling.DataArrayInt____iadd___(self, self, *args)
+@@ -83,12 +70,6 @@
+ def MEDCouplingDataArrayIntIpow(self,*args):
+     import _MEDCoupling
+     return _MEDCoupling.DataArrayInt____ipow___(self, self, *args)
+-def MEDCouplingDataArrayBytenew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.DataArrayByte____new___(cls,args)
+-def MEDCouplingDataArrayFloatnew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.DataArrayFloat____new___(cls,args)
+ def MEDCouplingDataArrayFloatIadd(self,*args):
+     import _MEDCoupling
+     return _MEDCoupling.DataArrayFloat____iadd___(self, self, *args)
+@@ -128,33 +109,12 @@
+ def MEDCouplingDataArrayIntTupleImod(self,*args):
+     import _MEDCoupling
+     return _MEDCoupling.DataArrayIntTuple____imod___(self, self, *args)
+-def ParaMEDMEMDenseMatrixIadd(self,*args):
++def MEDCouplingDenseMatrixIadd(self,*args):
+     import _MEDCoupling
+     return _MEDCoupling.DenseMatrix____iadd___(self, self, *args)
+-def ParaMEDMEMDenseMatrixIsub(self,*args):
++def MEDCouplingDenseMatrixIsub(self,*args):
+     import _MEDCoupling
+     return _MEDCoupling.DenseMatrix____isub___(self, self, *args)
+-def MEDCouplingUMeshnew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.MEDCouplingUMesh____new___(cls,args)
+-def MEDCoupling1DGTUMeshnew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.MEDCoupling1DGTUMesh____new___(cls,args)
+-def MEDCoupling1SGTUMeshnew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.MEDCoupling1SGTUMesh____new___(cls,args)
+-def MEDCouplingCurveLinearMeshnew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.MEDCouplingCurveLinearMesh____new___(cls,args)
+-def MEDCouplingCMeshnew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.MEDCouplingCMesh____new___(cls,args)
+-def MEDCouplingIMeshnew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.MEDCouplingIMesh____new___(cls,args)
+-def MEDCouplingExtrudedMeshnew(cls,*args):
+-    import _MEDCoupling
+-    return _MEDCoupling.MEDCouplingMappedExtrudedMesh____new___(cls,args)
+ %}
+ %include "MEDCouplingFinalize.i"
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingIntersectTest.py MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingIntersectTest.py
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingIntersectTest.py   2018-04-19 17:04:36.735222683 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingIntersectTest.py   2018-04-19 17:25:17.284788402 +0200
+@@ -312,6 +312,56 @@
+         self.assertTrue(f.getArray().isEqual(valuesExpected,1e-12))
+         pass
++    def testIntersect2DMeshes7(self):
++        """ Quadratic precision values were improperly reset before testing colinearities """
++        eps = 1.0e-08
++        mesh1 = MEDCouplingUMesh('assemblyGrid_Pij', 2)
++        coo = DataArrayDouble([(10.80630000000000,10.80630000000000),(9.48750000000000,10.80630000000000),(10.75250000000000,10.80630000000000),(9.48750000000000,9.48750000000000),(10.75250000000000,9.48750000000000),(10.80630000000000,9.48750000000000),(9.48750000000000,10.75250000000000),(10.75250000000000,10.75250000000000),(10.80630000000000,10.75250000000000)])
++        mesh1.setCoords(coo)
++        c = DataArrayInt([5, 4, 3, 6, 7, 5, 5, 4, 7, 8, 5, 1, 2, 7, 6, 5, 2, 0, 8, 7])
++        cI = DataArrayInt([0, 5, 10, 15, 20])
++        mesh1.setConnectivity(c, cI)
++        mesh2 = MEDCouplingUMesh('merge', 2)
++        coo = DataArrayDouble([(9.48750000000001,9.48750000000001),(10.75249999999975,9.48749999999955),(10.12000000000001,9.48750000000001),(10.80629999999976,9.48749999999955),(8.22250000000029,10.75250000000028),(9.48749999999961,10.75249999999971),(8.85500000000029,10.75250000000028),(9.48750000000001,10.12000000000001),(10.75249999999338,10.75249999999338),(10.41000000000001,10.12000000000001),(10.32506096654411,10.32506096654411),(10.12000000000001,10.41000000000001),(9.91493903345591,10.32506096654411),(9.83000000000001,10.12000000000001),(9.91493903345591,9.91493903345591),(10.12000000000001,9.83000000000001),(10.32506096654411,9.91493903345591),(10.11999999999961,10.75249999999971),(10.75249999999975,10.11999999999958),(10.49000000000001,10.12000000000001),(10.38162950903903,10.38162950903903),(10.12000000000001,10.49000000000001),(9.85837049096099,10.38162950903903),(9.75000000000001,10.12000000000001),(9.85837049096099,9.85837049096099),(10.12000000000001,9.75000000000001),(10.38162950903903,9.85837049096099),(9.88665476220845,10.35334523779157),(9.88665476220845,9.88665476220845),(9.67293524548050,9.67293524548050),(9.67293524548050,10.56706475451952),(10.80629999999339,10.75249999999338),(8.22250000000029,10.80630000000028),(9.48749999999961,10.80629999999971),(10.75249999999338,10.80629999999339),(10.80629999999339,10.80629999999339),(10.77939999999976,9.48749999999955),(10.77939999999339,10.75249999999338),(10.80629999999976,10.11999999999958),(8.22250000000029,10.77940000000028),(8.85500000000029,10.80630000000028),(9.48749999999961,10.77939999999971),(10.11999999999961,10.80629999999971),(10.75249999999338,10.77939999999339),(10.77939999999339,10.80629999999339),(10.80629999999339,10.77939999999339)])
++        mesh2.setCoords(coo)
++        c = DataArrayInt([32, 4, 32, 33, 5, 39, 40, 41, 6, 32, 5, 33, 34, 8, 41, 42, 43, 17, 32, 8, 34, 35, 31, 43, 44, 45, 37, 32, 14, 12, 10, 16, 13, 11, 9, 15, 32, 22, 12, 14, 24, 27, 13, 28, 23, 32, 24, 0, 5, 22, 29, 7, 30, 23, 32, 24, 14, 16, 10, 12, 22, 20, 26, 28, 15, 9, 11, 27, 21, 19, 25, 32, 22, 5, 8, 1, 0, 24, 26, 20, 30, 17, 18, 2, 29, 25, 19, 21, 32, 1, 8, 31, 3, 18, 37, 38, 36])
++        cI = DataArrayInt([0, 9, 18, 27, 36, 45, 54, 71, 88, 97])
++        mesh2.setConnectivity(c, cI)
++        result, mapResToInit, mapResToRef = MEDCouplingUMesh.Intersect2DMeshes(mesh1, mesh2, eps)
++        result.zipCoords()
++        exp_coo = [9.48750000000001, 9.48750000000001, 10.75249999999975, 9.48749999999955, 10.80629999999976, 9.48749999999955, 9.48749999999961, 10.75249999999971, 10.75249999999338, 10.75249999999338, 10.32506096654411, 10.32506096654411, 9.91493903345591, 10.32506096654411, 9.91493903345591, 9.91493903345591, 10.32506096654411, 9.91493903345591, 10.38162950903903, 10.38162950903903, 9.85837049096099, 10.38162950903903, 9.85837049096099, 9.85837049096099, 10.38162950903903, 9.85837049096099, 10.80629999999339, 10.75249999999338, 9.48749999999961, 10.80629999999971, 10.75249999999338, 10.80629999999339, 10.80629999999339, 10.80629999999339, 9.830000000000023, 10.120000000000008, 10.120000000000008, 10.410000000000004, 10.41000000000001, 10.120000000000008, 10.120000000000008, 9.830000000000013, 9.886654762208451, 10.353345237791569, 9.830000000000023, 10.120000000000008, 9.886654762208451, 9.886654762208451, 9.750000000000005, 10.12000000000001, 9.487499999999809, 10.11999999999986, 9.6729352454803, 10.56706475451937, 9.750000000000005, 10.12000000000001, 9.672935245480499, 9.672935245480499, 9.886654762208451, 9.886654762208451, 10.120000000000008, 9.830000000000013, 10.41000000000001, 10.120000000000008, 10.120000000000008, 10.410000000000004, 9.886654762208451, 10.353345237791569, 10.120000000000013, 10.490000000000004, 10.489999999999988, 10.120000000000013, 10.120000000000017, 9.750000000000021, 10.119999999996494, 10.752499999996544, 10.752499999996566, 10.119999999996466, 10.11999999999988, 9.48749999999978, 9.672935245480499, 9.672935245480499, 10.120000000000017, 9.750000000000021, 10.489999999999988, 10.120000000000013, 10.120000000000013, 10.490000000000004, 9.6729352454803, 10.56706475451937]
++        e1 = [0, 0, 0, 0, 0, 1, 2, 3]
++        e2 = [3, 4, 5, 6, 7, 8, 1, 2]
++        valuesExpected=DataArrayDouble(exp_coo, len(exp_coo)//2, 2)
++        self.assertTrue(result.getCoords().isEqual(valuesExpected,1e-12))
++        self.assertEqual(e1, mapResToInit.getValues())
++        self.assertEqual(e2, mapResToRef.getValues())
++
++    def testIntersect2DMeshes8(self):
++        """ Quadratic precision values were improperly reset before testing colinearities 
++        This was also impacting the mapping computation. """
++        eps = 1.0e-8
++        mesh1 = MEDCouplingUMesh('assemblyGrid_Pij', 2)
++        coo = DataArrayDouble([(10.80630000000000,-10.80630000000000),(9.48750000000000,-10.80630000000000),(10.75250000000000,-10.80630000000000),(9.48750000000000,-10.75250000000000),(10.75250000000000,-10.75250000000000),(10.80630000000000,-10.75250000000000),(9.48750000000000,-9.48750000000000),(10.75250000000000,-9.48750000000000),(10.80630000000000,-9.48750000000000)])
++        mesh1.setCoords(coo)
++        c = DataArrayInt([5, 2, 1, 3, 4, 5, 0, 2, 4, 5, 5, 4, 3, 6, 7, 5, 5, 4, 7, 8])
++        cI = DataArrayInt([0, 5, 10, 15, 20])
++        mesh1.setConnectivity(c, cI)
++        mesh2 = MEDCouplingUMesh('merge', 2)
++        coo = DataArrayDouble([(9.48749999999998,-10.75249999999999),(9.48750000000018,-10.80629999999998),(10.75250000000047,-10.75250000000063),(10.75249999999318,-10.80629999999318),(10.80630000000048,-10.75250000000063),(10.80629999999318,-10.80629999999318),(9.48750000000001,-9.48750000000001),(9.48749999999998,-10.11999999999999),(10.75249999999975,-9.48750000000004),(10.40999999999999,-10.11999999999999),(10.32506096654408,-9.91493903345589),(10.11999999999999,-9.82999999999999),(9.91493903345589,-9.91493903345589),(9.82999999999998,-10.11999999999999),(9.91493903345589,-10.32506096654409),(10.11999999999999,-10.40999999999999),(10.32506096654408,-10.32506096654409),(10.12000000000001,-9.48750000000001),(10.75250000000047,-10.12000000000058),(10.12000000000018,-10.75249999999998),(9.70121951672794,-10.53878048327204),(9.70121951672794,-9.70121951672794),(10.80629999999976,-9.48750000000004),(9.48750000000018,-10.77939999999998),(10.75249999999318,-10.77939999999318),(10.12000000000018,-10.80629999999998),(10.77940000000048,-10.75250000000063),(10.80629999999318,-10.77939999999318),(10.77939999999318,-10.80629999999318),(10.77939999999976,-9.48750000000004),(10.80630000000048,-10.12000000000058)])
++        mesh2.setCoords(coo)
++        c = DataArrayInt([32, 1, 0, 2, 3, 23, 19, 24, 25, 32, 3, 2, 4, 5, 24, 26, 27, 28, 32, 16, 14, 12, 10, 15, 13, 11, 9, 32, 0, 6, 12, 14, 7, 21, 13, 20, 32, 6, 8, 2, 0, 14, 16, 10, 12, 17, 18, 19, 20, 15, 9, 11, 21, 32, 2, 8, 22, 4, 18, 29, 30, 26])
++        cI = DataArrayInt([0, 9, 18, 27, 36, 53, 62])
++        mesh2.setConnectivity(c, cI)
++        result, mapResToInit, mapResToRef = MEDCouplingUMesh.Intersect2DMeshes(mesh1, mesh2, eps)
++        result.zipCoords()
++        exp_coo = [9.48749999999998, -10.75249999999999, 9.48750000000018, -10.80629999999998, 10.75250000000047, -10.75250000000063, 10.75249999999318, -10.80629999999318, 10.80630000000048, -10.75250000000063, 10.80629999999318, -10.80629999999318, 9.48750000000001, -9.48750000000001, 10.75249999999975, -9.48750000000004, 10.32506096654408, -9.91493903345589, 9.91493903345589, -9.91493903345589, 9.91493903345589, -10.32506096654409, 10.32506096654408, -10.32506096654409, 10.80629999999976, -9.48750000000004, 10.119999999999989, -10.409999999999961, 9.829999999999997, -10.11999999999999, 10.119999999999983, -9.830000000000005, 10.409999999999968, -10.119999999999987, 9.487499999999994, -10.120000000000001, 9.70121951672795, -9.70121951672795, 9.829999999999997, -10.11999999999999, 9.701219516727935, -10.53878048327204, 10.11999999999988, -9.487500000000026, 10.752500000000111, -10.120000000000335, 10.120000000000225, -10.75250000000031, 9.701219516727935, -10.53878048327204, 10.119999999999989, -10.409999999999961, 10.409999999999968, -10.119999999999987, 10.119999999999983, -9.830000000000005, 9.70121951672795, -9.70121951672795]
++        e1 = [0, 1, 2, 2, 2, 3]
++        e2 = [0, 1, 2, 3, 4, 5]
++        valuesExpected=DataArrayDouble(exp_coo, len(exp_coo)//2, 2)
++        self.assertTrue(result.getCoords().isEqual(valuesExpected,1e-10))
++        self.assertEqual(e1, mapResToInit.getValues())
++        self.assertEqual(e2, mapResToRef.getValues())
+     def testSwig2Intersect2DMeshesQuadra1(self):
+         import cmath
+@@ -377,7 +427,7 @@
+         m1.finishInsertingCells()
+         m2 = MEDCouplingDataForTest.buildCircle(0.25, 0.2, 0.4)
+-        # Was looping indefinitly:
++        # Was looping indefinitely:
+         m_intersec, resToM1, resToM2 = MEDCouplingUMesh.Intersect2DMeshes(m1, m2, eps)
+         m_intersec.zipCoords()
+         coo_tgt = DataArrayDouble([-0.5, -0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.03284271247461901, 0.4828427124746191,
+@@ -388,7 +438,7 @@
+         connI_tgt = [0, 9, 22]
+         res1_tgt  = [0, 0]
+         res2_tgt = [0, -1]
+-        self.assert_(coo_tgt.isEqualWithoutConsideringStr(m_intersec.getCoords(), 1e-12))
++        self.assertTrue(coo_tgt.isEqualWithoutConsideringStr(m_intersec.getCoords(), 1e-12))
+         self.assertEqual(conn_tgt, m_intersec.getNodalConnectivity().getValues())
+         self.assertEqual(connI_tgt, m_intersec.getNodalConnectivityIndex().getValues())
+         self.assertEqual(res1_tgt, resToM1.getValues())
+@@ -819,6 +869,29 @@
+         self.assertTrue(d.isEqual(DataArrayInt([(-1,-1),(1,2),(3,0),(3,4),(-1,-1)])))
+         pass
++    def testSwig2Intersect2DMeshWith1DLine17(self):
++        """ Single colinear intersection - a deltaShiftIndex() was improperly tested. """
++        eps = 1.0e-12
++        mesh = MEDCouplingUMesh('dummy_layer', 2)
++        coo = DataArrayDouble([(-0.5,-0.5),(-0.5,0.5),(0.5,0.5),(0.5,-0.5),(-0.25,-0.25),(-0.25,0.25),(0.25,0.25),(0.25,-0.25)])
++        mesh.setCoords(coo)
++        c = DataArrayInt([5, 4, 5, 6, 7, 5, 0, 1, 5, 4, 5, 1, 2, 3, 0, 4, 7, 6, 5])
++        cI = DataArrayInt([0, 5, 10, 19])
++        mesh.setConnectivity(c, cI)
++        m_line = MEDCouplingUMesh('segment', 1)
++        coo = DataArrayDouble([(-0.5,0.5),(-0.25,0.25)])
++        m_line.setCoords(coo)
++        c = DataArrayInt([1, 0, 1])
++        cI = DataArrayInt([0, 3])
++        m_line.setConnectivity(c, cI)
++        a, b, c, d = MEDCouplingUMesh.Intersect2DMeshWith1DLine(mesh, m_line, eps)
++        self.assertEqual(mesh.getNodalConnectivity().getValues(),a.getNodalConnectivity().getValues())
++        self.assertEqual(mesh.getNodalConnectivityIndex().getValues(),a.getNodalConnectivityIndex().getValues())
++        self.assertEqual([1,1,5],b.getNodalConnectivity().getValues())
++        self.assertEqual(m_line.getNodalConnectivityIndex().getValues(),b.getNodalConnectivityIndex().getValues())
++        self.assertTrue([0,1,2], c.getValues())
++        self.assertEqual([2,1], d.getValues())
++
+     def testSwig2Conformize2D1(self):
+         eps = 1.0e-8
+         coo = [0.,-0.5,0.,0.,0.5,0.,0.5,-0.5,0.25,
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingMemArray.i MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingMemArray.i
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingMemArray.i 2018-04-19 17:04:36.736222703 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingMemArray.i 2018-04-19 17:25:17.290788521 +0200
+@@ -73,6 +73,7 @@
+ %newobject MEDCoupling::DataArrayFloat::iterator;
+ %newobject MEDCoupling::DataArrayFloat::__iter__;
+ %newobject MEDCoupling::DataArrayFloat::Meld;
++%newobject MEDCoupling::DataArrayFloat::__rmul__;
+ %newobject MEDCoupling::DataArrayInt::New;
+ %newobject MEDCoupling::DataArrayInt::__iter__;
+ %newobject MEDCoupling::DataArrayInt::performCopyOrIncrRef;
+@@ -92,6 +93,7 @@
+ %newobject MEDCoupling::DataArrayInt::findIdsEqualList;
+ %newobject MEDCoupling::DataArrayInt::findIdsNotEqualList;
+ %newobject MEDCoupling::DataArrayInt::findIdsEqualTuple;
++%newobject MEDCoupling::DataArrayInt::findIdForEach;
+ %newobject MEDCoupling::DataArrayInt::sumPerTuple;
+ %newobject MEDCoupling::DataArrayInt::negate;
+ %newobject MEDCoupling::DataArrayInt::computeAbs;
+@@ -745,6 +747,18 @@
+         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)
++      {
++        std::string ret1;
++        bool ret0=self->isEqualIfNotWhy(other,prec,ret1);
++        PyObject *ret=PyTuple_New(2);
++        PyObject *ret0Py=ret0?Py_True:Py_False;
++        Py_XINCREF(ret0Py);
++        PyTuple_SetItem(ret,0,ret0Py);
++        PyTuple_SetItem(ret,1,PyString_FromString(ret1.c_str()));
++        return ret;
++      }
+       
+       PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+       {
+@@ -771,6 +785,11 @@
+         return DataArrayT_imul<float>(trueSelf,obj,self);
+       }
++      DataArrayFloat *__rmul__(PyObject *obj) throw(INTERP_KERNEL::Exception)
++      {
++        return DataArrayFPT_rmul<float>(self,obj);
++      }
++
+       PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+       {
+         return DataArrayT_idiv<float>(trueSelf,obj,self);
+@@ -782,31 +801,6 @@
+         return ToNumPyArray<DataArrayFloat,float>(self,NPY_FLOAT,"DataArrayFloat");
+       }
+ #endif
+-
+-      // serialization
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"DataArrayFloat");
+-      }
+-      
+-      PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception)
+-      {
+-#ifdef WITH_NUMPY
+-        if(!self->isAllocated())
+-          throw INTERP_KERNEL::Exception("PyWrap of DataArrayFloat.__getnewargs__ : self is not allocated !");
+-        PyObject *ret(PyTuple_New(1));
+-        PyObject *ret0(PyDict_New());
+-        PyObject *numpyArryObj(MEDCoupling_DataArrayFloat_toNumPyArray(self));
+-        {// create a dict to discriminite in __new__ if __init__ should be called. Not beautiful but not idea ...
+-          PyObject *tmp1(PyInt_FromLong(0));
+-          PyDict_SetItem(ret0,tmp1,numpyArryObj); Py_DECREF(tmp1); Py_DECREF(numpyArryObj);
+-          PyTuple_SetItem(ret,0,ret0);
+-        }
+-        return ret;
+-#else
+-        throw INTERP_KERNEL::Exception("PyWrap of DataArrayByte.__getnewargs__ : not implemented because numpy is not active in your configuration ! No serialization/unserialization available without numpy !");
+-#endif
+-      }
+     }
+   };
+@@ -923,9 +917,8 @@
+     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 getMaxValue(int& tupleId) const throw(INTERP_KERNEL::Exception);
+     double getMaxValueInArray() const throw(INTERP_KERNEL::Exception);
+-    double getMinValue(int& tupleId) 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);
+@@ -1052,6 +1045,22 @@
+           }
+       }
++      PyObject *asArcOfCircle() const throw(INTERP_KERNEL::Exception)
++      {
++        double center[2],radius,ang;
++        self->asArcOfCircle(center,radius,ang);
++        PyObject *ret(PyTuple_New(3));
++        {
++          PyObject *ret0(PyList_New(2));
++          PyList_SetItem(ret0,0,PyFloat_FromDouble(center[0]));
++          PyList_SetItem(ret0,1,PyFloat_FromDouble(center[1]));
++          PyTuple_SetItem(ret,0,ret0);
++        }
++        PyTuple_SetItem(ret,1,PyFloat_FromDouble(radius));
++        PyTuple_SetItem(ret,2,PyFloat_FromDouble(ang));        
++        return ret;
++      }
++
+       DataArrayDoubleIterator *__iter__() throw(INTERP_KERNEL::Exception)
+       {
+         return self->iterator();
+@@ -1284,6 +1293,16 @@
+         return ret;
+       }
++        PyObject *getMaxAbsValue() const throw(INTERP_KERNEL::Exception)
++      {
++        std::size_t tmp;
++        double r1=self->getMaxAbsValue(tmp);
++        PyObject *ret=PyTuple_New(2);
++        PyTuple_SetItem(ret,0,PyFloat_FromDouble(r1));
++        PyTuple_SetItem(ret,1,PyInt_FromLong(tmp));
++        return ret;
++      }
++
+       PyObject *getMaxValue2() const throw(INTERP_KERNEL::Exception)
+       {
+         DataArrayInt *tmp;
+@@ -1689,34 +1708,7 @@
+       DataArrayDouble *__rmul__(PyObject *obj) throw(INTERP_KERNEL::Exception)
+       {
+-        const char msg[]="Unexpected situation in __rmul__ !";
+-        double val;
+-        DataArrayDouble *a;
+-        DataArrayDoubleTuple *aa;
+-        std::vector<double> bb;
+-        int sw;
+-        convertDoubleStarLikePyObjToCpp_2(obj,sw,val,a,aa,bb);
+-        switch(sw)
+-          {
+-          case 1:
+-            {
+-              MCAuto<DataArrayDouble> ret=self->deepCopy();
+-              ret->applyLin(val,0.);
+-              return ret.retn();
+-            }
+-          case 3:
+-            {
+-              MCAuto<DataArrayDouble> aaa=aa->buildDADouble(1,self->getNumberOfComponents());
+-              return DataArrayDouble::Multiply(self,aaa);
+-            }
+-          case 4:
+-            {
+-              MCAuto<DataArrayDouble> aaa=DataArrayDouble::New(); aaa->useArray(&bb[0],false,CPP_DEALLOC,1,(int)bb.size());
+-              return DataArrayDouble::Multiply(self,aaa);
+-            }
+-          default:
+-            throw INTERP_KERNEL::Exception(msg);
+-          }
++        return DataArrayFPT_rmul<double>(self,obj);
+       }
+       PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+@@ -1947,31 +1939,6 @@
+         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+         return ret;
+       }
+-
+-      // serialization
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"DataArrayDouble");
+-      }
+-
+-      PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception)
+-      {
+-#ifdef WITH_NUMPY
+-        if(!self->isAllocated())
+-          throw INTERP_KERNEL::Exception("PyWrap of DataArrayDouble.__getnewargs__ : self is not allocated !");
+-        PyObject *ret(PyTuple_New(1));
+-        PyObject *ret0(PyDict_New());
+-        PyObject *numpyArryObj(MEDCoupling_DataArrayDouble_toNumPyArray(self));
+-        {// create a dict to discriminite in __new__ if __init__ should be called. Not beautiful but not idea ...
+-          PyObject *tmp1(PyInt_FromLong(0));
+-          PyDict_SetItem(ret0,tmp1,numpyArryObj); Py_DECREF(tmp1); Py_DECREF(numpyArryObj);
+-          PyTuple_SetItem(ret,0,ret0);
+-        }
+-        return ret;
+-#else
+-        throw INTERP_KERNEL::Exception("PyWrap of DataArrayDouble.__getnewargs__ : not implemented because numpy is not active in your configuration ! No serialization/unserialization available without numpy !");
+-#endif
+-      }
+     }
+   };
+@@ -2356,9 +2323,8 @@
+     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 getMaxValue(int& tupleId) const throw(INTERP_KERNEL::Exception);
+     int getMaxValueInArray() const throw(INTERP_KERNEL::Exception);
+-    int getMinValue(int& tupleId) 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);
+@@ -2577,6 +2543,15 @@
+         return self->findIdsEqualTuple(bg,bg+sz);
+       }
++      DataArrayInt *findIdForEach(PyObject *vals) const throw(INTERP_KERNEL::Exception)
++      {
++        int sw,sz,val;
++        std::vector<int> val2;
++        const int *bg(convertIntStarLikePyObjToCppIntStar(vals,sw,sz,val,val2));
++        MCAuto<DataArrayInt> ret(self->findIdForEach(bg,bg+sz));
++        return ret.retn();
++      }
++
+       PyObject *splitInBalancedSlices(int nbOfSlices) const throw(INTERP_KERNEL::Exception)
+       {
+         std::vector< std::pair<int,int> > slcs(self->splitInBalancedSlices(nbOfSlices));
+@@ -3005,6 +2980,16 @@
+         PyTuple_SetItem(ret,1,PyInt_FromLong(tmp));
+         return ret;
+       }
++    
++      PyObject *getMaxAbsValue(std::size_t& tupleId) const throw(INTERP_KERNEL::Exception)
++      {
++              std::size_t tmp;
++        int r1=self->getMaxAbsValue(tmp);
++        PyObject *ret=PyTuple_New(2);
++        PyTuple_SetItem(ret,0,PyInt_FromLong(r1));
++        PyTuple_SetItem(ret,1,PyInt_FromLong(tmp));
++        return ret;
++      }
+       PyObject *getMinValue() const throw(INTERP_KERNEL::Exception)
+       {
+@@ -4305,31 +4290,6 @@
+         PyTuple_SetItem(pyRet,1,ret1Py);
+         return pyRet;
+       }
+-      
+-      // serialization
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"DataArrayInt");
+-      }
+-      
+-      PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception)
+-      {
+-#ifdef WITH_NUMPY
+-        if(!self->isAllocated())
+-          throw INTERP_KERNEL::Exception("PyWrap of DataArrayInt.__getnewargs__ : self is not allocated !");
+-        PyObject *ret(PyTuple_New(1));
+-        PyObject *ret0(PyDict_New());
+-        PyObject *numpyArryObj(MEDCoupling_DataArrayInt_toNumPyArray(self));
+-        {// create a dict to discriminite in __new__ if __init__ should be called. Not beautiful but not idea ...
+-          PyObject *tmp1(PyInt_FromLong(0));
+-          PyDict_SetItem(ret0,tmp1,numpyArryObj); Py_DECREF(tmp1); Py_DECREF(numpyArryObj);
+-          PyTuple_SetItem(ret,0,ret0);
+-        }
+-        return ret;
+-#else
+-        throw INTERP_KERNEL::Exception("PyWrap of DataArrayInt.__getnewargs__ : not implemented because numpy is not active in your configuration ! No serialization/unserialization available without numpy !");
+-#endif
+-      }
+     }
+   };
+@@ -5096,31 +5056,6 @@
+       }
+ #endif
+-      // serialization
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"DataArrayByte");
+-      }
+-
+-      PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception)
+-      {
+-#ifdef WITH_NUMPY
+-        if(!self->isAllocated())
+-          throw INTERP_KERNEL::Exception("PyWrap of DataArrayByte.__getnewargs__ : self is not allocated !");
+-        PyObject *ret(PyTuple_New(1));
+-        PyObject *ret0(PyDict_New());
+-        PyObject *numpyArryObj(MEDCoupling_DataArrayByte_toNumPyArray(self));
+-        {// create a dict to discriminite in __new__ if __init__ should be called. Not beautiful but not idea ...
+-          PyObject *tmp1(PyInt_FromLong(0));
+-          PyDict_SetItem(ret0,tmp1,numpyArryObj); Py_DECREF(tmp1); Py_DECREF(numpyArryObj);
+-          PyTuple_SetItem(ret,0,ret0);
+-        }
+-        return ret;
+-#else
+-        throw INTERP_KERNEL::Exception("PyWrap of DataArrayByte.__getnewargs__ : not implemented because numpy is not active in your configuration ! No serialization/unserialization available without numpy !");
+-#endif
+-      }
+-
+       DataArrayByte *__setitem__(PyObject *obj, PyObject *value) throw(INTERP_KERNEL::Exception)
+       {
+         self->checkAllocated();
+@@ -5984,3 +5919,32 @@
+     }
+   };
+ }
++
++%pythoncode %{
++def MEDCouplingStdReduceFunct(cls,params):
++    a,b=params
++    ret=object.__new__(cls)
++    ret.__init__(*a)
++    ret.__setstate__(b)
++    return ret
++
++def MEDCouplingDataArrayDoubleReduce(self):
++    if not MEDCouplingHasNumPyBindings():
++      raise InterpKernelException("PyWrap of DataArrayDouble.__reduce__ : not implemented because numpy is not active in your configuration ! No serialization/unserialization available without numpy !")
++    return MEDCouplingStdReduceFunct,(DataArrayDouble,((self.toNumPyArray(),),(self.__getstate__()),))
++
++def MEDCouplingDataArrayIntReduce(self):
++    if not MEDCouplingHasNumPyBindings():
++      raise InterpKernelException("PyWrap of DataArrayInt.__reduce__ : not implemented because numpy is not active in your configuration ! No serialization/unserialization available without numpy !")
++    return MEDCouplingStdReduceFunct,(DataArrayInt,((self.toNumPyArray(),),(self.__getstate__()),))
++
++def MEDCouplingDataArrayByteReduce(self):
++    if not MEDCouplingHasNumPyBindings():
++      raise InterpKernelException("PyWrap of DataArrayByte.__reduce__ : not implemented because numpy is not active in your configuration ! No serialization/unserialization available without numpy !")
++    return MEDCouplingStdReduceFunct,(DataArrayByte,((self.toNumPyArray(),),(self.__getstate__()),))
++
++def MEDCouplingDataArrayFloatReduce(self):
++    if not MEDCouplingHasNumPyBindings():
++      raise InterpKernelException("PyWrap of DataArrayFloat.__reduce__ : not implemented because numpy is not active in your configuration ! No serialization/unserialization available without numpy !")
++    return MEDCouplingStdReduceFunct,(DataArrayFloat,((self.toNumPyArray(),),(self.__getstate__()),))
++%}
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingNumPyTest.py MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingNumPyTest.py
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingNumPyTest.py       2018-04-19 17:04:36.736222703 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingNumPyTest.py       2018-04-19 17:25:17.292788561 +0200
+@@ -386,7 +386,7 @@
+     def test19(self):
+         sz=20
+         a=array(0,dtype=int32)
+-        a.resize(sz/2,2)
++        a.resize(sz//2,2)
+         a[:]=4
+         self.assertEqual(getrefcount(a),2)
+         d=DataArrayInt(a)
+@@ -405,7 +405,7 @@
+     def test20(self):
+         sz=20
+         a=array(0,dtype=float64)
+-        a.resize(sz/2,2)
++        a.resize(sz//2,2)
+         a[:]=4
+         self.assertEqual(getrefcount(a),2)
+         d=DataArrayDouble(a)
+@@ -422,7 +422,7 @@
+     @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
+     def test21(self):
+-        #tests that only DataArray*(npArray) contructor is available
++        #tests that only DataArray*(npArray) constructor is available
+         a=array(0,dtype=int32)
+         a.resize(20)
+         DataArrayInt(a)
+@@ -918,7 +918,7 @@
+         """Same as test20 with float32"""
+         sz=20
+         a=array(0,dtype=float32)
+-        a.resize(sz/2,2)
++        a.resize(sz//2,2)
+         a[:]=4
+         self.assertEqual(getrefcount(a),2)
+         d=DataArrayFloat(a)
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingPickleTest.py MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingPickleTest.py
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingPickleTest.py      2018-04-19 17:04:36.736222703 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingPickleTest.py      2018-04-19 17:25:17.282788363 +0200
+@@ -84,7 +84,7 @@
+     @unittest.skipUnless(MEDCouplingHasNumPyBindings(),"requires numpy")
+     def test4(self):
+-        """ Idem test3 except that here serialization/deserialization is done explicitely."""
++        """ Idem test3 except that here serialization/deserialization is done explicitly."""
+         arr=DataArrayDouble(10) ; arr.iota()
+         m=MEDCouplingCMesh() ; m.setCoords(arr,arr,arr)
+         m=m.buildUnstructured()
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingRefCountObject.i MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRefCountObject.i
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingRefCountObject.i   2018-04-19 17:04:36.736222703 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRefCountObject.i   2018-04-19 17:25:17.297788659 +0200
+@@ -62,7 +62,8 @@
+   int MEDCouplingSizeOfVoidStar();
+   bool MEDCouplingByteOrder();
+   const char *MEDCouplingByteOrderStr();
+-
++  bool IsCXX11Compiled();
++  
+   class BigMemoryObject
+   {
+   public:
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingRemapperCommon.i MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRemapperCommon.i
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingRemapperCommon.i   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRemapperCommon.i   2018-04-19 17:25:17.285788422 +0200
+@@ -0,0 +1,123 @@
++// Copyright (C) 2017  CEA/DEN, EDF 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
++//
++
++#define MEDCOUPLING_EXPORT
++#define INTERPKERNEL_EXPORT
++#define MEDCOUPLINGREMAPPER_EXPORT
++
++%newobject MEDCoupling::MEDCouplingRemapper::transferField;
++%newobject MEDCoupling::MEDCouplingRemapper::reverseTransferField;
++
++%{
++#include "MEDCouplingRemapper.hxx"
++%}
++
++%include "InterpolationOptions.hxx"
++
++namespace MEDCoupling
++{
++  typedef enum
++    {
++      IK_ONLY_PREFERED = 0,
++      NOT_IK_ONLY_PREFERED = 1,
++      IK_ONLY_FORCED = 2,
++      NOT_IK_ONLY_FORCED =3
++    } InterpolationMatrixPolicy;
++
++  class MEDCouplingRemapper : public TimeLabel, public INTERP_KERNEL::InterpolationOptions
++    {
++    private:
++      void updateTime() const;
++    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 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);
++      %extend
++         {
++           PyObject *getCrudeMatrix() const throw(INTERP_KERNEL::Exception)
++           {
++             const std::vector<std::map<int,double> >& m=self->getCrudeMatrix();
++             std::size_t sz=m.size();
++             PyObject *ret=PyList_New(sz);
++             for(std::size_t i=0;i<sz;i++)
++               {
++                 const std::map<int,double>& row=m[i];
++                 PyObject *ret0=PyDict_New();
++                 for(std::map<int,double>::const_iterator it=row.begin();it!=row.end();it++)
++                   PyDict_SetItem(ret0,PyInt_FromLong((*it).first),PyFloat_FromDouble((*it).second));
++                 PyList_SetItem(ret,i,ret0);
++               }
++             return ret;
++           }
++#if defined(WITH_NUMPY) && defined(WITH_SCIPY)
++           PyObject *getCrudeCSRMatrix() const throw(INTERP_KERNEL::Exception)
++           {
++             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)
++           {
++             std::vector<std::map<int,double> > mCpp;
++             if(isCSRMatrix(m))
++               {
++#if defined(WITH_NUMPY) && defined(WITH_SCIPY)
++                 PyObject *indptr(PyObject_GetAttrString(m,"indptr"));
++                 PyObject *indices(PyObject_GetAttrString(m,"indices"));
++                 PyObject *data(PyObject_GetAttrString(m,"data"));
++                 MCAuto<DataArrayInt> indptrPtr(MEDCoupling_DataArrayInt_New__SWIG_1(indptr,NULL,NULL));
++                 MCAuto<DataArrayInt> indicesPtr(MEDCoupling_DataArrayInt_New__SWIG_1(indices,NULL,NULL));
++                 MCAuto<DataArrayDouble> dataPtr(MEDCoupling_DataArrayDouble_New__SWIG_1(data,NULL,NULL));
++                 convertCSR_MCDataToVectMapIntDouble(indptrPtr,indicesPtr,dataPtr,mCpp);
++                 Py_XDECREF(data); Py_XDECREF(indptr); Py_XDECREF(indices);
++#else
++                 throw INTERP_KERNEL::Exception("pywrap of MEDCouplingRemapper::setCrudeMatrix : unexpected situation regarding numpy/scipy !");
++#endif
++               }
++             else
++               convertToVectMapIntDouble(m,mCpp);
++             self->setCrudeMatrix(srcMesh,targetMesh,method,mCpp);
++           }
++
++           void setCrudeMatrixEx(const MEDCouplingFieldTemplate *src, const MEDCouplingFieldTemplate *target, PyObject *m) throw(INTERP_KERNEL::Exception)
++           {
++             std::vector<std::map<int,double> > mCpp;
++             convertToVectMapIntDouble(m,mCpp);
++             self->setCrudeMatrixEx(src,target,mCpp);
++           }
++         }
++    };
++}
++
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingRemapper.i MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRemapper.i
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingRemapper.i 2018-04-19 17:04:36.736222703 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRemapper.i 2018-04-19 17:25:17.298788679 +0200
+@@ -19,93 +19,11 @@
+ %module MEDCouplingRemapper
+-#define MEDCOUPLING_EXPORT
+-#define INTERPKERNEL_EXPORT
+-#define MEDCOUPLINGREMAPPER_EXPORT
+-
+-%{
+-#include "MEDCouplingMemArray.hxx"
+-#include "MEDCouplingUMesh.hxx"
+-#include "MEDCouplingField.hxx"
+-#include "MEDCouplingFieldDouble.hxx"
+-#include "MEDCouplingRemapper.hxx"
+-
+-using namespace MEDCoupling;
+-using namespace INTERP_KERNEL;
+-%}
+-
+-%newobject MEDCoupling::MEDCouplingRemapper::transferField;
+-%newobject MEDCoupling::MEDCouplingRemapper::reverseTransferField;
+-
+ %include "MEDCouplingCommon.i"
+-%include "InterpolationOptions.hxx"
+-namespace MEDCoupling
+-{
+-  typedef enum
+-    {
+-      IK_ONLY_PREFERED = 0,
+-      NOT_IK_ONLY_PREFERED = 1,
+-      IK_ONLY_FORCED = 2,
+-      NOT_IK_ONLY_FORCED =3
+-    } InterpolationMatrixPolicy;
+-
+-  class MEDCouplingRemapper : public TimeLabel, public INTERP_KERNEL::InterpolationOptions
+-    {
+-    private:
+-      void updateTime() const;
+-    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 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);
+-      %extend
+-         {
+-           PyObject *getCrudeMatrix() const throw(INTERP_KERNEL::Exception)
+-           {
+-             const std::vector<std::map<int,double> >& m=self->getCrudeMatrix();
+-             std::size_t sz=m.size();
+-             PyObject *ret=PyList_New(sz);
+-             for(std::size_t i=0;i<sz;i++)
+-               {
+-                 const std::map<int,double>& row=m[i];
+-                 PyObject *ret0=PyDict_New();
+-                 for(std::map<int,double>::const_iterator it=row.begin();it!=row.end();it++)
+-                   PyDict_SetItem(ret0,PyInt_FromLong((*it).first),PyFloat_FromDouble((*it).second));
+-                 PyList_SetItem(ret,i,ret0);
+-               }
+-             return ret;
+-           }
+-#if defined(WITH_NUMPY) && defined(WITH_SCIPY)
+-           PyObject *getCrudeCSRMatrix() const throw(INTERP_KERNEL::Exception)
+-           {
+-             return ToCSRMatrix(self->getCrudeMatrix(),self->getNumberOfColsOfMatrix());
+-           }
+-#endif
+-         }
+-    };
+-}
++%include "MEDCouplingRemapperCommon.i"
+ %pythoncode %{
+-def MEDCouplingDataArrayDoublenew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.DataArrayDouble____new___(cls,args)
+ def MEDCouplingDataArrayDoubleIadd(self,*args):
+     import _MEDCouplingRemapper
+     return _MEDCouplingRemapper.DataArrayDouble____iadd___(self, self, *args)
+@@ -121,9 +39,6 @@
+ def MEDCouplingDataArrayDoubleIpow(self,*args):
+     import _MEDCouplingRemapper
+     return _MEDCouplingRemapper.DataArrayDouble____ipow___(self, self, *args)
+-def MEDCouplingFieldDoublenew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.MEDCouplingFieldDouble____new___(cls,args)
+ def MEDCouplingFieldDoubleIadd(self,*args):
+     import _MEDCouplingRemapper
+     return _MEDCouplingRemapper.MEDCouplingFieldDouble____iadd___(self, self, *args)
+@@ -139,18 +54,6 @@
+ def MEDCouplingFieldDoubleIpow(self,*args):
+     import _MEDCouplingRemapper
+     return _MEDCouplingRemapper.MEDCouplingFieldDouble____ipow___(self, self, *args)
+-def MEDCouplingFieldIntnew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.MEDCouplingFieldInt____new___(cls,args)
+-def MEDCouplingFieldFloatnew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.MEDCouplingFieldFloat____new___(cls,args)
+-def MEDCouplingDataArrayBytenew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.DataArrayByte____new___(cls,args)
+-def MEDCouplingDataArrayFloatnew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.DataArrayFloat____new___(cls,args)
+ def MEDCouplingDataArrayFloatIadd(self,*args):
+     import _MEDCouplingRemapper
+     return _MEDCouplingRemapper.DataArrayFloat____iadd___(self, self, *args)
+@@ -163,9 +66,6 @@
+ def MEDCouplingDataArrayFloatIdiv(self,*args):
+     import _MEDCouplingRemapper
+     return _MEDCouplingRemapper.DataArrayFloat____idiv___(self, self, *args)
+-def MEDCouplingDataArrayIntnew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.DataArrayInt____new___(cls,args)
+ def MEDCouplingDataArrayIntIadd(self,*args):
+     import _MEDCouplingRemapper
+     return _MEDCouplingRemapper.DataArrayInt____iadd___(self, self, *args)
+@@ -211,33 +111,12 @@
+ def MEDCouplingDataArrayIntTupleImod(self,*args):
+     import _MEDCouplingRemapper
+     return _MEDCouplingRemapper.DataArrayIntTuple____imod___(self, self, *args)
+-def ParaMEDMEMDenseMatrixIadd(self,*args):
++def MEDCouplingDenseMatrixIadd(self,*args):
+     import _MEDCouplingRemapper
+     return _MEDCouplingRemapper.DenseMatrix____iadd___(self, self, *args)
+-def ParaMEDMEMDenseMatrixIsub(self,*args):
++def MEDCouplingDenseMatrixIsub(self,*args):
+     import _MEDCouplingRemapper
+     return _MEDCouplingRemapper.DenseMatrix____isub___(self, self, *args)
+-def MEDCouplingUMeshnew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.MEDCouplingUMesh____new___(cls,args)
+-def MEDCoupling1DGTUMeshnew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.MEDCoupling1DGTUMesh____new___(cls,args)
+-def MEDCoupling1SGTUMeshnew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.MEDCoupling1SGTUMesh____new___(cls,args)
+-def MEDCouplingCurveLinearMeshnew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.MEDCouplingCurveLinearMesh____new___(cls,args)
+-def MEDCouplingCMeshnew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.MEDCouplingCMesh____new___(cls,args)
+-def MEDCouplingIMeshnew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.MEDCouplingIMesh____new___(cls,args)
+-def MEDCouplingExtrudedMeshnew(cls,*args):
+-    import _MEDCouplingRemapper
+-    return _MEDCouplingRemapper.MEDCouplingMappedExtrudedMesh____new___(cls,args)
+ %}
+ %include "MEDCouplingFinalize.i"
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py    2018-04-19 17:04:36.737222723 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingRemapperTest.py    2018-04-19 17:25:17.258787888 +0200
+@@ -1108,7 +1108,7 @@
+         pass
+     def testP0P0WithHEXGP12(self):
+-        """ Test that HEXGP12 are correclty remapped (elements with polygonal faces were not properly handled) """
++        """ Test that HEXGP12 are correctly remapped (elements with polygonal faces were not properly handled) """
+         # From Astrid, two disjoint hexagonal prisms:
+         coo1 = [-4.991193077144312, 8.644999999999998, 0.0, -9.982386154288623, 6.112246755425186e-16, 0.0, -4.991193077144315, -8.644999999999998, 0.0, 4.991193077144309, -8.645000000000005, 0.0, 9.982386154288626, 1.1651321638577316e-15, 0.0, 4.991193077144314, 8.645, 0.0, -4.991193077144312, 8.644999999999998, 7.561799999999991, -9.982386154288623, 6.112246755425186e-16, 7.561799999999991, -4.991193077144315, -8.644999999999998, 7.561799999999991, 4.991193077144309, -8.645000000000005, 7.561799999999991, 9.982386154288626, 1.1651321638577316e-15, 7.561799999999991, 4.991193077144314, 8.645, 7.561799999999991]
+         coo2 = [-4.991193077144313, -8.645, 0.0, -9.982386154288626, -1.3992140779350848e-15, 0.0, -19.964772308577256, 0.0, 0.0, -24.95596538572157, -8.644999999999998, 0.0, -19.96477230857726, -17.289999999999996, 0.0, -9.982386154288626, -17.289999999999996, 0.0, -4.991193077144313, -8.645, 5.041200000000004, -9.982386154288626, -1.3992140779350848e-15, 5.041200000000004, -19.964772308577256, 0.0, 5.041200000000004, -24.95596538572157, -8.644999999999998, 5.041200000000004, -19.96477230857726, -17.289999999999996, 5.041200000000004, -9.982386154288626, -17.289999999999996, 5.041200000000004]
+@@ -1155,6 +1155,130 @@
+         self.assertEqual(1, len(rmp.getCrudeMatrix()[0]))
+         pass
++    @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings() and IsCXX11Compiled(),"requires numpy AND scipy AND C++11")
++    def testP1P1PL3DSpaceFrom1DTo0D(self):
++        from scipy.sparse import csr_matrix
++        from numpy import array
++
++        def generateTrg(eps):
++            trgArr=DataArrayDouble([(0.5,0.5,0.5),(0.2,0.2,0.2),(0.9,0.9,0.9),(0.7+eps*sqrt(3),0.7-eps*sqrt(3),0.7)])
++            trg=MEDCouplingUMesh("trg",0) ; trg.setCoords(trgArr)
++            trg.allocateCells()
++            RenumTrg=[2,3,0,1]
++            for rt in RenumTrg:
++                trg.insertNextCell(NORM_POINT1,[rt])
++            return trg
++
++        srcArr=DataArrayDouble([(0.,0.,1.),(0.,0.,0.),(1.,1.,1.)])
++        src=MEDCouplingUMesh("src",1) ; src.setCoords(srcArr)
++        src.allocateCells()
++        src.insertNextCell(NORM_SEG2,[1,2])
++        #
++        trg=generateTrg(1e-7)# trg point 3 of trg cell 1 is NOT closer enough to source edge #1 -> not intercepted
++        #
++        rem=MEDCouplingRemapper()
++        rem.setIntersectionType(PointLocator)
++        self.assertEqual(rem.prepare(src,trg,"P1P1"),1)
++        mat=rem.getCrudeCSRMatrix()
++        row=array([2,2, 0,0, 1,1]) # here no ref to point 3 !
++        col=array([1,2, 1,2, 1,2])
++        data=array([0.1,0.9, 0.5,0.5, 0.8,0.2])
++        mExp=csr_matrix((data,(row,col)),shape=(4,3))
++        delta=abs(mExp-mat)
++        self.assertAlmostEqual(delta.sum(),0.,14)
++        #
++        trg=generateTrg(1e-14) # trg point 3 of trg cell 1 is closer enough to source edge #1 -> intercepted
++        rem=MEDCouplingRemapper()
++        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 
++        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))
++        delta2=abs(mExp2-mat)
++        self.assertAlmostEqual(delta2.sum(),0.,14)
++        pass
++
++    def testSetMatrix1(self):
++        """ Remapper has now setCrudeMatrix method to reload matrix to skip prepare phase """
++        cooS=DataArrayDouble([1,1, 7,1, 7,2, 1,2],4,2)
++        cooT=DataArrayDouble([0,0, 3,0, 3,3, 0,3, 6,0, 12,0, 12,3, 6,3],8,2)
++        ms=MEDCouplingUMesh("source",2) ; ms.allocateCells(1) ; ms.insertNextCell(NORM_QUAD4,[0,1,2,3]) ; ms.setCoords(cooS)
++        mt=MEDCouplingUMesh("target",2) ; mt.allocateCells(2) ; mt.insertNextCell(NORM_QUAD4,[0,1,2,3]) ; mt.insertNextCell(NORM_QUAD4,[4,5,6,7]) ; mt.setCoords(cooT)
++        rem=MEDCouplingRemapper()
++        self.assertEqual(rem.prepare(ms,mt,"P0P0"),1) # [{0: 2.0}, {0: 1.0}]
++        fs=MEDCouplingFieldDouble(ON_CELLS)
++        fs.setMesh(ms)
++        fs.setArray(DataArrayDouble([10]))
++        fs.checkConsistencyLight()
++        #
++        fs.setNature(ExtensiveConservation)
++        self.assertTrue(rem.transferField(fs,1e300).getArray().isEqual(DataArrayDouble([20./3,10./3.]),1e-12))# sum is equal to 10. First value is twice than second value
++        #
++        fs.setNature(ExtensiveMaximum)
++        self.assertTrue(rem.transferField(fs,1e300).getArray().isEqual(DataArrayDouble([20./6.,10./6.]),1e-12))#sum is equal to 5 (10/2. because only half part on input cell is intercepted by the target cells). First value is twice than second value
++        #
++        fs.setNature(IntensiveConservation)
++        self.assertTrue(rem.transferField(fs,1e300).getArray().isEqual(DataArrayDouble([2./9.*10.,1./18.*10.]),1e-12))#
++        #
++        fs.setNature(IntensiveMaximum)
++        self.assertTrue(rem.transferField(fs,1e300).getArray().isEqual(DataArrayDouble([10.,10.]),1e-12))#
++        ####
++        rem2=MEDCouplingRemapper()
++        rem2.setCrudeMatrix(ms,mt,"P0P0",rem.getCrudeMatrix())
++        fs.setNature(ExtensiveConservation)
++        self.assertTrue(rem2.transferField(fs,1e300).getArray().isEqual(DataArrayDouble([20./3,10./3.]),1e-12))
++        #
++        fs.setNature(ExtensiveMaximum)
++        self.assertTrue(rem2.transferField(fs,1e300).getArray().isEqual(DataArrayDouble([20./6.,10./6.]),1e-12))
++        #
++        fs.setNature(IntensiveConservation)
++        self.assertTrue(rem2.transferField(fs,1e300).getArray().isEqual(DataArrayDouble([2./9.*10.,1./18.*10.]),1e-12))
++        #
++        fs.setNature(IntensiveMaximum)
++        self.assertTrue(rem2.transferField(fs,1e300).getArray().isEqual(DataArrayDouble([10.,10.]),1e-12))
++        #
++        srcFt=MEDCouplingFieldTemplate.New(ON_CELLS);
++        trgFt=MEDCouplingFieldTemplate.New(ON_CELLS);
++        srcFt.setMesh(ms);
++        trgFt.setMesh(mt);
++        rem3=MEDCouplingRemapper()
++        rem3.setCrudeMatrixEx(srcFt,trgFt,rem.getCrudeMatrix())
++        fs.setNature(ExtensiveConservation)
++        self.assertTrue(rem3.transferField(fs,1e300).getArray().isEqual(DataArrayDouble([20./3,10./3.]),1e-12))
++        pass
++
++    @unittest.skipUnless(MEDCouplingHasNumPyBindings() and MEDCouplingHasSciPyBindings(),"requires numpy AND scipy")
++    def testSetMatrix2(self):
++        """ Remapper has now setCrudeMatrix method to reload matrix to skip prepare phase. Same as testSetMatrix1 but with CSR scipy matrix """
++        arrx_s=DataArrayDouble(6) ; arrx_s.iota()
++        arry_s=DataArrayDouble(6) ; arry_s.iota()
++        ms=MEDCouplingCMesh() ; ms.setCoords(arrx_s,arry_s)
++        ms=ms.buildUnstructured()
++        #
++        arrx_t=DataArrayDouble([2.5,4.5,5.5])
++        arry_t=DataArrayDouble([2.5,3.5,5.5])
++        mt=MEDCouplingCMesh() ; mt.setCoords(arrx_t,arry_t)
++        mt=mt.buildUnstructured()
++        #
++        rem=MEDCouplingRemapper()
++        self.assertEqual(rem.prepare(ms,mt,"P0P0"),1)
++        #
++        fs=MEDCouplingFieldDouble(ON_CELLS)
++        fs.setMesh(ms)
++        arr=DataArrayDouble(25) ; arr.iota()
++        fs.setArray(arr)
++        fs.checkConsistencyLight()
++        #
++        fs.setNature(ExtensiveConservation)
++        self.assertTrue(rem.transferField(fs,1e300).getArray().isEqual(DataArrayDouble([54.25,11.75,79.25,16.75]),1e-12))
++        mat=rem.getCrudeCSRMatrix()
++        rem2=MEDCouplingRemapper()
++        rem2.setCrudeMatrix(ms,mt,"P0P0",mat)
++        self.assertTrue(rem2.transferField(fs,1e300).getArray().isEqual(DataArrayDouble([54.25,11.75,79.25,16.75]),1e-12))
++        pass
++        
+     def checkMatrix(self,mat1,mat2,nbCols,eps):
+         self.assertEqual(len(mat1),len(mat2))
+         for i in range(len(mat1)):
+diff -Naur MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingTypemaps.i MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingTypemaps.i
+--- MEDCOUPLING_old/src/MEDCoupling_Swig/MEDCouplingTypemaps.i 2018-04-19 17:04:36.737222723 +0200
++++ MEDCOUPLING_new/src/MEDCoupling_Swig/MEDCouplingTypemaps.i 2018-04-19 17:25:17.296788640 +0200
+@@ -83,6 +83,25 @@
+   return ret;
+ }
++static PyObject *convertField(MEDCoupling::MEDCouplingField *f, int owner)
++{
++  PyObject *ret(NULL);
++  if(!f)
++    {
++      Py_XINCREF(Py_None);
++      return Py_None;
++    }
++  if(dynamic_cast<MEDCoupling::MEDCouplingFieldDouble *>(f))
++    ret=SWIG_NewPointerObj(reinterpret_cast<void*>(f),SWIGTYPE_p_MEDCoupling__MEDCouplingFieldDouble,owner);
++  if(dynamic_cast<MEDCoupling::MEDCouplingFieldInt *>(f))
++    ret=SWIG_NewPointerObj(reinterpret_cast<void*>(f),SWIGTYPE_p_MEDCoupling__MEDCouplingFieldInt,owner);
++  if(dynamic_cast<MEDCoupling::MEDCouplingFieldFloat *>(f))
++    ret=SWIG_NewPointerObj(reinterpret_cast<void*>(f),SWIGTYPE_p_MEDCoupling__MEDCouplingFieldFloat,owner);
++  if(!ret)
++    throw INTERP_KERNEL::Exception("Not recognized type of field on downcast !");
++  return ret;
++}
++
+ static PyObject* convertMultiFields(MEDCoupling::MEDCouplingMultiFields *mfs, int owner)
+ {
+   PyObject *ret=0;
+diff -Naur MEDCOUPLING_old/src/MEDLoader/CMakeLists.txt MEDCOUPLING_new/src/MEDLoader/CMakeLists.txt
+--- MEDCOUPLING_old/src/MEDLoader/CMakeLists.txt       2018-04-19 17:04:36.738222743 +0200
++++ MEDCOUPLING_new/src/MEDLoader/CMakeLists.txt       2018-04-19 17:25:17.745797515 +0200
+@@ -63,6 +63,10 @@
+   MEDFileBasis.cxx
+   MEDFileMeshLL.cxx
+   MEDFileField.cxx
++  MEDFileFieldInternal.cxx
++  MEDFileFieldGlobs.cxx
++  MEDFileField1TS.cxx
++  MEDFileFieldMultiTS.cxx
+   MEDFileJoint.cxx
+   MEDFileEquivalence.cxx
+   MEDFileParameter.cxx
+@@ -80,7 +84,7 @@
+ ADD_LIBRARY(medloader ${medloader_SOURCES})
+ SET_TARGET_PROPERTIES(medloader PROPERTIES COMPILE_FLAGS "")
+-TARGET_LINK_LIBRARIES(medloader medcoupling ${MEDFILE_C_LIBRARIES} ${HDF5_LIBRARIES} ${MEDLOADER_XDR_LIBRARIES})
++TARGET_LINK_LIBRARIES(medloader medcouplingcpp ${MEDFILE_C_LIBRARIES} ${HDF5_LIBRARIES} ${MEDLOADER_XDR_LIBRARIES})
+ INSTALL(TARGETS medloader EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${MEDCOUPLING_INSTALL_LIBS})
+ FILE(GLOB medloader_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileBlowStrEltUp.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileBlowStrEltUp.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileBlowStrEltUp.cxx      2018-04-19 17:04:36.738222743 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileBlowStrEltUp.cxx      2018-04-19 17:25:17.812798839 +0200
+@@ -23,6 +23,7 @@
+ #include "MEDFileFieldVisitor.hxx"
+ #include "MEDCouplingPartDefinition.hxx"
+ #include "MCAuto.txx"
++#include <numeric>
+ using namespace MEDCoupling;
+@@ -337,10 +338,13 @@
+   void checkUniqueLoc(const std::string& loc) const;
+   static MCAuto<DataArrayDouble> BuildMeshFromAngleVrille(INTERP_KERNEL::NormalizedCellType gt, const DataArrayDouble *angleDeVrille, const std::string& pfl, const MEDFileFieldLoc& loc, const MEDFileEltStruct4Mesh *zeStr, const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileFieldGlobsReal *globs);
+   static MCAuto<DataArrayDouble> BuildMeshFromEpaisseur(INTERP_KERNEL::NormalizedCellType gt, const DataArrayDouble *thikness, const std::string& pfl, const MEDFileFieldLoc& loc, const MEDFileEltStruct4Mesh *zeStr, const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileFieldGlobsReal *globs);
++  static MCAuto<DataArrayDouble> BuildMeshPipeSEG3(const DataArrayDouble *angle, const DataArrayDouble *scale, const std::string& pfl, const MEDFileFieldLoc& loc, const MEDFileEltStruct4Mesh *zeStr, const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileFieldGlobsReal *globs);
+   static MCAuto<MEDCouplingUMesh> BuildMeshCommon(INTERP_KERNEL::NormalizedCellType gt, const std::string& pfl, const MEDFileFieldLoc& loc, const MEDFileEltStruct4Mesh *zeStr, const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileFieldGlobsReal *globs, MCAuto<DataArrayDouble>& ptsForLoc);
+   static MCAuto<DataArrayDouble> BuildMeshFromStructure(INTERP_KERNEL::NormalizedCellType gt, const std::string& pfl, const MEDFileFieldLoc& loc, const MEDFileEltStruct4Mesh *zeStr, const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileFieldGlobsReal *globs);
+ public:
+   static const char ANGLE_DE_VRILLE[];
++  static const char ANGLE[];
++  static const char SCALE[];
+   static const char EPAISSEUR[];
+ private:
+   std::vector<std::string> _locs;
+@@ -350,6 +354,10 @@
+ const char LocInfo::ANGLE_DE_VRILLE[]="ANGLE DE VRILLE";
++const char LocInfo::ANGLE[]="ANGLE";
++
++const char LocInfo::SCALE[]="SCALE";
++
+ const char LocInfo::EPAISSEUR[]="EPAISSEUR";
+ LocInfo::LocInfo(const std::vector<FieldWalker2>& fw)
+@@ -376,7 +384,7 @@
+     }
+ }
+-MCAuto<MEDCouplingUMesh> LocInfo::BuildMeshCommon(INTERP_KERNEL::NormalizedCellType gt,const std::string& pfl, const MEDFileFieldLoc& loc, const MEDFileEltStruct4Mesh *zeStr, const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileFieldGlobsReal *globs, MCAuto<DataArrayDouble>& ptsForLoc)
++MCAuto<MEDCouplingUMesh> LocInfo::BuildMeshCommon(INTERP_KERNEL::NormalizedCellType gt, const std::string& pfl, const MEDFileFieldLoc& loc, const MEDFileEltStruct4Mesh *zeStr, const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileFieldGlobsReal *globs, MCAuto<DataArrayDouble>& ptsForLoc)
+ {
+   MCAuto<DataArrayInt> conn(zeStr->getConn());
+   conn=conn->deepCopy(); conn->rearrange(1);
+@@ -453,6 +461,7 @@
+ MCAuto<DataArrayDouble> LocInfo::BuildMeshFromEpaisseur(INTERP_KERNEL::NormalizedCellType gt, const DataArrayDouble *thikness, const std::string& pfl, const MEDFileFieldLoc& loc, const MEDFileEltStruct4Mesh *zeStr, const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileFieldGlobsReal *globs)
+ {
++#if __cplusplus >= 201103L
+   MCAuto<DataArrayDouble> ptsForLoc;
+   MCAuto<MEDCouplingUMesh> geoMesh(BuildMeshCommon(gt,pfl,loc,zeStr,mesh,section,globs,ptsForLoc));
+   int nbSecPts(section->getNumberOfNodes()),nbCells(geoMesh->getNumberOfCells()),nbg(loc.getGaussWeights().size());
+@@ -460,7 +469,6 @@
+   if(!pfl.empty())
+     {
+       const DataArrayInt *pflArr(globs->getProfile(pfl));
+-      geoMesh=geoMesh->buildPartOfMySelf(pflArr->begin(),pflArr->end(),true);
+       zeThikness=thikness->selectByTupleIdSafe(pflArr->begin(),pflArr->end());
+     }
+   else
+@@ -476,11 +484,14 @@
+   std::vector< MCAuto<DataArrayDouble> > arrs(nbCells*nbg);
+   for(int j=0;j<nbCells;j++)
+     {
+-      double thck(zeThikness->getIJ(j,0));
+-      MCAuto<DataArrayDouble> fact(DataArrayDouble::New()); fact->alloc(1,nbCompo);
++      double thck(zeThikness->getIJ(j,0)),eccentricity(zeThikness->getIJ(j,1));
++      MCAuto<DataArrayDouble> fact(DataArrayDouble::New()),fact2(DataArrayDouble::New()); fact->alloc(1,nbCompo); fact2->alloc(1,nbCompo);
+       std::copy(orthoArr->begin()+j*nbCompo,orthoArr->begin()+(j+1)*nbCompo,fact->getPointer());
+-      std::transform(fact->begin(),fact->end(),fact->getPointer(),std::bind2nd(std::multiplies<double>(),thck/2.));
++      std::copy(orthoArr->begin()+j*nbCompo,orthoArr->begin()+(j+1)*nbCompo,fact2->getPointer());
++      std::for_each(fact2->rwBegin(),fact2->rwEnd(),[eccentricity](double& val){ val*=eccentricity; });
++      std::transform(fact->begin(),fact->end(),fact->getPointer(),[thck](const double& val){ return val*thck/2.; });
+       MCAuto<DataArrayDouble> p(DataArrayDouble::Multiply(secPts,fact));
++      p=DataArrayDouble::Add(p,fact2);
+       for(int l=0;l<nbg;l++)
+         {
+           MCAuto<DataArrayDouble> p2(p->deepCopy());
+@@ -492,24 +503,131 @@
+   std::vector<const DataArrayDouble *> arrs2(VecAutoToVecOfCstPt(arrs));
+   MCAuto<DataArrayDouble> resu(DataArrayDouble::Aggregate(arrs2));
+   return resu;
++#else
++  throw INTERP_KERNEL::Exception("Broken news : 10% off for C++11 compiler :)");
++#endif
++}
++
++MCAuto<DataArrayDouble> LocInfo::BuildMeshPipeSEG3(const DataArrayDouble *angle, const DataArrayDouble *scale, const std::string& pfl, const MEDFileFieldLoc& loc, const MEDFileEltStruct4Mesh *zeStr, const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileFieldGlobsReal *globs)
++{
++#if __cplusplus >= 201103L
++  static const char MSG1[]="BuildMeshPipeSEG3 : not recognized pattern ! Send mail to anthony.geay@edf.fr with corresponding MED file !";
++  MCAuto<DataArrayDouble> ptsForLoc;
++  MCAuto<MEDCouplingUMesh> geoMesh(BuildMeshCommon(INTERP_KERNEL::NORM_SEG3,pfl,loc,zeStr,mesh,section,globs,ptsForLoc));
++  int nbSecPts(section->getNumberOfNodes()),nbCells(geoMesh->getNumberOfCells()),nbg(loc.getGaussWeights().size());
++  MCConstAuto<DataArrayDouble> zeAngle,zeScale;
++  if(!pfl.empty())
++    {
++      const DataArrayInt *pflArr(globs->getProfile(pfl));
++      zeAngle=angle->selectByTupleIdSafe(pflArr->begin(),pflArr->end());
++      zeScale=scale->selectByTupleIdSafe(pflArr->begin(),pflArr->end());
++    }
++  else
++    {
++      zeAngle.takeRef(angle);
++      zeScale.takeRef(scale);
++    }
++  if(zeAngle->getNumberOfComponents()!=3 || zeScale->getNumberOfComponents()!=2 || nbg!=3)
++    throw INTERP_KERNEL::Exception(MSG1);
++  MCAuto<MEDCouplingFieldDouble> dir;
++  {
++    MCAuto<MEDCouplingUMesh> geoMesh2(geoMesh->deepCopy());
++    geoMesh2->convertQuadraticCellsToLinear();
++    dir=geoMesh2->buildDirectionVectorField();
++  }
++  MCAuto<DataArrayDouble> rot(dir->getArray()->fromCartToSpher());
++  int nbCompo(ptsForLoc->getNumberOfComponents());
++  MCAuto<DataArrayDouble> secPts(section->getCoords()->changeNbOfComponents(nbCompo,0.));
++  {
++    const int TAB[3]={2,0,1};
++    std::vector<int> v(TAB,TAB+3);
++    secPts=secPts->keepSelectedComponents(v);
++  }
++  const double CENTER[3]={0.,0.,0.},AX0[3]={0.,0.,1.};
++  double AX1[3]; AX1[2]=0.;
++  std::vector< MCAuto<DataArrayDouble> > arrs(nbCells*nbg);
++  for(int j=0;j<nbCells;j++)
++    {
++      constexpr int DIM=3;
++      MCAuto<DataArrayDouble> p(secPts->deepCopy());
++      double ang0(rot->getIJ(j,2));
++      double rmin(zeScale->getIJ(j,0)),rmax(zeScale->getIJ(j,1));
++      {
++        auto pt(p->rwBegin());
++        for(int i=0;i<nbSecPts;i++)
++          {
++            auto nrm(sqrt(std::accumulate(pt,pt+DIM,0.,[](double sum, double v) { return sum+v*v; } )));
++            auto sca((rmin+2.*(nrm-0.5)*(rmax-rmin))/nrm);
++            std::for_each(pt,pt+3,[sca](double& val) { val*=sca; } );
++            std::advance(pt,DIM);
++          }
++      }
++      DataArrayDouble::Rotate3DAlg(CENTER,AX0,ang0,nbSecPts,p->begin(),p->getPointer());
++      AX1[0]=-sin(ang0); AX1[1]=cos(ang0);// rot Oy around OZ
++      double ang1(M_PI/2.-rot->getIJ(j,1));
++      DataArrayDouble::Rotate3DAlg(CENTER,AX1,-ang1,nbSecPts,p->begin(),p->getPointer());
++      for(int l=0;l<3;l++)
++        {
++          MCAuto<DataArrayDouble> p3(p->deepCopy());
++          DataArrayDouble::Rotate3DAlg(CENTER,dir->getArray()->begin()+j*3,zeAngle->getIJ(j,l),nbSecPts,p3->begin(),p3->getPointer());
++          MCAuto<DataArrayDouble> p2(p3->deepCopy());
++          for(int k=0;k<nbCompo;k++)
++            p2->applyLin(1.,ptsForLoc->getIJ(j*nbg+l,k),k);
++          arrs[j*nbg+l]=p2;
++        }
++    }
++  std::vector<const DataArrayDouble *> arrs2(VecAutoToVecOfCstPt(arrs));
++  MCAuto<DataArrayDouble> resu(DataArrayDouble::Aggregate(arrs2));
++  return resu;
++#else
++  throw INTERP_KERNEL::Exception("Broken news : 10% off for C++11 compiler :)");
++#endif
+ }
+ MCAuto<DataArrayDouble> LocInfo::BuildMeshFromStructure(INTERP_KERNEL::NormalizedCellType gt, const std::string& pfl, const MEDFileFieldLoc& loc, const MEDFileEltStruct4Mesh *zeStr, const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileFieldGlobsReal *globs)
+ {
+   static const char MSG1[]="BuildMeshFromStructure : not recognized pattern ! Send mail to anthony.geay@edf.fr with corresponding MED file !";
+   const std::vector< MCAuto<DataArray> >& vars(zeStr->getVars());
+-  if(vars.size()!=1)
+-    throw INTERP_KERNEL::Exception(MSG1);
+-  MCAuto<DataArray> zeArr(vars[0]);
+-  if(zeArr.isNull())
+-    throw INTERP_KERNEL::Exception(MSG1);
+-  MCAuto<DataArrayDouble> zeArr2(DynamicCast<DataArray,DataArrayDouble>(zeArr));
+-  if(zeArr2.isNull())
+-    throw INTERP_KERNEL::Exception(MSG1);
+-  if(zeArr2->getName()==ANGLE_DE_VRILLE)
+-    return BuildMeshFromAngleVrille(gt,zeArr2,pfl,loc,zeStr,mesh,section,globs);
+-  if(zeArr2->getName()==EPAISSEUR)
+-    return BuildMeshFromEpaisseur(gt,zeArr2,pfl,loc,zeStr,mesh,section,globs);
++  if(vars.size()==1)
++    {
++      MCAuto<DataArray> zeArr(vars[0]);
++      if(zeArr.isNull())
++        throw INTERP_KERNEL::Exception(MSG1);
++      MCAuto<DataArrayDouble> zeArr2(DynamicCast<DataArray,DataArrayDouble>(zeArr));
++      if(zeArr2.isNull())
++        throw INTERP_KERNEL::Exception(MSG1);
++      if(zeArr2->getName()==ANGLE_DE_VRILLE || zeArr2->getName()==ANGLE)
++        return BuildMeshFromAngleVrille(gt,zeArr2,pfl,loc,zeStr,mesh,section,globs);
++      if(zeArr2->getName()==EPAISSEUR || zeArr2->getName()==SCALE)
++        return BuildMeshFromEpaisseur(gt,zeArr2,pfl,loc,zeStr,mesh,section,globs);
++    }
++  if(vars.size()==2)
++    {
++      MCAuto<DataArray> zeArr0(vars[0]),zeArr1(vars[1]);
++      if(zeArr0.isNull() || zeArr1.isNull())
++        throw INTERP_KERNEL::Exception(MSG1);
++      MCAuto<DataArrayDouble> zeArr00(DynamicCastSafe<DataArray,DataArrayDouble>(zeArr0)),zeArr11(DynamicCastSafe<DataArray,DataArrayDouble>(zeArr1));
++      switch(gt)
++      {
++        case INTERP_KERNEL::NORM_SEG3:
++          {
++            MCAuto<DataArrayDouble> angle,scale;
++            if(zeArr00->getName()==ANGLE)
++              angle=zeArr00;
++            if(zeArr00->getName()==SCALE)
++              scale=zeArr00;
++            if(zeArr11->getName()==ANGLE)
++              angle=zeArr11;
++            if(zeArr11->getName()==SCALE)
++              scale=zeArr11;
++            if(angle.isNull() || scale.isNull())
++              throw INTERP_KERNEL::Exception(MSG1);
++            return BuildMeshPipeSEG3(angle,scale,pfl,loc,zeStr,mesh,section,globs);
++          }
++        default:
++          throw INTERP_KERNEL::Exception(MSG1);
++      }
++    }
+   throw INTERP_KERNEL::Exception(MSG1);
+ }
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileField1TS.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileField1TS.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileField1TS.cxx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileField1TS.cxx  2018-04-19 17:25:17.799798582 +0200
+@@ -0,0 +1,2630 @@
++// Copyright (C) 2017  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++#include "MEDFileField1TS.hxx"
++#include "MEDFileFieldVisitor.hxx"
++#include "MEDFileSafeCaller.txx"
++#include "MEDLoaderBase.hxx"
++#include "MEDFileField.txx"
++
++#include "MEDCouplingFieldTemplate.hxx"
++#include "MEDCouplingFieldDouble.hxx"
++
++using namespace MEDCoupling;
++
++extern INTERP_KERNEL::NormalizedCellType typmai2[MED_N_CELL_FIXED_GEO];
++
++template class MEDCoupling::MEDFileField1TSTemplateWithoutSDA<int>;
++template class MEDCoupling::MEDFileField1TSTemplateWithoutSDA<float>;
++template class MEDCoupling::MEDFileField1TSTemplateWithoutSDA<double>;
++template class MEDCoupling::MEDFileField1TSNDTemplateWithoutSDA<int>;
++template class MEDCoupling::MEDFileField1TSNDTemplateWithoutSDA<float>;
++template class MEDCoupling::MEDFileTemplateField1TS<int>;
++template class MEDCoupling::MEDFileTemplateField1TS<float>;
++template class MEDCoupling::MEDFileTemplateField1TS<double>;
++template class MEDCoupling::MEDFileNDTemplateField1TS<int>;
++template class MEDCoupling::MEDFileNDTemplateField1TS<float>;
++
++const char MEDFileField1TSWithoutSDA::TYPE_STR[]="FLOAT64";
++const char MEDFileIntField1TSWithoutSDA::TYPE_STR[]="INT32";
++const char MEDFileFloatField1TSWithoutSDA::TYPE_STR[]="FLOAT32";
++
++//= MEDFileAnyTypeField1TSWithoutSDA
++
++void MEDFileAnyTypeField1TSWithoutSDA::deepCpyLeavesFrom(const MEDFileAnyTypeField1TSWithoutSDA& other)
++{
++  _field_per_mesh.resize(other._field_per_mesh.size());
++  std::size_t i=0;
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=other._field_per_mesh.begin();it!=other._field_per_mesh.end();it++,i++)
++    {
++      if((const MEDFileFieldPerMesh *)*it)
++        _field_per_mesh[i]=(*it)->deepCopy(this);
++    }
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::accept(MEDFileFieldVisitor& visitor) const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    if((*it).isNotNull())
++      {
++        visitor.newMeshEntry(*it);
++        (*it)->accept(visitor);
++        visitor.endMeshEntry(*it);
++      }
++}
++
++/*!
++ * Prints a string describing \a this field into a stream. This string is outputted 
++ * by \c print Python command.
++ *  \param [in] bkOffset - number of white spaces printed at the beginning of each line.
++ *  \param [in,out] oss - the out stream.
++ *  \param [in] f1tsId - the field index within a MED file. If \a f1tsId < 0, the tiny
++ *          info id printed, else, not.
++ */
++void MEDFileAnyTypeField1TSWithoutSDA::simpleRepr(int bkOffset, std::ostream& oss, int f1tsId) const
++{
++  std::string startOfLine(bkOffset,' ');
++  oss << startOfLine << "Field ";
++  if(bkOffset==0)
++    oss << "[Type=" << getTypeStr() << "] with name \"" << getName() << "\" ";
++  oss << "on one time Step ";
++  if(f1tsId>=0)
++    oss << "(" << f1tsId << ") ";
++  oss << "on iteration=" << _iteration << " order=" << _order << "." << std::endl;
++  oss << startOfLine << "Time attached is : " << _dt << " [" << _dt_unit << "]." << std::endl;
++  const DataArray *arr=getUndergroundDataArray();
++  if(arr)
++    {
++      const std::vector<std::string> &comps=arr->getInfoOnComponents();
++      if(f1tsId<0)
++        {
++          oss << startOfLine << "Field has " << comps.size() << " components with the following infos :" << std::endl;
++          for(std::vector<std::string>::const_iterator it=comps.begin();it!=comps.end();it++)
++            oss << startOfLine << "  -  \"" << (*it) << "\"" << std::endl;
++        }
++      if(arr->isAllocated())
++        {
++          oss << startOfLine << "Whole field contains " << arr->getNumberOfTuples() << " tuples." << std::endl;
++        }
++      else
++        oss << startOfLine << "The array of the current field has not allocated yet !" << std::endl;
++    }
++  else
++    {
++      oss << startOfLine << "Field infos are empty ! Not defined yet !" << std::endl;
++    }
++  oss << startOfLine << "----------------------" << std::endl;
++  if(!_field_per_mesh.empty())
++    {
++      int i=0;
++      for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it2=_field_per_mesh.begin();it2!=_field_per_mesh.end();it2++,i++)
++        {
++          const MEDFileFieldPerMesh *cur=(*it2);
++          if(cur)
++            cur->simpleRepr(bkOffset,oss,i);
++          else
++            oss << startOfLine << "Field per mesh #" << i << " is not defined !" << std::endl;
++        }
++    }
++  else
++    {
++      oss << startOfLine << "Field is not defined on any meshes !" << std::endl;
++    }
++  oss << startOfLine << "----------------------" << std::endl;
++}
++
++std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > MEDFileAnyTypeField1TSWithoutSDA::splitComponents() const
++{
++  const DataArray *arr(getUndergroundDataArray());
++  if(!arr)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::splitComponents : no array defined !");
++  int nbOfCompo=arr->getNumberOfComponents();
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret(nbOfCompo);
++  for(int i=0;i<nbOfCompo;i++)
++    {
++      ret[i]=deepCopy();
++      std::vector<int> v(1,i);
++      MCAuto<DataArray> arr2=arr->keepSelectedComponents(v);
++      ret[i]->setArray(arr2);
++    }
++  return ret;
++}
++
++MEDFileAnyTypeField1TSWithoutSDA::MEDFileAnyTypeField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order):MEDFileFieldNameScope(fieldName,meshName),_iteration(iteration),_order(order),_csit(csit),_nb_of_tuples_to_be_allocated(-2)
++{
++}
++
++MEDFileAnyTypeField1TSWithoutSDA::MEDFileAnyTypeField1TSWithoutSDA():_iteration(-1),_order(-1),_dt(0.),_csit(-1),_nb_of_tuples_to_be_allocated(-1)
++{
++}
++
++/*!
++ * Returns the maximal dimension of supporting elements. Returns -2 if \a this is
++ * empty. Returns -1 if this in on nodes.
++ *  \return int - the dimension of \a this.
++ */
++int MEDFileAnyTypeField1TSWithoutSDA::getDimension() const
++{
++  int ret=-2;
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    (*it)->getDimension(ret);
++  return ret;
++}
++
++bool MEDFileAnyTypeField1TSWithoutSDA::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab)
++{
++  bool ret=false;
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    {
++      MEDFileFieldPerMesh *cur(*it);
++      if(cur)
++        ret=cur->changeMeshNames(modifTab) || ret;
++    }
++  return ret;
++}
++
++/*!
++ * Returns the number of iteration of the state of underlying mesh.
++ *  \return int - the iteration number.
++ *  \throw If \c _field_per_mesh.empty()
++ */
++int MEDFileAnyTypeField1TSWithoutSDA::getMeshIteration() const
++{
++  if(_field_per_mesh.empty())
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::getMeshIteration : No field set !");
++  return _field_per_mesh[0]->getMeshIteration();
++}
++
++/*!
++ * Returns the order number of iteration of the state of underlying mesh.
++ *  \return int - the order number.
++ *  \throw If \c _field_per_mesh.empty()
++ */
++int MEDFileAnyTypeField1TSWithoutSDA::getMeshOrder() const
++{
++  if(_field_per_mesh.empty())
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::getMeshOrder : No field set !");
++  return _field_per_mesh[0]->getMeshOrder();
++}
++
++/*!
++ * Checks if \a this field is tagged by a given iteration number and a given
++ * iteration order number.
++ *  \param [in] iteration - the iteration number of interest.
++ *  \param [in] order - the iteration order number of interest.
++ *  \return bool - \c true if \a this->getIteration() == \a iteration && 
++ *          \a this->getOrder() == \a order.
++ */
++bool MEDFileAnyTypeField1TSWithoutSDA::isDealingTS(int iteration, int order) const
++{
++  return iteration==_iteration && order==_order;
++}
++
++/*!
++ * Returns number of iteration and order number of iteration when
++ * \a this field has been calculated.
++ *  \return std::pair<int,int> - a pair of the iteration number and the iteration
++ *          order number.
++ */
++std::pair<int,int> MEDFileAnyTypeField1TSWithoutSDA::getDtIt() const
++{
++  std::pair<int,int> p;
++  fillIteration(p);
++  return p;
++}
++
++/*!
++ * Returns number of iteration and order number of iteration when
++ * \a this field has been calculated.
++ *  \param [in,out] p - a pair returning the iteration number and the iteration
++ *          order number.
++ */
++void MEDFileAnyTypeField1TSWithoutSDA::fillIteration(std::pair<int,int>& p) const
++{
++  p.first=_iteration;
++  p.second=_order;
++}
++
++/*!
++ * Returns all types of spatial discretization of \a this field.
++ *  \param [in,out] types - a sequence of types of \a this field.
++ */
++void MEDFileAnyTypeField1TSWithoutSDA::fillTypesOfFieldAvailable(std::vector<TypeOfField>& types) const
++{
++  std::set<TypeOfField> types2;
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    {
++      (*it)->fillTypesOfFieldAvailable(types2);
++    }
++  std::back_insert_iterator< std::vector<TypeOfField> > bi(types);
++  std::copy(types2.begin(),types2.end(),bi);
++}
++
++/*!
++ * Returns all types of spatial discretization of \a this field.
++ *  \return std::vector<TypeOfField> - a sequence of types of spatial discretization
++ *          of \a this field.
++ */
++std::vector<TypeOfField> MEDFileAnyTypeField1TSWithoutSDA::getTypesOfFieldAvailable() const
++{
++  std::vector<TypeOfField> ret;
++  fillTypesOfFieldAvailable(ret);
++  return ret;
++}
++
++std::vector<std::string> MEDFileAnyTypeField1TSWithoutSDA::getPflsReallyUsed2() const
++{
++  std::vector<std::string> ret;
++  std::set<std::string> ret2;
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getPflsReallyUsed();
++      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
++        if(ret2.find(*it2)==ret2.end())
++          {
++            ret.push_back(*it2);
++            ret2.insert(*it2);
++          }
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileAnyTypeField1TSWithoutSDA::getLocsReallyUsed2() const
++{
++  std::vector<std::string> ret;
++  std::set<std::string> ret2;
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getLocsReallyUsed();
++      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
++        if(ret2.find(*it2)==ret2.end())
++          {
++            ret.push_back(*it2);
++            ret2.insert(*it2);
++          }
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileAnyTypeField1TSWithoutSDA::getPflsReallyUsedMulti2() const
++{
++  std::vector<std::string> ret;
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getPflsReallyUsedMulti();
++      ret.insert(ret.end(),tmp.begin(),tmp.end());
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileAnyTypeField1TSWithoutSDA::getLocsReallyUsedMulti2() const
++{
++  std::vector<std::string> ret;
++  std::set<std::string> ret2;
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getLocsReallyUsedMulti();
++      ret.insert(ret.end(),tmp.begin(),tmp.end());
++    }
++  return ret;
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::changePflsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    (*it)->changePflsRefsNamesGen(mapOfModif);
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::changeLocsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    (*it)->changeLocsRefsNamesGen(mapOfModif);
++}
++
++/*!
++ * Returns all attributes of parts of \a this field lying on a given mesh.
++ * Each part differs from other ones by a type of supporting mesh entity. The _i_-th
++ * item of every of returned sequences refers to the _i_-th part of \a this field.
++ * Thus all sequences returned by this method are of the same length equal to number
++ * of different types of supporting entities.<br>
++ * A field part can include sub-parts with several different spatial discretizations,
++ * \ref MEDCoupling::ON_CELLS "ON_CELLS" and \ref MEDCoupling::ON_GAUSS_PT "ON_GAUSS_PT"
++ * for example. Hence, some of the returned sequences contains nested sequences, and an item
++ * of a nested sequence corresponds to a type of spatial discretization.<br>
++ * This method allows for iteration over MEDFile DataStructure without any overhead.
++ *  \param [in] mname - a name of a mesh of interest. It can be \c NULL, which is valid
++ *          for the case with only one underlying mesh. (Actually, the number of meshes is
++ *          not checked if \a mname == \c NULL).
++ *  \param [in,out] types - a sequence of types of underlying mesh entities. A type per
++ *          a field part is returned. 
++ *  \param [in,out] typesF - a sequence of sequences of types of spatial discretizations.
++ *          This sequence is of the same length as \a types. 
++ *  \param [in,out] pfls - a sequence returning a profile name per each type of spatial
++ *          discretization. A profile name can be empty.
++ *          Length of this and of nested sequences is the same as that of \a typesF.
++ *  \param [in,out] locs - a sequence returning a localization name per each type of spatial
++ *          discretization. A localization name can be empty.
++ *          Length of this and of nested sequences is the same as that of \a typesF.
++ *  \return std::vector< std::vector< std::pair<int,int> > > - a sequence holding a range
++ *          of ids of tuples within the data array, per each type of spatial
++ *          discretization within one mesh entity type. 
++ *          Length of this and of nested sequences is the same as that of \a typesF.
++ *  \throw If no field is lying on \a mname.
++ */
++std::vector< std::vector< std::pair<int,int> > > MEDFileAnyTypeField1TSWithoutSDA::getFieldSplitedByType(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
++{
++  if(_field_per_mesh.empty())
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getFieldSplitedByType : This is empty !");
++  return _field_per_mesh[0]->getFieldSplitedByType(types,typesF,pfls,locs);
++}
++
++/*!
++ * Returns dimensions of mesh elements \a this field lies on. The returned value is a
++ * maximal absolute dimension and values returned via the out parameter \a levs are 
++ * dimensions relative to the maximal absolute dimension. <br>
++ * This method is designed for MEDFileField1TS instances that have a discretization
++ * \ref MEDCoupling::ON_CELLS "ON_CELLS", 
++ * \ref MEDCoupling::ON_GAUSS_PT "ON_GAUSS_PT", 
++ * \ref MEDCoupling::ON_GAUSS_NE "ON_GAUSS_NE".
++ * Only these 3 discretizations will be taken into account here. If \a this is
++ * \ref MEDCoupling::ON_NODES "ON_NODES", -1 is returned and \a levs are empty.<br>
++ * This method is useful to make the link between the dimension of the underlying mesh
++ * and the levels of \a this, because it is possible that the highest dimension of \a this
++ * field is not equal to the dimension of the underlying mesh.
++ * 
++ * Let's consider the following case:
++ * - mesh \a m1 has a meshDimension 3 and has non empty levels [0,-1,-2] with elements
++ * TETRA4, HEXA8, TRI3 and SEG2.
++ * - field \a f1 lies on \a m1 and is defined on 3D and 1D elements TETRA4 and SEG2.
++ * - field \a f2 lies on \a m1 and is defined on 2D and 1D elements TRI3 and SEG2.
++ *
++ * In this case \a f1->getNonEmptyLevels() returns (3,[0,-2]) and \a
++ * f2->getNonEmptyLevels() returns (2,[0,-1]). <br>
++ * The returned values can be used for example to retrieve a MEDCouplingFieldDouble lying
++ * on elements of a certain relative level by calling getFieldAtLevel(). \a meshDimRelToMax
++ * parameter of getFieldAtLevel() is computed basing on the returned values as this:
++ * <em> meshDimRelToMax = absDim - meshDim + relativeLev </em>.
++ * For example<br>
++ * to retrieve the highest level of
++ * \a f1: <em>f1->getFieldAtLevel( ON_CELLS, 3-3+0 ); // absDim - meshDim + relativeLev</em><br> 
++ * to retrieve the lowest level of \a f1: <em>f1->getFieldAtLevel( ON_CELLS, 3-3+(-2) );</em><br>
++ * to retrieve the highest level of \a f2: <em>f2->getFieldAtLevel( ON_CELLS, 2-3+0 );</em><br>
++ * to retrieve the lowest level of \a f2: <em>f2->getFieldAtLevel( ON_CELLS, 2-3+(-1) )</em>.
++ *  \param [in] mname - a name of a mesh of interest. It can be \c NULL, which is valid
++ *          for the case with only one underlying mesh. (Actually, the number of meshes is
++ *          not checked if \a mname == \c NULL).
++ *  \param [in,out] levs - a sequence returning the dimensions relative to the maximal
++ *          absolute one. They are in decreasing order. This sequence is cleared before
++ *          filling it in.
++ *  \return int - the maximal absolute dimension of elements \a this fields lies on.
++ *  \throw If no field is lying on \a mname.
++ */
++int MEDFileAnyTypeField1TSWithoutSDA::getNonEmptyLevels(const std::string& mname, std::vector<int>& levs) const
++{
++  levs.clear();
++  std::vector<INTERP_KERNEL::NormalizedCellType> types;
++  std::vector< std::vector<TypeOfField> > typesF;
++  std::vector< std::vector<std::string> > pfls, locs;
++  if(_field_per_mesh.empty())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::getNonEmptyLevels : This is empty !");
++  _field_per_mesh[0]->getFieldSplitedByType(types,typesF,pfls,locs);
++  if(types.empty())
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getNonEmptyLevels : 'this' is empty !");
++  std::set<INTERP_KERNEL::NormalizedCellType> st(types.begin(),types.end());
++  if(st.size()==1 && (*st.begin())==INTERP_KERNEL::NORM_ERROR)
++    return -1;
++  st.erase(INTERP_KERNEL::NORM_ERROR);
++  std::set<int> ret1;
++  for(std::set<INTERP_KERNEL::NormalizedCellType>::const_iterator it=st.begin();it!=st.end();it++)
++    {
++      const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(*it);
++      ret1.insert((int)cm.getDimension());
++    }
++  int ret=*std::max_element(ret1.begin(),ret1.end());
++  std::copy(ret1.rbegin(),ret1.rend(),std::back_insert_iterator<std::vector<int> >(levs));
++  std::transform(levs.begin(),levs.end(),levs.begin(),std::bind2nd(std::plus<int>(),-ret));
++  return ret;
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::convertMedBallIntoClassic()
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it<_field_per_mesh.end();it++)
++    if((*it).isNotNull())
++      (*it)->convertMedBallIntoClassic();
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::makeReduction(INTERP_KERNEL::NormalizedCellType ct, TypeOfField tof, const DataArrayInt *pfl)
++{
++  if(!pfl)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : null pfl !");
++  std::string name(pfl->getName());
++  pfl->checkAllocated();
++  if(pfl->getNumberOfComponents()!=1)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : non mono compo array !");
++  if(name.empty())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : empty pfl name !");
++  if(_field_per_mesh.size()!=1)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : only single mesh supported !");
++  MCAuto<MEDFileFieldPerMesh> fpm(_field_per_mesh[0]);
++  if(fpm.isNull())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : only single not null mesh supported !");
++  MEDFileFieldPerMeshPerTypePerDisc *disc(fpm->getLeafGivenTypeAndLocId(ct,0));
++  if(disc->getType()!=tof)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : error !");
++  int s(disc->getStart()),e(disc->getEnd()),nt(pfl->getNumberOfTuples());
++  DataArray *arr(getUndergroundDataArray());
++  int nt2(arr->getNumberOfTuples()),delta((e-s)-nt);
++  if(delta<0)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : internal error !");
++  MCAuto<DataArray> arr0(arr->selectByTupleIdSafeSlice(0,s,1)),arr1(arr->selectByTupleIdSafeSlice(s,e,1)),arr2(arr->selectByTupleIdSafeSlice(e,nt2,1));
++  MCAuto<DataArray> arr11(arr1->selectByTupleIdSafe(pfl->begin(),pfl->end()));
++  MCAuto<DataArray> arrOut(arr->buildNewEmptyInstance());
++  arrOut->alloc(nt2-delta,arr->getNumberOfComponents());
++  arrOut->copyStringInfoFrom(*arr);
++  arrOut->setContigPartOfSelectedValuesSlice(0,arr0,0,s,1);
++  arrOut->setContigPartOfSelectedValuesSlice(s,arr11,0,nt,1);
++  arrOut->setContigPartOfSelectedValuesSlice(e-delta,arr2,0,nt2-e,1);
++  setArray(arrOut);
++  disc->setEnd(e-delta);
++  disc->setProfile(name);
++}
++
++/*!
++ * \param [in] mName specifies the underlying mesh name. This value can be pointer 0 for users that do not deal with fields on multi mesh.
++ * \param [in] typ is for the geometric cell type (or INTERP_KERNEL::NORM_ERROR for node field) entry to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set.
++ * \param [in] locId is the localization id to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set. It corresponds to the position of 
++ *             \c pfls[std::distance(types.begin(),std::find(types.begin(),typ)] vector in MEDFileField1TSWithoutSDA::getFieldSplitedByType. For non gausspoints field users, the value is 0.
++ */
++MEDFileFieldPerMeshPerTypePerDisc *MEDFileAnyTypeField1TSWithoutSDA::getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId)
++{
++  if(_field_per_mesh.empty())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::getLeafGivenMeshAndTypeAndLocId : This is empty !");
++  return _field_per_mesh[0]->getLeafGivenTypeAndLocId(typ,locId);
++}
++
++/*!
++ * \param [in] mName specifies the underlying mesh name. This value can be pointer 0 for users that do not deal with fields on multi mesh.
++ * \param [in] typ is for the geometric cell type (or INTERP_KERNEL::NORM_ERROR for node field) entry to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set.
++ * \param [in] locId is the localization id to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set. It corresponds to the position of 
++ *             \c pfls[std::distance(types.begin(),std::find(types.begin(),typ)] vector in MEDFileField1TSWithoutSDA::getFieldSplitedByType. For non gausspoints field users, the value is 0.
++ */
++const MEDFileFieldPerMeshPerTypePerDisc *MEDFileAnyTypeField1TSWithoutSDA::getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId) const
++{
++  if(_field_per_mesh.empty())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::getLeafGivenMeshAndTypeAndLocId : This is empty !");
++  return _field_per_mesh[0]->getLeafGivenTypeAndLocId(typ,locId);
++}
++
++/*!
++ * \param [in] mName specifies the underlying mesh name. This value can be pointer 0 for users that do not deal with fields on multi mesh.
++ */
++int MEDFileAnyTypeField1TSWithoutSDA::getMeshIdFromMeshName(const std::string& mName) const
++{
++  if(_field_per_mesh.empty())
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getMeshIdFromMeshName : No field set !");
++  if(mName.empty())
++    return 0;
++  std::string mName2(mName);
++  int ret=0;
++  std::vector<std::string> msg;
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++,ret++)
++    if(mName2==(*it)->getMeshName())
++      return ret;
++    else
++      msg.push_back((*it)->getMeshName());
++  std::ostringstream oss; oss << "MEDFileField1TSWithoutSDA::getMeshIdFromMeshName : No such mesh \"" << mName2 << "\" as underlying mesh of field \"" << getName() << "\" !\n";
++  oss << "Possible meshes are : ";
++  for(std::vector<std::string>::const_iterator it2=msg.begin();it2!=msg.end();it2++)
++    oss << "\"" << (*it2) << "\" ";
++  throw INTERP_KERNEL::Exception(oss.str());
++}
++
++int MEDFileAnyTypeField1TSWithoutSDA::addNewEntryIfNecessary(const MEDCouplingMesh *mesh)
++{
++  if(!mesh)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::addNewEntryIfNecessary : input mesh is NULL !");
++  std::string tmp(mesh->getName());
++  if(tmp.empty())
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::addNewEntryIfNecessary : empty mesh name ! unsupported by MED file !");
++  setMeshName(tmp);
++  std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();
++  int i=0;
++  for(;it!=_field_per_mesh.end();it++,i++)
++    {
++      if((*it)->getMeshName()==tmp)
++        return i;
++    }
++  int sz=_field_per_mesh.size();
++  _field_per_mesh.resize(sz+1);
++  _field_per_mesh[sz]=MEDFileFieldPerMesh::New(this,mesh);
++  return sz;
++}
++
++bool MEDFileAnyTypeField1TSWithoutSDA::renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N,
++                                                                   MEDFileFieldGlobsReal& glob)
++{
++  bool ret=false;
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    {
++      MEDFileFieldPerMesh *fpm(*it);
++      if(fpm)
++        ret=fpm->renumberEntitiesLyingOnMesh(meshName,oldCode,newCode,renumO2N,glob) || ret;
++    }
++  return ret;
++}
++
++/*!
++ * This method splits \a this into several sub-parts so that each sub parts have exactly one spatial discretization. This method implements the minimal
++ * splitting that leads to single spatial discretization of this.
++ *
++ * \sa splitMultiDiscrPerGeoTypes
++ */
++std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > MEDFileAnyTypeField1TSWithoutSDA::splitDiscretizations() const
++{
++  std::vector<INTERP_KERNEL::NormalizedCellType> types;
++  std::vector< std::vector<TypeOfField> > typesF;
++  std::vector< std::vector<std::string> > pfls,locs;
++  std::vector< std::vector<std::pair<int,int> > > bgEnd(getFieldSplitedByType(getMeshName().c_str(),types,typesF,pfls,locs));
++  std::set<TypeOfField> allEnt;
++  for(std::vector< std::vector<TypeOfField> >::const_iterator it1=typesF.begin();it1!=typesF.end();it1++)
++    for(std::vector<TypeOfField>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
++      allEnt.insert(*it2);
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret(allEnt.size());
++  std::set<TypeOfField>::const_iterator it3(allEnt.begin());
++  for(std::size_t i=0;i<allEnt.size();i++,it3++)
++    {
++      std::vector< std::pair<int,int> > its;
++      ret[i]=shallowCpy();
++      int newLgth(ret[i]->keepOnlySpatialDiscretization(*it3,its));
++      ret[i]->updateData(newLgth,its);
++    }
++  return ret;
++}
++
++/*!
++ * This method performs a sub splitting as splitDiscretizations does but finer. This is the finest spliting level that can be done.
++ * This method implements the minimal splitting so that each returned elements are mono Gauss discretization per geometric type.
++ *
++ * \sa splitDiscretizations
++ */
++std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > MEDFileAnyTypeField1TSWithoutSDA::splitMultiDiscrPerGeoTypes() const
++{
++  std::vector<INTERP_KERNEL::NormalizedCellType> types;
++  std::vector< std::vector<TypeOfField> > typesF;
++  std::vector< std::vector<std::string> > pfls,locs;
++  std::vector< std::vector<std::pair<int,int> > > bgEnd(getFieldSplitedByType(getMeshName().c_str(),types,typesF,pfls,locs));
++  std::set<TypeOfField> allEnt;
++  std::size_t nbOfMDPGT(0),ii(0);
++  for(std::vector< std::vector<TypeOfField> >::const_iterator it1=typesF.begin();it1!=typesF.end();it1++,ii++)
++    {
++      nbOfMDPGT=std::max(nbOfMDPGT,locs[ii].size());
++      for(std::vector<TypeOfField>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
++        allEnt.insert(*it2);
++    }
++  if(allEnt.size()!=1)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::splitMultiDiscrPerGeoTypes : this field is expected to be defined only on one spatial discretization !");
++  if(nbOfMDPGT==0)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::splitMultiDiscrPerGeoTypes : empty field !");
++  if(nbOfMDPGT==1)
++    {
++      std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret0(1);
++      ret0[0]=const_cast<MEDFileAnyTypeField1TSWithoutSDA *>(this); this->incrRef();
++      return ret0;
++    }
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret(nbOfMDPGT);
++  for(std::size_t i=0;i<nbOfMDPGT;i++)
++    {
++      std::vector< std::pair<int,int> > its;
++      ret[i]=shallowCpy();
++      int newLgth(ret[i]->keepOnlyGaussDiscretization(i,its));
++      ret[i]->updateData(newLgth,its);
++    }
++  return ret;
++}
++
++int MEDFileAnyTypeField1TSWithoutSDA::keepOnlySpatialDiscretization(TypeOfField tof, std::vector< std::pair<int,int> >& its)
++{
++  int globalCounter(0);
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    (*it)->keepOnlySpatialDiscretization(tof,globalCounter,its);
++  return globalCounter;
++}
++
++int MEDFileAnyTypeField1TSWithoutSDA::keepOnlyGaussDiscretization(std::size_t idOfDisc, std::vector< std::pair<int,int> >& its)
++{
++  int globalCounter(0);
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    (*it)->keepOnlyGaussDiscretization(idOfDisc,globalCounter,its);
++  return globalCounter;
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::updateData(int newLgth, const std::vector< std::pair<int,int> >& oldStartStops)
++{
++  if(_nb_of_tuples_to_be_allocated>=0)
++    {
++      _nb_of_tuples_to_be_allocated=newLgth;
++      const DataArray *oldArr(getUndergroundDataArray());
++      if(oldArr)
++        {
++          MCAuto<DataArray> newArr(createNewEmptyDataArrayInstance());
++          newArr->setInfoAndChangeNbOfCompo(oldArr->getInfoOnComponents());
++          setArray(newArr);
++          _nb_of_tuples_to_be_allocated=newLgth;//force the _nb_of_tuples_to_be_allocated because setArray has been used specialy
++        }
++      return ;
++    }
++  if(_nb_of_tuples_to_be_allocated==-1)
++    return ;
++  if(_nb_of_tuples_to_be_allocated==-2 || _nb_of_tuples_to_be_allocated==-3)
++    {
++      const DataArray *oldArr(getUndergroundDataArray());
++      if(!oldArr || !oldArr->isAllocated())
++        throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::updateData : internal error 1 !");
++      MCAuto<DataArray> newArr(createNewEmptyDataArrayInstance());
++      newArr->alloc(newLgth,getNumberOfComponents());
++      if(oldArr)
++        newArr->copyStringInfoFrom(*oldArr);
++      int pos=0;
++      for(std::vector< std::pair<int,int> >::const_iterator it=oldStartStops.begin();it!=oldStartStops.end();it++)
++        {
++          if((*it).second<(*it).first)
++            throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::updateData : the range in the leaves was invalid !");
++          newArr->setContigPartOfSelectedValuesSlice(pos,oldArr,(*it).first,(*it).second,1);
++          pos+=(*it).second-(*it).first;
++        }
++      setArray(newArr);
++      return ;
++    }
++  throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::updateData : internal error 2 !");
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::writeLL(med_idt fid, const MEDFileWritable& opts, const MEDFileFieldNameScope& nasc) const
++{
++  if(_field_per_mesh.empty())
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::writeLL : empty field !");
++  if(_field_per_mesh.size()>1)
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::writeLL : In MED3.0 mode in writing mode only ONE underlying mesh supported !");
++  _field_per_mesh[0]->copyOptionsFrom(opts);
++  _field_per_mesh[0]->writeLL(fid,nasc);
++}
++
++/*!
++ * MED file does not support ' ' at the end of the field name. This method corrects the possibly invalid input \a nonCorrectFieldName to a correct one by right stripping input.
++ */
++std::string MEDFileAnyTypeField1TSWithoutSDA::FieldNameToMEDFileConvention(const std::string& nonCorrectFieldName)
++{
++  std::string::size_type pos0(nonCorrectFieldName.find_last_not_of(' '));
++  if(pos0==std::string::npos)
++    return nonCorrectFieldName;
++  if(pos0+1==nonCorrectFieldName.length())
++    return nonCorrectFieldName;
++  return nonCorrectFieldName.substr(0,pos0+1);
++}
++
++/*!
++ * This methods returns true is the allocation has been needed leading to a modification of state in \a this->_nb_of_tuples_to_be_allocated.
++ * If false is returned the memory allocation is not required.
++ */
++bool MEDFileAnyTypeField1TSWithoutSDA::allocIfNecessaryTheArrayToReceiveDataFromFile()
++{
++  if(_nb_of_tuples_to_be_allocated>=0)
++    {
++      getOrCreateAndGetArray()->alloc(_nb_of_tuples_to_be_allocated,getNumberOfComponents());
++      _nb_of_tuples_to_be_allocated=-2;
++      return true;
++    }
++  if(_nb_of_tuples_to_be_allocated==-2 || _nb_of_tuples_to_be_allocated==-3)
++    return false;
++  if(_nb_of_tuples_to_be_allocated==-1)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::allocIfNecessaryTheArrayToReceiveDataFromFile : trying to read from a file an empty instance ! Need to prepare the structure before !");
++  if(_nb_of_tuples_to_be_allocated<-3)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::allocIfNecessaryTheArrayToReceiveDataFromFile : internal error !");
++  throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::allocIfNecessaryTheArrayToReceiveDataFromFile : internal error !");
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::loadOnlyStructureOfDataRecursively(med_idt fid, const MEDFileFieldNameScope& nasc, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++{
++  med_int numdt,numit;
++  med_float dt;
++  med_int meshnumdt,meshnumit;
++  MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,nasc.getName().c_str(),_csit,&numdt,&numit,&_dt));
++  {
++    med_bool localMesh;
++    med_int nmesh;
++    INTERP_KERNEL::AutoPtr<char> meshName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++    MEDFILESAFECALLERRD0(MEDfield23ComputingStepMeshInfo,(fid,nasc.getName().c_str(),_csit,&numdt,&numit,&dt,&nmesh,meshName,&localMesh,&meshnumdt,&meshnumit)); // to check with Adrien for legacy MED files
++  }
++  //MEDFILESAFECALLERRD0(MEDfieldComputingStepMeshInfo,(fid,nasc.getName().c_str(),_csit,&numdt,&numit,&_dt,&meshnumdt,&meshnumit));
++  if(_iteration!=numdt || _order!=numit)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::loadBigArraysRecursively : unexpected exception internal error !");
++  _field_per_mesh.resize(1);
++  //
++  MEDFileMesh *mm(0);
++  if(ms)
++    {
++      mm=ms->getMeshWithName(getMeshName());
++    }
++  //
++  _field_per_mesh[0]=MEDFileFieldPerMesh::NewOnRead(fid,this,0,meshnumdt,meshnumit,nasc,mm,entities);
++  _nb_of_tuples_to_be_allocated=0;
++  _field_per_mesh[0]->loadOnlyStructureOfDataRecursively(fid,_nb_of_tuples_to_be_allocated,nasc);
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc)
++{
++  allocIfNecessaryTheArrayToReceiveDataFromFile();
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    (*it)->loadBigArraysRecursively(fid,nasc);
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::loadBigArraysRecursivelyIfNecessary(med_idt fid, const MEDFileFieldNameScope& nasc)
++{
++  if(allocIfNecessaryTheArrayToReceiveDataFromFile())
++    for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++      (*it)->loadBigArraysRecursively(fid,nasc);
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::loadStructureAndBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++{
++  loadOnlyStructureOfDataRecursively(fid,nasc,ms,entities);
++  loadBigArraysRecursively(fid,nasc);
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::unloadArrays()
++{
++  DataArray *thisArr(getUndergroundDataArray());
++  if(thisArr && thisArr->isAllocated())
++    {
++      _nb_of_tuples_to_be_allocated=thisArr->getNumberOfTuples();
++      thisArr->desallocate();
++    }
++}
++
++std::size_t MEDFileAnyTypeField1TSWithoutSDA::getHeapMemorySizeWithoutChildren() const
++{
++  return _mesh_name.capacity()+_dt_unit.capacity()+_field_per_mesh.capacity()*sizeof(MCAuto< MEDFileFieldPerMesh >);
++}
++
++std::vector<const BigMemoryObject *> MEDFileAnyTypeField1TSWithoutSDA::getDirectChildrenWithNull() const
++{
++  std::vector<const BigMemoryObject *> ret;
++  if(getUndergroundDataArray())
++    ret.push_back(getUndergroundDataArray());
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    ret.push_back((const MEDFileFieldPerMesh *)*it);
++  return ret;
++}
++
++/*!
++ * Adds a MEDCouplingFieldDouble to \a this. The underlying mesh of the given field is
++ * checked if its elements are sorted suitable for writing to MED file ("STB" stands for
++ * "Sort By Type"), if not, an exception is thrown. 
++ *  \param [in] field - the field to add to \a this. The array of field \a field is ignored
++ *  \param [in] arr - the array of values.
++ *  \param [in,out] glob - the global data where profiles and localization present in
++ *          \a field, if any, are added.
++ *  \throw If the name of \a field is empty.
++ *  \throw If the data array of \a field is not set.
++ *  \throw If \a this->_arr is already allocated but has different number of components
++ *         than \a field.
++ *  \throw If the underlying mesh of \a field has no name.
++ *  \throw If elements in the mesh are not in the order suitable for writing to the MED file.
++ */
++void MEDFileAnyTypeField1TSWithoutSDA::setFieldNoProfileSBT(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
++{
++  const MEDCouplingMesh *mesh(field->getMesh());
++  //
++  TypeOfField type(field->getTypeOfField());
++  std::vector<DataArrayInt *> dummy;
++  if(mesh)
++    setMeshName(mesh->getName());
++  int start(copyTinyInfoFrom(th,field,arr));
++  int pos(addNewEntryIfNecessary(mesh));
++  if(type!=ON_NODES)
++    {
++      std::vector<int> code=MEDFileField1TSWithoutSDA::CheckSBTMesh(mesh);
++      _field_per_mesh[pos]->assignFieldNoProfileNoRenum(start,code,field,arr,glob,nasc);
++    }
++  else
++    _field_per_mesh[pos]->assignNodeFieldNoProfile(start,field,arr,glob);
++}
++
++/*!
++ * Adds a MEDCouplingFieldDouble to \a this. Specified entities of a given dimension
++ * of a given mesh are used as the support of the given field (a real support is not used). 
++ * Elements of the given mesh must be sorted suitable for writing to MED file. 
++ * Order of underlying mesh entities of the given field specified by \a profile parameter
++ * is not prescribed; this method permutes field values to have them sorted by element
++ * type as required for writing to MED file. A new profile is added only if no equal
++ * profile is missing. 
++ *  \param [in] field - the field to add to \a this. The field double values are ignored.
++ *  \param [in] arrOfVals - the values of the field \a field used.
++ *  \param [in] mesh - the supporting mesh of \a field.
++ *  \param [in] meshDimRelToMax - a relative dimension of mesh entities \a field lies on.
++ *  \param [in] profile - ids of mesh entities on which corresponding field values lie.
++ *  \param [in,out] glob - the global data where profiles and localization present in
++ *          \a field, if any, are added.
++ *  \param [in] nasc - the name scope used to assign names. Depends on the caller on the top call stack
++ *  \param [in] smartPflKiller - specifies if this method tries at most to avoid profiles
++ *  \throw If either \a field or \a mesh or \a profile has an empty name.
++ *  \throw If there are no mesh entities of \a meshDimRelToMax dimension in \a mesh.
++ *  \throw If the data array of \a field is not set.
++ *  \throw If \a this->_arr is already allocated but has different number of components
++ *         than \a field.
++ *  \throw If elements in \a mesh are not in the order suitable for writing to the MED file.
++ *  \sa setFieldNoProfileSBT()
++ */
++void MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arrOfVals, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc, bool smartPflKiller)
++{
++  if(!field)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile : input field is null !");
++  if(!arrOfVals || !arrOfVals->isAllocated())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile : input array is null or not allocated !");
++  TypeOfField type=field->getTypeOfField();
++  std::vector<DataArrayInt *> idsInPflPerType;
++  std::vector<DataArrayInt *> idsPerType;
++  std::vector<int> code,code2;
++  MCAuto<MEDCouplingMesh> m(mesh->getMeshAtLevel(meshDimRelToMax));
++  if(type!=ON_NODES)
++    {
++      m->splitProfilePerType(profile,code,idsInPflPerType,idsPerType,smartPflKiller);
++      std::vector< MCAuto<DataArrayInt> > idsInPflPerType2(idsInPflPerType.size()); std::copy(idsInPflPerType.begin(),idsInPflPerType.end(),idsInPflPerType2.begin());
++      std::vector< MCAuto<DataArrayInt> > idsPerType2(idsPerType.size()); std::copy(idsPerType.begin(),idsPerType.end(),idsPerType2.begin()); 
++      std::vector<const DataArrayInt *> idsPerType3(idsPerType.size()); std::copy(idsPerType.begin(),idsPerType.end(),idsPerType3.begin());
++      // start of check
++      MCAuto<MEDCouplingFieldTemplate> field2=field->clone(false);
++      int nbOfTuplesExp=field2->getNumberOfTuplesExpectedRegardingCode(code,idsPerType3);
++      if(nbOfTuplesExp!=arrOfVals->getNumberOfTuples())
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile : The array is expected to have " << nbOfTuplesExp << " tuples ! It has " << arrOfVals->getNumberOfTuples() << " !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      // end of check
++      int start(copyTinyInfoFrom(th,field,arrOfVals));
++      code2=m->getDistributionOfTypes();
++      //
++      int pos=addNewEntryIfNecessary(m);
++      _field_per_mesh[pos]->assignFieldProfile(start,profile,code,code2,idsInPflPerType,idsPerType,field,arrOfVals,m,glob,nasc);
++    }
++  else
++    {
++      if(!profile || !profile->isAllocated() || profile->getNumberOfComponents()!=1)
++        throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile : input profile is null, not allocated or with number of components != 1 !");
++      std::vector<int> v(3); v[0]=-1; v[1]=profile->getNumberOfTuples(); v[2]=0;
++      std::vector<const DataArrayInt *> idsPerType3(1); idsPerType3[0]=profile;
++      int nbOfTuplesExp=field->getNumberOfTuplesExpectedRegardingCode(v,idsPerType3);
++      if(nbOfTuplesExp!=arrOfVals->getNumberOfTuples())
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile : For node field, the array is expected to have " << nbOfTuplesExp << " tuples ! It has " << arrOfVals->getNumberOfTuples() << " !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      int start(copyTinyInfoFrom(th,field,arrOfVals));
++      int pos(addNewEntryIfNecessary(m));
++      _field_per_mesh[pos]->assignNodeFieldProfile(start,profile,field,arrOfVals,glob,nasc);
++    }
++}
++
++/*!
++ * \param [in] newNbOfTuples - The new nb of tuples to be allocated.
++ */
++void MEDFileAnyTypeField1TSWithoutSDA::allocNotFromFile(int newNbOfTuples)
++{
++  if(_nb_of_tuples_to_be_allocated>=0)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::allocNotFromFile : the object is expected to be appended to a data coming from a file but not loaded ! Load before appending data !");
++  DataArray *arr(getOrCreateAndGetArray());
++  arr->alloc(newNbOfTuples,arr->getNumberOfComponents());
++  _nb_of_tuples_to_be_allocated=-3;
++}
++
++/*!
++ * Copies tiny info and allocates \a this->_arr instance of DataArrayDouble to
++ * append data of a given MEDCouplingFieldDouble. So that the size of \a this->_arr becomes
++ * larger by the size of \a field. Returns an id of the first not filled
++ * tuple of \a this->_arr.
++ *  \param [in] field - the field to copy the info on components and the name from.
++ *  \return int - the id of first not initialized tuple of \a this->_arr.
++ *  \throw If the name of \a field is empty.
++ *  \throw If the data array of \a field is not set.
++ *  \throw If \a this->_arr is already allocated but has different number of components
++ *         than \a field.
++ */
++int MEDFileAnyTypeField1TSWithoutSDA::copyTinyInfoFrom(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr)
++{
++  if(!field)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::copyTinyInfoFrom : input field is NULL !");
++  std::string name(field->getName());
++  setName(name.c_str());
++  if(field->getMesh())
++    setMeshName(field->getMesh()->getName());
++  setDtUnit(th->getTimeUnit());
++  if(name.empty())
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::copyTinyInfoFrom : unsupported fields with no name in MED file !");
++  if(!arr)
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::copyTinyInfoFrom : no array set !");
++  if(!arr->isAllocated())
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::copyTinyInfoFrom : array is not allocated !");
++  _dt=th->getTime(_iteration,_order);
++  getOrCreateAndGetArray()->setInfoAndChangeNbOfCompo(arr->getInfoOnComponents());
++  if(!getOrCreateAndGetArray()->isAllocated())
++    {
++      allocNotFromFile(arr->getNumberOfTuples());
++      return 0;
++    }
++  else
++    {
++      int oldNbOfTuples=getOrCreateAndGetArray()->getNumberOfTuples();
++      int newNbOfTuples=oldNbOfTuples+arr->getNumberOfTuples();
++      getOrCreateAndGetArray()->reAlloc(newNbOfTuples);
++      _nb_of_tuples_to_be_allocated=-3;
++      return oldNbOfTuples;
++    }
++}
++
++/*!
++ * Returns number of components in \a this field
++ *  \return int - the number of components.
++ */
++int MEDFileAnyTypeField1TSWithoutSDA::getNumberOfComponents() const
++{
++  return getOrCreateAndGetArray()->getNumberOfComponents();
++}
++
++/*!
++ * Change info on components in \a this.
++ * \throw If size of \a infos is not equal to the number of components already in \a this.
++ */
++void MEDFileAnyTypeField1TSWithoutSDA::setInfo(const std::vector<std::string>& infos)
++{
++  DataArray *arr=getOrCreateAndGetArray();
++  arr->setInfoOnComponents(infos);//will throw an exception if number of components mismatches
++}
++
++/*!
++ * Returns info on components of \a this field.
++ *  \return const std::vector<std::string>& - a sequence of strings each being an
++ *          information on _i_-th component.
++ */
++const std::vector<std::string>& MEDFileAnyTypeField1TSWithoutSDA::getInfo() const
++{
++  const DataArray *arr=getOrCreateAndGetArray();
++  return arr->getInfoOnComponents();
++}
++
++/*!
++ * Returns a mutable info on components of \a this field.
++ *  \return std::vector<std::string>& - a sequence of strings each being an
++ *          information on _i_-th component.
++ */
++std::vector<std::string>& MEDFileAnyTypeField1TSWithoutSDA::getInfo()
++{
++  DataArray *arr=getOrCreateAndGetArray();
++  return arr->getInfoOnComponents();
++}
++
++bool MEDFileAnyTypeField1TSWithoutSDA::presenceOfMultiDiscPerGeoType() const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    {
++      const MEDFileFieldPerMesh *fpm(*it);
++      if(!fpm)
++        continue;
++      if(fpm->presenceOfMultiDiscPerGeoType())
++        return true;
++    }
++  return false;
++}
++
++bool MEDFileAnyTypeField1TSWithoutSDA::presenceOfStructureElements() const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    if((*it).isNotNull())
++      if((*it)->presenceOfStructureElements())
++        return true;
++  return false;
++}
++
++bool MEDFileAnyTypeField1TSWithoutSDA::onlyStructureElements() const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    if((*it).isNotNull())
++      if(!(*it)->onlyStructureElements())
++        return false;
++  return true;
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::killStructureElements()
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    if((*it).isNotNull())
++      (*it)->killStructureElements();
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::keepOnlyStructureElements()
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    if((*it).isNotNull())
++      (*it)->keepOnlyStructureElements();
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::keepOnlyOnSE(const std::string& seName)
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    if((*it).isNotNull())
++      (*it)->keepOnlyOnSE(seName);
++}
++
++void MEDFileAnyTypeField1TSWithoutSDA::getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
++    if((*it).isNotNull())
++      (*it)->getMeshSENames(ps);
++}
++
++MEDCouplingFieldDouble *MEDFileAnyTypeField1TSWithoutSDA::fieldOnMesh(const MEDFileFieldGlobsReal *glob, const MEDFileMesh *mesh, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
++{
++  static const char MSG0[]="MEDFileAnyTypeField1TSWithoutSDA::fieldOnMesh : the field is too complex to be able to be extracted with  \"field\" method ! Call getFieldOnMeshAtLevel method instead to deal with complexity !";
++  if(_field_per_mesh.empty())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::fieldOnMesh : the field is empty ! Nothing to extract !");
++  if(_field_per_mesh.size()>1)
++    throw INTERP_KERNEL::Exception(MSG0);
++  if(_field_per_mesh[0].isNull())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::fieldOnMesh : the field is inconsistent !");
++  const MEDFileFieldPerMesh *pm(_field_per_mesh[0]);
++  std::set<TypeOfField> types;
++  pm->fillTypesOfFieldAvailable(types);
++  if(types.size()!=1)
++    throw INTERP_KERNEL::Exception(MSG0);
++  TypeOfField type(*types.begin());
++  int meshDimRelToMax(0);
++  if(type==ON_NODES)
++    meshDimRelToMax=0;
++  else
++    {
++      int myDim(std::numeric_limits<int>::max());
++      bool isUnique(pm->isUniqueLevel(myDim));
++      if(!isUnique)
++        throw INTERP_KERNEL::Exception(MSG0);
++      meshDimRelToMax=myDim-mesh->getMeshDimension();
++      if(meshDimRelToMax>0)
++        throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::fieldOnMesh : the mesh attached to field is not compatible with the field !");
++    }
++  return MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(type,meshDimRelToMax,0/*renumPol*/,glob,mesh,arrOut,nasc);
++}
++
++/*!
++ * Returns a new MEDCouplingFieldDouble of given type lying on a given support.
++ *  \param [in] type - a spatial discretization of the new field.
++ *  \param [in] meshDimRelToMax - a relative dimension of the supporting mesh entities.
++ *  \param [in] mName - a name of the supporting mesh.
++ *  \param [in] renumPol - specifies how to permute values of the result field according to
++ *          the optional numbers of cells and nodes, if any. The valid values are
++ *          - 0 - do not permute.
++ *          - 1 - permute cells.
++ *          - 2 - permute nodes.
++ *          - 3 - permute cells and nodes.
++ *
++ *  \param [in] glob - the global data storing profiles and localization.
++ *  \return MEDCouplingFieldDouble * - a new instance of MEDCouplingFieldDouble. The
++ *          caller is to delete this field using decrRef() as it is no more needed. 
++ *  \throw If the MED file is not readable.
++ *  \throw If there is no mesh named \a mName in the MED file.
++ *  \throw If there are no mesh entities of \a meshDimRelToMax dimension in the mesh.
++ *  \throw If no field of \a this is lying on the mesh \a mName.
++ *  \throw If no field values of the given \a type or given \a meshDimRelToMax are available.
++ */
++MEDCouplingFieldDouble *MEDFileAnyTypeField1TSWithoutSDA::getFieldAtLevel(TypeOfField type, int meshDimRelToMax, const std::string& mName, int renumPol, const MEDFileFieldGlobsReal *glob, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
++{
++  MCAuto<MEDFileMesh> mm;
++  if(mName.empty())
++    mm=MEDFileMesh::New(glob->getFileName(),getMeshName().c_str(),getMeshIteration(),getMeshOrder());
++  else
++    mm=MEDFileMesh::New(glob->getFileName(),mName,getMeshIteration(),getMeshOrder());
++  return MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(type,meshDimRelToMax,renumPol,glob,mm,arrOut,nasc);
++}
++
++/*!
++ * Returns a new MEDCouplingFieldDouble of given type lying on a given support.
++ *  \param [in] type - a spatial discretization of the new field.
++ *  \param [in] meshDimRelToMax - a relative dimension of the supporting mesh entities.
++ *  \param [in] renumPol - specifies how to permute values of the result field according to
++ *          the optional numbers of cells and nodes, if any. The valid values are
++ *          - 0 - do not permute.
++ *          - 1 - permute cells.
++ *          - 2 - permute nodes.
++ *          - 3 - permute cells and nodes.
++ *
++ *  \param [in] glob - the global data storing profiles and localization.
++ *  \param [in] mesh - the supporting mesh.
++ *  \return MEDCouplingFieldDouble * - a new instance of MEDCouplingFieldDouble. The
++ *          caller is to delete this field using decrRef() as it is no more needed. 
++ *  \throw If the MED file is not readable.
++ *  \throw If no field of \a this is lying on \a mesh.
++ *  \throw If there are no mesh entities of \a meshDimRelToMax dimension in the mesh.
++ *  \throw If no field values of the given \a type or given \a meshDimRelToMax are available.
++ */
++MEDCouplingFieldDouble *MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol, const MEDFileFieldGlobsReal *glob, const MEDFileMesh *mesh, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
++{
++  MCAuto<MEDCouplingMesh> m(mesh->getMeshAtLevel(meshDimRelToMax,false));
++  const DataArrayInt *d(mesh->getNumberFieldAtLevel(meshDimRelToMax)),*e(mesh->getNumberFieldAtLevel(1));
++  if(meshDimRelToMax==1)
++    (static_cast<MEDCouplingUMesh *>((MEDCouplingMesh *)m))->setMeshDimension(0);
++  return MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(type,renumPol,glob,m,d,e,arrOut,nasc);
++}
++
++/*!
++ * Returns a new MEDCouplingFieldDouble of a given type lying on the top level cells of a
++ * given mesh. 
++ *  \param [in] type - a spatial discretization of the new field.
++ *  \param [in] mName - a name of the supporting mesh.
++ *  \param [in] renumPol - specifies how to permute values of the result field according to
++ *          the optional numbers of cells and nodes, if any. The valid values are
++ *          - 0 - do not permute.
++ *          - 1 - permute cells.
++ *          - 2 - permute nodes.
++ *          - 3 - permute cells and nodes.
++ *
++ *  \param [in] glob - the global data storing profiles and localization.
++ *  \return MEDCouplingFieldDouble * - a new instance of MEDCouplingFieldDouble. The
++ *          caller is to delete this field using decrRef() as it is no more needed. 
++ *  \throw If the MED file is not readable.
++ *  \throw If there is no mesh named \a mName in the MED file.
++ *  \throw If there are no mesh entities in the mesh.
++ *  \throw If no field values of the given \a type are available.
++ */
++MEDCouplingFieldDouble *MEDFileAnyTypeField1TSWithoutSDA::getFieldAtTopLevel(TypeOfField type, const std::string& mName, int renumPol, const MEDFileFieldGlobsReal *glob, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
++{
++  MCAuto<MEDFileMesh> mm;
++  if(mName.empty())
++    mm=MEDFileMesh::New(glob->getFileName(),getMeshName().c_str(),getMeshIteration(),getMeshOrder());
++  else
++    mm=MEDFileMesh::New(glob->getFileName(),mName,getMeshIteration(),getMeshOrder());
++  int absDim=getDimension();
++  int meshDimRelToMax=absDim-mm->getMeshDimension();
++  return MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(type,meshDimRelToMax,renumPol,glob,mm,arrOut,nasc);
++}
++
++/*!
++ * Returns a new MEDCouplingFieldDouble of given type lying on a given support.
++ *  \param [in] type - a spatial discretization of the new field.
++ *  \param [in] renumPol - specifies how to permute values of the result field according to
++ *          the optional numbers of cells and nodes, if any. The valid values are
++ *          - 0 - do not permute.
++ *          - 1 - permute cells.
++ *          - 2 - permute nodes.
++ *          - 3 - permute cells and nodes.
++ *
++ *  \param [in] glob - the global data storing profiles and localization.
++ *  \param [in] mesh - the supporting mesh.
++ *  \param [in] cellRenum - the cell numbers array used for permutation of the result
++ *         field according to \a renumPol.
++ *  \param [in] nodeRenum - the node numbers array used for permutation of the result
++ *         field according to \a renumPol.
++ *  \return MEDCouplingFieldDouble * - a new instance of MEDCouplingFieldDouble. The
++ *          caller is to delete this field using decrRef() as it is no more needed. 
++ *  \throw If there are no mesh entities of \a meshDimRelToMax dimension in the mesh.
++ *  \throw If no field of \a this is lying on \a mesh.
++ *  \throw If no field values of the given \a type or given \a meshDimRelToMax are available.
++ */
++MEDCouplingFieldDouble *MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(TypeOfField type, int renumPol, const MEDFileFieldGlobsReal *glob, const MEDCouplingMesh *mesh, const DataArrayInt *cellRenum, const DataArrayInt *nodeRenum, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
++{
++  static const char msg1[]="MEDFileField1TSWithoutSDA::getFieldOnMeshAtLevel : request for a renumbered field following mesh numbering whereas it is a profile field !";
++  bool isPfl=false;
++  MCAuto<MEDCouplingFieldDouble> ret=_field_per_mesh[0]->getFieldOnMeshAtLevel(type,glob,mesh,isPfl,arrOut,nasc);
++  switch(renumPol)
++  {
++    case 0:
++      {
++        //no need to test _field_per_mesh.empty() because geMeshName has already done it
++        return ret.retn();
++      }
++    case 3:
++    case 1:
++      {
++        if(isPfl)
++          throw INTERP_KERNEL::Exception(msg1);
++        //no need to test _field_per_mesh.empty() because geMeshName has already done it
++        if(cellRenum)
++          {
++            if((int)cellRenum->getNbOfElems()!=mesh->getNumberOfCells())
++              {
++                std::ostringstream oss; oss << "MEDFileField1TSWithoutSDA::getFieldOnMeshAtLevel : Request of simple renumbering but it seems that underlying mesh \"" << mesh->getName() << "\" of requested field ";
++                oss << "\"" << getName() << "\" has partial renumbering (some geotype has no renumber) !";
++                throw INTERP_KERNEL::Exception(oss.str());
++              }
++            MEDCouplingFieldDiscretization *disc=ret->getDiscretization();
++            if(!disc) throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel : internal error, no discretization on field !");
++            std::vector<DataArray *> arrOut2(1,arrOut);
++            // 2 following lines replace ret->renumberCells(cellRenum->getConstPointer()) if not DataArrayDouble
++            disc->renumberArraysForCell(ret->getMesh(),arrOut2,cellRenum->getConstPointer(),true);
++            (const_cast<MEDCouplingMesh*>(ret->getMesh()))->renumberCells(cellRenum->getConstPointer(),true);
++          }
++        if(renumPol==1)
++          return ret.retn();
++      }
++    case 2:
++      {
++        //no need to test _field_per_mesh.empty() because geMeshName has already done it
++        if(isPfl)
++          throw INTERP_KERNEL::Exception(msg1);
++        if(nodeRenum)
++          {
++            if((int)nodeRenum->getNbOfElems()!=mesh->getNumberOfNodes())
++              {
++                std::ostringstream oss; oss << "MEDFileField1TSWithoutSDA::getFieldOnMeshAtLevel : Request of simple renumbering but it seems that underlying mesh \"" << mesh->getName() << "\" of requested field ";
++                oss << "\"" << nasc.getName() << "\" not defined on all nodes !";
++                throw INTERP_KERNEL::Exception(oss.str());
++              }
++            MCAuto<DataArrayInt> nodeRenumSafe=nodeRenum->checkAndPreparePermutation();
++            if(!dynamic_cast<DataArrayDouble *>((DataArray *)arrOut))
++              throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getFieldOnMeshAtLevel : node renumbering not implemented for not double DataArrays !");
++            ret->renumberNodes(nodeRenumSafe->getConstPointer());
++          }
++        return ret.retn();
++      }
++    default:
++      throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getFieldOnMeshAtLevel : unsupported renum policy ! Dealing with policy 0 1 2 and 3 !");
++  }
++}
++
++/*!
++ * Returns values and a profile of the field of a given type lying on a given support.
++ *  \param [in] type - a spatial discretization of the field.
++ *  \param [in] meshDimRelToMax - a relative dimension of the supporting mesh entities.
++ *  \param [in] mesh - the supporting mesh.
++ *  \param [out] pfl - a new instance of DataArrayInt holding ids of mesh entities the
++ *          field of interest lies on. If the field lies on all entities of the given
++ *          dimension, all ids in \a pfl are zero. The caller is to delete this array
++ *          using decrRef() as it is no more needed.  
++ *  \param [in] glob - the global data storing profiles and localization.
++ *  \return DataArrayDouble * - a new instance of DataArrayDouble holding values of the
++ *          field. The caller is to delete this array using decrRef() as it is no more needed.
++ *  \throw If there are no mesh entities of \a meshDimRelToMax dimension in \a mesh.
++ *  \throw If no field of \a this is lying on \a mesh.
++ *  \throw If no field values of the given \a type are available.
++ */
++DataArray *MEDFileAnyTypeField1TSWithoutSDA::getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, DataArrayInt *&pfl, const MEDFileFieldGlobsReal *glob, const MEDFileFieldNameScope& nasc) const
++{
++  MCAuto<MEDCouplingMesh> m(mesh->getMeshAtLevel(meshDimRelToMax));
++  MCAuto<DataArray> ret=_field_per_mesh[0]->getFieldOnMeshAtLevelWithPfl(type,m,pfl,glob,nasc);
++  ret->setName(nasc.getName().c_str());
++  return ret.retn();
++}
++
++//= MEDFileField1TSWithoutSDA
++
++/*!
++ * Throws if a given value is not a valid (non-extended) relative dimension.
++ *  \param [in] meshDimRelToMax - the relative dimension value.
++ *  \throw If \a meshDimRelToMax > 0.
++ */
++void MEDFileField1TSWithoutSDA::CheckMeshDimRel(int meshDimRelToMax)
++{
++  if(meshDimRelToMax>0)
++    throw INTERP_KERNEL::Exception("CheckMeshDimRel : This is a meshDimRel not a meshDimRelExt ! So value should be <=0 !");
++}
++
++/*!
++ * Checks if elements of a given mesh are in the order suitable for writing 
++ * to the MED file. If this is not so, an exception is thrown. In a case of success, returns a
++ * vector describing types of elements and their number.
++ *  \param [in] mesh - the mesh to check.
++ *  \return std::vector<int> - a vector holding for each element type (1) item of
++ *          INTERP_KERNEL::NormalizedCellType, (2) number of elements, (3) -1. 
++ *          These values are in full-interlace mode.
++ *  \throw If elements in \a mesh are not in the order suitable for writing to the MED file.
++ */
++std::vector<int> MEDFileField1TSWithoutSDA::CheckSBTMesh(const MEDCouplingMesh *mesh)
++{
++  if(!mesh)
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::CheckSBTMesh : input mesh is NULL !");
++  std::set<INTERP_KERNEL::NormalizedCellType> geoTypes=mesh->getAllGeoTypes();
++  int nbOfTypes=geoTypes.size();
++  std::vector<int> code(3*nbOfTypes);
++  MCAuto<DataArrayInt> arr1=DataArrayInt::New();
++  arr1->alloc(nbOfTypes,1);
++  int *arrPtr=arr1->getPointer();
++  std::set<INTERP_KERNEL::NormalizedCellType>::const_iterator it=geoTypes.begin();
++  for(int i=0;i<nbOfTypes;i++,it++)
++    arrPtr[i]=std::distance(typmai2,std::find(typmai2,typmai2+MED_N_CELL_FIXED_GEO,*it));
++  MCAuto<DataArrayInt> arr2=arr1->checkAndPreparePermutation();
++  const int *arrPtr2=arr2->getConstPointer();
++  int i=0;
++  for(it=geoTypes.begin();it!=geoTypes.end();it++,i++)
++    {
++      int pos=arrPtr2[i];
++      int nbCells=mesh->getNumberOfCellsWithType(*it);
++      code[3*pos]=(int)(*it);
++      code[3*pos+1]=nbCells;
++      code[3*pos+2]=-1;//no profiles
++    }
++  std::vector<const DataArrayInt *> idsPerType;//no profiles
++  DataArrayInt *da=mesh->checkTypeConsistencyAndContig(code,idsPerType);
++  if(da)
++    {
++      da->decrRef();
++      throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::CheckSBTMesh : underlying mesh is not sorted by type as MED file expects !");
++    }
++  return code;
++}
++
++MEDFileField1TSWithoutSDA *MEDFileField1TSWithoutSDA::New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos)
++{
++  return new MEDFileField1TSWithoutSDA(fieldName,meshName,csit,iteration,order,infos);
++}
++
++/*!
++ * Returns all attributes and values of parts of \a this field lying on a given mesh.
++ * Each part differs from other ones by a type of supporting mesh entity. The _i_-th
++ * item of every of returned sequences refers to the _i_-th part of \a this field.
++ * Thus all sequences returned by this method are of the same length equal to number
++ * of different types of supporting entities.<br>
++ * A field part can include sub-parts with several different spatial discretizations,
++ * \ref MEDCoupling::ON_CELLS "ON_CELLS" and \ref MEDCoupling::ON_GAUSS_PT "ON_GAUSS_PT"
++ * for example. Hence, some of the returned sequences contains nested sequences, and an item
++ * of a nested sequence corresponds to a type of spatial discretization.<br>
++ * This method allows for iteration over MEDFile DataStructure with a reduced overhead.
++ * The overhead is due to selecting values into new instances of DataArrayDouble.
++ *  \param [in] mname - a name of a mesh of interest. It can be \c NULL, which is valid
++ *          for the case with only one underlying mesh. (Actually, the number of meshes is
++ *          not checked if \a mname == \c NULL).
++ *  \param [in,out] types - a sequence of types of underlying mesh entities. A type per
++ *          a field part is returned. 
++ *  \param [in,out] typesF - a sequence of sequences of types of spatial discretizations.
++ *          A field part can include sub-parts with several different spatial discretizations,
++ *          \ref MEDCoupling::ON_CELLS "ON_CELLS" and 
++ *          \ref MEDCoupling::ON_GAUSS_PT "ON_GAUSS_PT" for example.
++ *          This sequence is of the same length as \a types. 
++ *  \param [in,out] pfls - a sequence returning a profile name per each type of spatial
++ *          discretization. A profile name can be empty.
++ *          Length of this and of nested sequences is the same as that of \a typesF.
++ *  \param [in,out] locs - a sequence returning a localization name per each type of spatial
++ *          discretization. A localization name can be empty.
++ *          Length of this and of nested sequences is the same as that of \a typesF.
++ *  \return std::vector< std::vector<DataArrayDouble *> > - a sequence holding arrays of values
++ *          per each type of spatial discretization within one mesh entity type.
++ *          The caller is to delete each DataArrayDouble using decrRef() as it is no more needed.
++ *          Length of this and of nested sequences is the same as that of \a typesF.
++ *  \throw If no field is lying on \a mname.
++ */
++std::vector< std::vector<DataArrayDouble *> > MEDFileField1TSWithoutSDA::getFieldSplitedByType2(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
++{
++  if(mname.empty())
++    if(_field_per_mesh.empty())
++      throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getFieldSplitedByType : This is empty !");
++  std::vector< std::vector< std::pair<int,int> > > ret0=_field_per_mesh[0]->getFieldSplitedByType(types,typesF,pfls,locs);
++  int nbOfRet=ret0.size();
++  std::vector< std::vector<DataArrayDouble *> > ret(nbOfRet);
++  for(int i=0;i<nbOfRet;i++)
++    {
++      const std::vector< std::pair<int,int> >& p=ret0[i];
++      int nbOfRet1=p.size();
++      ret[i].resize(nbOfRet1);
++      for(int j=0;j<nbOfRet1;j++)
++        {
++          DataArrayDouble *tmp=_arr->selectByTupleIdSafeSlice(p[j].first,p[j].second,1);
++          ret[i][j]=tmp;
++        }
++    }
++  return ret;
++}
++
++const char *MEDFileField1TSWithoutSDA::getTypeStr() const
++{
++  return TYPE_STR;
++}
++
++MEDFileIntField1TSWithoutSDA *MEDFileField1TSWithoutSDA::convertToInt() const
++{
++  MCAuto<MEDFileIntField1TSWithoutSDA> ret(new MEDFileIntField1TSWithoutSDA);
++  ret->MEDFileAnyTypeField1TSWithoutSDA::operator =(*this);
++  ret->deepCpyLeavesFrom(*this);
++  const DataArrayDouble *arr(_arr);
++  if(arr)
++    {
++      MCAuto<DataArrayInt> arr2(arr->convertToIntArr());
++      ret->setArray(arr2);
++    }
++  return ret.retn();
++}
++
++/*!
++ * Returns a pointer to the underground DataArrayDouble instance and a
++ * sequence describing parameters of a support of each part of \a this field. The
++ * caller should not decrRef() the returned DataArrayDouble. This method allows for a
++ * direct access to the field values. This method is intended for the field lying on one
++ * mesh only.
++ *  \param [in,out] entries - the sequence describing parameters of a support of each
++ *         part of \a this field. Each item of this sequence consists of two parts. The
++ *         first part describes a type of mesh entity and an id of discretization of a
++ *         current field part. The second part describes a range of values [begin,end)
++ *         within the returned array relating to the current field part.
++ *  \return DataArrayDouble * - the pointer to the field values array.
++ *  \throw If the number of underlying meshes is not equal to 1.
++ *  \throw If no field values are available.
++ *  \sa getUndergroundDataArray()
++ */
++DataArray *MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
++{
++  return getUndergroundDataArrayTemplateExt(entries);
++}
++
++MEDFileField1TSWithoutSDA::MEDFileField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos):MEDFileField1TSTemplateWithoutSDA<double>(fieldName,meshName,csit,iteration,order)
++{
++  DataArrayDouble *arr(getOrCreateAndGetArrayTemplate());
++  arr->setInfoAndChangeNbOfCompo(infos);
++}
++
++MEDFileField1TSWithoutSDA::MEDFileField1TSWithoutSDA():MEDFileField1TSTemplateWithoutSDA<double>()
++{
++}
++
++MEDFileField1TSWithoutSDA *MEDFileField1TSWithoutSDA::shallowCpy() const
++{
++  MCAuto<MEDFileField1TSWithoutSDA> ret(new MEDFileField1TSWithoutSDA(*this));
++  ret->deepCpyLeavesFrom(*this);
++  return ret.retn();
++}
++
++MEDFileField1TSWithoutSDA *MEDFileField1TSWithoutSDA::deepCopy() const
++{
++  MCAuto<MEDFileField1TSWithoutSDA> ret(shallowCpy());
++  if(_arr.isNotNull())
++    ret->_arr=_arr->deepCopy();
++  return ret.retn();
++}
++
++//= MEDFileIntField1TSWithoutSDA
++
++MEDFileIntField1TSWithoutSDA *MEDFileIntField1TSWithoutSDA::New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos)
++{
++  return new MEDFileIntField1TSWithoutSDA(fieldName,meshName,csit,iteration,order,infos);
++}
++
++MEDFileIntField1TSWithoutSDA::MEDFileIntField1TSWithoutSDA()
++{
++}
++
++MEDFileIntField1TSWithoutSDA::MEDFileIntField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order,
++                                                           const std::vector<std::string>& infos):MEDFileField1TSNDTemplateWithoutSDA<int>(fieldName,meshName,csit,iteration,order,infos)
++{
++  DataArrayInt *arr(getOrCreateAndGetArrayTemplate());
++  arr->setInfoAndChangeNbOfCompo(infos);
++}
++
++const char *MEDFileIntField1TSWithoutSDA::getTypeStr() const
++{
++  return TYPE_STR;
++}
++
++/*!
++ * Returns a pointer to the underground DataArrayInt instance and a
++ * sequence describing parameters of a support of each part of \a this field. The
++ * caller should not decrRef() the returned DataArrayInt. This method allows for a
++ * direct access to the field values. This method is intended for the field lying on one
++ * mesh only.
++ *  \param [in,out] entries - the sequence describing parameters of a support of each
++ *         part of \a this field. Each item of this sequence consists of two parts. The
++ *         first part describes a type of mesh entity and an id of discretization of a
++ *         current field part. The second part describes a range of values [begin,end)
++ *         within the returned array relating to the current field part.
++ *  \return DataArrayInt * - the pointer to the field values array.
++ *  \throw If the number of underlying meshes is not equal to 1.
++ *  \throw If no field values are available.
++ *  \sa getUndergroundDataArray()
++ */
++DataArray *MEDFileIntField1TSWithoutSDA::getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
++{
++  return getUndergroundDataArrayIntExt(entries);
++}
++
++/*!
++ * Returns a pointer to the underground DataArrayInt instance and a
++ * sequence describing parameters of a support of each part of \a this field. The
++ * caller should not decrRef() the returned DataArrayInt. This method allows for a
++ * direct access to the field values. This method is intended for the field lying on one
++ * mesh only.
++ *  \param [in,out] entries - the sequence describing parameters of a support of each
++ *         part of \a this field. Each item of this sequence consists of two parts. The
++ *         first part describes a type of mesh entity and an id of discretization of a
++ *         current field part. The second part describes a range of values [begin,end)
++ *         within the returned array relating to the current field part.
++ *  \return DataArrayInt * - the pointer to the field values array.
++ *  \throw If the number of underlying meshes is not equal to 1.
++ *  \throw If no field values are available.
++ *  \sa getUndergroundDataArray()
++ */
++DataArrayInt *MEDFileIntField1TSWithoutSDA::getUndergroundDataArrayIntExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
++{
++  if(_field_per_mesh.size()!=1)
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt : field lies on several meshes, this method has no sense !");
++  if(_field_per_mesh[0]==0)
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt : no field specified !");
++  _field_per_mesh[0]->getUndergroundDataArrayExt(entries);
++  return getUndergroundDataArrayTemplate();
++}
++
++MEDFileIntField1TSWithoutSDA *MEDFileIntField1TSWithoutSDA::shallowCpy() const
++{
++  MCAuto<MEDFileIntField1TSWithoutSDA> ret(new MEDFileIntField1TSWithoutSDA(*this));
++  ret->deepCpyLeavesFrom(*this);
++  return ret.retn();
++}
++
++MEDFileIntField1TSWithoutSDA *MEDFileIntField1TSWithoutSDA::deepCopy() const
++{
++  MCAuto<MEDFileIntField1TSWithoutSDA> ret(shallowCpy());
++  if(_arr.isNotNull())
++    ret->_arr=_arr->deepCopy();
++  return ret.retn();
++}
++
++//= MEDFileFloatField1TSWithoutSDA
++
++MEDFileFloatField1TSWithoutSDA *MEDFileFloatField1TSWithoutSDA::New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos)
++{
++  return new MEDFileFloatField1TSWithoutSDA(fieldName,meshName,csit,iteration,order,infos);
++}
++
++MEDFileFloatField1TSWithoutSDA::MEDFileFloatField1TSWithoutSDA()
++{
++}
++
++MEDFileFloatField1TSWithoutSDA::MEDFileFloatField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order,
++                                                               const std::vector<std::string>& infos):MEDFileField1TSNDTemplateWithoutSDA<float>(fieldName,meshName,csit,iteration,order,infos)
++{
++  DataArrayFloat *arr(getOrCreateAndGetArrayTemplate());
++  arr->setInfoAndChangeNbOfCompo(infos);
++}
++
++const char *MEDFileFloatField1TSWithoutSDA::getTypeStr() const
++{
++  return TYPE_STR;
++}
++
++/*!
++ * Returns a pointer to the underground DataArrayFloat instance and a
++ * sequence describing parameters of a support of each part of \a this field. The
++ * caller should not decrRef() the returned DataArrayFloat. This method allows for a
++ * direct access to the field values. This method is intended for the field lying on one
++ * mesh only.
++ *  \param [in,out] entries - the sequence describing parameters of a support of each
++ *         part of \a this field. Each item of this sequence consists of two parts. The
++ *         first part describes a type of mesh entity and an id of discretization of a
++ *         current field part. The second part describes a range of values [begin,end)
++ *         within the returned array relating to the current field part.
++ *  \return DataArrayFloat * - the pointer to the field values array.
++ *  \throw If the number of underlying meshes is not equal to 1.
++ *  \throw If no field values are available.
++ *  \sa getUndergroundDataArray()
++ */
++DataArray *MEDFileFloatField1TSWithoutSDA::getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
++{
++  return getUndergroundDataArrayFloatExt(entries);
++}
++
++/*!
++ * Returns a pointer to the underground DataArrayFloat instance and a
++ * sequence describing parameters of a support of each part of \a this field. The
++ * caller should not decrRef() the returned DataArrayFloat. This method allows for a
++ * direct access to the field values. This method is intended for the field lying on one
++ * mesh only.
++ *  \param [in,out] entries - the sequence describing parameters of a support of each
++ *         part of \a this field. Each item of this sequence consists of two parts. The
++ *         first part describes a type of mesh entity and an id of discretization of a
++ *         current field part. The second part describes a range of values [begin,end)
++ *         within the returned array relating to the current field part.
++ *  \return DataArrayFloat * - the pointer to the field values array.
++ *  \throw If the number of underlying meshes is not equal to 1.
++ *  \throw If no field values are available.
++ *  \sa getUndergroundDataArray()
++ */
++DataArrayFloat *MEDFileFloatField1TSWithoutSDA::getUndergroundDataArrayFloatExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
++{
++  if(_field_per_mesh.size()!=1)
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt : field lies on several meshes, this method has no sense !");
++  if(_field_per_mesh[0]==0)
++    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt : no field specified !");
++  _field_per_mesh[0]->getUndergroundDataArrayExt(entries);
++  return getUndergroundDataArrayTemplate();
++}
++
++MEDFileFloatField1TSWithoutSDA *MEDFileFloatField1TSWithoutSDA::shallowCpy() const
++{
++  MCAuto<MEDFileFloatField1TSWithoutSDA> ret(new MEDFileFloatField1TSWithoutSDA(*this));
++  ret->deepCpyLeavesFrom(*this);
++  return ret.retn();
++}
++
++MEDFileFloatField1TSWithoutSDA *MEDFileFloatField1TSWithoutSDA::deepCopy() const
++{
++  MCAuto<MEDFileFloatField1TSWithoutSDA> ret(shallowCpy());
++  if(_arr.isNotNull())
++    ret->_arr=_arr->deepCopy();
++  return ret.retn();
++}
++
++//= MEDFileAnyTypeField1TS
++
++MEDFileAnyTypeField1TS::MEDFileAnyTypeField1TS()
++{
++}
++
++MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeField1TS::BuildContentFrom(med_idt fid, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++{
++  med_field_type typcha;
++  //
++  std::vector<std::string> infos;
++  std::string dtunit,fieldName,meshName;
++  LocateField2(fid,0,true,fieldName,typcha,infos,dtunit,meshName);
++  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> ret;
++  switch(typcha)
++  {
++    case MED_FLOAT64:
++      {
++        ret=MEDFileField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
++        break;
++      }
++    case MED_INT32:
++      {
++        ret=MEDFileIntField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
++        break;
++      }
++    case MED_FLOAT32:
++      {
++        ret=MEDFileFloatField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
++        break;
++      }
++    case MED_INT:
++      {
++        if(sizeof(med_int)==sizeof(int))
++          {
++            ret=MEDFileIntField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
++            break;
++          }
++      }
++    default:
++      {
++        std::ostringstream oss; oss << "MEDFileAnyTypeField1TS::BuildContentFrom(fid) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but the type of the first field is not in [MED_FLOAT64, MED_INT32] !";
++        throw INTERP_KERNEL::Exception(oss.str());
++      }
++  }
++  ret->setDtUnit(dtunit.c_str());
++  ret->getOrCreateAndGetArray()->setInfoAndChangeNbOfCompo(infos);
++  //
++  med_int numdt,numit;
++  med_float dt;
++  MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,fieldName.c_str(),1,&numdt,&numit,&dt));
++  ret->setTime(numdt,numit,dt);
++  ret->_csit=1;
++  if(loadAll)
++    ret->loadStructureAndBigArraysRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
++  else
++    ret->loadOnlyStructureOfDataRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
++  return ret.retn();
++}
++
++MEDFileAnyTypeField1TS::MEDFileAnyTypeField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++try:MEDFileFieldGlobsReal(fid)
++{
++  _content=BuildContentFrom(fid,loadAll,ms,entities);
++  loadGlobals(fid);
++}
++catch(INTERP_KERNEL::Exception& e)
++{
++    throw e;
++}
++
++MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeField1TS::BuildContentFrom(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++{
++  med_field_type typcha;
++  std::vector<std::string> infos;
++  std::string dtunit,meshName;
++  int nbSteps(0);
++  {
++    int iii=-1;
++    nbSteps=LocateField(fid,fieldName,iii,typcha,infos,dtunit,meshName);
++  }
++  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> ret;
++  switch(typcha)
++  {
++    case MED_FLOAT64:
++      {
++        ret=MEDFileField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
++        break;
++      }
++    case MED_INT32:
++      {
++        ret=MEDFileIntField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
++        break;
++      }
++    case MED_FLOAT32:
++      {
++        ret=MEDFileFloatField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
++        break;
++      }
++    case MED_INT:
++      {
++        if(sizeof(med_int)==sizeof(int))
++          {
++            ret=MEDFileIntField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
++            break;
++          }
++      }
++    default:
++      {
++        std::ostringstream oss; oss << "MEDFileAnyTypeField1TS::BuildContentFrom(fid,fieldName) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but the type of field is not in [MED_FLOAT64, MED_INT32, MED_FLOAT32] !";
++        throw INTERP_KERNEL::Exception(oss.str());
++      }
++  }
++  ret->setMeshName(meshName);
++  ret->setDtUnit(dtunit.c_str());
++  ret->getOrCreateAndGetArray()->setInfoAndChangeNbOfCompo(infos);
++  //
++  if(nbSteps<1)
++    {
++      std::ostringstream oss; oss << "MEDFileField1TS(fid,fieldName) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but there is no time steps on it !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  //
++  med_int numdt,numit;
++  med_float dt;
++  MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,fieldName.c_str(),1,&numdt,&numit,&dt));
++  ret->setTime(numdt,numit,dt);
++  ret->_csit=1;
++  if(loadAll)
++    ret->loadStructureAndBigArraysRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
++  else
++    ret->loadOnlyStructureOfDataRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
++  return ret.retn();
++}
++
++MEDFileAnyTypeField1TS::MEDFileAnyTypeField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++try:MEDFileFieldGlobsReal(fid)
++{
++  _content=BuildContentFrom(fid,fieldName,loadAll,ms,entities);
++  loadGlobals(fid);
++}
++catch(INTERP_KERNEL::Exception& e)
++{
++    throw e;
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::BuildNewInstanceFromContent(MEDFileAnyTypeField1TSWithoutSDA *c)
++{
++  if(!c)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::BuildNewInstanceFromContent : empty content in input : unable to build a new instance !");
++  if(dynamic_cast<const MEDFileField1TSWithoutSDA *>(c))
++    {
++      MCAuto<MEDFileField1TS> ret(MEDFileField1TS::New());
++      ret->_content=c; c->incrRef();
++      return ret.retn();
++    }
++  if(dynamic_cast<const MEDFileIntField1TSWithoutSDA *>(c))
++    {
++      MCAuto<MEDFileIntField1TS> ret(MEDFileIntField1TS::New());
++      ret->_content=c; c->incrRef();
++      return ret.retn();
++    }
++  if(dynamic_cast<const MEDFileFloatField1TSWithoutSDA *>(c))
++    {
++      MCAuto<MEDFileFloatField1TS> ret(MEDFileFloatField1TS::New());
++      ret->_content=c; c->incrRef();
++      return ret.retn();
++    }
++  throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::BuildNewInstanceFromContent : internal error ! a content of type different from FLOAT64 FLOAT32 and INT32 has been built but not intercepted !");
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::BuildNewInstanceFromContent(MEDFileAnyTypeField1TSWithoutSDA *c, med_idt fid)
++{
++  MEDFileAnyTypeField1TS *ret(BuildNewInstanceFromContent(c));
++  ret->setFileName(FileNameFromFID(fid));
++  return ret;
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(const std::string& fileName, bool loadAll)
++{
++  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
++  return New(fid,loadAll);
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(med_idt fid, bool loadAll)
++{
++  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> c(BuildContentFrom(fid,loadAll,0,0));
++  MCAuto<MEDFileAnyTypeField1TS> ret(BuildNewInstanceFromContent(c,fid));
++  ret->loadGlobals(fid);
++  return ret.retn();
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(const std::string& fileName, const std::string& fieldName, bool loadAll)
++{
++  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
++  return New(fid,fieldName,loadAll);
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(med_idt fid, const std::string& fieldName, bool loadAll)
++{
++  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> c(BuildContentFrom(fid,fieldName,loadAll,0,0));
++  MCAuto<MEDFileAnyTypeField1TS> ret(BuildNewInstanceFromContent(c,fid));
++  ret->loadGlobals(fid);
++  return ret.retn();
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll)
++{
++  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
++  return New(fid,fieldName,iteration,order,loadAll);
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll)
++{
++  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> c(BuildContentFrom(fid,fieldName,iteration,order,loadAll,0,0));
++  MCAuto<MEDFileAnyTypeField1TS> ret(BuildNewInstanceFromContent(c,fid));
++  ret->loadGlobals(fid);
++  return ret.retn();
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::NewAdv(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities)
++{
++  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
++  return NewAdv(fid,fieldName,iteration,order,loadAll,entities);
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::NewAdv(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities)
++{
++  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> c(BuildContentFrom(fid,fieldName,iteration,order,loadAll,0,entities));
++  MCAuto<MEDFileAnyTypeField1TS> ret(BuildNewInstanceFromContent(c,fid));
++  ret->loadGlobals(fid);
++  return ret.retn();
++}
++
++MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeField1TS::BuildContentFrom(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++{
++  med_field_type typcha;
++  std::vector<std::string> infos;
++  std::string dtunit,meshName;
++  int iii(-1);
++  int nbOfStep2(LocateField(fid,fieldName,iii,typcha,infos,dtunit,meshName));
++  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> ret;
++  switch(typcha)
++  {
++    case MED_FLOAT64:
++      {
++        ret=MEDFileField1TSWithoutSDA::New(fieldName,meshName,-1,iteration,order,std::vector<std::string>());
++        break;
++      }
++    case MED_INT32:
++      {
++        ret=MEDFileIntField1TSWithoutSDA::New(fieldName,meshName,-1,iteration,order,std::vector<std::string>());
++        break;
++      }
++    case MED_FLOAT32:
++      {
++        ret=MEDFileFloatField1TSWithoutSDA::New(fieldName,meshName,-1,iteration,order,std::vector<std::string>());
++        break;
++      }
++    case MED_INT:
++      {
++        if(sizeof(med_int)==sizeof(int))
++          {
++            ret=MEDFileIntField1TSWithoutSDA::New(fieldName,meshName,-1,iteration,order,std::vector<std::string>());
++            break;
++          }
++      }
++    default:
++      {
++        std::ostringstream oss; oss << "MEDFileAnyTypeField1TS::BuildContentFrom(fid,fieldName,iteration,order) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but the type of field is not in [MED_FLOAT64, MED_INT32, MED_FLOAT32] !";
++        throw INTERP_KERNEL::Exception(oss.str());
++      }
++  }
++  ret->setDtUnit(dtunit.c_str());
++  ret->getOrCreateAndGetArray()->setInfoAndChangeNbOfCompo(infos);
++  //
++  bool found=false;
++  std::vector< std::pair<int,int> > dtits(nbOfStep2);
++  for(int i=0;i<nbOfStep2 && !found;i++)
++    {
++      med_int numdt,numit;
++      med_float dt;
++      MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,fieldName.c_str(),i+1,&numdt,&numit,&dt));
++      if(numdt==iteration && numit==order)
++        {
++          found=true;
++          ret->_csit=i+1;
++        }
++      else
++        dtits[i]=std::pair<int,int>(numdt,numit);
++    }
++  if(!found)
++    {
++      std::ostringstream oss; oss << "No such iteration (" << iteration << "," << order << ") in existing field '" << fieldName << "' in file '" << FileNameFromFID(fid) << "' ! Available iterations are : ";
++      for(std::vector< std::pair<int,int> >::const_iterator iter=dtits.begin();iter!=dtits.end();iter++)
++        oss << "(" << (*iter).first << "," << (*iter).second << "), ";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  if(loadAll)
++    ret->loadStructureAndBigArraysRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
++  else
++    ret->loadOnlyStructureOfDataRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
++  return ret.retn();
++}
++
++MEDFileAnyTypeField1TS::MEDFileAnyTypeField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++try:MEDFileFieldGlobsReal(fid)
++{
++  _content=BuildContentFrom(fid,fieldName,iteration,order,loadAll,ms,entities);
++  loadGlobals(fid);
++}
++catch(INTERP_KERNEL::Exception& e)
++{
++    throw e;
++}
++
++/*!
++ * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
++ * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
++ *
++ * \warning this is a shallow copy constructor
++ */
++MEDFileAnyTypeField1TS::MEDFileAnyTypeField1TS(const MEDFileAnyTypeField1TSWithoutSDA& other, bool shallowCopyOfContent)
++{
++  if(!shallowCopyOfContent)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *otherPtr(&other);
++      otherPtr->incrRef();
++      _content=const_cast<MEDFileAnyTypeField1TSWithoutSDA *>(otherPtr);
++    }
++  else
++    {
++      _content=other.shallowCpy();
++    }
++}
++
++int MEDFileAnyTypeField1TS::LocateField2(med_idt fid, int fieldIdCFormat, bool checkFieldId, std::string& fieldName, med_field_type& typcha, std::vector<std::string>& infos, std::string& dtunitOut, std::string& meshName)
++{
++  if(checkFieldId)
++    {
++      int nbFields=MEDnField(fid);
++      if(fieldIdCFormat>=nbFields)
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeField1TS::LocateField2(fileName) : in file \'" << FileNameFromFID(fid) << "\' number of fields is " << nbFields << " ! Trying to request for id " << fieldIdCFormat << " !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++    }
++  int ncomp(MEDfieldnComponent(fid,fieldIdCFormat+1));
++  INTERP_KERNEL::AutoPtr<char> comp(MEDLoaderBase::buildEmptyString(ncomp*MED_SNAME_SIZE));
++  INTERP_KERNEL::AutoPtr<char> unit(MEDLoaderBase::buildEmptyString(ncomp*MED_SNAME_SIZE));
++  INTERP_KERNEL::AutoPtr<char> dtunit(MEDLoaderBase::buildEmptyString(MED_LNAME_SIZE));
++  INTERP_KERNEL::AutoPtr<char> nomcha(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  INTERP_KERNEL::AutoPtr<char> nomMaa(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  med_bool localMesh;
++  int nbOfStep;
++  MEDFILESAFECALLERRD0(MEDfieldInfo,(fid,fieldIdCFormat+1,nomcha,nomMaa,&localMesh,&typcha,comp,unit,dtunit,&nbOfStep));
++  fieldName=MEDLoaderBase::buildStringFromFortran(nomcha,MED_NAME_SIZE);
++  dtunitOut=MEDLoaderBase::buildStringFromFortran(dtunit,MED_LNAME_SIZE);
++  meshName=MEDLoaderBase::buildStringFromFortran(nomMaa,MED_NAME_SIZE);
++  infos.clear(); infos.resize(ncomp);
++  for(int j=0;j<ncomp;j++)
++    infos[j]=MEDLoaderBase::buildUnionUnit((char *)comp+j*MED_SNAME_SIZE,MED_SNAME_SIZE,(char *)unit+j*MED_SNAME_SIZE,MED_SNAME_SIZE);
++  return nbOfStep;
++}
++
++/*!
++ * This method throws an INTERP_KERNEL::Exception if \a fieldName field is not in file pointed by \a fid and with name \a fileName.
++ * 
++ * \param [out]
++ * \return in case of success the number of time steps available for the field with name \a fieldName.
++ */
++int MEDFileAnyTypeField1TS::LocateField(med_idt fid, const std::string& fieldName, int& posCFormat, med_field_type& typcha, std::vector<std::string>& infos, std::string& dtunitOut, std::string& meshName)
++{
++  int nbFields=MEDnField(fid);
++  bool found=false;
++  std::vector<std::string> fns(nbFields);
++  int nbOfStep2(-1);
++  for(int i=0;i<nbFields && !found;i++)
++    {
++      std::string tmp,tmp2;
++      nbOfStep2=LocateField2(fid,i,false,tmp,typcha,infos,dtunitOut,tmp2);
++      fns[i]=tmp;
++      found=(tmp==fieldName);
++      if(found)
++        {
++          posCFormat=i;
++          meshName=tmp2;
++        }
++    }
++  if(!found)
++    {
++      std::ostringstream oss; oss << "No such field '" << fieldName << "' in file '" << FileNameFromFID(fid) << "' ! Available fields are : ";
++      for(std::vector<std::string>::const_iterator it=fns.begin();it!=fns.end();it++)
++        oss << "\"" << *it << "\" ";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  return nbOfStep2;
++}
++
++/*!
++ * This method as MEDFileField1TSW::setLocNameOnLeaf, is dedicated for advanced user that a want a very fine control on their data structure
++ * without overhead. This method can be called only regarding information returned by MEDFileField1TSWithoutSDA::getFieldSplitedByType or MEDFileField1TSWithoutSDA::getFieldSplitedByType2.
++ * This method changes the attribute (here it's profile name) of the leaf datastructure (MEDFileFieldPerMeshPerTypePerDisc instance).
++ * It is the responsibility of the caller to invoke MEDFileFieldGlobs::appendProfile or MEDFileFieldGlobs::getProfile
++ * to keep a valid instance.
++ * If \b this do not have any leaf that correspond to the request of the input parameter (\b mName, \b typ, \b locId) an INTERP_KERNEL::Exception will be thrown.
++ * If \b newPflName profile name does not already exist the profile with old name will be renamed with name \b newPflName.
++ * If \b newPflName already exists and that \b forceRenameOnGlob is false (the default) an INTERP_KERNEL::Exception will be thrown to avoid big confusion. In this case the called should rename before the profile name with name \b newPflName.
++ *
++ * \param [in] mName specifies the underlying mesh name. This value can be pointer 0 for users that do not deal with fields on multi mesh.
++ * \param [in] typ is for the geometric cell type (or INTERP_KERNEL::NORM_ERROR for node field) entry to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set.
++ * \param [in] locId is the localization id to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set. It corresponds to the position of 
++ *             \c pfls[std::distance(types.begin(),std::find(types.begin(),typ)] vector in MEDFileField1TSWithoutSDA::getFieldSplitedByType. For non gausspoints field users, the value is 0.
++ * \param [in] newLocName is the new localization name.
++ * \param [in] forceRenameOnGlob specifies the behaviour in case of profile \b newPflName already exists. If true, the renaming is done without check. It can lead to major bug.
++ *             If false, an exception will be thrown to force user to change previously the name of the profile with name \b newPflName
++ */
++void MEDFileAnyTypeField1TS::setProfileNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newPflName, bool forceRenameOnGlob)
++{
++  MEDFileFieldPerMeshPerTypePerDisc *disc=getLeafGivenMeshAndTypeAndLocId(mName,typ,locId);
++  std::string oldPflName=disc->getProfile();
++  std::vector<std::string> vv=getPflsReallyUsedMulti();
++  int nbOfOcc=std::count(vv.begin(),vv.end(),oldPflName);
++  if(forceRenameOnGlob || (!existsPfl(newPflName) && nbOfOcc==1))
++    {
++      disc->setProfile(newPflName);
++      DataArrayInt *pfl=getProfile(oldPflName.c_str());
++      pfl->setName(newPflName);
++    }
++  else
++    {
++      std::ostringstream oss; oss << "MEDFileField1TS::setProfileNameOnLeaf : Profile \"" << newPflName << "\" already exists or referenced more than one !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++}
++
++/*!
++ * This method as MEDFileField1TSW::setProfileNameOnLeaf, is dedicated for advanced user that a want a very fine control on their data structure
++ * without overhead. This method can be called only regarding information returned by MEDFileField1TSWithoutSDA::getFieldSplitedByType or MEDFileField1TSWithoutSDA::getFieldSplitedByType2.
++ * This method changes the attribute (here it's localization name) of the leaf datastructure (MEDFileFieldPerMeshPerTypePerDisc instance).
++ * It is the responsibility of the caller to invoke MEDFileFieldGlobs::appendProfile or MEDFileFieldGlobs::getProfile
++ * to keep a valid instance.
++ * If \b this do not have any leaf that correspond to the request of the input parameter (\b mName, \b typ, \b locId) an INTERP_KERNEL::Exception will be thrown.
++ * This method is an extension of MEDFileField1TSWithoutSDA::setProfileNameOnLeafExt method because it performs a modification of global info.
++ * If \b newLocName profile name does not already exist the localization with old name will be renamed with name \b newLocName.
++ * If \b newLocName already exists an INTERP_KERNEL::Exception will be thrown to avoid big confusion. In this case the called should rename before the profile name with name \b newLocName.
++ *
++ * \param [in] mName specifies the underlying mesh name. This value can be pointer 0 for users that do not deal with fields on multi mesh.
++ * \param [in] typ is for the geometric cell type (or INTERP_KERNEL::NORM_ERROR for node field) entry to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set.
++ * \param [in] locId is the localization id to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set. It corresponds to the position of 
++ *             \c pfls[std::distance(types.begin(),std::find(types.begin(),typ)] vector in MEDFileField1TSWithoutSDA::getFieldSplitedByType. For non gausspoints field users, the value is 0.
++ * \param [in] newLocName is the new localization name.
++ * \param [in] forceRenameOnGlob specifies the behaviour in case of profile \b newLocName already exists. If true, the renaming is done without check. It can lead to major bug.
++ *             If false, an exception will be thrown to force user to change previously the name of the profile with name \b newLocName
++ */
++void MEDFileAnyTypeField1TS::setLocNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newLocName, bool forceRenameOnGlob)
++{
++  MEDFileFieldPerMeshPerTypePerDisc *disc=getLeafGivenMeshAndTypeAndLocId(mName,typ,locId);
++  std::string oldLocName=disc->getLocalization();
++  std::vector<std::string> vv=getLocsReallyUsedMulti();
++  int nbOfOcc=std::count(vv.begin(),vv.end(),oldLocName);
++  if(forceRenameOnGlob || (!existsLoc(newLocName) && nbOfOcc==1))
++    {
++      disc->setLocalization(newLocName);
++      MEDFileFieldLoc& loc=getLocalization(oldLocName.c_str());
++      loc.setName(newLocName);
++    }
++  else
++    {
++      std::ostringstream oss; oss << "MEDFileField1TS::setLocNameOnLeaf : Localization \"" << newLocName << "\" already exists or referenced more than one !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++}
++
++MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeField1TS::contentNotNullBase()
++{
++  MEDFileAnyTypeField1TSWithoutSDA *ret=_content;
++  if(!ret)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS : content is expected to be not null !");
++  return ret;
++}
++
++const MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeField1TS::contentNotNullBase() const
++{
++  const MEDFileAnyTypeField1TSWithoutSDA *ret=_content;
++  if(!ret)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS : const content is expected to be not null !");
++  return ret;
++}
++
++/*!
++ * This method alloc the arrays and load potentially huge arrays contained in this field.
++ * This method should be called when a MEDFileAnyTypeField1TS::New constructor has been with false as the last parameter.
++ * This method can be also called to refresh or reinit values from a file.
++ * 
++ * \throw If the fileName is not set or points to a non readable MED file.
++ * \sa MEDFileAnyTypeField1TS::loadArraysIfNecessary
++ */
++void MEDFileAnyTypeField1TS::loadArrays()
++{
++  if(getFileName().empty())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::loadArrays : the structure does not come from a file !");
++  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(getFileName()));
++  contentNotNullBase()->loadBigArraysRecursively(fid,*contentNotNullBase());
++}
++
++/*!
++ * This method behaves as MEDFileAnyTypeField1TS::loadArrays does, the first call, if \a this was built using a file without loading big arrays.
++ * But once data loaded once, this method does nothing. Contrary to MEDFileAnyTypeField1TS::loadArrays and MEDFileAnyTypeField1TS::unloadArrays
++ * this method does not throw if \a this does not come from file read.
++ * 
++ * \sa MEDFileAnyTypeField1TS::loadArrays, MEDFileAnyTypeField1TS::unloadArrays
++ */
++void MEDFileAnyTypeField1TS::loadArraysIfNecessary()
++{
++  if(!getFileName().empty())
++    {
++      MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(getFileName()));
++      contentNotNullBase()->loadBigArraysRecursivelyIfNecessary(fid,*contentNotNullBase());
++    }
++}
++
++/*!
++ * This method releases potentially big data arrays and so returns to the same heap memory than status loaded with 'loadAll' parameter set to false.
++ * \b WARNING, this method does release arrays even if \a this does not come from a load of a MED file.
++ * So this method can lead to a loss of data. If you want to unload arrays safely call MEDFileAnyTypeField1TS::unloadArraysWithoutDataLoss instead.
++ * 
++ * \sa MEDFileAnyTypeField1TS::loadArrays, MEDFileAnyTypeField1TS::loadArraysIfNecessary, MEDFileAnyTypeField1TS::unloadArraysWithoutDataLoss
++ */
++void MEDFileAnyTypeField1TS::unloadArrays()
++{
++  contentNotNullBase()->unloadArrays();
++}
++
++/*!
++ * This method potentially releases big data arrays if \a this is coming from a file. If \a this has been built from scratch this method will have no effect.
++ * This method is the symmetrical method of MEDFileAnyTypeField1TS::loadArraysIfNecessary.
++ * This method is useful to reduce \b safely amount of heap memory necessary for \a this by using MED file as database.
++ * 
++ * \sa MEDFileAnyTypeField1TS::loadArraysIfNecessary
++ */
++void MEDFileAnyTypeField1TS::unloadArraysWithoutDataLoss()
++{
++  if(!getFileName().empty())
++    contentNotNullBase()->unloadArrays();
++}
++
++void MEDFileAnyTypeField1TS::writeLL(med_idt fid) const
++{
++  int nbComp(getNumberOfComponents());
++  INTERP_KERNEL::AutoPtr<char> comp(MEDLoaderBase::buildEmptyString(nbComp*MED_SNAME_SIZE));
++  INTERP_KERNEL::AutoPtr<char> unit(MEDLoaderBase::buildEmptyString(nbComp*MED_SNAME_SIZE));
++  for(int i=0;i<nbComp;i++)
++    {
++      std::string info=getInfo()[i];
++      std::string c,u;
++      MEDLoaderBase::splitIntoNameAndUnit(info,c,u);
++      MEDLoaderBase::safeStrCpy2(c.c_str(),MED_SNAME_SIZE,comp+i*MED_SNAME_SIZE,_too_long_str);
++      MEDLoaderBase::safeStrCpy2(u.c_str(),MED_SNAME_SIZE,unit+i*MED_SNAME_SIZE,_too_long_str);
++    }
++  if(getName().empty())
++    throw INTERP_KERNEL::Exception("MEDFileField1TS::write : MED file does not accept field with empty name !");
++  MEDFILESAFECALLERWR0(MEDfieldCr,(fid,getName().c_str(),getMEDFileFieldType(),nbComp,comp,unit,getDtUnit().c_str(),getMeshName().c_str()));
++  writeGlobals(fid,*this);
++  contentNotNullBase()->writeLL(fid,*this,*contentNotNullBase());
++}
++
++std::size_t MEDFileAnyTypeField1TS::getHeapMemorySizeWithoutChildren() const
++{
++  return MEDFileFieldGlobsReal::getHeapMemorySizeWithoutChildren();
++}
++
++std::vector<const BigMemoryObject *> MEDFileAnyTypeField1TS::getDirectChildrenWithNull() const
++{
++  std::vector<const BigMemoryObject *> ret(MEDFileFieldGlobsReal::getDirectChildrenWithNull());
++  ret.push_back((const MEDFileAnyTypeField1TSWithoutSDA *)_content);
++  return ret;
++}
++
++/*!
++ * Returns a string describing \a this field. This string is outputted 
++ * by \c print Python command.
++ */
++std::string MEDFileAnyTypeField1TS::simpleRepr() const
++{
++  std::ostringstream oss;
++  contentNotNullBase()->simpleRepr(0,oss,-1);
++  simpleReprGlobs(oss);
++  return oss.str();
++}
++
++/*!
++ * This method returns all profiles whose name is non empty used.
++ * \b WARNING If profile is used several times it will be reported \b only \b once.
++ * To get non empty name profiles as time as they appear in \b this call MEDFileField1TS::getPflsReallyUsedMulti instead.
++ */
++std::vector<std::string> MEDFileAnyTypeField1TS::getPflsReallyUsed() const
++{
++  return contentNotNullBase()->getPflsReallyUsed2();
++}
++
++/*!
++ * This method returns all localizations whose name is non empty used.
++ * \b WARNING If localization is used several times it will be reported \b only \b once.
++ */
++std::vector<std::string> MEDFileAnyTypeField1TS::getLocsReallyUsed() const
++{
++  return contentNotNullBase()->getLocsReallyUsed2();
++}
++
++/*!
++ * This method returns all profiles whose name is non empty used.
++ * \b WARNING contrary to MEDFileField1TS::getPflsReallyUsed, if profile is used several times it will be reported as time as it appears.
++ */
++std::vector<std::string> MEDFileAnyTypeField1TS::getPflsReallyUsedMulti() const
++{
++  return contentNotNullBase()->getPflsReallyUsedMulti2();
++}
++
++/*!
++ * This method returns all localizations whose name is non empty used.
++ * \b WARNING contrary to MEDFileField1TS::getLocsReallyUsed if localization is used several times it will be reported as time as it appears.
++ */
++std::vector<std::string> MEDFileAnyTypeField1TS::getLocsReallyUsedMulti() const
++{
++  return contentNotNullBase()->getLocsReallyUsedMulti2();
++}
++
++void MEDFileAnyTypeField1TS::changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  contentNotNullBase()->changePflsRefsNamesGen2(mapOfModif);
++}
++
++void MEDFileAnyTypeField1TS::changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  contentNotNullBase()->changeLocsRefsNamesGen2(mapOfModif);
++}
++
++int MEDFileAnyTypeField1TS::getDimension() const
++{
++  return contentNotNullBase()->getDimension();
++}
++
++int MEDFileAnyTypeField1TS::getIteration() const
++{
++  return contentNotNullBase()->getIteration();
++}
++
++int MEDFileAnyTypeField1TS::getOrder() const
++{
++  return contentNotNullBase()->getOrder();
++}
++
++double MEDFileAnyTypeField1TS::getTime(int& iteration, int& order) const
++{
++  return contentNotNullBase()->getTime(iteration,order);
++}
++
++void MEDFileAnyTypeField1TS::setTime(int iteration, int order, double val)
++{
++  contentNotNullBase()->setTime(iteration,order,val);
++}
++
++std::string MEDFileAnyTypeField1TS::getName() const
++{
++  return contentNotNullBase()->getName();
++}
++
++void MEDFileAnyTypeField1TS::setName(const std::string& name)
++{
++  contentNotNullBase()->setName(name);
++}
++
++void MEDFileAnyTypeField1TS::simpleRepr(int bkOffset, std::ostream& oss, int f1tsId) const
++{
++  contentNotNullBase()->simpleRepr(bkOffset,oss,f1tsId);
++}
++
++std::string MEDFileAnyTypeField1TS::getDtUnit() const
++{
++  return contentNotNullBase()->getDtUnit();
++}
++
++void MEDFileAnyTypeField1TS::setDtUnit(const std::string& dtUnit)
++{
++  contentNotNullBase()->setDtUnit(dtUnit);
++}
++
++std::string MEDFileAnyTypeField1TS::getMeshName() const
++{
++  return contentNotNullBase()->getMeshName();
++}
++
++void MEDFileAnyTypeField1TS::setMeshName(const std::string& newMeshName)
++{
++  contentNotNullBase()->setMeshName(newMeshName);
++}
++
++bool MEDFileAnyTypeField1TS::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab)
++{
++  return contentNotNullBase()->changeMeshNames(modifTab);
++}
++
++int MEDFileAnyTypeField1TS::getMeshIteration() const
++{
++  return contentNotNullBase()->getMeshIteration();
++}
++
++int MEDFileAnyTypeField1TS::getMeshOrder() const
++{
++  return contentNotNullBase()->getMeshOrder();
++}
++
++int MEDFileAnyTypeField1TS::getNumberOfComponents() const
++{
++  return contentNotNullBase()->getNumberOfComponents();
++}
++
++bool MEDFileAnyTypeField1TS::isDealingTS(int iteration, int order) const
++{
++  return contentNotNullBase()->isDealingTS(iteration,order);
++}
++
++std::pair<int,int> MEDFileAnyTypeField1TS::getDtIt() const
++{
++  return contentNotNullBase()->getDtIt();
++}
++
++void MEDFileAnyTypeField1TS::fillIteration(std::pair<int,int>& p) const
++{
++  contentNotNullBase()->fillIteration(p);
++}
++
++void MEDFileAnyTypeField1TS::fillTypesOfFieldAvailable(std::vector<TypeOfField>& types) const
++{
++  contentNotNullBase()->fillTypesOfFieldAvailable(types);
++}
++
++void MEDFileAnyTypeField1TS::setInfo(const std::vector<std::string>& infos)
++{
++  contentNotNullBase()->setInfo(infos);
++}
++
++const std::vector<std::string>& MEDFileAnyTypeField1TS::getInfo() const
++{
++  return contentNotNullBase()->getInfo();
++}
++std::vector<std::string>& MEDFileAnyTypeField1TS::getInfo()
++{
++  return contentNotNullBase()->getInfo();
++}
++
++bool MEDFileAnyTypeField1TS::presenceOfMultiDiscPerGeoType() const
++{
++  return contentNotNullBase()->presenceOfMultiDiscPerGeoType();
++}
++
++MEDFileFieldPerMeshPerTypePerDisc *MEDFileAnyTypeField1TS::getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId)
++{
++  return contentNotNullBase()->getLeafGivenMeshAndTypeAndLocId(mName,typ,locId);
++}
++
++const MEDFileFieldPerMeshPerTypePerDisc *MEDFileAnyTypeField1TS::getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId) const
++{
++  return contentNotNullBase()->getLeafGivenMeshAndTypeAndLocId(mName,typ,locId);
++}
++
++int MEDFileAnyTypeField1TS::getNonEmptyLevels(const std::string& mname, std::vector<int>& levs) const
++{
++  return contentNotNullBase()->getNonEmptyLevels(mname,levs);
++}
++
++void MEDFileAnyTypeField1TS::convertMedBallIntoClassic()
++{
++  return contentNotNullBase()->convertMedBallIntoClassic();
++}
++
++void MEDFileAnyTypeField1TS::makeReduction(INTERP_KERNEL::NormalizedCellType ct, TypeOfField tof, const DataArrayInt *pfl)
++{
++  return contentNotNullBase()->makeReduction(ct,tof,pfl);
++}
++
++std::vector<TypeOfField> MEDFileAnyTypeField1TS::getTypesOfFieldAvailable() const
++{
++  return contentNotNullBase()->getTypesOfFieldAvailable();
++}
++
++std::vector< std::vector<std::pair<int,int> > > MEDFileAnyTypeField1TS::getFieldSplitedByType(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF,
++                                                                                              std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
++{
++  return contentNotNullBase()->getFieldSplitedByType(mname,types,typesF,pfls,locs);
++}
++
++/*!
++ * This method returns as MEDFileAnyTypeField1TS new instances as number of components in \a this.
++ * The returned instances are deep copy of \a this except that for globals that are shared with those contained in \a this.
++ * ** WARNING ** do no forget to rename the output instances to avoid to write n-times in the same MED file field !
++ */
++std::vector< MCAuto< MEDFileAnyTypeField1TS > > MEDFileAnyTypeField1TS::splitComponents() const
++{
++  const MEDFileAnyTypeField1TSWithoutSDA *content(_content);
++  if(!content)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::splitComponents : no content in this ! Unable to split components !");
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > contentsSplit=content->splitComponents();
++  std::size_t sz(contentsSplit.size());
++  std::vector< MCAuto< MEDFileAnyTypeField1TS > > ret(sz);
++  for(std::size_t i=0;i<sz;i++)
++    {
++      ret[i]=shallowCpy();
++      ret[i]->_content=contentsSplit[i];
++    }
++  return ret;
++}
++
++/*!
++ * This method returns as MEDFileAnyTypeField1TS new instances as number of spatial discretizations in \a this.
++ * The returned instances are shallowed copied of \a this except that for globals that are shared with those contained in \a this.
++ */
++std::vector< MCAuto< MEDFileAnyTypeField1TS > > MEDFileAnyTypeField1TS::splitDiscretizations() const
++{
++  const MEDFileAnyTypeField1TSWithoutSDA *content(_content);
++  if(!content)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::splitDiscretizations : no content in this ! Unable to split discretization !");
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > contentsSplit(content->splitDiscretizations());
++  std::size_t sz(contentsSplit.size());
++  std::vector< MCAuto< MEDFileAnyTypeField1TS > > ret(sz);
++  for(std::size_t i=0;i<sz;i++)
++    {
++      ret[i]=shallowCpy();
++      ret[i]->_content=contentsSplit[i];
++    }
++  return ret;
++}
++
++/*!
++ * This method returns as MEDFileAnyTypeField1TS new instances as number of maximal number of discretization in \a this.
++ * The returned instances are shallowed copied of \a this except that for globals that are shared with those contained in \a this.
++ */
++std::vector< MCAuto< MEDFileAnyTypeField1TS > > MEDFileAnyTypeField1TS::splitMultiDiscrPerGeoTypes() const
++{
++  const MEDFileAnyTypeField1TSWithoutSDA *content(_content);
++  if(!content)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::splitMultiDiscrPerGeoTypes : no content in this ! Unable to split discretization !");
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > contentsSplit(content->splitMultiDiscrPerGeoTypes());
++  std::size_t sz(contentsSplit.size());
++  std::vector< MCAuto< MEDFileAnyTypeField1TS > > ret(sz);
++  for(std::size_t i=0;i<sz;i++)
++    {
++      ret[i]=shallowCpy();
++      ret[i]->_content=contentsSplit[i];
++    }
++  return ret;
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::deepCopy() const
++{
++  MCAuto<MEDFileAnyTypeField1TS> ret=shallowCpy();
++  if((const MEDFileAnyTypeField1TSWithoutSDA *)_content)
++    ret->_content=_content->deepCopy();
++  ret->deepCpyGlobs(*this);
++  return ret.retn();
++}
++
++int MEDFileAnyTypeField1TS::copyTinyInfoFrom(const MEDCouplingFieldDouble *field, const DataArray *arr)
++{
++  MCAuto<MEDCouplingFieldTemplate> ft(MEDCouplingFieldTemplate::New(*field));
++  return copyTinyInfoFrom(field->timeDiscrSafe(),ft,arr);
++}
++
++int MEDFileAnyTypeField1TS::copyTinyInfoFrom(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr)
++{
++  return contentNotNullBase()->copyTinyInfoFrom(th,field,arr);
++}
++
++//= MEDFileField1TS
++
++/*!
++ * This method performs a copy with datatype modification ( float64->int32 ) of \a this. The globals information are copied
++ * following the given input policy.
++ *
++ * \param [in] isDeepCpyGlobs - a boolean that indicates the behaviour concerning globals (profiles and localizations)
++ *                            By default (true) the globals are deeply copied.
++ * \return MEDFileIntField1TS * - a new object that is the result of the conversion of \a this to int32 field.
++ */
++MEDFileIntField1TS *MEDFileField1TS::convertToInt(bool isDeepCpyGlobs) const
++{
++  MCAuto<MEDFileIntField1TS> ret;
++  const MEDFileAnyTypeField1TSWithoutSDA *content(_content);
++  if(content)
++    {
++      const MEDFileField1TSWithoutSDA *contc=dynamic_cast<const MEDFileField1TSWithoutSDA *>(content);
++      if(!contc)
++        throw INTERP_KERNEL::Exception("MEDFileField1TS::convertToInt : the content inside this is not FLOAT64 ! This is incoherent !");
++      MCAuto<MEDFileIntField1TSWithoutSDA> newc(contc->convertToInt());
++      ret=static_cast<MEDFileIntField1TS *>(MEDFileAnyTypeField1TS::BuildNewInstanceFromContent((MEDFileIntField1TSWithoutSDA *)newc));
++    }
++  else
++    ret=MEDFileIntField1TS::New();
++  if(isDeepCpyGlobs)
++    ret->deepCpyGlobs(*this);
++  else
++    ret->shallowCpyGlobs(*this);
++  return ret.retn();
++}
++
++MEDFileField1TS::MEDFileField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms)
++try:MEDFileTemplateField1TS<double>(fid,loadAll,ms)
++{
++}
++catch(INTERP_KERNEL::Exception& e)
++{ throw e; }
++
++MEDFileField1TS::MEDFileField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms)
++try:MEDFileTemplateField1TS<double>(fid,fieldName,loadAll,ms)
++{
++}
++catch(INTERP_KERNEL::Exception& e)
++{ throw e; }
++
++MEDFileField1TS::MEDFileField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms)
++try:MEDFileTemplateField1TS<double>(fid,fieldName,iteration,order,loadAll,ms)
++{
++}
++catch(INTERP_KERNEL::Exception& e)
++{ throw e; }
++
++/*!
++ * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
++ * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
++ *
++ * \warning this is a shallow copy constructor
++ */
++MEDFileField1TS::MEDFileField1TS(const MEDFileField1TSWithoutSDA& other, bool shallowCopyOfContent)
++try:MEDFileTemplateField1TS<double>(other,shallowCopyOfContent)
++{
++}
++catch(INTERP_KERNEL::Exception& e)
++{ throw e; }
++
++MEDFileField1TS *MEDFileField1TS::shallowCpy() const
++{
++  return new MEDFileField1TS(*this);
++}
++
++std::vector< std::vector<DataArrayDouble *> > MEDFileField1TS::getFieldSplitedByType2(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF,
++                                                                                      std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
++{
++  return contentNotNull()->getFieldSplitedByType2(mname,types,typesF,pfls,locs);
++}
++
++//= MEDFileIntField1TS
++
++MCAuto<MEDCouplingFieldDouble> MEDFileIntField1TS::ConvertFieldIntToFieldDouble(const MEDCouplingFieldInt *f)
++{
++  if(!f)
++    throw INTERP_KERNEL::Exception("MEDFileIntField1TS::ConvertFieldIntToFieldDouble : null input field !");
++  int t1,t2;
++  double t0(f->getTime(t1,t2));
++  std::string tu(f->getTimeUnit());
++  MCAuto<MEDCouplingFieldTemplate> ft(MEDCouplingFieldTemplate::New(*f));
++  MCAuto<MEDCouplingFieldDouble> ret(MEDCouplingFieldDouble::New(*ft));
++  ret->setTime(t0,t1,t2); ret->setTimeUnit(tu);
++  return ret;
++}
++
++//= MEDFileFloatField1TS
++
++//= MEDFileFloatField1TS
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileField1TS.hxx MEDCOUPLING_new/src/MEDLoader/MEDFileField1TS.hxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileField1TS.hxx  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileField1TS.hxx  2018-04-19 17:25:17.850799590 +0200
+@@ -0,0 +1,467 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++#ifndef __MEDFILEFIELD1TS_HXX__
++#define __MEDFILEFIELD1TS_HXX__
++
++#include "MEDLoaderDefines.hxx"
++#include "MEDFileFieldGlobs.hxx"
++#include "MEDFileFieldInternal.hxx"
++#include "MEDLoaderTraits.hxx"
++
++#include "med.h"
++
++namespace MEDCoupling
++{
++  class TimeHolder;
++  class MEDFileMeshes;
++  
++  /*!
++   * SDA is for Shared Data Arrays such as profiles.
++   */
++  class MEDFileAnyTypeField1TSWithoutSDA : public RefCountObject, public MEDFileFieldNameScope
++  {
++  public:
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA();
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order);
++    MEDLOADER_EXPORT int getIteration() const { return _iteration; }
++    MEDLOADER_EXPORT int getOrder() const { return _order; }
++    MEDLOADER_EXPORT double getTime(int& iteration, int& order) const { iteration=_iteration; order=_order; return _dt; }
++    MEDLOADER_EXPORT void setTime(int iteration, int order, double val) { _dt=val; _iteration=iteration; _order=order; }
++    MEDLOADER_EXPORT int getDimension() const;
++    MEDLOADER_EXPORT bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
++    MEDLOADER_EXPORT int getMeshIteration() const;
++    MEDLOADER_EXPORT int getMeshOrder() const;
++    MEDLOADER_EXPORT bool isDealingTS(int iteration, int order) const;
++    MEDLOADER_EXPORT std::pair<int,int> getDtIt() const;
++    MEDLOADER_EXPORT void fillIteration(std::pair<int,int>& p) const;
++    MEDLOADER_EXPORT void fillTypesOfFieldAvailable(std::vector<TypeOfField>& types) const;
++    MEDLOADER_EXPORT std::vector<TypeOfField> getTypesOfFieldAvailable() const;
++    //
++    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsed2() const;
++    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsed2() const;
++    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsedMulti2() const;
++    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsedMulti2() const;
++    MEDLOADER_EXPORT void changePflsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    MEDLOADER_EXPORT void changeLocsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    //
++    MEDLOADER_EXPORT int getNonEmptyLevels(const std::string& mname, std::vector<int>& levs) const;
++    MEDLOADER_EXPORT void convertMedBallIntoClassic();
++    MEDLOADER_EXPORT void makeReduction(INTERP_KERNEL::NormalizedCellType ct, TypeOfField tof, const DataArrayInt *pfl);
++    MEDLOADER_EXPORT std::vector< std::vector<std::pair<int,int> > > getFieldSplitedByType(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
++    //
++    MEDLOADER_EXPORT MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId);
++    MEDLOADER_EXPORT const MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId) const;
++    MEDLOADER_EXPORT void deepCpyLeavesFrom(const MEDFileAnyTypeField1TSWithoutSDA& other);
++    MEDLOADER_EXPORT void accept(MEDFileFieldVisitor& visitor) const;
++  public:
++    MEDLOADER_EXPORT int getNumberOfComponents() const;
++    MEDLOADER_EXPORT const std::vector<std::string>& getInfo() const;
++    MEDLOADER_EXPORT std::vector<std::string>& getInfo();
++    MEDLOADER_EXPORT bool presenceOfMultiDiscPerGeoType() const;
++    MEDLOADER_EXPORT bool presenceOfStructureElements() const;
++    MEDLOADER_EXPORT bool onlyStructureElements() const;
++    MEDLOADER_EXPORT void killStructureElements();
++    MEDLOADER_EXPORT void keepOnlyStructureElements();
++    MEDLOADER_EXPORT void keepOnlyOnSE(const std::string& seName);
++    MEDLOADER_EXPORT void getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const;
++    MEDLOADER_EXPORT void setInfo(const std::vector<std::string>& infos);
++    MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
++    MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
++    MEDLOADER_EXPORT int copyTinyInfoFrom(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr);
++    MEDLOADER_EXPORT void setFieldNoProfileSBT(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
++    MEDLOADER_EXPORT void setFieldProfile(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arrOfVals, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc, bool smartPflKiller=true);
++    MEDLOADER_EXPORT virtual void simpleRepr(int bkOffset, std::ostream& oss, int f1tsId) const;
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TSWithoutSDA *deepCopy() const = 0;
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TSWithoutSDA *shallowCpy() const = 0;
++    MEDLOADER_EXPORT virtual std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > splitComponents() const;
++    MEDLOADER_EXPORT virtual const char *getTypeStr() const = 0;
++    MEDLOADER_EXPORT virtual DataArray *getUndergroundDataArray() const = 0;
++    MEDLOADER_EXPORT virtual DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const = 0;
++    MEDLOADER_EXPORT virtual void setArray(DataArray *arr) = 0;
++    MEDLOADER_EXPORT virtual DataArray *createNewEmptyDataArrayInstance() const = 0;
++    MEDLOADER_EXPORT virtual DataArray *getOrCreateAndGetArray() = 0;
++    MEDLOADER_EXPORT virtual const DataArray *getOrCreateAndGetArray() const = 0;
++  public:
++    MEDLOADER_EXPORT MEDCouplingFieldDouble *fieldOnMesh(const MEDFileFieldGlobsReal *glob, const MEDFileMesh *mesh, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const;
++    MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, const std::string& mName, int renumPol, const MEDFileFieldGlobsReal *glob, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
++    MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol, const MEDFileFieldGlobsReal *glob, const MEDFileMesh *mesh, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
++    MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldAtTopLevel(TypeOfField type, const std::string& mName, int renumPol, const MEDFileFieldGlobsReal *glob, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
++    MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int renumPol, const MEDFileFieldGlobsReal *glob, const MEDCouplingMesh *mesh, const DataArrayInt *cellRenum, const DataArrayInt *nodeRenum, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
++    DataArray *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, DataArrayInt *&pfl, const MEDFileFieldGlobsReal *glob, const MEDFileFieldNameScope& nasc) const;
++  public:
++    MEDLOADER_EXPORT bool renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N, MEDFileFieldGlobsReal& glob);
++    MEDLOADER_EXPORT std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > splitDiscretizations() const;
++    MEDLOADER_EXPORT std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > splitMultiDiscrPerGeoTypes() const;
++    MEDLOADER_EXPORT int keepOnlySpatialDiscretization(TypeOfField tof, std::vector< std::pair<int,int> >& its);
++    MEDLOADER_EXPORT int keepOnlyGaussDiscretization(std::size_t idOfDisc, std::vector< std::pair<int,int> >& its);
++  public:
++    MEDLOADER_EXPORT void allocNotFromFile(int newNbOfTuples);
++    MEDLOADER_EXPORT bool allocIfNecessaryTheArrayToReceiveDataFromFile();
++    MEDLOADER_EXPORT void loadOnlyStructureOfDataRecursively(med_idt fid, const MEDFileFieldNameScope& nasc, const MEDFileMeshes *ms, const MEDFileEntities *entities);
++    MEDLOADER_EXPORT void loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc);
++    MEDLOADER_EXPORT void loadBigArraysRecursivelyIfNecessary(med_idt fid, const MEDFileFieldNameScope& nasc);
++    MEDLOADER_EXPORT void loadStructureAndBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc, const MEDFileMeshes *ms, const MEDFileEntities *entities);
++    MEDLOADER_EXPORT void unloadArrays();
++    MEDLOADER_EXPORT void writeLL(med_idt fid, const MEDFileWritable& opts, const MEDFileFieldNameScope& nasc) const;
++    MEDLOADER_EXPORT static std::string FieldNameToMEDFileConvention(const std::string& nonCorrectFieldName);
++  protected:
++    int getMeshIdFromMeshName(const std::string& mName) const;
++    int addNewEntryIfNecessary(const MEDCouplingMesh *mesh);
++    void updateData(int newLgth, const std::vector< std::pair<int,int> >& oldStartStops);
++  protected:
++    std::vector< MCAuto< MEDFileFieldPerMesh > > _field_per_mesh;
++    int _iteration;
++    int _order;
++    double _dt;
++  public:
++    //! only useable on reading
++    mutable int _csit;
++    // -3 means allocated and build from scratch
++    // -2 means allocated and read from a file
++    // -1 means not allocated and build from scratch
++    // >=0 means not allocated and read from a file
++    mutable int _nb_of_tuples_to_be_allocated;
++  };
++
++  class MEDFileIntField1TSWithoutSDA;
++
++  template<class T>
++  class MEDFileField1TSTemplateWithoutSDA : public MEDFileAnyTypeField1TSWithoutSDA
++  {
++  protected:
++    MEDFileField1TSTemplateWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order):MEDFileAnyTypeField1TSWithoutSDA(fieldName,meshName,csit,iteration,order) { }
++    MEDFileField1TSTemplateWithoutSDA() { }
++  public:
++    MEDLOADER_EXPORT void setArray(DataArray *arr);
++    MEDLOADER_EXPORT DataArray *createNewEmptyDataArrayInstance() const;
++    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getOrCreateAndGetArrayTemplate();
++    MEDLOADER_EXPORT typename Traits<T>::ArrayType const *getOrCreateAndGetArrayTemplate() const;
++    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArrayTemplate() const;
++    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArrayTemplateExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++    MEDLOADER_EXPORT DataArray *getOrCreateAndGetArray();
++    MEDLOADER_EXPORT const DataArray *getOrCreateAndGetArray() const;
++    MEDLOADER_EXPORT DataArray *getUndergroundDataArray() const;
++    MEDLOADER_EXPORT void aggregate(const typename std::vector< typename MLFieldTraits<T>::F1TSWSDAType const * >& f1tss, const std::vector< std::vector< std::pair<int,int> > >& dts);
++    MEDLOADER_EXPORT void copyTimeInfoFrom(const typename Traits<T>::FieldType *mcf);
++  protected:
++    MCAuto< typename Traits<T>::ArrayType > _arr;
++  };
++
++  /*!
++   * SDA is for Shared Data Arrays such as profiles.
++   */
++  class MEDFileField1TSWithoutSDA : public MEDFileField1TSTemplateWithoutSDA<double>
++  {
++  public:
++    MEDLOADER_EXPORT const char *getTypeStr() const;
++    MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++    MEDLOADER_EXPORT std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
++    MEDLOADER_EXPORT static void CheckMeshDimRel(int meshDimRelToMax);
++    MEDLOADER_EXPORT static std::vector<int> CheckSBTMesh(const MEDCouplingMesh *mesh);
++    MEDLOADER_EXPORT static MEDFileField1TSWithoutSDA *New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
++  public:
++    MEDLOADER_EXPORT MEDFileField1TSWithoutSDA();
++    MEDLOADER_EXPORT MEDFileField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
++    MEDLOADER_EXPORT MEDFileField1TSWithoutSDA *shallowCpy() const;
++    MEDLOADER_EXPORT MEDFileField1TSWithoutSDA *deepCopy() const;
++    MEDLOADER_EXPORT MEDFileIntField1TSWithoutSDA *convertToInt() const;
++  public:
++    static const char TYPE_STR[];
++  };
++
++  template<class T>
++  class MEDFileField1TSNDTemplateWithoutSDA : public MEDFileField1TSTemplateWithoutSDA<T>
++  {
++  public:
++    MEDLOADER_EXPORT MEDFileField1TSWithoutSDA *convertToDouble() const;
++  protected:
++    MEDFileField1TSNDTemplateWithoutSDA() { }
++    MEDFileField1TSNDTemplateWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos):MEDFileField1TSTemplateWithoutSDA<T>(fieldName,meshName,csit,iteration,order) { }
++  };
++  
++  /*!
++   * SDA is for Shared Data Arrays such as profiles.
++   */
++  class MEDFileIntField1TSWithoutSDA : public MEDFileField1TSNDTemplateWithoutSDA<int>
++  {
++  public:
++    MEDLOADER_EXPORT MEDFileIntField1TSWithoutSDA();
++    MEDLOADER_EXPORT static MEDFileIntField1TSWithoutSDA *New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
++    MEDLOADER_EXPORT MEDFileIntField1TSWithoutSDA *deepCopy() const;
++    MEDLOADER_EXPORT MEDFileIntField1TSWithoutSDA *shallowCpy() const;
++    MEDLOADER_EXPORT const char *getTypeStr() const;
++    MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++    MEDLOADER_EXPORT DataArrayInt *getUndergroundDataArrayIntExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++  protected:
++    MEDFileIntField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
++  public:
++    MEDLOADER_EXPORT static const char TYPE_STR[];
++  };
++
++  /*!
++   * SDA is for Shared Data Arrays such as profiles.
++   */
++  class MEDFileFloatField1TSWithoutSDA : public MEDFileField1TSNDTemplateWithoutSDA<float>
++  {
++  public:
++    MEDLOADER_EXPORT MEDFileFloatField1TSWithoutSDA();
++    MEDLOADER_EXPORT static MEDFileFloatField1TSWithoutSDA *New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
++    MEDLOADER_EXPORT MEDFileFloatField1TSWithoutSDA *deepCopy() const;
++    MEDLOADER_EXPORT MEDFileFloatField1TSWithoutSDA *shallowCpy() const;
++    MEDLOADER_EXPORT const char *getTypeStr() const;
++    MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++    MEDLOADER_EXPORT DataArrayFloat *getUndergroundDataArrayFloatExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++  protected:
++    MEDFileFloatField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
++  public:
++    MEDLOADER_EXPORT static const char TYPE_STR[];
++  };
++
++  /*!
++   * User class.
++   */
++  class MEDFileAnyTypeField1TS : public RefCountObject, public MEDFileWritableStandAlone, public MEDFileFieldGlobsReal
++  {
++  protected:
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TS();
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TS(const MEDFileAnyTypeField1TSWithoutSDA& other, bool shallowCopyOfContent);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *BuildNewInstanceFromContent(MEDFileAnyTypeField1TSWithoutSDA *c);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *BuildNewInstanceFromContent(MEDFileAnyTypeField1TSWithoutSDA *c, med_idt fid);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TSWithoutSDA *BuildContentFrom(med_idt fid, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TSWithoutSDA *BuildContentFrom(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TSWithoutSDA *BuildContentFrom(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
++    MEDLOADER_EXPORT void writeLL(med_idt fid) const;
++    // direct forwarding to MEDFileAnyTypeField1TSWithoutSDA instance _content
++  public:
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(const std::string& fileName, bool loadAll=true);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(med_idt fid, bool loadAll=true);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(med_idt fid, const std::string& fieldName, bool loadAll=true);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll=true);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *NewAdv(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities);
++    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *NewAdv(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities);
++    MEDLOADER_EXPORT int getDimension() const;
++    MEDLOADER_EXPORT int getIteration() const;
++    MEDLOADER_EXPORT int getOrder() const;
++    MEDLOADER_EXPORT double getTime(int& iteration, int& order) const;
++    MEDLOADER_EXPORT void setTime(int iteration, int order, double val);
++    MEDLOADER_EXPORT std::string getName() const;
++    MEDLOADER_EXPORT void setName(const std::string& name);
++    MEDLOADER_EXPORT std::string simpleRepr() const;
++    MEDLOADER_EXPORT void simpleRepr(int bkOffset, std::ostream& oss, int f1tsId) const;
++    MEDLOADER_EXPORT std::string getDtUnit() const;
++    MEDLOADER_EXPORT void setDtUnit(const std::string& dtUnit);
++    MEDLOADER_EXPORT std::string getMeshName() const;
++    MEDLOADER_EXPORT void setMeshName(const std::string& newMeshName);
++    MEDLOADER_EXPORT bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
++    MEDLOADER_EXPORT int getMeshIteration() const;
++    MEDLOADER_EXPORT int getMeshOrder() const;
++    MEDLOADER_EXPORT int getNumberOfComponents() const;
++    MEDLOADER_EXPORT bool isDealingTS(int iteration, int order) const;
++    MEDLOADER_EXPORT std::pair<int,int> getDtIt() const;
++    MEDLOADER_EXPORT void fillIteration(std::pair<int,int>& p) const;
++    MEDLOADER_EXPORT void fillTypesOfFieldAvailable(std::vector<TypeOfField>& types) const;
++    MEDLOADER_EXPORT void setInfo(const std::vector<std::string>& infos);
++    MEDLOADER_EXPORT const std::vector<std::string>& getInfo() const;
++    MEDLOADER_EXPORT std::vector<std::string>& getInfo();
++    MEDLOADER_EXPORT bool presenceOfMultiDiscPerGeoType() const;
++    MEDLOADER_EXPORT std::vector<TypeOfField> getTypesOfFieldAvailable() const;
++    MEDLOADER_EXPORT std::vector< std::vector<std::pair<int,int> > > getFieldSplitedByType(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF,
++        std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
++    MEDLOADER_EXPORT MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId);
++    MEDLOADER_EXPORT const MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId) const;
++    MEDLOADER_EXPORT int getNonEmptyLevels(const std::string& mname, std::vector<int>& levs) const;
++    MEDLOADER_EXPORT void convertMedBallIntoClassic();
++    MEDLOADER_EXPORT void makeReduction(INTERP_KERNEL::NormalizedCellType ct, TypeOfField tof, const DataArrayInt *pfl);
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TS *extractPart(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const = 0;
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TS *shallowCpy() const = 0;
++  public:
++    MEDLOADER_EXPORT void loadArrays();
++    MEDLOADER_EXPORT void loadArraysIfNecessary();
++    MEDLOADER_EXPORT void unloadArrays();
++    MEDLOADER_EXPORT void unloadArraysWithoutDataLoss();
++    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeField1TS > > splitComponents() const;
++    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeField1TS > > splitDiscretizations() const;
++    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeField1TS > > splitMultiDiscrPerGeoTypes() const;
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TS *deepCopy() const;
++    MEDLOADER_EXPORT int copyTinyInfoFrom(const MEDCouplingFieldDouble *field, const DataArray *arr);
++    MEDLOADER_EXPORT int copyTinyInfoFrom(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr);
++  public:
++    //! underground method see MEDFileField1TSWithoutSDA::setProfileNameOnLeaf
++    MEDLOADER_EXPORT void setProfileNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newPflName, bool forceRenameOnGlob=false);
++    //! underground method see MEDFileField1TSWithoutSDA::setLocNameOnLeaf
++    MEDLOADER_EXPORT void setLocNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newLocName, bool forceRenameOnGlob=false);
++    MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
++    MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
++    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsed() const;
++    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsed() const;
++    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsedMulti() const;
++    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsedMulti() const;
++    MEDLOADER_EXPORT void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    MEDLOADER_EXPORT void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++  public:
++    MEDLOADER_EXPORT static int LocateField2(med_idt fid, int fieldIdCFormat, bool checkFieldId, std::string& fieldName, med_field_type& typcha, std::vector<std::string>& infos, std::string& dtunitOut, std::string& meshName);
++    MEDLOADER_EXPORT static int LocateField(med_idt fid, const std::string& fieldName, int& posCFormat, med_field_type& typcha, std::vector<std::string>& infos, std::string& dtunitOut, std::string& meshName);
++  public:
++    MEDLOADER_EXPORT virtual med_field_type getMEDFileFieldType() const = 0;
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA *contentNotNullBase();
++    MEDLOADER_EXPORT const MEDFileAnyTypeField1TSWithoutSDA *contentNotNullBase() const;
++  protected:
++    MCAuto<MEDFileAnyTypeField1TSWithoutSDA> _content;
++  };
++
++  class MEDFileIntField1TS;
++
++  template<class T>
++  class MEDFileTemplateField1TS : public MEDFileAnyTypeField1TS
++  {
++  public:
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New();
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const std::string& fileName, bool loadAll=true);
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(med_idt fid, bool loadAll=true);
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(DataArrayByte *db) { return BuildFromMemoryChunk<typename MLFieldTraits<T>::F1TSType>(db); }
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(med_idt fid, const std::string& fieldName, bool loadAll=true);
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true);
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll=true);
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const typename MLFieldTraits<T>::F1TSWSDAType& other, bool shallowCopyOfContent);
++  public:
++    MEDLOADER_EXPORT static typename Traits<T>::ArrayType *ReturnSafelyTypedDataArray(MCAuto<DataArray>& arr);
++    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, DataArrayInt *&pfl) const;
++    MEDLOADER_EXPORT void setArray(DataArray *arr);
++    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArray() const;
++    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++    MEDLOADER_EXPORT static MCAuto<typename Traits<T>::FieldType> SetDataArrayInField(MEDCouplingFieldDouble *f, MCAuto<DataArray>& arr);
++    MEDLOADER_EXPORT static MCAuto<MEDCouplingFieldDouble> ToFieldTemplateWithTime(const typename Traits<T>::FieldType *f);
++  public:
++    MEDLOADER_EXPORT void copyTimeInfoFrom(const typename Traits<T>::FieldType *mcf);
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *field(const MEDFileMesh *mesh) const;
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol=0) const;
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtTopLevel(TypeOfField type, int renumPol=0) const;
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const;
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldOnMeshAtLevel(TypeOfField type, const MEDCouplingMesh *mesh, int renumPol=0) const;
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtLevelOld(TypeOfField type, const std::string& mname, int meshDimRelToMax, int renumPol=0) const;
++    MEDLOADER_EXPORT void setFieldNoProfileSBT(const typename Traits<T>::FieldType *field);
++    MEDLOADER_EXPORT void setFieldProfile(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
++    MEDLOADER_EXPORT void setFieldProfileFlatly(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
++    MEDLOADER_EXPORT typename MLFieldTraits<T>::F1TSType *extractPartImpl(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const;
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TS *extractPart(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const { return this->extractPartImpl(extractDef,mm); }
++  protected:
++    ~MEDFileTemplateField1TS() { }
++    MEDFileTemplateField1TS();
++    MEDFileTemplateField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileAnyTypeField1TS(fid,loadAll,ms) { }
++    MEDFileTemplateField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileAnyTypeField1TS(fid,fieldName,loadAll,ms) { }
++    MEDFileTemplateField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileAnyTypeField1TS(fid,fieldName,iteration,order,loadAll,ms) { }
++    MEDFileTemplateField1TS(const typename MLFieldTraits<T>::F1TSWSDAType& other, bool shallowCopyOfContent):MEDFileAnyTypeField1TS(other,shallowCopyOfContent) { }
++    const typename MLFieldTraits<T>::F1TSWSDAType *contentNotNull() const;
++    typename MLFieldTraits<T>::F1TSWSDAType *contentNotNull();
++    void setFieldProfileGeneral(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, bool smartPflKiller);
++  };
++
++  /*!
++   * User class.
++   */
++  class MEDFileField1TS : public MEDFileTemplateField1TS<double>
++  {
++    friend class MEDFileTemplateField1TS<double>;
++  public:
++    MEDLOADER_EXPORT MEDFileIntField1TS *convertToInt(bool isDeepCpyGlobs=true) const;
++  public:
++    MEDLOADER_EXPORT MEDFileField1TS *shallowCpy() const;
++    MEDLOADER_EXPORT std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF,
++                                                                                          std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
++  public:
++  private:
++    med_field_type getMEDFileFieldType() const { return MED_FLOAT64; }
++  private:
++    ~MEDFileField1TS() { }
++    MEDFileField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms);
++    MEDFileField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms);
++    MEDFileField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms);
++    MEDFileField1TS(const MEDFileField1TSWithoutSDA& other, bool shallowCopyOfContent);
++    MEDFileField1TS() { }
++  };
++
++  template<class T>
++  class MEDFileNDTemplateField1TS : public MEDFileTemplateField1TS<T>
++  {
++  public:
++    MEDLOADER_EXPORT MEDFileField1TS *convertToDouble(bool isDeepCpyGlobs=true) const;
++  protected:
++    ~MEDFileNDTemplateField1TS() { }
++    MEDFileNDTemplateField1TS() { }
++    MEDFileNDTemplateField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileTemplateField1TS<T>(fid,loadAll,ms) { }
++    MEDFileNDTemplateField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileTemplateField1TS<T>(fid,fieldName,loadAll,ms) { }
++    MEDFileNDTemplateField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileTemplateField1TS<T>(fid,fieldName,iteration,order,loadAll,ms) { }
++    MEDFileNDTemplateField1TS(const typename MLFieldTraits<T>::F1TSWSDAType& other, bool shallowCopyOfContent):MEDFileTemplateField1TS<T>(other,shallowCopyOfContent) { }
++  };
++
++  class MEDFileIntField1TS : public MEDFileNDTemplateField1TS<int>
++  {
++    friend class MEDFileTemplateField1TS<int>;
++  public:
++    MEDLOADER_EXPORT MEDFileIntField1TS *shallowCpy() const { return new MEDFileIntField1TS(*this); }
++  public:
++    MEDLOADER_EXPORT static MCAuto<MEDCouplingFieldDouble> ConvertFieldIntToFieldDouble(const MEDCouplingFieldInt *f);
++  private:
++    med_field_type getMEDFileFieldType() const { return MED_INT32; }
++  private:
++    ~MEDFileIntField1TS() { }
++    MEDFileIntField1TS() { }
++    MEDFileIntField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<int>(fid,loadAll,ms) { }
++    MEDFileIntField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<int>(fid,fieldName,loadAll,ms) { }
++    MEDFileIntField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<int>(fid,fieldName,iteration,order,loadAll,ms) { }
++    /*!
++     * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
++     * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
++     *
++     * \warning this is a shallow copy constructor
++     */
++    MEDFileIntField1TS(const MEDFileIntField1TSWithoutSDA& other, bool shallowCopyOfContent):MEDFileNDTemplateField1TS<int>(other,shallowCopyOfContent) { }
++  };
++
++  class MEDFileFloatField1TS : public MEDFileNDTemplateField1TS<float>
++  {
++    friend class MEDFileTemplateField1TS<float>;
++  private:
++    med_field_type getMEDFileFieldType() const { return MED_FLOAT32; }
++    MEDLOADER_EXPORT MEDFileFloatField1TS *shallowCpy() const { return new MEDFileFloatField1TS(*this); }
++  private:
++    ~MEDFileFloatField1TS() { }
++    MEDFileFloatField1TS() { }
++    MEDFileFloatField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<float>(fid,loadAll,ms) { }
++    MEDFileFloatField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<float>(fid,fieldName,loadAll,ms) { }
++    MEDFileFloatField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<float>(fid,fieldName,iteration,order,loadAll,ms) { }
++    /*!
++     * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
++     * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
++     *
++     * \warning this is a shallow copy constructor
++     */
++    MEDFileFloatField1TS(const MEDFileFloatField1TSWithoutSDA& other, bool shallowCopyOfContent):MEDFileNDTemplateField1TS<float>(other,shallowCopyOfContent) { }
++  };
++}
++
++#endif
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileField.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileField.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileField.cxx     2018-04-19 17:04:36.741222802 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileField.cxx     2018-04-19 17:25:17.826799116 +0200
+@@ -18,7 +18,7 @@
+ //
+ // Author : Anthony Geay (EDF R&D)
+-#include "MEDFileField.txx"
++#include "MEDFileField.hxx"
+ #include "MEDFileMesh.hxx"
+ #include "MEDLoaderBase.hxx"
+ #include "MEDLoaderTraits.hxx"
+@@ -35,8923 +35,12 @@
+ #include <algorithm>
+ #include <iterator>
+-extern med_geometry_type typmai[MED_N_CELL_FIXED_GEO];
+ extern INTERP_KERNEL::NormalizedCellType typmai2[MED_N_CELL_FIXED_GEO];
+ extern med_geometry_type typmainoeud[1];
+ extern med_geometry_type typmai3[34];
+ using namespace MEDCoupling;
+-template class MEDCoupling::MEDFileField1TSTemplateWithoutSDA<int>;
+-template class MEDCoupling::MEDFileField1TSTemplateWithoutSDA<float>;
+-template class MEDCoupling::MEDFileField1TSTemplateWithoutSDA<double>;
+-template class MEDCoupling::MEDFileField1TSNDTemplateWithoutSDA<int>;
+-template class MEDCoupling::MEDFileField1TSNDTemplateWithoutSDA<float>;
+-template class MEDCoupling::MEDFileNDTemplateFieldMultiTSWithoutSDA<int>;
+-template class MEDCoupling::MEDFileNDTemplateFieldMultiTSWithoutSDA<float>;
+-template class MEDCoupling::MEDFileTemplateField1TS<int>;
+-template class MEDCoupling::MEDFileTemplateField1TS<float>;
+-template class MEDCoupling::MEDFileTemplateField1TS<double>;
+-template class MEDCoupling::MEDFileNDTemplateField1TS<int>;
+-template class MEDCoupling::MEDFileNDTemplateField1TS<float>;
+-template class MEDCoupling::MEDFileTemplateFieldMultiTS<int>;
+-template class MEDCoupling::MEDFileTemplateFieldMultiTS<float>;
+-template class MEDCoupling::MEDFileTemplateFieldMultiTS<double>;
+-template class MEDCoupling::MEDFileNDTemplateFieldMultiTS<int>;
+-template class MEDCoupling::MEDFileNDTemplateFieldMultiTS<float>;
+-
+-const char MEDFileField1TSWithoutSDA::TYPE_STR[]="FLOAT64";
+-const char MEDFileIntField1TSWithoutSDA::TYPE_STR[]="INT32";
+-const char MEDFileFloatField1TSWithoutSDA::TYPE_STR[]="FLOAT32";
+-
+-MEDFileGTKeeper::~MEDFileGTKeeper()
+-{
+-}
+-
+-MEDFileGTKeeper *MEDFileGTKeeperSta::deepCopy() const
+-{
+-  return new MEDFileGTKeeperSta(_geo_type);
+-}
+-
+-INTERP_KERNEL::NormalizedCellType MEDFileGTKeeperSta::getGeoType() const
+-{
+-  return _geo_type;
+-}
+-
+-std::string MEDFileGTKeeperSta::getRepr() const
+-{
+-  return INTERP_KERNEL::CellModel::GetCellModel(_geo_type).getRepr();
+-}
+-
+-bool MEDFileGTKeeperSta::isEqual(const MEDFileGTKeeper *other) const
+-{
+-  const MEDFileGTKeeperSta *otherC(dynamic_cast<const MEDFileGTKeeperSta *>(other));
+-  if(!otherC)
+-    return false;
+-  return _geo_type==otherC->_geo_type;
+-}
+-
+-MEDFileGTKeeperDyn::MEDFileGTKeeperDyn(const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileStructureElement *se):_mesh(mesh),_section(section),_se(se)
+-{
+-  if(mesh)
+-    mesh->incrRef();
+-  if(section)
+-    section->incrRef();
+-  if(se)
+-    se->incrRef();
+-  if(_mesh.isNull() || _section.isNull() || _se.isNull())
+-    throw INTERP_KERNEL::Exception("MEDFileGTKeeperDyn constructor : null pointer not allowed !");
+-}
+-
+-MEDFileGTKeeper *MEDFileGTKeeperDyn::deepCopy() const
+-{
+-  return new MEDFileGTKeeperDyn(_mesh,_section,_se);
+-}
+-
+-INTERP_KERNEL::NormalizedCellType MEDFileGTKeeperDyn::getGeoType() const
+-{
+-  throw INTERP_KERNEL::Exception("MEDFileGTKeeperDyn::getGeoType : not valid !");
+-}
+-
+-std::string MEDFileGTKeeperDyn::getRepr() const
+-{
+-  std::ostringstream oss;
+-  oss << _se->getDynGT();
+-  return oss.str();
+-}
+-
+-bool MEDFileGTKeeperDyn::isEqual(const MEDFileGTKeeper *other) const
+-{
+-  const MEDFileGTKeeperDyn *otherC(dynamic_cast<const MEDFileGTKeeperDyn *>(other));
+-  if(!otherC)
+-    return false;
+-  return this==otherC;
+-}
+-
+-MEDFileFieldLoc *MEDFileFieldLoc::New(med_idt fid, const std::string& locName)
+-{
+-  return new MEDFileFieldLoc(fid,locName);
+-}
+-
+-MEDFileFieldLoc *MEDFileFieldLoc::New(med_idt fid, int id, const MEDFileEntities *entities)
+-{
+-  return new MEDFileFieldLoc(fid,id,entities);
+-}
+-
+-MEDFileFieldLoc *MEDFileFieldLoc::New(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w)
+-{
+-  return new MEDFileFieldLoc(locName,geoType,refCoo,gsCoo,w);
+-}
+-
+-MEDFileFieldLoc::MEDFileFieldLoc(med_idt fid, const std::string& locName):_name(locName)
+-{
+-  med_geometry_type geotype;
+-  med_geometry_type sectiongeotype;
+-  int nsectionmeshcell;
+-  INTERP_KERNEL::AutoPtr<char> geointerpname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  INTERP_KERNEL::AutoPtr<char> sectionmeshname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  MEDlocalizationInfoByName(fid,locName.c_str(),&geotype,&_dim,&_nb_gauss_pt,geointerpname,sectionmeshname,&nsectionmeshcell,&sectiongeotype);
+-  _gt=new MEDFileGTKeeperSta((INTERP_KERNEL::NormalizedCellType)(std::distance(typmai3,std::find(typmai3,typmai3+34,geotype))));
+-  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(getGeoType()));
+-  _nb_node_per_cell=cm.getNumberOfNodes();
+-  _ref_coo.resize(_dim*_nb_node_per_cell);
+-  _gs_coo.resize(_dim*_nb_gauss_pt);
+-  _w.resize(_nb_gauss_pt);
+-  MEDlocalizationRd(fid,locName.c_str(),MED_FULL_INTERLACE,&_ref_coo[0],&_gs_coo[0],&_w[0]);
+-}
+-
+-MEDFileFieldLoc::MEDFileFieldLoc(med_idt fid, int id, const MEDFileEntities *entities)
+-{
+-  med_geometry_type geotype;
+-  med_geometry_type sectiongeotype;
+-  int nsectionmeshcell;
+-  INTERP_KERNEL::AutoPtr<char> locName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  INTERP_KERNEL::AutoPtr<char> geointerpname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  INTERP_KERNEL::AutoPtr<char> sectionmeshname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  MEDlocalizationInfo(fid,id+1,locName,&geotype,&_dim,&_nb_gauss_pt,geointerpname,sectionmeshname,&nsectionmeshcell,&sectiongeotype);
+-  _name=locName;
+-  std::string sectionName(MEDLoaderBase::buildStringFromFortran(sectionmeshname,MED_NAME_SIZE));
+-  if(sectionName.empty())
+-    {
+-      _gt=new MEDFileGTKeeperSta((INTERP_KERNEL::NormalizedCellType)(std::distance(typmai3,std::find(typmai3,typmai3+34,geotype))));
+-      const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(getGeoType()));
+-      _nb_node_per_cell=cm.getNumberOfNodes();
+-    }
+-  else
+-    {
+-      const MEDFileAllStaticEntitiesPlusDyn *entities2(dynamic_cast<const MEDFileAllStaticEntitiesPlusDyn *>(entities));
+-      if(!entities2)
+-        {
+-          std::ostringstream oss; oss << "MEDFileFieldLoc cstr : for loc \"" << _name << "\" presence of non static type ! Expect entities !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-      const MEDFileStructureElement *se(entities2->getWithGT(geotype));
+-      const MEDFileUMesh *um(entities2->getSupMeshWithName(se->getMeshName()));
+-      const MEDFileUMesh *section(entities2->getSupMeshWithName(sectionName));
+-      _gt=new MEDFileGTKeeperDyn(um,section,se);
+-      {
+-        int dummy;
+-        MEDFILESAFECALLERWR0(MEDmeshGeotypeParameter,(fid,geotype,&dummy,&_nb_node_per_cell));
+-      }
+-    }
+-  _ref_coo.resize(_dim*_nb_node_per_cell);
+-  _gs_coo.resize(_dim*_nb_gauss_pt);
+-  _w.resize(_nb_gauss_pt);
+-  MEDlocalizationRd(fid,locName,MED_FULL_INTERLACE,&_ref_coo[0],&_gs_coo[0],&_w[0]);
+-}
+-
+-MEDFileFieldLoc::MEDFileFieldLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType,
+-                                 const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w):_name(locName),_gt(new MEDFileGTKeeperSta(geoType)),_ref_coo(refCoo),_gs_coo(gsCoo),_w(w)
+-{
+-  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(getGeoType()));
+-  _dim=cm.getDimension();
+-  _nb_node_per_cell=cm.getNumberOfNodes();
+-  _nb_gauss_pt=_w.size();
+-}
+-
+-
+-MEDFileFieldLoc::MEDFileFieldLoc(const MEDFileFieldLoc& other):_dim(other._dim),_nb_gauss_pt(other._nb_gauss_pt),_gt(other._gt->deepCopy()),_nb_node_per_cell(other._nb_node_per_cell),_name(other._name),_ref_coo(other._ref_coo),_gs_coo(other._gs_coo),_w(other._w)
+-{
+-}
+-
+-MEDFileFieldLoc *MEDFileFieldLoc::deepCopy() const
+-{
+-  return new MEDFileFieldLoc(*this);
+-}
+-
+-bool MEDFileFieldLoc::isOnStructureElement() const
+-{
+-  const MEDFileGTKeeper *gt(_gt);
+-  if(!gt)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldLoc::isOnStructureElement : null pointer !");
+-  const MEDFileGTKeeperDyn *gt2(dynamic_cast<const MEDFileGTKeeperDyn *>(gt));
+-  return gt2!=NULL;
+-}
+-
+-std::size_t MEDFileFieldLoc::getHeapMemorySizeWithoutChildren() const
+-{
+-  return (_ref_coo.capacity()+_gs_coo.capacity()+_w.capacity())*sizeof(double)+_name.capacity();
+-}
+-
+-std::vector<const BigMemoryObject *> MEDFileFieldLoc::getDirectChildrenWithNull() const
+-{
+-  return std::vector<const BigMemoryObject *>();
+-}
+-
+-void MEDFileFieldLoc::simpleRepr(std::ostream& oss) const
+-{
+-  static const char OFF7[]="\n    ";
+-  oss << "\"" << _name << "\"" << OFF7;
+-  oss << "GeoType=" << _gt->getRepr() << OFF7;
+-  oss << "Dimension=" << _dim << OFF7;
+-  oss << "Number of Gauss points=" << _nb_gauss_pt << OFF7;
+-  oss << "Number of nodes per cell=" << _nb_node_per_cell << OFF7;
+-  oss << "RefCoords="; std::copy(_ref_coo.begin(),_ref_coo.end(),std::ostream_iterator<double>(oss," ")); oss << OFF7;
+-  oss << "Weights="; std::copy(_w.begin(),_w.end(),std::ostream_iterator<double>(oss," ")); oss << OFF7;
+-  oss << "GaussPtsCoords="; std::copy(_gs_coo.begin(),_gs_coo.end(),std::ostream_iterator<double>(oss," ")); oss << std::endl;
+-}
+-
+-void MEDFileFieldLoc::setName(const std::string& name)
+-{
+-  _name=name;
+-}
+-
+-bool MEDFileFieldLoc::isEqual(const MEDFileFieldLoc& other, double eps) const
+-{
+-  if(_name!=other._name)
+-    return false;
+-  if(_dim!=other._dim)
+-    return false;
+-  if(_nb_gauss_pt!=other._nb_gauss_pt)
+-    return false;
+-  if(_nb_node_per_cell!=other._nb_node_per_cell)
+-    return false;
+-  if(!_gt->isEqual(other._gt))
+-    return false;
+-  if(!MEDCouplingGaussLocalization::AreAlmostEqual(_ref_coo,other._ref_coo,eps))
+-    return false;
+-  if(!MEDCouplingGaussLocalization::AreAlmostEqual(_gs_coo,other._gs_coo,eps))
+-    return false;
+-  if(!MEDCouplingGaussLocalization::AreAlmostEqual(_w,other._w,eps))
+-    return false;
+-
+-  return true;
+-}
+-
+-void MEDFileFieldLoc::writeLL(med_idt fid) const
+-{
+-  MEDlocalizationWr(fid,_name.c_str(),typmai3[(int)getGeoType()],_dim,&_ref_coo[0],MED_FULL_INTERLACE,_nb_gauss_pt,&_gs_coo[0],&_w[0],MED_NO_INTERPOLATION,MED_NO_MESH_SUPPORT);
+-}
+-
+-std::string MEDFileFieldLoc::repr() const
+-{
+-  std::ostringstream oss; oss.precision(15);
+-  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(getGeoType()));
+-  oss << "Localization \"" << _name << "\" :\n" << "  - Geometric Type : " << cm.getRepr();
+-  oss << "\n  - Dimension : " << _dim << "\n  - Number of gauss points : ";
+-  oss << _nb_gauss_pt << "\n  - Number of nodes in cell : " << _nb_node_per_cell;
+-  oss << "\n  - Ref coords are : ";
+-  int sz=_ref_coo.size();
+-  if(sz%_dim==0)
+-    {
+-      int nbOfTuples=sz/_dim;
+-      for(int i=0;i<nbOfTuples;i++)
+-        {
+-          oss << "(";
+-          for(int j=0;j<_dim;j++)
+-            { oss << _ref_coo[i*_dim+j]; if(j!=_dim-1) oss << ", "; }
+-          oss << ") ";
+-        }
+-    }
+-  else
+-    std::copy(_ref_coo.begin(),_ref_coo.end(),std::ostream_iterator<double>(oss," "));
+-  oss << "\n  - Gauss coords in reference element : ";
+-  sz=_gs_coo.size();
+-  if(sz%_dim==0)
+-    {
+-      int nbOfTuples=sz/_dim;
+-      for(int i=0;i<nbOfTuples;i++)
+-        {
+-          oss << "(";
+-          for(int j=0;j<_dim;j++)
+-            { oss << _gs_coo[i*_dim+j]; if(j!=_dim-1) oss << ", "; }
+-          oss << ") ";
+-        }
+-    }
+-  else
+-    std::copy(_gs_coo.begin(),_gs_coo.end(),std::ostream_iterator<double>(oss," "));
+-  oss << "\n  - Weights of Gauss coords are : "; std::copy(_w.begin(),_w.end(),std::ostream_iterator<double>(oss," "));
+-  return oss.str();
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::assignFieldNoProfile(int& start, int offset, int nbOfCells, const MEDCouplingFieldTemplate *field, const DataArray *arrr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
+-{
+-  _type=field->getTypeOfField();
+-  _start=start;
+-  switch(_type)
+-  {
+-    case ON_CELLS:
+-      {
+-        getOrCreateAndGetArray()->setContigPartOfSelectedValuesSlice(_start,arrr,offset,offset+nbOfCells,1);
+-        _end=_start+nbOfCells;
+-        _nval=nbOfCells;
+-        break;
+-      }
+-    case ON_GAUSS_NE:
+-      {
+-        MCAuto<DataArrayInt> arr=field->getDiscretization()->getOffsetArr(field->getMesh());
+-        const int *arrPtr=arr->getConstPointer();
+-        getOrCreateAndGetArray()->setContigPartOfSelectedValuesSlice(_start,arrr,arrPtr[offset],arrPtr[offset+nbOfCells],1);
+-        _end=_start+(arrPtr[offset+nbOfCells]-arrPtr[offset]);
+-        _nval=nbOfCells;
+-        break;
+-      }
+-    case ON_GAUSS_PT:
+-      {
+-        const MEDCouplingFieldDiscretization *disc(field->getDiscretization());
+-        const MEDCouplingGaussLocalization& gsLoc(field->getGaussLocalization(_loc_id));
+-        const MEDCouplingFieldDiscretizationGauss *disc2(dynamic_cast<const MEDCouplingFieldDiscretizationGauss *>(disc));
+-        if(!disc2)
+-          throw INTERP_KERNEL::Exception("assignFieldNoProfile : invalid call to this method ! Internal Error !");
+-        const DataArrayInt *dai(disc2->getArrayOfDiscIds());
+-        MCAuto<DataArrayInt> dai2(disc2->getOffsetArr(field->getMesh()));
+-        const int *dai2Ptr(dai2->getConstPointer());
+-        int nbi(gsLoc.getWeights().size());
+-        MCAuto<DataArrayInt> da2(dai->selectByTupleIdSafeSlice(offset,offset+nbOfCells,1));
+-        MCAuto<DataArrayInt> da3(da2->findIdsEqual(_loc_id));
+-        const int *da3Ptr(da3->getConstPointer());
+-        if(da3->getNumberOfTuples()!=nbOfCells)
+-          {//profile : for gauss even in NoProfile !!!
+-            std::ostringstream oss; oss << "Pfl_" << nasc.getName() << "_" << INTERP_KERNEL::CellModel::GetCellModel(getGeoType()).getRepr() << "_" << _loc_id;
+-            _profile=oss.str();
+-            da3->setName(_profile.c_str());
+-            glob.appendProfile(da3);
+-          }
+-        MCAuto<DataArrayInt> da4(DataArrayInt::New());
+-        _nval=da3->getNbOfElems();
+-        da4->alloc(_nval*nbi,1);
+-        int *da4Ptr(da4->getPointer());
+-        for(int i=0;i<_nval;i++)
+-          {
+-            int ref=dai2Ptr[offset+da3Ptr[i]];
+-            for(int j=0;j<nbi;j++)
+-              *da4Ptr++=ref+j;
+-          }
+-        std::ostringstream oss2; oss2 << "Loc_" << nasc.getName() << "_" << INTERP_KERNEL::CellModel::GetCellModel(getGeoType()).getRepr() << "_" << _loc_id;
+-        _localization=oss2.str();
+-        getOrCreateAndGetArray()->setContigPartOfSelectedValues(_start,arrr,da4);
+-        _end=_start+_nval*nbi;
+-        glob.appendLoc(_localization.c_str(),getGeoType(),gsLoc.getRefCoords(),gsLoc.getGaussCoords(),gsLoc.getWeights());
+-        break;
+-      }
+-    default:
+-      throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::assignFieldNoProfile : not implemented yet for such discretization type of field !");
+-  }
+-  start=_end;
+-}
+-
+-/*!
+- * Leaf method of field with profile assignement. This method is the most general one. No optimization is done here.
+- * \param [in] pflName input containing name of profile if any. 0 if no profile (except for GAUSS_PT where a no profile can hide a profile when splitted by loc_id).
+- * \param [in] multiTypePfl is the end user profile specified in high level API
+- * \param [in] idsInPfl is the selection into the \a multiTypePfl whole profile that corresponds to the current geometric type.
+- * \param [in] locIds is the profile needed to be created for MED file format. It can be null if all cells of current geometric type are fetched in \a multiTypePfl.
+- *             \b WARNING if not null the MED file profile can be subdivided again in case of Gauss points.
+- * \param [in] mesh is the mesh coming from the MEDFileMesh instance in correspondance with the MEDFileField. The mesh inside the \a field is simply ignored.
+- */
+-void MEDFileFieldPerMeshPerTypePerDisc::assignFieldProfile(bool isPflAlone, int& start, const DataArrayInt *multiTypePfl, const DataArrayInt *idsInPfl, DataArrayInt *locIds, int nbOfEltsInWholeMesh, const MEDCouplingFieldTemplate *field, const DataArray *arrr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
+-{
+-  _profile.clear();
+-  _type=field->getTypeOfField();
+-  std::string pflName(multiTypePfl->getName());
+-  std::ostringstream oss; oss << pflName;
+-  if(_type!=ON_NODES)
+-    {
+-      if(!isPflAlone)
+-        { const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(getGeoType()); oss << "_" <<  cm.getRepr(); }
+-    }
+-  else
+-    { oss << "_NODE"; }
+-  if(locIds)
+-    {
+-      if(pflName.empty())
+-        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::assignFieldProfile : existing profile with empty name !");
+-      if(_type!=ON_GAUSS_PT)
+-        {
+-          locIds->setName(oss.str());
+-          glob.appendProfile(locIds);
+-          _profile=oss.str();
+-        }
+-    }
+-  _start=start;
+-  switch(_type)
+-  {
+-    case ON_NODES:
+-      {
+-        _nval=idsInPfl->getNumberOfTuples();
+-        getOrCreateAndGetArray()->setContigPartOfSelectedValuesSlice(_start,arrr,0,arrr->getNumberOfTuples(),1);
+-        _end=_start+_nval;
+-        break;
+-      }
+-    case ON_CELLS:
+-      {
+-        _nval=idsInPfl->getNumberOfTuples();
+-        getOrCreateAndGetArray()->setContigPartOfSelectedValues(_start,arrr,idsInPfl);
+-        _end=_start+_nval;
+-        break;
+-      }
+-    case ON_GAUSS_NE:
+-      {
+-        MCAuto<DataArrayInt> arr=field->getDiscretization()->getOffsetArr(mesh);
+-        MCAuto<DataArrayInt> arr2=arr->deltaShiftIndex();
+-        MCAuto<DataArrayInt> arr3=arr2->selectByTupleId(multiTypePfl->begin(),multiTypePfl->end());
+-        arr3->computeOffsetsFull();
+-        MCAuto<DataArrayInt> tmp=idsInPfl->buildExplicitArrByRanges(arr3);
+-        int trueNval=tmp->getNumberOfTuples();
+-        _nval=idsInPfl->getNumberOfTuples();
+-        getOrCreateAndGetArray()->setContigPartOfSelectedValues(_start,arrr,tmp);
+-        _end=_start+trueNval;
+-        break;
+-      }
+-    case ON_GAUSS_PT:
+-      {
+-        const MEDCouplingFieldDiscretizationGauss *disc2=dynamic_cast<const MEDCouplingFieldDiscretizationGauss *>(field->getDiscretization());
+-        if(!disc2)
+-          throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : invalid call to this method ! Internal Error !");
+-        const DataArrayInt *da1=disc2->getArrayOfDiscIds();
+-        const MEDCouplingGaussLocalization& gsLoc=field->getGaussLocalization(_loc_id);
+-        MCAuto<DataArrayInt> da2=da1->selectByTupleId(idsInPfl->begin(),idsInPfl->end());
+-        MCAuto<DataArrayInt> da3=da2->findIdsEqual(_loc_id);
+-        MCAuto<DataArrayInt> da4=idsInPfl->selectByTupleId(da3->begin(),da3->end());
+-        //
+-        MCAuto<MEDCouplingMesh> mesh2=mesh->buildPart(multiTypePfl->begin(),multiTypePfl->end());
+-        MCAuto<DataArrayInt> arr=disc2->getOffsetArr(mesh2);
+-        //
+-        MCAuto<DataArrayInt> tmp=DataArrayInt::New();
+-        int trueNval=0;
+-        for(const int *pt=da4->begin();pt!=da4->end();pt++)
+-          trueNval+=arr->getIJ(*pt+1,0)-arr->getIJ(*pt,0);
+-        tmp->alloc(trueNval,1);
+-        int *tmpPtr=tmp->getPointer();
+-        for(const int *pt=da4->begin();pt!=da4->end();pt++)
+-          for(int j=arr->getIJ(*pt,0);j<arr->getIJ(*pt+1,0);j++)
+-            *tmpPtr++=j;
+-        //
+-        _nval=da4->getNumberOfTuples();
+-        getOrCreateAndGetArray()->setContigPartOfSelectedValues(_start,arrr,tmp);
+-        _end=_start+trueNval;
+-        oss << "_loc_" << _loc_id;
+-        if(locIds)
+-          {
+-            MCAuto<DataArrayInt> da5=locIds->selectByTupleId(da3->begin(),da3->end());
+-            da5->setName(oss.str());
+-            glob.appendProfile(da5);
+-            _profile=oss.str();
+-          }
+-        else
+-          {
+-            if(!da3->isIota(nbOfEltsInWholeMesh))
+-              {
+-                da3->setName(oss.str());
+-                glob.appendProfile(da3);
+-                _profile=oss.str();
+-              }
+-          }
+-        std::ostringstream oss2; oss2 << "Loc_" << nasc.getName() << "_" << INTERP_KERNEL::CellModel::GetCellModel(getGeoType()).getRepr() << "_" << _loc_id;
+-        _localization=oss2.str();
+-        glob.appendLoc(_localization.c_str(),getGeoType(),gsLoc.getRefCoords(),gsLoc.getGaussCoords(),gsLoc.getWeights());
+-        break;
+-      }
+-    default:
+-      throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::assignFieldProfile : not implemented yet for such discretization type of field !");
+-  }
+-  start=_end;
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arrr, MEDFileFieldGlobsReal& glob)
+-{
+-  _start=start;
+-  _nval=arrr->getNumberOfTuples();
+-  getOrCreateAndGetArray()->setContigPartOfSelectedValuesSlice(_start,arrr,0,_nval,1);
+-  _end=_start+_nval;
+-  start=_end;
+-}
+-
+-MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypePerDisc::NewOnRead(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int profileIt, const PartDefinition *pd)
+-{
+-  return new MEDFileFieldPerMeshPerTypePerDisc(fath,type,profileIt,pd);
+-}
+-
+-MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypePerDisc::New(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int locId)
+-{
+-  return new MEDFileFieldPerMeshPerTypePerDisc(fath,type,locId,std::string());
+-}
+-
+-MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypePerDisc::New(const MEDFileFieldPerMeshPerTypePerDisc& other)
+-{
+-  return new MEDFileFieldPerMeshPerTypePerDisc(other);
+-}
+-
+-std::size_t MEDFileFieldPerMeshPerTypePerDisc::getHeapMemorySizeWithoutChildren() const
+-{
+-  return _profile.capacity()+_localization.capacity()+sizeof(MEDFileFieldPerMeshPerTypePerDisc);
+-}
+-
+-std::vector<const BigMemoryObject *> MEDFileFieldPerMeshPerTypePerDisc::getDirectChildrenWithNull() const
+-{
+-  std::vector<const BigMemoryObject *> ret(1);
+-  ret[0]=(const PartDefinition*)_pd;
+-  return ret;
+-}
+-
+-MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypePerDisc::deepCopy(MEDFileFieldPerMeshPerTypeCommon *father) const
+-{
+-  MCAuto<MEDFileFieldPerMeshPerTypePerDisc> ret(new MEDFileFieldPerMeshPerTypePerDisc(*this));
+-  ret->_father=father;
+-  return ret.retn();
+-}
+-
+-MEDFileFieldPerMeshPerTypePerDisc::MEDFileFieldPerMeshPerTypePerDisc(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField atype, int profileIt, const PartDefinition *pd)
+-try:_type(atype),_father(fath),_profile_it(profileIt),_pd(const_cast<PartDefinition *>(pd))
+-{
+-  if(pd)
+-    pd->incrRef();
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{
+-    throw e;
+-}
+-
+-MEDFileFieldPerMeshPerTypePerDisc::MEDFileFieldPerMeshPerTypePerDisc(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int locId, const std::string& dummy):_type(type),_father(fath),_loc_id(locId)
+-{
+-}
+-
+-MEDFileFieldPerMeshPerTypePerDisc::MEDFileFieldPerMeshPerTypePerDisc(const MEDFileFieldPerMeshPerTypePerDisc& other):RefCountObject(other),_type(other._type),_father(0),_start(other._start),_end(other._end),_nval(other._nval),_profile(other._profile),_localization(other._localization),_loc_id(other._loc_id),_profile_it(other._profile_it),_pd(other._pd),_tmp_work1(other._tmp_work1)
+-{
+-}
+-
+-MEDFileFieldPerMeshPerTypePerDisc::MEDFileFieldPerMeshPerTypePerDisc():_type(ON_CELLS),_father(0),_start(-std::numeric_limits<int>::max()),_end(-std::numeric_limits<int>::max()),
+-    _nval(-std::numeric_limits<int>::max()),_loc_id(-std::numeric_limits<int>::max())
+-{
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::goReadZeValuesInFile(med_idt fid, const std::string& fieldName, int nbOfCompo, int iteration, int order, med_entity_type menti, med_geometry_type mgeoti, unsigned char *startFeedingPtr)
+-{
+-  const PartDefinition *pd(_pd);
+-  if(!pd)
+-    {
+-      INTERP_KERNEL::AutoPtr<char> locname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-      int nbi,tmp1;
+-      med_int nbValsInFile(MEDfieldnValueWithProfileByName(fid,fieldName.c_str(),iteration,order,menti,mgeoti,_profile.c_str(),MED_COMPACT_PFLMODE,&tmp1,locname,&nbi));
+-      if(_end-_start!=nbValsInFile*nbi)
+-        {
+-          std::ostringstream oss; oss << "MEDFileFieldPerMeshPerTypePerDisc::goReadZeValuesInFile : The number of tuples to read is " << nbValsInFile << "*" << nbi <<  " (nb integration points) ! But in data structure it values " << _end-_start << " is expected !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-      MEDFILESAFECALLERRD0(MEDfieldValueWithProfileRd,(fid,fieldName.c_str(),iteration,order,menti,mgeoti,MED_COMPACT_PFLMODE,_profile.c_str(),MED_FULL_INTERLACE,MED_ALL_CONSTITUENT,startFeedingPtr));
+-    }
+-  else
+-    {
+-      if(!_profile.empty())
+-        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::goReadZeValuesInFile : not implemented !");
+-      INTERP_KERNEL::AutoPtr<char> pflname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE)),locname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-      int profilesize,nbi;
+-      int overallNval(MEDfieldnValueWithProfile(fid,fieldName.c_str(),iteration,order,menti,mgeoti,_profile_it+1,MED_COMPACT_PFLMODE,pflname,&profilesize,locname,&nbi));
+-      const SlicePartDefinition *spd(dynamic_cast<const SlicePartDefinition *>(pd));
+-      if(spd)
+-        {
+-          int start,stop,step;
+-          spd->getSlice(start,stop,step);
+-          int nbOfEltsToLoad(DataArray::GetNumberOfItemGivenBES(start,stop,step,"MEDFileFieldPerMeshPerTypePerDisc::goReadZeValuesInFile"));
+-          med_filter filter=MED_FILTER_INIT;
+-          MEDfilterBlockOfEntityCr(fid,/*nentity*/overallNval,/*nvaluesperentity*/nbi,/*nconstituentpervalue*/nbOfCompo,
+-                                   MED_ALL_CONSTITUENT,MED_FULL_INTERLACE,MED_COMPACT_STMODE,MED_NO_PROFILE,
+-                                   /*start*/start+1,/*stride*/step,/*count*/1,/*blocksize*/nbOfEltsToLoad,
+-                                   /*lastblocksize=useless because count=1*/0,&filter);
+-          MEDFILESAFECALLERRD0(MEDfieldValueAdvancedRd,(fid,fieldName.c_str(),iteration,order,menti,mgeoti,&filter,startFeedingPtr));
+-          MEDfilterClose(&filter);
+-          return ;
+-        }
+-      const DataArrayPartDefinition *dpd(dynamic_cast<const DataArrayPartDefinition *>(pd));
+-      if(dpd)
+-        {
+-          dpd->checkConsistencyLight();
+-          MCAuto<DataArrayInt> myIds(dpd->toDAI());
+-          int a(myIds->getMinValueInArray()),b(myIds->getMaxValueInArray());
+-          myIds=myIds->deepCopy();// WARNING deep copy here because _pd is modified by applyLin !!!
+-          myIds->applyLin(1,-a);
+-          int nbOfEltsToLoad(b-a+1);
+-          med_filter filter=MED_FILTER_INIT;
+-          {//TODO : manage int32 !
+-            MCAuto<DataArrayDouble> tmp(DataArrayDouble::New());
+-            tmp->alloc(nbOfEltsToLoad,nbOfCompo);
+-            MEDfilterBlockOfEntityCr(fid,/*nentity*/overallNval,/*nvaluesperentity*/nbi,/*nconstituentpervalue*/nbOfCompo,
+-                                     MED_ALL_CONSTITUENT,MED_FULL_INTERLACE,MED_COMPACT_STMODE,MED_NO_PROFILE,
+-                                     /*start*/a+1,/*stride*/1,/*count*/1,/*blocksize*/nbOfEltsToLoad,
+-                                     /*lastblocksize=useless because count=1*/0,&filter);
+-            MEDFILESAFECALLERRD0(MEDfieldValueAdvancedRd,(fid,fieldName.c_str(),iteration,order,menti,mgeoti,&filter,reinterpret_cast<unsigned char *>(tmp->getPointer())));
+-            MCAuto<DataArrayDouble> feeder(DataArrayDouble::New());
+-            feeder->useExternalArrayWithRWAccess(reinterpret_cast<double *>(startFeedingPtr),_nval,nbOfCompo);
+-            feeder->setContigPartOfSelectedValues(0,tmp,myIds);
+-          }
+-          MEDfilterClose(&filter);
+-        }
+-      else
+-        throw INTERP_KERNEL::Exception("Not implemented yet for not slices!");
+-    }
+-}
+-
+-const MEDFileFieldPerMeshPerTypeCommon *MEDFileFieldPerMeshPerTypePerDisc::getFather() const
+-{
+-  return _father;
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::loadOnlyStructureOfDataRecursively(med_idt fid, int& start, const MEDFileFieldNameScope& nasc)
+-{
+-  INTERP_KERNEL::AutoPtr<char> locname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  INTERP_KERNEL::AutoPtr<char> pflname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  std::string fieldName(nasc.getName()),meshName(getMeshName());
+-  int iteration(getIteration()),order(getOrder()),profilesize,nbi;
+-  TypeOfField type(getType());
+-  med_geometry_type mgeoti;
+-  med_entity_type menti;
+-  _father->entriesForMEDfile(type,mgeoti,menti);
+-  int zeNVal(MEDfieldnValueWithProfile(fid,fieldName.c_str(),iteration,order,menti,mgeoti,_profile_it+1,MED_COMPACT_PFLMODE,pflname,&profilesize,locname,&nbi));
+-  _profile=MEDLoaderBase::buildStringFromFortran(pflname,MED_NAME_SIZE);
+-  _localization=MEDLoaderBase::buildStringFromFortran(locname,MED_NAME_SIZE);
+-  const PartDefinition *pd(_pd);
+-  if(!pd)
+-    {
+-      _nval=zeNVal;
+-    }
+-  else
+-    {
+-      if(!_profile.empty())
+-        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::loadOnlyStructureOfDataRecursively : profiles are not managed yet with part of def !");
+-      _nval=pd->getNumberOfElems();
+-    }
+-  _start=start;
+-  _end=start+_nval*nbi;
+-  start=_end;
+-  if(type==ON_CELLS && !_localization.empty())
+-    {
+-      if(_localization!="MED_GAUSS_ELNO")//For compatibily with MED2.3
+-        setType(ON_GAUSS_PT);
+-      else
+-        {
+-          setType(ON_GAUSS_NE);
+-          _localization.clear();
+-        }
+-    }
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::loadBigArray(med_idt fid, const MEDFileFieldNameScope& nasc)
+-{
+-  std::string fieldName(nasc.getName()),meshName(getMeshName());
+-  int iteration(getIteration()),order(getOrder());
+-  TypeOfField type(getType());
+-  med_geometry_type mgeoti;
+-  med_entity_type menti;
+-  _father->entriesForMEDfile(type,mgeoti,menti);
+-  if(_start>_end)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::loadBigArray : internal error in range !");
+-  if(_start==_end)
+-    return ;
+-  DataArray *arr(getOrCreateAndGetArray());//arr is not null due to the spec of getOrCreateAndGetArray
+-  if(_start<0 || _start>=arr->getNumberOfTuples())
+-    {
+-      std::ostringstream oss; oss << "MEDFileFieldPerMeshPerTypePerDisc::loadBigArray : Invalid start ("<< _start << ") regarding admissible range of allocated array [0," << arr->getNumberOfTuples() << ") !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  if(_end<0 || _end>arr->getNumberOfTuples())
+-    {
+-      std::ostringstream oss; oss << "MEDFileFieldPerMeshPerTypePerDisc::loadBigArray : Invalid start ("<< _start << ") regarding admissible range of allocated array [0," << arr->getNumberOfTuples() << "] !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  int nbOfCompo(arr->getNumberOfComponents());
+-  DataArrayDouble *arrD(dynamic_cast<DataArrayDouble *>(arr));
+-  if(arrD)
+-    {
+-      double *startFeeding(arrD->getPointer()+_start*nbOfCompo);
+-      goReadZeValuesInFile(fid,fieldName,nbOfCompo,iteration,order,menti,mgeoti,reinterpret_cast<unsigned char*>(startFeeding));
+-      return ;
+-    }
+-  DataArrayInt *arrI(dynamic_cast<DataArrayInt *>(arr));
+-  if(arrI)
+-    {
+-      int *startFeeding(arrI->getPointer()+_start*nbOfCompo);
+-      goReadZeValuesInFile(fid,fieldName,nbOfCompo,iteration,order,menti,mgeoti,reinterpret_cast<unsigned char*>(startFeeding));
+-      return ;
+-    }
+-  throw INTERP_KERNEL::Exception("Error on array reading ! Unrecognized type of field ! Should be in FLOAT64 or INT32 !");
+-}
+-
+-/*!
+- * Set a \c this->_start **and** \c this->_end keeping the same delta between the two.
+- */
+-void MEDFileFieldPerMeshPerTypePerDisc::setNewStart(int newValueOfStart)
+-{
+-  int delta=_end-_start;
+-  _start=newValueOfStart;
+-  _end=_start+delta;
+-}
+-
+-int MEDFileFieldPerMeshPerTypePerDisc::getIteration() const
+-{
+-  return _father->getIteration();
+-}
+-
+-int MEDFileFieldPerMeshPerTypePerDisc::getOrder() const
+-{
+-  return _father->getOrder();
+-}
+-
+-double MEDFileFieldPerMeshPerTypePerDisc::getTime() const
+-{
+-  return _father->getTime();
+-}
+-
+-std::string MEDFileFieldPerMeshPerTypePerDisc::getMeshName() const
+-{
+-  return _father->getMeshName();
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::simpleRepr(int bkOffset, std::ostream& oss, int id) const
+-{
+-  const char startLine[]="    ## ";
+-  std::string startLine2(bkOffset,' ');
+-  startLine2+=startLine;
+-  INTERP_KERNEL::AutoCppPtr<MEDCouplingFieldDiscretization> tmp(MEDCouplingFieldDiscretization::New(_type));
+-  oss << startLine2 << "Localization #" << id << "." << std::endl;
+-  oss << startLine2 << "  Type=" << tmp->getRepr() << "." << std::endl;
+-  oss << startLine2 << "  This type discretization lies on profile : \"" << _profile << "\" and on the following localization : \"" << _localization << "\"." << std::endl;
+-  oss << startLine2 << "  This type discretization has " << _end-_start << " tuples (start=" << _start << ", end=" << _end << ")." << std::endl;
+-  oss << startLine2 << "  This type discretization has " << (_end-_start)/_nval << " integration points." << std::endl;
+-}
+-
+-TypeOfField MEDFileFieldPerMeshPerTypePerDisc::getType() const
+-{
+-  return _type;
+-}
+-
+-INTERP_KERNEL::NormalizedCellType MEDFileFieldPerMeshPerTypePerDisc::getGeoType() const
+-{
+-  return _father->getGeoType();
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const
+-{
+-  types.insert(_type);
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::setType(TypeOfField newType)
+-{
+-  _type=newType;
+-}
+-
+-int MEDFileFieldPerMeshPerTypePerDisc::getNumberOfComponents() const
+-{
+-  return _father->getNumberOfComponents();
+-}
+-
+-int MEDFileFieldPerMeshPerTypePerDisc::getNumberOfTuples() const
+-{
+-  return _end-_start;
+-}
+-
+-DataArray *MEDFileFieldPerMeshPerTypePerDisc::getOrCreateAndGetArray()
+-{
+-  return _father->getOrCreateAndGetArray();
+-}
+-
+-const DataArray *MEDFileFieldPerMeshPerTypePerDisc::getOrCreateAndGetArray() const
+-{
+-  const MEDFileFieldPerMeshPerTypeCommon *fath=_father;
+-  return fath->getOrCreateAndGetArray();
+-}
+-
+-const std::vector<std::string>& MEDFileFieldPerMeshPerTypePerDisc::getInfo() const
+-{
+-  return _father->getInfo();
+-}
+-
+-std::string MEDFileFieldPerMeshPerTypePerDisc::getProfile() const
+-{
+-  return _profile;
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::setProfile(const std::string& newPflName)
+-{
+-  _profile=newPflName;
+-}
+-
+-std::string MEDFileFieldPerMeshPerTypePerDisc::getLocalization() const
+-{
+-  return _localization;
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::setLocalization(const std::string& newLocName)
+-{
+-  _localization=newLocName;
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< std::pair<std::vector<std::string>, std::string > >::const_iterator it2=mapOfModif.begin();it2!=mapOfModif.end();it2++)
+-    {
+-      if(std::find((*it2).first.begin(),(*it2).first.end(),_profile)!=(*it2).first.end())
+-        {
+-          _profile=(*it2).second;
+-          return;
+-        }
+-    }
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< std::pair<std::vector<std::string>, std::string > >::const_iterator it2=mapOfModif.begin();it2!=mapOfModif.end();it2++)
+-    {
+-      if(std::find((*it2).first.begin(),(*it2).first.end(),_localization)!=(*it2).first.end())
+-        {
+-          _localization=(*it2).second;
+-          return;
+-        }
+-    }
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::getFieldAtLevel(TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const
+-{
+-  if(type!=_type)
+-    return ;
+-  dads.push_back(std::pair<int,int>(_start,_end));
+-  geoTypes.push_back(getGeoType());
+-  if(_profile.empty())
+-    pfls.push_back(0);
+-  else
+-    {
+-      pfls.push_back(glob->getProfile(_profile.c_str()));
+-    }
+-  if(_localization.empty())
+-    locs.push_back(-1);
+-  else
+-    {
+-      locs.push_back(glob->getLocalizationId(_localization.c_str()));
+-    }
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::fillValues(int discId, int& startEntryId, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
+-{
+-  entries[startEntryId]=std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int> ,std::pair<int,int> >(std::pair<INTERP_KERNEL::NormalizedCellType,int>(getGeoType(),discId),std::pair<int,int>(_start,_end));
+-  startEntryId++;
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const
+-{
+-  TypeOfField type=getType();
+-  INTERP_KERNEL::NormalizedCellType geoType(getGeoType());
+-  med_geometry_type mgeoti;
+-  med_entity_type menti;
+-  _father->entriesForMEDfile(getType(),mgeoti,menti);
+-  const DataArray *arr(getOrCreateAndGetArray());
+-  if(!arr)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::writeLL : no array set !");
+-  if(!arr->isAllocated())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::writeLL : the array to be written is not allocated !");
+-  const DataArrayDouble *arrD=dynamic_cast<const DataArrayDouble *>(arr);
+-  const DataArrayInt *arrI=dynamic_cast<const DataArrayInt *>(arr);
+-  const unsigned char *locToWrite=0;
+-  if(arrD)
+-    locToWrite=reinterpret_cast<const unsigned char *>(arrD->getConstPointer()+_start*arr->getNumberOfComponents());
+-  else if(arrI)
+-    locToWrite=reinterpret_cast<const unsigned char *>(arrI->getConstPointer()+_start*arr->getNumberOfComponents());
+-  else
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::writeLL : not recognized type of values ! Supported are FLOAT64 and INT32 !");
+-  MEDFILESAFECALLERWR0(MEDfieldValueWithProfileWr,(fid,nasc.getName().c_str(),getIteration(),getOrder(),getTime(),menti,mgeoti,
+-                                                   MED_COMPACT_PFLMODE,_profile.c_str(),_localization.c_str(),MED_FULL_INTERLACE,MED_ALL_CONSTITUENT,_nval,
+-                                                   locToWrite));
+-}
+-
+-void MEDFileFieldPerMeshPerTypePerDisc::getCoarseData(TypeOfField& type, std::pair<int,int>& dad, std::string& pfl, std::string& loc) const
+-{
+-  type=_type;
+-  pfl=_profile;
+-  loc=_localization;
+-  dad.first=_start; dad.second=_end;
+-}
+-
+-/*!
+- * \param [in] codeOfMesh is of format returned by MEDCouplingUMesh::getDistributionOfTypes. And for each *i* oldCode[3*i+2] gives the position (MEDFileUMesh::PutInThirdComponentOfCodeOffset).
+- *             This code corresponds to the distribution of types in the corresponding mesh.
+- * \param [out] ptToFill memory zone where the output will be stored.
+- * \return the size of data pushed into output param \a ptToFill
+- */
+-int MEDFileFieldPerMeshPerTypePerDisc::fillEltIdsFromCode(int offset, const std::vector<int>& codeOfMesh, const MEDFileFieldGlobsReal& glob, int *ptToFill) const
+-{
+-  _loc_id=offset;
+-  std::ostringstream oss;
+-  std::size_t nbOfType=codeOfMesh.size()/3;
+-  int found=-1;
+-  for(std::size_t i=0;i<nbOfType && found==-1;i++)
+-    if(getGeoType()==(INTERP_KERNEL::NormalizedCellType)codeOfMesh[3*i])
+-      found=(int)i;
+-  if(found==-1)
+-    {
+-      const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(getGeoType());
+-      oss << "MEDFileFieldPerMeshPerTypePerDisc::fillEltIdsFromCode : not found geometric type " << cm.getRepr() << " in the referenced mesh of field !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  int *work=ptToFill;
+-  if(_profile.empty())
+-    {
+-      if(_nval!=codeOfMesh[3*found+1])
+-        {
+-          const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(getGeoType());
+-          oss << "MEDFileFieldPerMeshPerTypePerDisc::fillEltIdsFromCode : for geometric type " << cm.getRepr() << " number of elt ids in mesh is equal to " << _nval;
+-          oss << " whereas mesh has " << codeOfMesh[3*found+1] << " for this geometric type !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-      for(int ii=codeOfMesh[3*found+2];ii<codeOfMesh[3*found+2]+_nval;ii++)
+-        *work++=ii;
+-    }
+-  else
+-    {
+-      const DataArrayInt *pfl=glob.getProfile(_profile.c_str());
+-      if(pfl->getNumberOfTuples()!=_nval)
+-        {
+-          const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(getGeoType());
+-          oss << "MEDFileFieldPerMeshPerTypePerDisc::fillEltIdsFromCode : for geometric type " << cm.getRepr() << ", field is defined on profile \"" << _profile << "\" and size of profile is ";
+-          oss << _nval;
+-          oss << pfl->getNumberOfTuples() << " whereas the number of ids is set to " << _nval << " for this geometric type !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-      int offset2=codeOfMesh[3*found+2];
+-      for(const int *pflId=pfl->begin();pflId!=pfl->end();pflId++)
+-        {
+-          if(*pflId<codeOfMesh[3*found+1])
+-            *work++=offset2+*pflId;
+-        }
+-    }
+-  return _nval;
+-}
+-
+-int MEDFileFieldPerMeshPerTypePerDisc::fillTupleIds(int *ptToFill) const
+-{
+-  for(int i=_start;i<_end;i++)
+-    *ptToFill++=i;
+-  return _end-_start;
+-}
+-
+-int MEDFileFieldPerMeshPerTypePerDisc::ConvertType(TypeOfField type, int locId)
+-{
+-  switch(type)
+-  {
+-    case ON_CELLS:
+-      return -2;
+-    case ON_GAUSS_NE:
+-      return -1;
+-    case ON_GAUSS_PT:
+-      return locId;
+-    default:
+-      throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::ConvertType : not managed type of field !");
+-  }
+-}
+-
+-std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> > MEDFileFieldPerMeshPerTypePerDisc::SplitPerDiscretization(const std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>& entries)
+-{
+-  int id=0;
+-  std::map<std::pair<std::string,TypeOfField>,int> m;
+-  std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> > ret;
+-  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=entries.begin();it!=entries.end();it++)
+-    if(m.find(std::pair<std::string,TypeOfField>((*it)->getLocalization(),(*it)->getType()))==m.end())
+-      m[std::pair<std::string,TypeOfField>((*it)->getLocalization(),(*it)->getType())]=id++;
+-  ret.resize(id);
+-  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=entries.begin();it!=entries.end();it++)
+-    ret[m[std::pair<std::string,TypeOfField>((*it)->getLocalization(),(*it)->getType())]].push_back(*it);
+-  return ret;
+-}
+-
+-/*!
+- * - \c this->_loc_id mutable attribute is used for elt id in mesh offsets.
+- * 
+- * \param [in] offset the offset id used to take into account that \a result is not compulsary empty in input
+- * \param [in] entriesOnSameDisc some entries **on same localization** if not the result can be invalid. The _start and _end on them are relative to \a arr parameter.
+- * \param [in] explicitIdsInMesh ids in mesh of the considered chunk.
+- * \param [in] newCode one of the input parameter to explicit the new geo type dispatch (in classical format same than those asked by MEDFileFields::renumberEntitiesLyingOnMesh)
+- * \param [in,out] glob if necessary by the method, new profiles can be added to it
+- * \param [in,out] arr after the call of this method \a arr is renumbered to be compliant with added entries to \a result.
+- * \param [out] result All new entries will be appended on it.
+- * \return false if the configuration of renumbering leads to an unnecessary resplit of input \a entriesOnSameDisc. If not true is returned (the most general case !)
+- */
+-bool MEDFileFieldPerMeshPerTypePerDisc::RenumberChunks(int offset, const std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>& entriesOnSameDisc,
+-                                                       const DataArrayInt *explicitIdsInMesh,
+-                                                       const std::vector<int>& newCode,
+-                                                       MEDFileFieldGlobsReal& glob, DataArrayDouble *arr,
+-                                                       std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >& result)
+-{
+-  if(entriesOnSameDisc.empty())
+-    return false;
+-  TypeOfField type=entriesOnSameDisc[0]->getType();
+-  int szEntities=0,szTuples=0;
+-  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=entriesOnSameDisc.begin();it!=entriesOnSameDisc.end();it++)
+-    { szEntities+=(*it)->_nval; szTuples+=(*it)->_end-(*it)->_start; }
+-  int nbi=szTuples/szEntities;
+-  if(szTuples%szEntities!=0)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::RenumberChunks : internal error the splitting into same dicretization failed !");
+-  MCAuto<DataArrayInt> renumTuples=DataArrayInt::New(); renumTuples->alloc(szTuples,1);
+-  MCAuto<DataArrayInt> ranges=MEDCouplingUMesh::ComputeRangesFromTypeDistribution(newCode);
+-  std::vector< MCAuto<DataArrayInt> > newGeoTypesPerChunk(entriesOnSameDisc.size());
+-  std::vector< const DataArrayInt * > newGeoTypesPerChunk2(entriesOnSameDisc.size());
+-  std::vector< MCAuto<DataArrayInt> > newGeoTypesPerChunk_bis(entriesOnSameDisc.size());
+-  std::vector< const DataArrayInt * > newGeoTypesPerChunk3(entriesOnSameDisc.size());
+-  MCAuto<DataArrayInt> newGeoTypesPerChunk4=DataArrayInt::New(); newGeoTypesPerChunk4->alloc(szEntities,nbi);
+-  int id=0;
+-  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=entriesOnSameDisc.begin();it!=entriesOnSameDisc.end();it++,id++)
+-    {
+-      int startOfEltIdOfChunk=(*it)->_start;
+-      MCAuto<DataArrayInt> newEltIds=explicitIdsInMesh->subArray(startOfEltIdOfChunk,startOfEltIdOfChunk+(*it)->_nval);
+-      MCAuto<DataArrayInt> rangeIdsForChunk=newEltIds->findRangeIdForEachTuple(ranges);
+-      MCAuto<DataArrayInt> idsInRrangeForChunk=newEltIds->findIdInRangeForEachTuple(ranges);
+-      //
+-      MCAuto<DataArrayInt> tmp=rangeIdsForChunk->duplicateEachTupleNTimes(nbi); rangeIdsForChunk->rearrange(nbi);
+-      newGeoTypesPerChunk4->setPartOfValues1(tmp,(*it)->_tmp_work1-offset,(*it)->_tmp_work1+(*it)->_nval*nbi-offset,1,0,nbi,1);
+-      //
+-      newGeoTypesPerChunk[id]=rangeIdsForChunk; newGeoTypesPerChunk2[id]=rangeIdsForChunk;
+-      newGeoTypesPerChunk_bis[id]=idsInRrangeForChunk; newGeoTypesPerChunk3[id]=idsInRrangeForChunk;
+-    }
+-  MCAuto<DataArrayInt> newGeoTypesEltIdsAllGather=DataArrayInt::Aggregate(newGeoTypesPerChunk2); newGeoTypesPerChunk.clear(); newGeoTypesPerChunk2.clear();
+-  MCAuto<DataArrayInt> newGeoTypesEltIdsAllGather2=DataArrayInt::Aggregate(newGeoTypesPerChunk3); newGeoTypesPerChunk_bis.clear(); newGeoTypesPerChunk3.clear();
+-  MCAuto<DataArrayInt> diffVals=newGeoTypesEltIdsAllGather->getDifferentValues();
+-  MCAuto<DataArrayInt> renumEltIds=newGeoTypesEltIdsAllGather->buildPermArrPerLevel();
+-  //
+-  MCAuto<DataArrayInt> renumTupleIds=newGeoTypesPerChunk4->buildPermArrPerLevel();
+-  //
+-  MCAuto<DataArrayDouble> arrPart=arr->subArray(offset,offset+szTuples);
+-  arrPart->renumberInPlace(renumTupleIds->begin());
+-  arr->setPartOfValues1(arrPart,offset,offset+szTuples,1,0,arrPart->getNumberOfComponents(),1);
+-  bool ret=false;
+-  const int *idIt=diffVals->begin();
+-  std::list<const MEDFileFieldPerMeshPerTypePerDisc *> li(entriesOnSameDisc.begin(),entriesOnSameDisc.end());
+-  int offset2=0;
+-  for(int i=0;i<diffVals->getNumberOfTuples();i++,idIt++)
+-    {
+-      MCAuto<DataArrayInt> ids=newGeoTypesEltIdsAllGather->findIdsEqual(*idIt);
+-      MCAuto<DataArrayInt> subIds=newGeoTypesEltIdsAllGather2->selectByTupleId(ids->begin(),ids->end());
+-      int nbEntityElts=subIds->getNumberOfTuples();
+-      bool ret2;
+-      MCAuto<MEDFileFieldPerMeshPerTypePerDisc> eltToAdd=MEDFileFieldPerMeshPerTypePerDisc::
+-          NewObjectOnSameDiscThanPool(type,(INTERP_KERNEL::NormalizedCellType)newCode[3*(*idIt)],subIds,!subIds->isIota(newCode[3*(*idIt)+1]),nbi,
+-                                      offset+offset2,
+-                                      li,glob,ret2);
+-      ret=ret || ret2;
+-      result.push_back(eltToAdd);
+-      offset2+=nbEntityElts*nbi;
+-    }
+-  ret=ret || li.empty();
+-  return ret;
+-}
+-
+-/*!
+- * \param [in] typeF type of field of new chunk
+- * \param [in] geoType the geometric type of the chunk
+- * \param [in] idsOfMeshElt the entity ids of mesh (cells or nodes) of the new chunk.
+- * \param [in] isPfl specifies if a profile is requested regarding size of \a idsOfMeshElt and the number of such entities regarding underlying mesh.
+- * \param [in] nbi number of integration points
+- * \param [in] offset The offset in the **global array of data**.
+- * \param [in,out] entriesOnSameDisc the pool **on the same discretization** inside which it will be attempted to find an existing entry corresponding exactly
+- *                 to the new chunk to create.
+- * \param [in,out] glob the global shared info that will be requested for existing profiles or to append a new profile if needed.
+- * \param [out] notInExisting If false the return newly allocated entry is not coming from \a entriesOnSameDisc. If true the output comes from copy of \a entriesOnSameDisc
+- *              and corresponding entry erased from \a entriesOnSameDisc.
+- * \return a newly allocated chunk
+- */
+-MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypePerDisc::NewObjectOnSameDiscThanPool(TypeOfField typeF, INTERP_KERNEL::NormalizedCellType geoType, DataArrayInt *idsOfMeshElt,
+-                                                                                                  bool isPfl, int nbi, int offset,
+-                                                                                                  std::list< const MEDFileFieldPerMeshPerTypePerDisc *>& entriesOnSameDisc,
+-                                                                                                  MEDFileFieldGlobsReal& glob,
+-                                                                                                  bool &notInExisting)
+-{
+-  int nbMeshEntities=idsOfMeshElt->getNumberOfTuples();
+-  std::list< const MEDFileFieldPerMeshPerTypePerDisc *>::iterator it=entriesOnSameDisc.begin();
+-  for(;it!=entriesOnSameDisc.end();it++)
+-    {
+-      if(((INTERP_KERNEL::NormalizedCellType)(*it)->_loc_id)==geoType && (*it)->_nval==nbMeshEntities)
+-        {
+-          if(!isPfl)
+-            {
+-              if((*it)->_profile.empty())
+-                break;
+-              else
+-                if(!(*it)->_profile.empty())
+-                  {
+-                    const DataArrayInt *pfl=glob.getProfile((*it)->_profile.c_str());
+-                    if(pfl->isEqualWithoutConsideringStr(*idsOfMeshElt))
+-                      break;
+-                  }
+-            }
+-        }
+-    }
+-  if(it==entriesOnSameDisc.end())
+-    {
+-      notInExisting=true;
+-      MEDFileFieldPerMeshPerTypePerDisc *ret=new MEDFileFieldPerMeshPerTypePerDisc;
+-      ret->_type=typeF;
+-      ret->_loc_id=(int)geoType;
+-      ret->_nval=nbMeshEntities;
+-      ret->_start=offset;
+-      ret->_end=ret->_start+ret->_nval*nbi;
+-      if(isPfl)
+-        {
+-          idsOfMeshElt->setName(glob.createNewNameOfPfl().c_str());
+-          glob.appendProfile(idsOfMeshElt);
+-          ret->_profile=idsOfMeshElt->getName();
+-        }
+-      //tony treatment of localization
+-      return ret;
+-    }
+-  else
+-    {
+-      notInExisting=false;
+-      MEDFileFieldPerMeshPerTypePerDisc *ret=MEDFileFieldPerMeshPerTypePerDisc::New(*(*it));
+-      ret->_loc_id=(int)geoType;
+-      ret->setNewStart(offset);
+-      entriesOnSameDisc.erase(it);
+-      return ret;
+-    }
+-
+-}
+-
+-////////////////////////////////////
+-
+-MEDFileFieldPerMeshPerTypeCommon::~MEDFileFieldPerMeshPerTypeCommon()
+-{
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::setFather(MEDFileFieldPerMesh *father)
+-{
+-  _father=father;
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::accept(MEDFileFieldVisitor& visitor) const
+-{
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
+-    if((*it).isNotNull())
+-      {
+-        visitor.newPerMeshPerTypePerDisc(*it);
+-      }
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::deepCopyElements()
+-{
+-  std::size_t i=0;
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++,i++)
+-    {
+-      if((const MEDFileFieldPerMeshPerTypePerDisc *)*it)
+-        _field_pm_pt_pd[i]=(*it)->deepCopy(this);
+-    }
+-}
+-
+-std::size_t MEDFileFieldPerMeshPerTypeCommon::getHeapMemorySizeWithoutChildren() const
+-{
+-  return _field_pm_pt_pd.capacity()*sizeof(MCAuto<MEDFileFieldPerMeshPerTypePerDisc>);
+-}
+-
+-std::vector<const BigMemoryObject *> MEDFileFieldPerMeshPerTypeCommon::getDirectChildrenWithNull() const
+-{
+-  std::vector<const BigMemoryObject *> ret;
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
+-    ret.push_back((const MEDFileFieldPerMeshPerTypePerDisc *)*it);
+-  return ret;
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::assignFieldNoProfile(int& start, int offset, int nbOfCells, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
+-{
+-  std::vector<int> pos=addNewEntryIfNecessary(field,offset,nbOfCells);
+-  for(std::vector<int>::const_iterator it=pos.begin();it!=pos.end();it++)
+-    _field_pm_pt_pd[*it]->assignFieldNoProfile(start,offset,nbOfCells,field,arr,glob,nasc);
+-}
+-
+-/*!
+- * This method is the most general one. No optimization is done here.
+- * \param [in] multiTypePfl is the end user profile specified in high level API
+- * \param [in] idsInPfl is the selection into the \a multiTypePfl whole profile that corresponds to the current geometric type.
+- * \param [in] locIds is the profile needed to be created for MED file format. It can be null if all cells of current geometric type are fetched in \a multiTypePfl.
+- *             \b WARNING if not null the MED file profile can be subdivided again in case of Gauss points.
+- * \param [in] nbOfEltsInWholeMesh nb of elts of type \a this->_geo_type in \b WHOLE mesh
+- * \param [in] mesh is the mesh coming from the MEDFileMesh instance in correspondance with the MEDFileField. The mesh inside the \a field is simply ignored.
+- */
+-void MEDFileFieldPerMeshPerTypeCommon::assignFieldProfile(bool isPflAlone, int& start, const DataArrayInt *multiTypePfl, const DataArrayInt *idsInPfl, DataArrayInt *locIds, int nbOfEltsInWholeMesh, const MEDCouplingFieldTemplate *field, const DataArray *arr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
+-{
+-  std::vector<int> pos=addNewEntryIfNecessary(field,idsInPfl);
+-  for(std::vector<int>::const_iterator it=pos.begin();it!=pos.end();it++)
+-    _field_pm_pt_pd[*it]->assignFieldProfile(isPflAlone,start,multiTypePfl,idsInPfl,locIds,nbOfEltsInWholeMesh,field,arr,mesh,glob,nasc);
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob)
+-{
+-  _field_pm_pt_pd.resize(1);
+-  _field_pm_pt_pd[0]=MEDFileFieldPerMeshPerTypePerDisc::New(this,ON_NODES,-3);
+-  _field_pm_pt_pd[0]->assignNodeFieldNoProfile(start,field,arr,glob);
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::assignNodeFieldProfile(int& start, const DataArrayInt *pfl, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
+-{
+-  MCAuto<DataArrayInt> pfl2=pfl->deepCopy();
+-  if(!arr || !arr->isAllocated())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypeCommon::assignNodeFieldProfile : input array is null, or not allocated !");
+-  _field_pm_pt_pd.resize(1);
+-  _field_pm_pt_pd[0]=MEDFileFieldPerMeshPerTypePerDisc::New(this,ON_NODES,-3);
+-  _field_pm_pt_pd[0]->assignFieldProfile(true,start,pfl,pfl2,pfl2,-1,field,arr,0,glob,nasc);//mesh is not requested so 0 is send.
+-}
+-
+-std::vector<int> MEDFileFieldPerMeshPerTypeCommon::addNewEntryIfNecessary(const MEDCouplingFieldTemplate *field, int offset, int nbOfCells)
+-{
+-  TypeOfField type=field->getTypeOfField();
+-  if(type!=ON_GAUSS_PT)
+-    {
+-      int locIdToFind=MEDFileFieldPerMeshPerTypePerDisc::ConvertType(type,0);
+-      int sz=_field_pm_pt_pd.size();
+-      bool found=false;
+-      for(int j=0;j<sz && !found;j++)
+-        {
+-          if(_field_pm_pt_pd[j]->getLocId()==locIdToFind)
+-            {
+-              _field_pm_pt_pd[j]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
+-              found=true;
+-            }
+-        }
+-      if(!found)
+-        {
+-          _field_pm_pt_pd.resize(sz+1);
+-          _field_pm_pt_pd[sz]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
+-        }
+-      std::vector<int> ret(1,(int)sz);
+-      return ret;
+-    }
+-  else
+-    {
+-      std::vector<int> ret2=addNewEntryIfNecessaryGauss(field,offset,nbOfCells);
+-      int sz2=ret2.size();
+-      std::vector<int> ret3(sz2);
+-      int k=0;
+-      for(int i=0;i<sz2;i++)
+-        {
+-          int sz=_field_pm_pt_pd.size();
+-          int locIdToFind=ret2[i];
+-          bool found=false;
+-          for(int j=0;j<sz && !found;j++)
+-            {
+-              if(_field_pm_pt_pd[j]->getLocId()==locIdToFind)
+-                {
+-                  _field_pm_pt_pd[j]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
+-                  ret3[k++]=j;
+-                  found=true;
+-                }
+-            }
+-          if(!found)
+-            {
+-              _field_pm_pt_pd.resize(sz+1);
+-              _field_pm_pt_pd[sz]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
+-              ret3[k++]=sz;
+-            }
+-        }
+-      return ret3;
+-    }
+-}
+-
+-std::vector<int> MEDFileFieldPerMeshPerTypeCommon::addNewEntryIfNecessaryGauss(const MEDCouplingFieldTemplate *field, int offset, int nbOfCells)
+-{
+-  const MEDCouplingFieldDiscretization *disc=field->getDiscretization();
+-  const MEDCouplingFieldDiscretizationGauss *disc2=dynamic_cast<const MEDCouplingFieldDiscretizationGauss *>(disc);
+-  if(!disc2)
+-    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : invalid call to this method ! Internal Error !");
+-  const DataArrayInt *da=disc2->getArrayOfDiscIds();
+-  if(!da)
+-    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss (no profile) : no localization ids per cell array available ! The input Gauss node field is maybe invalid !");
+-  MCAuto<DataArrayInt> da2=da->selectByTupleIdSafeSlice(offset,offset+nbOfCells,1);
+-  MCAuto<DataArrayInt> retTmp=da2->getDifferentValues();
+-  if(retTmp->presenceOfValue(-1))
+-    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : some cells have no dicretization description !");
+-  std::vector<int> ret(retTmp->begin(),retTmp->end());
+-  return ret;
+-}
+-
+-std::vector<int> MEDFileFieldPerMeshPerTypeCommon::addNewEntryIfNecessary(const MEDCouplingFieldTemplate *field, const DataArrayInt *subCells)
+-{
+-  TypeOfField type=field->getTypeOfField();
+-  if(type!=ON_GAUSS_PT)
+-    {
+-      int locIdToFind=MEDFileFieldPerMeshPerTypePerDisc::ConvertType(type,0);
+-      int sz=_field_pm_pt_pd.size();
+-      bool found=false;
+-      for(int j=0;j<sz && !found;j++)
+-        {
+-          if(_field_pm_pt_pd[j]->getLocId()==locIdToFind)
+-            {
+-              _field_pm_pt_pd[j]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
+-              found=true;
+-            }
+-        }
+-      if(!found)
+-        {
+-          _field_pm_pt_pd.resize(sz+1);
+-          _field_pm_pt_pd[sz]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
+-        }
+-      std::vector<int> ret(1,0);
+-      return ret;
+-    }
+-  else
+-    {
+-      std::vector<int> ret2=addNewEntryIfNecessaryGauss(field,subCells);
+-      int sz2=ret2.size();
+-      std::vector<int> ret3(sz2);
+-      int k=0;
+-      for(int i=0;i<sz2;i++)
+-        {
+-          int sz=_field_pm_pt_pd.size();
+-          int locIdToFind=ret2[i];
+-          bool found=false;
+-          for(int j=0;j<sz && !found;j++)
+-            {
+-              if(_field_pm_pt_pd[j]->getLocId()==locIdToFind)
+-                {
+-                  _field_pm_pt_pd[j]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
+-                  ret3[k++]=j;
+-                  found=true;
+-                }
+-            }
+-          if(!found)
+-            {
+-              _field_pm_pt_pd.resize(sz+1);
+-              _field_pm_pt_pd[sz]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
+-              ret3[k++]=sz;
+-            }
+-        }
+-      return ret3;
+-    }
+-}
+-
+-std::vector<int> MEDFileFieldPerMeshPerTypeCommon::addNewEntryIfNecessaryGauss(const MEDCouplingFieldTemplate *field, const DataArrayInt *subCells)
+-{
+-  const MEDCouplingFieldDiscretization *disc=field->getDiscretization();
+-  const MEDCouplingFieldDiscretizationGauss *disc2=dynamic_cast<const MEDCouplingFieldDiscretizationGauss *>(disc);
+-  if(!disc2)
+-    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : invalid call to this method ! Internal Error !");
+-  const DataArrayInt *da=disc2->getArrayOfDiscIds();
+-  if(!da)
+-    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : no localization ids per cell array available ! The input Gauss node field is maybe invalid !");
+-  MCAuto<DataArrayInt> da2=da->selectByTupleIdSafe(subCells->getConstPointer(),subCells->getConstPointer()+subCells->getNumberOfTuples());
+-  MCAuto<DataArrayInt> retTmp=da2->getDifferentValues();
+-  if(retTmp->presenceOfValue(-1))
+-    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : some cells have no dicretization description !");
+-  std::vector<int> ret(retTmp->begin(),retTmp->end());
+-  return ret;
+-}
+-
+-const MEDFileFieldPerMesh *MEDFileFieldPerMeshPerTypeCommon::getFather() const
+-{
+-  return _father;
+-}
+-
+-bool MEDFileFieldPerMeshPerTypeCommon::isUniqueLevel(int& dim) const
+-{
+-  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(getGeoType()));
+-  int curDim((int)cm.getDimension());
+-  if(dim!=std::numeric_limits<int>::max())
+-    {
+-      if(dim!=curDim)
+-        return false;
+-    }
+-  else
+-    dim=curDim;
+-  return true;
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const
+-{
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
+-    {
+-      (*it)->fillTypesOfFieldAvailable(types);
+-    }
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::fillFieldSplitedByType(std::vector< std::pair<int,int> >& dads, std::vector<TypeOfField>& types, std::vector<std::string>& pfls, std::vector<std::string>& locs) const
+-{
+-  int sz=_field_pm_pt_pd.size();
+-  dads.resize(sz); types.resize(sz); pfls.resize(sz); locs.resize(sz);
+-  for(int i=0;i<sz;i++)
+-    {
+-      _field_pm_pt_pd[i]->getCoarseData(types[i],dads[i],pfls[i],locs[i]);
+-    }
+-}
+-
+-int MEDFileFieldPerMeshPerTypeCommon::getIteration() const
+-{
+-  return _father->getIteration();
+-}
+-
+-int MEDFileFieldPerMeshPerTypeCommon::getOrder() const
+-{
+-  return _father->getOrder();
+-}
+-
+-double MEDFileFieldPerMeshPerTypeCommon::getTime() const
+-{
+-  return _father->getTime();
+-}
+-
+-std::string MEDFileFieldPerMeshPerTypeCommon::getMeshName() const
+-{
+-  return _father->getMeshName();
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::getSizes(int& globalSz, int& nbOfEntries) const
+-{
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
+-    {
+-      globalSz+=(*it)->getNumberOfTuples();
+-    }
+-  nbOfEntries+=(int)_field_pm_pt_pd.size();
+-}
+-
+-int MEDFileFieldPerMeshPerTypeCommon::getNumberOfComponents() const
+-{
+-  return _father->getNumberOfComponents();
+-}
+-
+-bool MEDFileFieldPerMeshPerTypeCommon::presenceOfMultiDiscPerGeoType() const
+-{
+-  std::size_t nb(0);
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
+-    {
+-      const MEDFileFieldPerMeshPerTypePerDisc *fmtd(*it);
+-      if(fmtd)
+-        nb++;
+-    }
+-  return nb>1;
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::pushDiscretization(MEDFileFieldPerMeshPerTypePerDisc *disc)
+-{
+-  MCAuto<MEDFileFieldPerMeshPerTypePerDisc> elt;
+-  elt.takeRef(disc);
+-  _field_pm_pt_pd.push_back(elt);
+-}
+-
+-DataArray *MEDFileFieldPerMeshPerTypeCommon::getOrCreateAndGetArray()
+-{
+-  return _father->getOrCreateAndGetArray();
+-}
+-
+-const DataArray *MEDFileFieldPerMeshPerTypeCommon::getOrCreateAndGetArray() const
+-{
+-  const MEDFileFieldPerMesh *fath=_father;
+-  return fath->getOrCreateAndGetArray();
+-}
+-
+-const std::vector<std::string>& MEDFileFieldPerMeshPerTypeCommon::getInfo() const
+-{
+-  return _father->getInfo();
+-}
+-
+-std::vector<std::string> MEDFileFieldPerMeshPerTypeCommon::getPflsReallyUsed() const
+-{
+-  std::vector<std::string> ret;
+-  std::set<std::string> ret2;
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
+-    {
+-      std::string tmp=(*it1)->getProfile();
+-      if(!tmp.empty())
+-        if(ret2.find(tmp)==ret2.end())
+-          {
+-            ret.push_back(tmp);
+-            ret2.insert(tmp);
+-          }
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileFieldPerMeshPerTypeCommon::getLocsReallyUsed() const
+-{
+-  std::vector<std::string> ret;
+-  std::set<std::string> ret2;
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
+-    {
+-      std::string tmp=(*it1)->getLocalization();
+-      if(!tmp.empty() && tmp!=MED_GAUSS_ELNO)
+-        if(ret2.find(tmp)==ret2.end())
+-          {
+-            ret.push_back(tmp);
+-            ret2.insert(tmp);
+-          }
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileFieldPerMeshPerTypeCommon::getPflsReallyUsedMulti() const
+-{
+-  std::vector<std::string> ret;
+-  std::set<std::string> ret2;
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
+-    {
+-      std::string tmp=(*it1)->getProfile();
+-      if(!tmp.empty())
+-        ret.push_back(tmp);
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileFieldPerMeshPerTypeCommon::getLocsReallyUsedMulti() const
+-{
+-  std::vector<std::string> ret;
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
+-    {
+-      std::string tmp=(*it1)->getLocalization();
+-      if(!tmp.empty() && tmp!=MED_GAUSS_ELNO)
+-        ret.push_back(tmp);
+-    }
+-  return ret;
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
+-    (*it1)->changePflsRefsNamesGen(mapOfModif);
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
+-    (*it1)->changeLocsRefsNamesGen(mapOfModif);
+-}
+-
+-MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId(int locId)
+-{
+-  if(_field_pm_pt_pd.empty())
+-    {
+-      std::ostringstream oss; oss << "MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId : no localizations for geotype \"" << getGeoTypeRepr() << "\" !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  if(locId>=0 && locId<(int)_field_pm_pt_pd.size())
+-    return _field_pm_pt_pd[locId];
+-  std::ostringstream oss2; oss2 << "MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId : no such locId available (" << locId;
+-  oss2 << ") for geometric type \"" << getGeoTypeRepr() << "\" It should be in [0," << _field_pm_pt_pd.size() << ") !";
+-  throw INTERP_KERNEL::Exception(oss2.str().c_str());
+-  return static_cast<MEDFileFieldPerMeshPerTypePerDisc*>(0);
+-}
+-
+-const MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId(int locId) const
+-{
+-  if(_field_pm_pt_pd.empty())
+-    {
+-      std::ostringstream oss; oss << "MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId : no localizations for geotype \"" << getGeoTypeRepr() << "\" !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  if(locId>=0 && locId<(int)_field_pm_pt_pd.size())
+-    return _field_pm_pt_pd[locId];
+-  std::ostringstream oss2; oss2 << "MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId : no such locId available (" << locId;
+-  oss2 << ") for geometric type \"" << getGeoTypeRepr() << "\" It should be in [0," << _field_pm_pt_pd.size() << ") !";
+-  throw INTERP_KERNEL::Exception(oss2.str().c_str());
+-  return static_cast<const MEDFileFieldPerMeshPerTypePerDisc*>(0);
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::fillValues(int& startEntryId, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
+-{
+-  int i=0;
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++,i++)
+-    {
+-      (*it)->fillValues(i,startEntryId,entries);
+-    }
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::setLeaves(const std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc > >& leaves)
+-{
+-  _field_pm_pt_pd=leaves;
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
+-    (*it)->setFather(this);
+-}
+-
+-/*!
+- *  \param [in,out] globalNum a global numbering counter for the renumbering. 
+- *  \param [out] its - list of pair (start,stop) kept
+- *  \return bool - false if the type of field \a tof is not contained in \a this.
+- */
+-bool MEDFileFieldPerMeshPerTypeCommon::keepOnlySpatialDiscretization(TypeOfField tof, int &globalNum, std::vector< std::pair<int,int> >& its)
+-{
+-  bool ret(false);
+-  std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> > newPmPtPd;
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
+-    if((*it)->getType()==tof)
+-      {
+-        newPmPtPd.push_back(*it);
+-        std::pair<int,int> bgEnd; bgEnd.first=(*it)->getStart(); bgEnd.second=(*it)->getEnd();
+-        (*it)->setNewStart(globalNum);
+-        globalNum=(*it)->getEnd();
+-        its.push_back(bgEnd);
+-        ret=true;
+-      }
+-  if(ret)
+-    _field_pm_pt_pd=newPmPtPd;
+-  return ret;
+-}
+-
+-/*!
+- *  \param [in,out] globalNum a global numbering counter for the renumbering.
+- *  \param [out] its - list of pair (start,stop) kept
+- *  \return bool - false if the type of field \a tof is not contained in \a this.
+- */
+-bool MEDFileFieldPerMeshPerTypeCommon::keepOnlyGaussDiscretization(std::size_t idOfDisc, int &globalNum, std::vector< std::pair<int,int> >& its)
+-{
+-  if(_field_pm_pt_pd.size()<=idOfDisc)
+-    return false;
+-  MCAuto<MEDFileFieldPerMeshPerTypePerDisc> elt(_field_pm_pt_pd[idOfDisc]);
+-  std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> > newPmPtPd(1,elt);
+-  std::pair<int,int> bgEnd; bgEnd.first=_field_pm_pt_pd[idOfDisc]->getStart(); bgEnd.second=_field_pm_pt_pd[idOfDisc]->getEnd();
+-  elt->setNewStart(globalNum);
+-  globalNum=elt->getEnd();
+-  its.push_back(bgEnd);
+-  _field_pm_pt_pd=newPmPtPd;
+-  return true;
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::loadOnlyStructureOfDataRecursively(med_idt fid, int &start, const MEDFileFieldNameScope& nasc)
+-{
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
+-    (*it)->loadOnlyStructureOfDataRecursively(fid,start,nasc);
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc)
+-{
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
+-    (*it)->loadBigArray(fid,nasc);
+-}
+-
+-void MEDFileFieldPerMeshPerTypeCommon::writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const
+-{
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
+-    {
+-      (*it)->copyOptionsFrom(*this);
+-      (*it)->writeLL(fid,nasc);
+-    }
+-}
+-
+-med_entity_type MEDFileFieldPerMeshPerTypeCommon::ConvertIntoMEDFileType(TypeOfField ikType, INTERP_KERNEL::NormalizedCellType ikGeoType, med_geometry_type& medfGeoType)
+-{
+-  switch(ikType)
+-  {
+-    case ON_CELLS:
+-      medfGeoType=typmai3[(int)ikGeoType];
+-      return MED_CELL;
+-    case ON_NODES:
+-      medfGeoType=MED_NONE;
+-      return MED_NODE;
+-    case ON_GAUSS_NE:
+-      medfGeoType=typmai3[(int)ikGeoType];
+-      return MED_NODE_ELEMENT;
+-    case ON_GAUSS_PT:
+-      medfGeoType=typmai3[(int)ikGeoType];
+-      return MED_CELL;
+-    default:
+-      throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypeCommon::ConvertIntoMEDFileType : unexpected entity type ! internal error");
+-  }
+-  return MED_UNDEF_ENTITY_TYPE;
+-}
+-
+-//////////////////////////////////////////////////
+-
+-MEDFileFieldPerMeshPerType *MEDFileFieldPerMeshPerType::NewOnRead(med_idt fid, MEDFileFieldPerMesh *fath, TypeOfField type, INTERP_KERNEL::NormalizedCellType geoType, const MEDFileFieldNameScope& nasc, const PartDefinition *pd)
+-{
+-  return new MEDFileFieldPerMeshPerType(fid,fath,type,geoType,nasc,pd);
+-}
+-
+-MEDFileFieldPerMeshPerType *MEDFileFieldPerMeshPerType::New(MEDFileFieldPerMesh *fath, INTERP_KERNEL::NormalizedCellType geoType)
+-{
+-  return new MEDFileFieldPerMeshPerType(fath,geoType);
+-}
+-
+-MEDFileFieldPerMeshPerType *MEDFileFieldPerMeshPerType::deepCopy(MEDFileFieldPerMesh *father) const
+-{
+-  MCAuto<MEDFileFieldPerMeshPerType> ret=new MEDFileFieldPerMeshPerType(*this);
+-  ret->setFather(father);
+-  ret->deepCopyElements();
+-  return ret.retn();
+-}
+-
+-void MEDFileFieldPerMeshPerType::getFieldAtLevel(int meshDim, TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const
+-{
+-  if(_geo_type!=INTERP_KERNEL::NORM_ERROR)
+-    {
+-      const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(_geo_type);
+-      if(meshDim!=(int)cm.getDimension())
+-        return ;
+-    }
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
+-    (*it)->getFieldAtLevel(type,glob,dads,pfls,locs,geoTypes);
+-}
+-
+-INTERP_KERNEL::NormalizedCellType MEDFileFieldPerMeshPerType::getGeoType() const
+-{
+-  return _geo_type;
+-}
+-
+-void MEDFileFieldPerMeshPerType::entriesForMEDfile(TypeOfField mct, med_geometry_type& gt, med_entity_type& ent) const
+-{
+-  ent=MEDFileFieldPerMeshPerTypeCommon::ConvertIntoMEDFileType(mct,_geo_type,gt);
+-}
+-
+-void MEDFileFieldPerMeshPerType::getDimension(int& dim) const
+-{
+-  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(_geo_type));
+-  int curDim((int)cm.getDimension());
+-  dim=std::max(dim,curDim);
+-}
+-
+-void MEDFileFieldPerMeshPerType::simpleRepr(int bkOffset, std::ostream& oss, int id) const
+-{
+-  const char startLine[]="  ## ";
+-  std::string startLine2(bkOffset,' ');
+-  std::string startLine3(startLine2);
+-  startLine3+=startLine;
+-  if(_geo_type!=INTERP_KERNEL::NORM_ERROR)
+-    {
+-      const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(_geo_type);
+-      oss << startLine3 << "Entry geometry type #" << id << " is lying on geometry types " << cm.getRepr() << "." << std::endl;
+-    }
+-  else
+-    oss << startLine3 << "Entry geometry type #" << id << " is lying on NODES." << std::endl;
+-  oss << startLine3 << "Entry is defined on " <<  _field_pm_pt_pd.size() << " localizations." << std::endl;
+-  int i=0;
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++,i++)
+-    {
+-      const MEDFileFieldPerMeshPerTypePerDisc *cur=(*it);
+-      if(cur)
+-        cur->simpleRepr(bkOffset,oss,i);
+-      else
+-        {
+-          oss << startLine2 << "    ## " << "Localization #" << i << " is empty !" << std::endl;
+-        }
+-    }
+-}
+-
+-std::string MEDFileFieldPerMeshPerType::getGeoTypeRepr() const
+-{
+-  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(_geo_type));
+-  return std::string(cm.getRepr());
+-}
+-
+-MEDFileFieldPerMeshPerType::MEDFileFieldPerMeshPerType(MEDFileFieldPerMesh *father, INTERP_KERNEL::NormalizedCellType gt):MEDFileFieldPerMeshPerTypeCommon(father),_geo_type(gt)
+-{
+-}
+-
+-MEDFileFieldPerMeshPerType::MEDFileFieldPerMeshPerType(med_idt fid, MEDFileFieldPerMesh *fath, TypeOfField type, INTERP_KERNEL::NormalizedCellType geoType, const MEDFileFieldNameScope& nasc, const PartDefinition *pd):MEDFileFieldPerMeshPerTypeCommon(fath),_geo_type(geoType)
+-{
+-  INTERP_KERNEL::AutoPtr<char> pflName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
+-  INTERP_KERNEL::AutoPtr<char> locName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
+-  med_geometry_type mgeoti;
+-  med_entity_type menti(ConvertIntoMEDFileType(type,geoType,mgeoti));
+-  int nbProfiles(MEDfieldnProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),menti,mgeoti,pflName,locName));
+-  _field_pm_pt_pd.resize(nbProfiles);
+-  for(int i=0;i<nbProfiles;i++)
+-    {
+-      _field_pm_pt_pd[i]=MEDFileFieldPerMeshPerTypePerDisc::NewOnRead(this,type,i,pd);
+-    }
+-  if(type==ON_CELLS)
+-    {
+-      int nbProfiles2(MEDfieldnProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_NODE_ELEMENT,mgeoti,pflName,locName));
+-      for(int i=0;i<nbProfiles2;i++)
+-        _field_pm_pt_pd.push_back(MEDFileFieldPerMeshPerTypePerDisc::NewOnRead(this,ON_GAUSS_NE,i,pd));
+-    }
+-}
+-
+-MCAuto<MEDFileFieldPerMeshPerType> MEDFileFieldPerMeshPerType::Aggregate(int &start, const std::vector<std::pair<int,const MEDFileFieldPerMeshPerType *> >& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, INTERP_KERNEL::NormalizedCellType gt, MEDFileFieldPerMesh *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo)
+-{
+-  MCAuto<MEDFileFieldPerMeshPerType> ret(MEDFileFieldPerMeshPerType::New(father,gt));
+-  std::map<TypeOfField, std::vector< std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc * > > > m;
+-  for(std::vector<std::pair<int,const MEDFileFieldPerMeshPerType *> >::const_iterator it=pms.begin();it!=pms.end();it++)
+-    {
+-      for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it2=(*it).second->_field_pm_pt_pd.begin();it2!=(*it).second->_field_pm_pt_pd.end();it2++)
+-        m[(*it2)->getType()].push_back(std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc * >((*it).first,*it2));
+-    }
+-  for(std::map<TypeOfField, std::vector< std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc * > > >::const_iterator it=m.begin();it!=m.end();it++)
+-    {
+-      MCAuto<MEDFileFieldPerMeshPerTypePerDisc> agg(MEDFileFieldPerMeshPerTypePerDisc::Aggregate(start,(*it).second,dts,(*it).first,ret,extractInfo));
+-      ret->_field_pm_pt_pd.push_back(agg);
+-    }
+-  return ret;
+-}
+-
+-//////////////////////////////////////////////////
+-
+-MEDFileFieldPerMeshPerTypeDyn *MEDFileFieldPerMeshPerTypeDyn::NewOnRead(med_idt fid, MEDFileFieldPerMesh *fath, const MEDFileEntities *entities, int idGT, const MEDFileFieldNameScope& nasc)
+-{
+-  if(!entities)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypeDyn::NewOnRead : null pointer !");
+-  const MEDFileAllStaticEntitiesPlusDyn *entities2(dynamic_cast<const MEDFileAllStaticEntitiesPlusDyn *>(entities));
+-  if(!entities2)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypeDyn::NewOnRead : invalid type of entities !");
+-  const MEDFileStructureElement *se(entities2->getWithGT(idGT));
+-  return new MEDFileFieldPerMeshPerTypeDyn(fid,fath,se,nasc);
+-}
+-
+-MEDFileFieldPerMeshPerTypeDyn::MEDFileFieldPerMeshPerTypeDyn(med_idt fid, MEDFileFieldPerMesh *fath, const MEDFileStructureElement *se, const MEDFileFieldNameScope& nasc):MEDFileFieldPerMeshPerTypeCommon(fath)
+-{
+-  _se.takeRef(se);
+-  INTERP_KERNEL::AutoPtr<char> pflName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
+-  INTERP_KERNEL::AutoPtr<char> locName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
+-  int nbProfiles(MEDfieldnProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_STRUCT_ELEMENT,_se->getDynGT(),pflName,locName));
+-  _field_pm_pt_pd.resize(nbProfiles);
+-  for(int i=0;i<nbProfiles;i++)
+-    {
+-      _field_pm_pt_pd[i]=MEDFileFieldPerMeshPerTypePerDisc::NewOnRead(this,_se->getEntity(),i,NULL);
+-    }
+-}
+-
+-int MEDFileFieldPerMeshPerTypeDyn::getDynGT() const
+-{
+-  return _se->getDynGT();
+-}
+-
+-std::string MEDFileFieldPerMeshPerTypeDyn::getModelName() const
+-{
+-  return _se->getName();
+-}
+-
+-void MEDFileFieldPerMeshPerTypeDyn::getDimension(int& dim) const
+-{
+-  throw INTERP_KERNEL::Exception("not implemented yet !");
+-}
+-
+-void MEDFileFieldPerMeshPerTypeDyn::entriesForMEDfile(TypeOfField mct, med_geometry_type& gt, med_entity_type& ent) const
+-{
+-  gt=getDynGT();
+-  ent=MED_STRUCT_ELEMENT;
+-}
+-
+-INTERP_KERNEL::NormalizedCellType MEDFileFieldPerMeshPerTypeDyn::getGeoType() const
+-{
+-  throw INTERP_KERNEL::Exception("not implemented yet !");
+-}
+-
+-void MEDFileFieldPerMeshPerTypeDyn::simpleRepr(int bkOffset, std::ostream& oss, int id) const
+-{
+-  const char startLine[]="  ## ";
+-  std::string startLine2(bkOffset,' ');
+-  std::string startLine3(startLine2);
+-  startLine3+=startLine;
+-  oss << startLine3 << "Entry geometry type #" << id << " is lying on geometry STRUCTURE_ELEMENT type " << getDynGT() << "." << std::endl;
+-  oss << startLine3 << "Entry is defined on " <<  _field_pm_pt_pd.size() << " localizations." << std::endl;
+-  int i=0;
+-  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++,i++)
+-    {
+-      if((*it).isNotNull())
+-        (*it)->simpleRepr(bkOffset,oss,i);
+-      else
+-        {
+-          oss << startLine2 << "    ## " << "Localization #" << i << " is empty !" << std::endl;
+-        }
+-    }
+-}
+-
+-std::string MEDFileFieldPerMeshPerTypeDyn::getGeoTypeRepr() const
+-{
+-  throw INTERP_KERNEL::Exception("not implemented yet !");
+-}
+-
+-MEDFileFieldPerMeshPerTypeDyn *MEDFileFieldPerMeshPerTypeDyn::deepCopy(MEDFileFieldPerMesh *father) const
+-{
+-  MCAuto<MEDFileFieldPerMeshPerTypeDyn> ret(new MEDFileFieldPerMeshPerTypeDyn(*this));
+-  ret->setFather(father);
+-  ret->deepCopyElements();
+-  return ret.retn();
+-}
+-
+-void MEDFileFieldPerMeshPerTypeDyn::getFieldAtLevel(int meshDim, TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const
+-{
+-  throw INTERP_KERNEL::Exception("not implemented yet !");
+-}
+-
+-//////////////////////////////////////////////////
+-
+-MEDFileFieldPerMesh *MEDFileFieldPerMesh::NewOnRead(med_idt fid, MEDFileAnyTypeField1TSWithoutSDA *fath, int meshCsit, int meshIteration, int meshOrder, const MEDFileFieldNameScope& nasc, const MEDFileMesh *mm, const MEDFileEntities *entities)
+-{
+-  return new MEDFileFieldPerMesh(fid,fath,meshCsit,meshIteration,meshOrder,nasc,mm,entities);
+-}
+-
+-MEDFileFieldPerMesh *MEDFileFieldPerMesh::New(MEDFileAnyTypeField1TSWithoutSDA *fath, const MEDCouplingMesh *mesh)
+-{
+-  return new MEDFileFieldPerMesh(fath,mesh);
+-}
+-
+-std::size_t MEDFileFieldPerMesh::getHeapMemorySizeWithoutChildren() const
+-{
+-  return _field_pm_pt.capacity()*sizeof(MCAuto< MEDFileFieldPerMeshPerType >);
+-}
+-
+-std::vector<const BigMemoryObject *> MEDFileFieldPerMesh::getDirectChildrenWithNull() const
+-{
+-  std::vector<const BigMemoryObject *> ret;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    ret.push_back(*it);
+-  return ret;
+-}
+-
+-MEDFileFieldPerMesh *MEDFileFieldPerMesh::deepCopy(MEDFileAnyTypeField1TSWithoutSDA *father) const
+-{
+-  MCAuto< MEDFileFieldPerMesh > ret=new MEDFileFieldPerMesh(*this);
+-  ret->_father=father;
+-  std::size_t i=0;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++,i++)
+-    {
+-      if((*it).isNotNull())
+-        ret->_field_pm_pt[i]=(*it)->deepCopy((MEDFileFieldPerMesh *)(ret));
+-    }
+-  return ret.retn();
+-}
+-
+-void MEDFileFieldPerMesh::simpleRepr(int bkOffset, std::ostream& oss, int id) const
+-{
+-  std::string startLine(bkOffset,' ');
+-  oss << startLine << "## Field part (" << id << ") lying on mesh \"" << getMeshName() << "\", Mesh iteration=" << _mesh_iteration << ". Mesh order=" << _mesh_order << "." << std::endl;
+-  oss << startLine << "## Field is defined on " << _field_pm_pt.size() << " types." << std::endl;
+-  int i=0;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++,i++)
+-    {
+-      if((*it).isNotNull())
+-        (*it)->simpleRepr(bkOffset,oss,i);
+-      else
+-        {
+-          oss << startLine << "  ## Entry geometry type #" << i << " is empty !" << std::endl;
+-        }
+-    }
+-}
+-
+-void MEDFileFieldPerMesh::copyTinyInfoFrom(const MEDCouplingMesh *mesh)
+-{
+-  mesh->getTime(_mesh_iteration,_mesh_order);
+-}
+-
+-void MEDFileFieldPerMesh::assignFieldNoProfileNoRenum(int& start, const std::vector<int>& code, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
+-{
+-  int nbOfTypes=code.size()/3;
+-  int offset=0;
+-  for(int i=0;i<nbOfTypes;i++)
+-    {
+-      INTERP_KERNEL::NormalizedCellType type=(INTERP_KERNEL::NormalizedCellType)code[3*i];
+-      int nbOfCells=code[3*i+1];
+-      int pos=addNewEntryIfNecessary(type);
+-      _field_pm_pt[pos]->assignFieldNoProfile(start,offset,nbOfCells,field,arr,glob,nasc);
+-      offset+=nbOfCells;
+-    }
+-}
+-
+-/*!
+- * This method is the most general one. No optimization is done here.
+- * \param [in] multiTypePfl is the end user profile specified in high level API
+- * \param [in] code is the code of \a mesh[multiTypePfl] mesh. It is of size of number of different geometric types into \a mesh[multiTypePfl].
+- * \param [in] code2 is the code of the \b WHOLE mesh on the same level. So all types in \a code are in \a code2.
+- * \param [in] idsInPflPerType is the selection into the \a multiTypePfl whole profile that corresponds to the given geometric type. This vector is always 3 times smaller than \a code.
+- * \param [in] idsPerType is a vector containing the profiles needed to be created for MED file format. \b WARNING these processed MED file profiles can be subdivided again in case of Gauss points.
+- * \param [in] mesh is the mesh coming from the MEDFileMesh instance in correspondance with the MEDFileField. The mesh inside the \a field is simply ignored.
+- */
+-void MEDFileFieldPerMesh::assignFieldProfile(int& start, const DataArrayInt *multiTypePfl, const std::vector<int>& code, const std::vector<int>& code2, const std::vector<DataArrayInt *>& idsInPflPerType, const std::vector<DataArrayInt *>& idsPerType, const MEDCouplingFieldTemplate *field, const DataArray *arr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
+-{
+-  int nbOfTypes(code.size()/3);
+-  for(int i=0;i<nbOfTypes;i++)
+-    {
+-      INTERP_KERNEL::NormalizedCellType type=(INTERP_KERNEL::NormalizedCellType)code[3*i];
+-      int pos=addNewEntryIfNecessary(type);
+-      DataArrayInt *pfl=0;
+-      if(code[3*i+2]!=-1)
+-        pfl=idsPerType[code[3*i+2]];
+-      int nbOfTupes2=code2.size()/3;
+-      int found=0;
+-      for(;found<nbOfTupes2;found++)
+-        if(code[3*i]==code2[3*found])
+-          break;
+-      if(found==nbOfTupes2)
+-        throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::assignFieldProfile : internal problem ! Should never happen ! Please report bug to anthony.geay@cea.fr !");
+-      _field_pm_pt[pos]->assignFieldProfile(nbOfTypes==1,start,multiTypePfl,idsInPflPerType[i],pfl,code2[3*found+1],field,arr,mesh,glob,nasc);
+-    }
+-}
+-
+-void MEDFileFieldPerMesh::assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob)
+-{
+-  int pos=addNewEntryIfNecessary(INTERP_KERNEL::NORM_ERROR);
+-  _field_pm_pt[pos]->assignNodeFieldNoProfile(start,field,arr,glob);
+-}
+-
+-void MEDFileFieldPerMesh::assignNodeFieldProfile(int& start, const DataArrayInt *pfl, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
+-{
+-  int pos=addNewEntryIfNecessary(INTERP_KERNEL::NORM_ERROR);
+-  _field_pm_pt[pos]->assignNodeFieldProfile(start,pfl,field,arr,glob,nasc);
+-}
+-
+-void MEDFileFieldPerMesh::loadOnlyStructureOfDataRecursively(med_idt fid, int& start, const MEDFileFieldNameScope& nasc)
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    (*it)->loadOnlyStructureOfDataRecursively(fid,start,nasc);
+-}
+-
+-void MEDFileFieldPerMesh::loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc)
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    (*it)->loadBigArraysRecursively(fid,nasc);
+-}
+-
+-void MEDFileFieldPerMesh::writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const
+-{
+-  int nbOfTypes=_field_pm_pt.size();
+-  for(int i=0;i<nbOfTypes;i++)
+-    {
+-      _field_pm_pt[i]->copyOptionsFrom(*this);
+-      _field_pm_pt[i]->writeLL(fid,nasc);
+-    }
+-}
+-
+-void MEDFileFieldPerMesh::getDimension(int& dim) const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    (*it)->getDimension(dim);
+-}
+-
+-bool MEDFileFieldPerMesh::isUniqueLevel(int& dim) const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    if(!(*it)->isUniqueLevel(dim))
+-      return false;
+-  return true;
+-}
+-
+-void MEDFileFieldPerMesh::fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    (*it)->fillTypesOfFieldAvailable(types);
+-}
+-
+-std::vector< std::vector< std::pair<int,int> > > MEDFileFieldPerMesh::getFieldSplitedByType(std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> > & locs) const
+-{
+-  int sz=_field_pm_pt.size();
+-  std::vector< std::vector<std::pair<int,int> > > ret(sz);
+-  types.resize(sz); typesF.resize(sz); pfls.resize(sz); locs.resize(sz);
+-  for(int i=0;i<sz;i++)
+-    {
+-      types[i]=_field_pm_pt[i]->getGeoType();
+-      _field_pm_pt[i]->fillFieldSplitedByType(ret[i],typesF[i],pfls[i],locs[i]);
+-    }
+-  return ret;
+-}
+-
+-double MEDFileFieldPerMesh::getTime() const
+-{
+-  int tmp1,tmp2;
+-  return _father->getTime(tmp1,tmp2);
+-}
+-
+-int MEDFileFieldPerMesh::getIteration() const
+-{
+-  return _father->getIteration();
+-}
+-
+-int MEDFileFieldPerMesh::getOrder() const
+-{
+-  return _father->getOrder();
+-}
+-
+-int MEDFileFieldPerMesh::getNumberOfComponents() const
+-{
+-  return _father->getNumberOfComponents();
+-}
+-
+-std::string MEDFileFieldPerMesh::getMeshName() const
+-{
+-  return _father->getMeshName();
+-}
+-
+-void MEDFileFieldPerMesh::setMeshName(const std::string& meshName)
+-{
+-  _father->setMeshName(meshName);
+-}
+-
+-bool MEDFileFieldPerMesh::presenceOfMultiDiscPerGeoType() const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      if((*it).isNull())
+-        continue;
+-      if((*it)->presenceOfMultiDiscPerGeoType())
+-        return true;
+-    }
+-  return false;
+-}
+-
+-bool MEDFileFieldPerMesh::presenceOfStructureElements() const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    if((*it).isNotNull())
+-      {
+-        const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
+-        if(pt)
+-          return true;
+-      }
+-  return false;
+-}
+-
+-bool MEDFileFieldPerMesh::onlyStructureElements() const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    if((*it).isNotNull())
+-      {
+-        const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
+-        if(!pt)
+-          return false;
+-      }
+-  return true;
+-}
+-
+-void MEDFileFieldPerMesh::killStructureElements()
+-{
+-  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > res;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      if((*it).isNotNull())
+-        {
+-          const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
+-          if(!pt)
+-            res.push_back(*it);
+-        }
+-    }
+-  _field_pm_pt=res;
+-}
+-
+-void MEDFileFieldPerMesh::keepOnlyStructureElements()
+-{
+-  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > res;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      if((*it).isNotNull())
+-        {
+-          const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
+-          if(pt)
+-            res.push_back(*it);
+-        }
+-    }
+-  _field_pm_pt=res;
+-}
+-
+-void MEDFileFieldPerMesh::keepOnlyOnSE(const std::string& seName)
+-{
+-  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > res;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      if((*it).isNotNull())
+-        {
+-          const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
+-          if(!pt)
+-            throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::keepOnlyOnSE : presence of non SE !");
+-          if(pt->getModelName()==seName)
+-            res.push_back(*it);
+-        }
+-    }
+-  _field_pm_pt=res;
+-}
+-
+-void MEDFileFieldPerMesh::getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      if((*it).isNotNull())
+-        {
+-          const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
+-          if(pt)
+-            {
+-              ps.push_back(std::pair<std::string,std::string>(getMeshName(),pt->getModelName()));
+-            }
+-          else
+-            throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getMeshSENames : presence of a non structure element part !");
+-        }
+-    }
+-}
+-
+-DataArray *MEDFileFieldPerMesh::getOrCreateAndGetArray()
+-{
+-  if(!_father)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getOrCreateAndGetArray : no father ! internal error !");
+-  return _father->getOrCreateAndGetArray();
+-}
+-
+-const DataArray *MEDFileFieldPerMesh::getOrCreateAndGetArray() const
+-{
+-  if(!_father)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getOrCreateAndGetArray : no father ! internal error !");
+-  return _father->getOrCreateAndGetArray();
+-}
+-
+-const std::vector<std::string>& MEDFileFieldPerMesh::getInfo() const
+-{
+-  return _father->getInfo();
+-}
+-
+-/*!
+- * type,geoTypes,dads,pfls,locs are input parameters. They should have the same size.
+- * Before the call of this method 'geoTypes','dads','pfls','locs' must be reorganized so that types in geoTypes are contiguous and ordered following typmai2 array.
+- * It returns 2 output vectors :
+- * - 'code' of size 3*sz where sz is the number of different values into 'geoTypes'
+- * - 'notNullPfls' contains sz2 values that are extracted from 'pfls' in which null profiles have been removed.
+- * 'code' and 'notNullPfls' are in MEDCouplingUMesh::checkTypeConsistencyAndContig format.
+- */
+-void MEDFileFieldPerMesh::SortArraysPerType(const MEDFileFieldGlobsReal *glob, TypeOfField type, const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes, const std::vector< std::pair<int,int> >& dads, const std::vector<const DataArrayInt *>& pfls, const std::vector<int>& locs, std::vector<int>& code, std::vector<DataArrayInt *>& notNullPfls)
+-{
+-  int notNullPflsSz=0;
+-  int nbOfArrs=geoTypes.size();
+-  for(int i=0;i<nbOfArrs;i++)
+-    if(pfls[i])
+-      notNullPflsSz++;
+-  std::set<INTERP_KERNEL::NormalizedCellType> geoTypes3(geoTypes.begin(),geoTypes.end());
+-  int nbOfDiffGeoTypes=geoTypes3.size();
+-  code.resize(3*nbOfDiffGeoTypes);
+-  notNullPfls.resize(notNullPflsSz);
+-  notNullPflsSz=0;
+-  int j=0;
+-  for(int i=0;i<nbOfDiffGeoTypes;i++)
+-    {
+-      int startZone=j;
+-      INTERP_KERNEL::NormalizedCellType refType=geoTypes[j];
+-      std::vector<const DataArrayInt *> notNullTmp;
+-      if(pfls[j])
+-        notNullTmp.push_back(pfls[j]);
+-      j++;
+-      for(;j<nbOfArrs;j++)
+-        if(geoTypes[j]==refType)
+-          {
+-            if(pfls[j])
+-              notNullTmp.push_back(pfls[j]);
+-          }
+-        else
+-          break;
+-      std::vector< std::pair<int,int> > tmpDads(dads.begin()+startZone,dads.begin()+j);
+-      std::vector<const DataArrayInt *> tmpPfls(pfls.begin()+startZone,pfls.begin()+j);
+-      std::vector<int> tmpLocs(locs.begin()+startZone,locs.begin()+j);
+-      code[3*i]=(int)refType;
+-      std::vector<INTERP_KERNEL::NormalizedCellType> refType2(1,refType);
+-      code[3*i+1]=ComputeNbOfElems(glob,type,refType2,tmpDads,tmpLocs);
+-      if(notNullTmp.empty())
+-        code[3*i+2]=-1;
+-      else
+-        {
+-          notNullPfls[notNullPflsSz]=DataArrayInt::Aggregate(notNullTmp);
+-          code[3*i+2]=notNullPflsSz++;
+-        }
+-    }
+-}
+-
+-/*!
+- * 'dads' 'geoTypes' and 'locs' are input parameters that should have same size sz. sz should be >=1.
+- */
+-int MEDFileFieldPerMesh::ComputeNbOfElems(const MEDFileFieldGlobsReal *glob, TypeOfField type, const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes, const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs)
+-{
+-  int sz=dads.size();
+-  int ret=0;
+-  for(int i=0;i<sz;i++)
+-    {
+-      if(locs[i]==-1)
+-        {
+-          if(type!=ON_GAUSS_NE)
+-            ret+=dads[i].second-dads[i].first;
+-          else
+-            {
+-              const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(geoTypes[i]);
+-              ret+=(dads[i].second-dads[i].first)/cm.getNumberOfNodes();
+-            }
+-        }
+-      else
+-        {
+-          int nbOfGaussPtPerCell=glob->getNbOfGaussPtPerCell(locs[i]);
+-          ret+=(dads[i].second-dads[i].first)/nbOfGaussPtPerCell;
+-        }
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileFieldPerMesh::getPflsReallyUsed() const
+-{
+-  std::vector<std::string> ret;
+-  std::set<std::string> ret2;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getPflsReallyUsed();
+-      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
+-        if(ret2.find(*it2)==ret2.end())
+-          {
+-            ret.push_back(*it2);
+-            ret2.insert(*it2);
+-          }
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileFieldPerMesh::getPflsReallyUsedMulti() const
+-{
+-  std::vector<std::string> ret;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getPflsReallyUsedMulti();
+-      ret.insert(ret.end(),tmp.begin(),tmp.end());
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileFieldPerMesh::getLocsReallyUsed() const
+-{
+-  std::vector<std::string> ret;
+-  std::set<std::string> ret2;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getLocsReallyUsed();
+-      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
+-        if(ret2.find(*it2)==ret2.end())
+-          {
+-            ret.push_back(*it2);
+-            ret2.insert(*it2);
+-          }
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileFieldPerMesh::getLocsReallyUsedMulti() const
+-{
+-  std::vector<std::string> ret;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getLocsReallyUsedMulti();
+-      ret.insert(ret.end(),tmp.begin(),tmp.end());
+-    }
+-  return ret;
+-}
+-
+-bool MEDFileFieldPerMesh::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab)
+-{
+-  for(std::vector< std::pair<std::string,std::string> >::const_iterator it=modifTab.begin();it!=modifTab.end();it++)
+-    {
+-      if((*it).first==getMeshName())
+-        {
+-          setMeshName((*it).second);
+-          return true;
+-        }
+-    }
+-  return false;
+-}
+-
+-void MEDFileFieldPerMesh::convertMedBallIntoClassic()
+-{
+-  if(_field_pm_pt.size()!=1)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::convertMedBallIntoClassic : Only managed for single mesh !");
+-  if(_field_pm_pt[0].isNull())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::convertMedBallIntoClassic : null pointer !");
+-  MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<MEDFileFieldPerMeshPerTypeDyn *>((MEDFileFieldPerMeshPerTypeCommon *)_field_pm_pt[0]));
+-  if(!pt)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::convertMedBallIntoClassic : this is expected to be marked as structure element !");
+-  if(pt->getNumberOfLoc()!=1)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::convertMedBallIntoClassic : only one loc managed !");
+-  const MEDFileFieldPerMeshPerTypePerDisc *disc(pt->getLeafGivenLocId(0));
+-  if(!disc)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::convertMedBallIntoClassic : internal error !");
+-  MCAuto<MEDFileFieldPerMeshPerTypePerDisc> disc2(MEDFileFieldPerMeshPerTypePerDisc::New(*disc));
+-  disc2->setType(ON_NODES);
+-  MCAuto<MEDFileFieldPerMeshPerType> pt2(MEDFileFieldPerMeshPerType::New(this,INTERP_KERNEL::NORM_ERROR));
+-  disc2->setFather(pt2);
+-  pt2->setFather(this);
+-  pt2->pushDiscretization(disc2);
+-  _field_pm_pt[0]=DynamicCast<MEDFileFieldPerMeshPerType,MEDFileFieldPerMeshPerTypeCommon>(pt2);
+-}
+-
+-bool MEDFileFieldPerMesh::renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N,
+-                                                      MEDFileFieldGlobsReal& glob)
+-{
+-  if(getMeshName()!=meshName)
+-    return false;
+-  std::set<INTERP_KERNEL::NormalizedCellType> typesToKeep;
+-  for(std::size_t i=0;i<oldCode.size()/3;i++) typesToKeep.insert((INTERP_KERNEL::NormalizedCellType)oldCode[3*i]);
+-  std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > > entries;
+-  std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> entriesKept;
+-  std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> otherEntries;
+-  getUndergroundDataArrayExt(entries);
+-  DataArray *arr0(getOrCreateAndGetArray());//tony
+-  if(!arr0)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::renumberEntitiesLyingOnMesh : DataArray storing values of field is null !");
+-  DataArrayDouble *arr(dynamic_cast<DataArrayDouble *>(arr0));//tony
+-  if(!arr0)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::renumberEntitiesLyingOnMesh : DataArray storing values is double ! Not managed for the moment !");
+-  int sz=0;
+-  if(!arr)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::renumberEntitiesLyingOnMesh : DataArrayDouble storing values of field is null !");
+-  for(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >::const_iterator it=entries.begin();it!=entries.end();it++)
+-    {
+-      if(typesToKeep.find((*it).first.first)!=typesToKeep.end())
+-        {
+-          entriesKept.push_back(getLeafGivenTypeAndLocId((*it).first.first,(*it).first.second));
+-          sz+=(*it).second.second-(*it).second.first;
+-        }
+-      else
+-        otherEntries.push_back(getLeafGivenTypeAndLocId((*it).first.first,(*it).first.second));
+-    }
+-  MCAuto<DataArrayInt> renumDefrag=DataArrayInt::New(); renumDefrag->alloc(arr->getNumberOfTuples(),1); renumDefrag->fillWithZero();
+-  ////////////////////
+-  MCAuto<DataArrayInt> explicitIdsOldInMesh=DataArrayInt::New(); explicitIdsOldInMesh->alloc(sz,1);//sz is a majorant of the real size. A realloc will be done after
+-  int *workI2=explicitIdsOldInMesh->getPointer();
+-  int sz1=0,sz2=0,sid=1;
+-  std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> > entriesKeptML=MEDFileFieldPerMeshPerTypePerDisc::SplitPerDiscretization(entriesKept);
+-  // std::vector<int> tupleIdOfStartOfNewChuncksV(entriesKeptML.size());
+-  for(std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> >::const_iterator itL1=entriesKeptML.begin();itL1!=entriesKeptML.end();itL1++,sid++)
+-    {
+-      //  tupleIdOfStartOfNewChuncksV[sid-1]=sz2;
+-      MCAuto<DataArrayInt> explicitIdsOldInArr=DataArrayInt::New(); explicitIdsOldInArr->alloc(sz,1);
+-      int *workI=explicitIdsOldInArr->getPointer();
+-      for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator itL2=(*itL1).begin();itL2!=(*itL1).end();itL2++)
+-        {
+-          int delta1=(*itL2)->fillTupleIds(workI); workI+=delta1; sz1+=delta1;
+-          (*itL2)->setLocId(sz2);
+-          (*itL2)->_tmp_work1=(*itL2)->getStart();
+-          int delta2=(*itL2)->fillEltIdsFromCode(sz2,oldCode,glob,workI2); workI2+=delta2; sz2+=delta2;
+-        }
+-      renumDefrag->setPartOfValuesSimple3(sid,explicitIdsOldInArr->begin(),explicitIdsOldInArr->end(),0,1,1);
+-    }
+-  explicitIdsOldInMesh->reAlloc(sz2);
+-  int tupleIdOfStartOfNewChuncks=arr->getNumberOfTuples()-sz2;
+-  ////////////////////
+-  MCAuto<DataArrayInt> permArrDefrag=renumDefrag->buildPermArrPerLevel(); renumDefrag=0;
+-  // perform redispatching of non concerned MEDFileFieldPerMeshPerTypePerDisc
+-  std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> > otherEntriesNew;
+-  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=otherEntries.begin();it!=otherEntries.end();it++)
+-    {
+-      otherEntriesNew.push_back(MEDFileFieldPerMeshPerTypePerDisc::New(*(*it)));
+-      otherEntriesNew.back()->setNewStart(permArrDefrag->getIJ((*it)->getStart(),0));
+-      otherEntriesNew.back()->setLocId((*it)->getGeoType());
+-    }
+-  std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> > entriesKeptNew;
+-  std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> entriesKeptNew2;
+-  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=entriesKept.begin();it!=entriesKept.end();it++)
+-    {
+-      MCAuto<MEDFileFieldPerMeshPerTypePerDisc> elt=MEDFileFieldPerMeshPerTypePerDisc::New(*(*it));
+-      int newStart=elt->getLocId();
+-      elt->setLocId((*it)->getGeoType());
+-      elt->setNewStart(newStart);
+-      elt->_tmp_work1=permArrDefrag->getIJ(elt->_tmp_work1,0);
+-      entriesKeptNew.push_back(elt);
+-      entriesKeptNew2.push_back(elt);
+-    }
+-  MCAuto<DataArrayDouble> arr2=arr->renumber(permArrDefrag->getConstPointer());
+-  // perform redispatching of concerned MEDFileFieldPerMeshPerTypePerDisc -> values are in arr2
+-  MCAuto<DataArrayInt> explicitIdsNewInMesh=renumO2N->selectByTupleId(explicitIdsOldInMesh->begin(),explicitIdsOldInMesh->end());
+-  std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> > entriesKeptPerDisc=MEDFileFieldPerMeshPerTypePerDisc::SplitPerDiscretization(entriesKeptNew2);
+-  bool ret=false;
+-  for(std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> >::const_iterator it4=entriesKeptPerDisc.begin();it4!=entriesKeptPerDisc.end();it4++)
+-    {
+-      sid=0;
+-      /*for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator itL2=(*it4).begin();itL2!=(*it4).end();itL2++)
+-        {
+-          MEDFileFieldPerMeshPerTypePerDisc *curNC=const_cast<MEDFileFieldPerMeshPerTypePerDisc *>(*itL2);
+-          curNC->setNewStart(permArrDefrag->getIJ((*itL2)->getStart(),0)-tupleIdOfStartOfNewChuncks+tupleIdOfStartOfNewChuncksV[sid]);
+-          }*/
+-      ret=MEDFileFieldPerMeshPerTypePerDisc::RenumberChunks(tupleIdOfStartOfNewChuncks,*it4,explicitIdsNewInMesh,newCode,
+-                                                            glob,arr2,otherEntriesNew) || ret;
+-    }
+-  if(!ret)
+-    return false;
+-  // Assign new dispatching
+-  assignNewLeaves(otherEntriesNew);
+-  arr->deepCopyFrom(*arr2);
+-  return true;
+-}
+-
+-/*!
+- * \param [in,out] globalNum a global numbering counter for the renumbering.
+- * \param [out] its - list of pair (start,stop) kept
+- */
+-void MEDFileFieldPerMesh::keepOnlySpatialDiscretization(TypeOfField tof, int &globalNum, std::vector< std::pair<int,int> >& its)
+-{
+-  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > ret;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      std::vector< std::pair<int,int> > its2;
+-      if((*it)->keepOnlySpatialDiscretization(tof,globalNum,its2))
+-        {
+-          ret.push_back(*it);
+-          its.insert(its.end(),its2.begin(),its2.end());
+-        }
+-    }
+-  _field_pm_pt=ret;
+-}
+-
+-/*!
+- * \param [in,out] globalNum a global numbering counter for the renumbering.
+- * \param [out] its - list of pair (start,stop) kept
+- */
+-void MEDFileFieldPerMesh::keepOnlyGaussDiscretization(std::size_t idOfDisc, int &globalNum, std::vector< std::pair<int,int> >& its)
+-{
+-  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > ret;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      std::vector< std::pair<int,int> > its2;
+-      if((*it)->keepOnlyGaussDiscretization(idOfDisc,globalNum,its2))
+-        {
+-          ret.push_back(*it);
+-          its.insert(its.end(),its2.begin(),its2.end());
+-        }
+-    }
+-  _field_pm_pt=ret;
+-}
+-
+-void MEDFileFieldPerMesh::assignNewLeaves(const std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc > >& leaves)
+-{
+-  std::map<INTERP_KERNEL::NormalizedCellType,std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc> > > types;
+-  for( std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc > >::const_iterator it=leaves.begin();it!=leaves.end();it++)
+-    types[(INTERP_KERNEL::NormalizedCellType)(*it)->getLocId()].push_back(*it);
+-  //
+-  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > fieldPmPt(types.size());
+-  std::map<INTERP_KERNEL::NormalizedCellType,std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc> > >::const_iterator it1=types.begin();
+-  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it2=fieldPmPt.begin();
+-  for(;it1!=types.end();it1++,it2++)
+-    {
+-      MCAuto<MEDFileFieldPerMeshPerType> elt=MEDFileFieldPerMeshPerType::New(this,(INTERP_KERNEL::NormalizedCellType)((*it1).second[0]->getLocId()));
+-      elt->setLeaves((*it1).second);
+-      MCAuto<MEDFileFieldPerMeshPerTypeCommon> elt2(DynamicCast<MEDFileFieldPerMeshPerType,MEDFileFieldPerMeshPerTypeCommon>(elt));
+-      *it2=elt2;
+-    }
+-  _field_pm_pt=fieldPmPt;
+-}
+-
+-void MEDFileFieldPerMesh::changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    (*it)->changePflsRefsNamesGen(mapOfModif);
+-}
+-
+-void MEDFileFieldPerMesh::changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    (*it)->changeLocsRefsNamesGen(mapOfModif);
+-}
+-
+-/*!
+- * \param [in] mesh is the whole mesh
+- */
+-MEDCouplingFieldDouble *MEDFileFieldPerMesh::getFieldOnMeshAtLevel(TypeOfField type, const MEDFileFieldGlobsReal *glob, const MEDCouplingMesh *mesh, bool& isPfl, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
+-{
+-  if(_field_pm_pt.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getFieldOnMeshAtLevel : no types field set !");
+-  //
+-  std::vector< std::pair<int,int> > dads;
+-  std::vector<const DataArrayInt *> pfls;
+-  std::vector<DataArrayInt *> notNullPflsPerGeoType;
+-  std::vector<int> locs,code;
+-  std::vector<INTERP_KERNEL::NormalizedCellType> geoTypes;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    (*it)->getFieldAtLevel(mesh->getMeshDimension(),type,glob,dads,pfls,locs,geoTypes);
+-  // Sort by types
+-  SortArraysPerType(glob,type,geoTypes,dads,pfls,locs,code,notNullPflsPerGeoType);
+-  if(code.empty())
+-    {
+-      std::ostringstream oss; oss << "MEDFileFieldPerMesh::getFieldOnMeshAtLevel : " << "The field \"" << nasc.getName() << "\" exists but not with such spatial discretization or such dimension specified !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  //
+-  std::vector< MCAuto<DataArrayInt> > notNullPflsPerGeoType2(notNullPflsPerGeoType.begin(),notNullPflsPerGeoType.end());
+-  std::vector< const DataArrayInt *> notNullPflsPerGeoType3(notNullPflsPerGeoType.begin(),notNullPflsPerGeoType.end());
+-  if(type!=ON_NODES)
+-    {
+-      DataArrayInt *arr=mesh->checkTypeConsistencyAndContig(code,notNullPflsPerGeoType3);
+-      if(!arr)
+-        return finishField(type,glob,dads,locs,mesh,isPfl,arrOut,nasc);
+-      else
+-        {
+-          MCAuto<DataArrayInt> arr2(arr);
+-          return finishField2(type,glob,dads,locs,geoTypes,mesh,arr,isPfl,arrOut,nasc);
+-        }
+-    }
+-  else
+-    {
+-      if(code.size()!=3)
+-        throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getFieldOnMeshAtLevel : internal error #1 !");
+-      int nb=code[1];
+-      if(code[2]==-1)
+-        {
+-          if(nb!=mesh->getNumberOfNodes())
+-            {
+-              std::ostringstream oss; oss << "MEDFileFieldPerMesh::getFieldOnMeshAtLevel : There is a problem there is " << nb << " nodes in field whereas there is " << mesh->getNumberOfNodes();
+-              oss << " nodes in mesh !";
+-              throw INTERP_KERNEL::Exception(oss.str());
+-            }
+-          return finishField(type,glob,dads,locs,mesh,isPfl,arrOut,nasc);
+-        }
+-      else
+-        return finishFieldNode2(glob,dads,locs,mesh,notNullPflsPerGeoType3[0],isPfl,arrOut,nasc);
+-    }
+-}
+-
+-DataArray *MEDFileFieldPerMesh::getFieldOnMeshAtLevelWithPfl(TypeOfField type, const MEDCouplingMesh *mesh, DataArrayInt *&pfl, const MEDFileFieldGlobsReal *glob, const MEDFileFieldNameScope& nasc) const
+-{
+-  if(_field_pm_pt.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getFieldOnMeshAtLevel : no types field set !");
+-  //
+-  std::vector<std::pair<int,int> > dads;
+-  std::vector<const DataArrayInt *> pfls;
+-  std::vector<DataArrayInt *> notNullPflsPerGeoType;
+-  std::vector<int> locs,code;
+-  std::vector<INTERP_KERNEL::NormalizedCellType> geoTypes;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    (*it)->getFieldAtLevel(mesh->getMeshDimension(),type,glob,dads,pfls,locs,geoTypes);
+-  // Sort by types
+-  SortArraysPerType(glob,type,geoTypes,dads,pfls,locs,code,notNullPflsPerGeoType);
+-  if(code.empty())
+-    {
+-      std::ostringstream oss; oss << "MEDFileFieldPerMesh::getFieldOnMeshAtLevelWithPfl : " << "The field \"" << nasc.getName() << "\" exists but not with such spatial discretization or such dimension specified !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  std::vector< MCAuto<DataArrayInt> > notNullPflsPerGeoType2(notNullPflsPerGeoType.begin(),notNullPflsPerGeoType.end());
+-  std::vector< const DataArrayInt *> notNullPflsPerGeoType3(notNullPflsPerGeoType.begin(),notNullPflsPerGeoType.end());
+-  if(type!=ON_NODES)
+-    {
+-      MCAuto<DataArrayInt> arr=mesh->checkTypeConsistencyAndContig(code,notNullPflsPerGeoType3);
+-      return finishField4(dads,arr,mesh->getNumberOfCells(),pfl);
+-    }
+-  else
+-    {
+-      if(code.size()!=3)
+-        throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getFieldOnMeshAtLevel : internal error #1 !");
+-      int nb=code[1];
+-      if(code[2]==-1)
+-        {
+-          if(nb!=mesh->getNumberOfNodes())
+-            {
+-              std::ostringstream oss; oss << "MEDFileFieldPerMesh::getFieldOnMeshAtLevel : There is a problem there is " << nb << " nodes in field whereas there is " << mesh->getNumberOfNodes();
+-              oss << " nodes in mesh !";
+-              throw INTERP_KERNEL::Exception(oss.str());
+-            }
+-        }
+-      return finishField4(dads,code[2]==-1?0:notNullPflsPerGeoType3[0],mesh->getNumberOfNodes(),pfl);
+-    }
+-  //
+-  return 0;
+-}
+-
+-void MEDFileFieldPerMesh::accept(MEDFileFieldVisitor& visitor) const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    if((*it).isNotNull())
+-      {
+-        visitor.newPerMeshPerTypeEntry(*it);
+-        (*it)->accept(visitor);
+-        visitor.endPerMeshPerTypeEntry(*it);
+-      }
+-}
+-
+-void MEDFileFieldPerMesh::getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
+-{
+-  int globalSz=0;
+-  int nbOfEntries=0;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      (*it)->getSizes(globalSz,nbOfEntries);
+-    }
+-  entries.resize(nbOfEntries);
+-  nbOfEntries=0;
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      (*it)->fillValues(nbOfEntries,entries);
+-    }
+-}
+-
+-MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMesh::getLeafGivenTypeAndLocId(INTERP_KERNEL::NormalizedCellType typ, int locId)
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      if((*it)->getGeoType()==typ)
+-        return (*it)->getLeafGivenLocId(locId);
+-    }
+-  const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(typ);
+-  std::ostringstream oss; oss << "MEDFileFieldPerMesh::getLeafGivenTypeAndLocId : no such geometric type \"" << cm.getRepr() << "\" in this !" << std::endl;
+-  oss << "Possiblities are : ";
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      const INTERP_KERNEL::CellModel& cm2=INTERP_KERNEL::CellModel::GetCellModel((*it)->getGeoType());
+-      oss << "\"" << cm2.getRepr() << "\", ";
+-    }
+-  throw INTERP_KERNEL::Exception(oss.str());
+-}
+-
+-const MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMesh::getLeafGivenTypeAndLocId(INTERP_KERNEL::NormalizedCellType typ, int locId) const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      if((*it)->getGeoType()==typ)
+-        return (*it)->getLeafGivenLocId(locId);
+-    }
+-  const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(typ);
+-  std::ostringstream oss; oss << "MEDFileFieldPerMesh::getLeafGivenTypeAndLocId : no such geometric type \"" << cm.getRepr() << "\" in this !" << std::endl;
+-  oss << "Possiblities are : ";
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
+-    {
+-      const INTERP_KERNEL::CellModel& cm2=INTERP_KERNEL::CellModel::GetCellModel((*it)->getGeoType());
+-      oss << "\"" << cm2.getRepr() << "\", ";
+-    }
+-  throw INTERP_KERNEL::Exception(oss.str());
+-}
+-
+-/*!
+- * \param [in,out] start - Integer that gives the current position in the final aggregated array
+- * \param [in] pms - list of elements to aggregate. integer gives the mesh id 
+- * \param [in] dts - (Distribution of types) = level 1 : meshes to aggregate. Level 2 : all geo type. Level 3 pair specifying geo type and number of elem in geotype.
+- * \param [out] extractInfo - Gives information about the where the data comes from. It is a vector of triplet. First element in the triplet the mesh pos. The 2nd one the start pos. The 3rd the end pos.
+- */
+-MCAuto<MEDFileFieldPerMeshPerTypePerDisc> MEDFileFieldPerMeshPerTypePerDisc::Aggregate(int &start, const std::vector< std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc *> >& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, TypeOfField tof, MEDFileFieldPerMeshPerType *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo)
+-{
+-  MCAuto<MEDFileFieldPerMeshPerTypePerDisc> ret(new MEDFileFieldPerMeshPerTypePerDisc(father,tof));
+-  if(pms.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : empty input vector !");
+-  for(std::vector<std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc *> >::const_iterator it=pms.begin();it!=pms.end();it++)
+-    {
+-      if(!(*it).second)
+-        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : presence of null pointer !");
+-      if(!(*it).second->getProfile().empty())
+-        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : not implemented yet for profiles !");
+-      if(!(*it).second->getLocalization().empty())
+-        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : not implemented yet for gauss pts !");
+-    }
+-  INTERP_KERNEL::NormalizedCellType gt(pms[0].second->getGeoType());
+-  std::size_t i(0);
+-  std::vector< std::pair<int,int> > filteredDTS;
+-  for(std::vector< std::vector< std::pair<int,int> > >::const_iterator it=dts.begin();it!=dts.end();it++,i++)
+-    for(std::vector< std::pair<int,int> >::const_iterator it2=(*it).begin();it2!=(*it).end();it2++)
+-      if((*it2).first==gt)
+-        filteredDTS.push_back(std::pair<int,int>(i,(*it2).second));
+-  if(pms.size()!=filteredDTS.size())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : not implemented yet for generated profiles !");
+-  std::vector<std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc *> >::const_iterator it1(pms.begin());
+-  std::vector< std::pair<int,int> >::const_iterator it2(filteredDTS.begin());
+-  int zeStart(start),nval(0);
+-  for(;it1!=pms.end();it1++,it2++)
+-    {
+-      if((*it1).first!=(*it2).first)
+-        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : not implemented yet for generated profiles 2 !");
+-      int s1((*it1).second->getStart()),e1((*it1).second->getEnd());
+-      extractInfo.push_back(std::pair<int, std::pair<int,int> >((*it1).first,std::pair<int,int>(s1,e1)));
+-      start+=e1-s1;
+-      nval+=((*it1).second)->getNumberOfVals();
+-    }
+-  ret->_start=zeStart; ret->_end=start; ret->_nval=nval;
+-  return ret;
+-}
+-
+-MCAuto<MEDFileFieldPerMesh> MEDFileFieldPerMesh::Aggregate(int &start, const std::vector<const MEDFileFieldPerMesh *>& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, MEDFileAnyTypeField1TSWithoutSDA *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo)
+-{
+-  MCAuto<MEDFileFieldPerMesh> ret(new MEDFileFieldPerMesh(father,pms[0]->getMeshName(),pms[0]->getMeshIteration(),pms[0]->getMeshOrder()));
+-  std::map<INTERP_KERNEL::NormalizedCellType, std::vector< std::pair<int,const MEDFileFieldPerMeshPerType *> > > m;
+-  std::size_t i(0);
+-  for(std::vector<const MEDFileFieldPerMesh *>::const_iterator it=pms.begin();it!=pms.end();it++,i++)
+-    {
+-      const std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >& v((*it)->_field_pm_pt);
+-      for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it2=v.begin();it2!=v.end();it2++)
+-        {
+-          INTERP_KERNEL::NormalizedCellType gt((*it2)->getGeoType());
+-          const MEDFileFieldPerMeshPerType *elt(dynamic_cast<const MEDFileFieldPerMeshPerType *>((const MEDFileFieldPerMeshPerTypeCommon *)(*it2)));
+-          if(!elt)
+-            throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::Aggregate : not managed for structelement !");
+-          m[gt].push_back(std::pair<int,const MEDFileFieldPerMeshPerType *>(i,elt));
+-        }
+-    }
+-  for(std::map<INTERP_KERNEL::NormalizedCellType, std::vector< std::pair<int,const MEDFileFieldPerMeshPerType *> > >::const_iterator it=m.begin();it!=m.end();it++)
+-    {
+-      MCAuto<MEDFileFieldPerMeshPerType> agg(MEDFileFieldPerMeshPerType::Aggregate(start,(*it).second,dts,(*it).first,ret,extractInfo));
+-      MCAuto<MEDFileFieldPerMeshPerTypeCommon> agg2(DynamicCast<MEDFileFieldPerMeshPerType,MEDFileFieldPerMeshPerTypeCommon>(agg));
+-      ret->_field_pm_pt.push_back(agg2);
+-    }
+-  return ret;
+-}
+-
+-int MEDFileFieldPerMesh::addNewEntryIfNecessary(INTERP_KERNEL::NormalizedCellType type)
+-{
+-  int i=0;
+-  int pos=std::distance(typmai2,std::find(typmai2,typmai2+MED_N_CELL_FIXED_GEO,type));
+-  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it2=_field_pm_pt.begin();
+-  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++,i++)
+-    {
+-      INTERP_KERNEL::NormalizedCellType curType=(*it)->getGeoType();
+-      if(type==curType)
+-        return i;
+-      else
+-        {
+-          int pos2=std::distance(typmai2,std::find(typmai2,typmai2+MED_N_CELL_FIXED_GEO,curType));
+-          if(pos>pos2)
+-            it2=it+1;
+-        }
+-    }
+-  int ret=std::distance(_field_pm_pt.begin(),it2);
+-  _field_pm_pt.insert(it2,MEDFileFieldPerMeshPerType::New(this,type));
+-  return ret;
+-}
+-
+-/*!
+- * 'dads' and 'locs' input parameters have the same number of elements
+- * \param [in] mesh is \b NOT the global mesh, but the possibly reduced mesh. \a mesh parameter will be directly aggregated in the returned field
+- */
+-MEDCouplingFieldDouble *MEDFileFieldPerMesh::finishField(TypeOfField type, const MEDFileFieldGlobsReal *glob,
+-                                                         const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs,
+-                                                         const MEDCouplingMesh *mesh, bool& isPfl, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
+-{
+-  isPfl=false;
+-  MCAuto<MEDCouplingFieldDouble> ret=MEDCouplingFieldDouble::New(type,ONE_TIME);
+-  ret->setMesh(mesh); ret->setName(nasc.getName().c_str()); ret->setTime(getTime(),getIteration(),getOrder()); ret->setTimeUnit(nasc.getDtUnit().c_str());
+-  MCAuto<DataArray> da=getOrCreateAndGetArray()->selectByTupleRanges(dads);
+-  const std::vector<std::string>& infos=getInfo();
+-  da->setInfoOnComponents(infos);
+-  da->setName("");
+-  if(type==ON_GAUSS_PT)
+-    {
+-      int offset=0;
+-      int nbOfArrs=dads.size();
+-      for(int i=0;i<nbOfArrs;i++)
+-        {
+-          std::vector<std::pair<int,int> > dads2(1,dads[i]); const std::vector<int> locs2(1,locs[i]);
+-          const std::vector<INTERP_KERNEL::NormalizedCellType> geoTypes2(1,INTERP_KERNEL::NORM_ERROR);
+-          int nbOfElems=ComputeNbOfElems(glob,type,geoTypes2,dads2,locs2);
+-          MCAuto<DataArrayInt> di=DataArrayInt::New();
+-          di->alloc(nbOfElems,1);
+-          di->iota(offset);
+-          const MEDFileFieldLoc& fl=glob->getLocalizationFromId(locs[i]);
+-          ret->setGaussLocalizationOnCells(di->getConstPointer(),di->getConstPointer()+nbOfElems,fl.getRefCoords(),fl.getGaussCoords(),fl.getGaussWeights());
+-          offset+=nbOfElems;
+-        }
+-    }
+-  arrOut=da;
+-  return ret.retn();
+-}
+-
+-/*!
+- * This method is an extension of MEDFileFieldPerMesh::finishField method. It deals with profiles. This method should be called when type is different from ON_NODES.
+- * 'dads', 'locs' and 'geoTypes' input parameters have the same number of elements.
+- * No check of this is performed. 'da' array contains an array in old2New style to be applyied to mesh to obtain the right support.
+- * The order of cells in the returned field is those imposed by the profile.
+- * \param [in] mesh is the global mesh.
+- */
+-MEDCouplingFieldDouble *MEDFileFieldPerMesh::finishField2(TypeOfField type, const MEDFileFieldGlobsReal *glob,
+-                                                          const std::vector<std::pair<int,int> >& dads, const std::vector<int>& locs,
+-                                                          const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes,
+-                                                          const MEDCouplingMesh *mesh, const DataArrayInt *da, bool& isPfl, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
+-{
+-  if(da->isIota(mesh->getNumberOfCells()))
+-    return finishField(type,glob,dads,locs,mesh,isPfl,arrOut,nasc);
+-  MCAuto<MEDCouplingMesh> m2=mesh->buildPart(da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
+-  m2->setName(mesh->getName().c_str());
+-  MCAuto<MEDCouplingFieldDouble> ret=finishField(type,glob,dads,locs,m2,isPfl,arrOut,nasc);
+-  isPfl=true;
+-  return ret.retn();
+-}
+-
+-/*!
+- * This method is the complement of MEDFileFieldPerMesh::finishField2 method except that this method works for node profiles.
+- */
+-MEDCouplingFieldDouble *MEDFileFieldPerMesh::finishFieldNode2(const MEDFileFieldGlobsReal *glob,
+-                                                              const std::vector<std::pair<int,int> >& dads, const std::vector<int>& locs,
+-                                                              const MEDCouplingMesh *mesh, const DataArrayInt *da, bool& isPfl, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
+-{
+-  if(da->isIota(mesh->getNumberOfNodes()))
+-    return finishField(ON_NODES,glob,dads,locs,mesh,isPfl,arrOut,nasc);
+-  // Treatment of particular case where nodal field on pfl is requested with a meshDimRelToMax=1.
+-  const MEDCouplingUMesh *meshu=dynamic_cast<const MEDCouplingUMesh *>(mesh);
+-  if(meshu)
+-    {
+-      if(meshu->getNodalConnectivity()==0)
+-        {
+-          MCAuto<MEDCouplingFieldDouble> ret=finishField(ON_CELLS,glob,dads,locs,mesh,isPfl,arrOut,nasc);
+-          int nb=da->getNbOfElems();
+-          const int *ptr=da->getConstPointer();
+-          MEDCouplingUMesh *meshuc=const_cast<MEDCouplingUMesh *>(meshu);
+-          meshuc->allocateCells(nb);
+-          for(int i=0;i<nb;i++)
+-            meshuc->insertNextCell(INTERP_KERNEL::NORM_POINT1,1,ptr+i);
+-          meshuc->finishInsertingCells();
+-          ret->setMesh(meshuc);
+-          const MEDCouplingFieldDiscretization *disc=ret->getDiscretization();
+-          if(!disc) throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::finishFieldNode2 : internal error, no discretization on field !");
+-          disc->checkCoherencyBetween(meshuc,arrOut);
+-          return ret.retn();
+-        }
+-    }
+-  //
+-  MCAuto<MEDCouplingFieldDouble> ret=finishField(ON_NODES,glob,dads,locs,mesh,isPfl,arrOut,nasc);
+-  isPfl=true;
+-  DataArrayInt *arr2=0;
+-  MCAuto<DataArrayInt> cellIds=mesh->getCellIdsFullyIncludedInNodeIds(da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
+-  MCAuto<MEDCouplingMesh> mesh2=mesh->buildPartAndReduceNodes(cellIds->getConstPointer(),cellIds->getConstPointer()+cellIds->getNbOfElems(),arr2);
+-  MCAuto<DataArrayInt> arr3(arr2);
+-  int nnodes=mesh2->getNumberOfNodes();
+-  if(nnodes==(int)da->getNbOfElems())
+-    {
+-      MCAuto<DataArrayInt> da3=da->transformWithIndArrR(arr2->begin(),arr2->end());
+-      arrOut->renumberInPlace(da3->getConstPointer());
+-      mesh2->setName(mesh->getName().c_str());
+-      ret->setMesh(mesh2);
+-      return ret.retn();
+-    }
+-  else
+-    {
+-      std::ostringstream oss; oss << "MEDFileFieldPerMesh::finishFieldNode2 : The field on nodes lies on a node profile so that it is impossible to find a submesh having exactly the same nodes of that profile !!!";
+-      oss << "So it is impossible to return a well definied MEDCouplingFieldDouble instance on specified mesh on a specified meshDim !" << std::endl;
+-      oss << "To retrieve correctly such a field you have 3 possibilities :" << std::endl;
+-      oss << " - use an another meshDim compatible with the field on nodes (MED file does not have such information)" << std::endl;
+-      oss << " - use an another a meshDimRelToMax equal to 1 -> it will return a mesh with artificial cell POINT1 containing the profile !" << std::endl;
+-      oss << " - if definitely the node profile has no link with mesh connectivity use MEDFileField1TS::getFieldWithProfile or MEDFileFieldMultiTS::getFieldWithProfile methods instead !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  return 0;
+-}
+-
+-/*!
+- * This method is the most light method of field retrieving.
+- */
+-DataArray *MEDFileFieldPerMesh::finishField4(const std::vector<std::pair<int,int> >& dads, const DataArrayInt *pflIn, int nbOfElems, DataArrayInt *&pflOut) const
+-{
+-  if(!pflIn)
+-    {
+-      pflOut=DataArrayInt::New();
+-      pflOut->alloc(nbOfElems,1);
+-      pflOut->iota(0);
+-    }
+-  else
+-    {
+-      pflOut=const_cast<DataArrayInt*>(pflIn);
+-      pflOut->incrRef();
+-    }
+-  MCAuto<DataArrayInt> safePfl(pflOut);
+-  MCAuto<DataArray> da=getOrCreateAndGetArray()->selectByTupleRanges(dads);
+-  const std::vector<std::string>& infos=getInfo();
+-  int nbOfComp=infos.size();
+-  for(int i=0;i<nbOfComp;i++)
+-    da->setInfoOnComponent(i,infos[i].c_str());
+-  safePfl->incrRef();
+-  return da.retn();
+-}
+-
+-
+-/// @cond INTERNAL
+-
+-class MFFPMIter
+-{
+-public:
+-  static MFFPMIter *NewCell(const MEDFileEntities *entities);
+-  static bool IsPresenceOfNode(const MEDFileEntities *entities);
+-  virtual ~MFFPMIter() { }
+-  virtual void begin() = 0;
+-  virtual bool finished() const = 0;
+-  virtual void next() = 0;
+-  virtual int current() const = 0;
+-};
+-
+-class MFFPMIterSimple : public MFFPMIter
+-{
+-public:
+-  MFFPMIterSimple():_pos(0) { }
+-  void begin() { _pos=0; }
+-  bool finished() const { return _pos>=MED_N_CELL_FIXED_GEO; }
+-  void next() { _pos++; }
+-  int current() const { return _pos; }
+-private:
+-  int _pos;
+-};
+-
+-class MFFPMIter2 : public MFFPMIter
+-{
+-public:
+-  MFFPMIter2(const std::vector<INTERP_KERNEL::NormalizedCellType>& cts);
+-  void begin() { _it=_ids.begin(); }
+-  bool finished() const { return _it==_ids.end(); }
+-  void next() { _it++; }
+-  int current() const { return *_it; }
+-private:
+-  std::vector<int> _ids;
+-  std::vector<int>::const_iterator _it;
+-};
+-
+-MFFPMIter *MFFPMIter::NewCell(const MEDFileEntities *entities)
+-{
+-  if(!entities)
+-    return new MFFPMIterSimple;
+-  else
+-    {
+-      const MEDFileStaticEntities *entities2(dynamic_cast<const MEDFileStaticEntities *>(entities));
+-      if(entities2)
+-        {
+-          std::vector<INTERP_KERNEL::NormalizedCellType> tmp;
+-          const std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> >& myEnt(entities2->getEntries());
+-          for(std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> >::const_iterator it=myEnt.begin();it!=myEnt.end();it++)
+-            {
+-              if((*it).first==ON_CELLS || (*it).first==ON_GAUSS_NE || (*it).first==ON_GAUSS_PT)
+-                tmp.push_back((*it).second);
+-            }
+-          return new MFFPMIter2(tmp);
+-        }
+-      return new MFFPMIterSimple;// for MEDFileAllStaticEntites and MEDFileAllStaticEntitiesPlusDyn cells are in
+-    }
+-}
+-
+-bool MFFPMIter::IsPresenceOfNode(const MEDFileEntities *entities)
+-{
+-  if(!entities)
+-    return true;
+-  else
+-    {
+-      const MEDFileStaticEntities *entities2(dynamic_cast<const MEDFileStaticEntities *>(entities));
+-      if(entities2)
+-        {
+-          const std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> >& myEnt(entities2->getEntries());
+-          for(std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> >::const_iterator it=myEnt.begin();it!=myEnt.end();it++)
+-            if((*it).first==ON_NODES)
+-              return true;
+-          return false;
+-        }
+-      return true;// for MEDFileAllStaticEntites and MEDFileAllStaticEntitiesPlusDyn nodes are in
+-    }
+-}
+-
+-MFFPMIter2::MFFPMIter2(const std::vector<INTERP_KERNEL::NormalizedCellType>& cts)
+-{
+-  std::size_t sz(cts.size());
+-  _ids.resize(sz);
+-  for(std::size_t i=0;i<sz;i++)
+-    {
+-      INTERP_KERNEL::NormalizedCellType *loc(std::find(typmai2,typmai2+MED_N_CELL_FIXED_GEO,cts[i]));
+-      if(loc!=typmai2+MED_N_CELL_FIXED_GEO)
+-        _ids[i]=(int)std::distance(typmai2,loc);
+-      else
+-        throw INTERP_KERNEL::Exception("MFFPMIter2 : The specified geo type does not exists !");
+-    }
+-}
+-
+-/// @endcond
+-
+-MEDFileFieldPerMesh::MEDFileFieldPerMesh(med_idt fid, MEDFileAnyTypeField1TSWithoutSDA *fath, int meshCsit, int meshIteration, int meshOrder, const MEDFileFieldNameScope& nasc, const MEDFileMesh *mm, const MEDFileEntities *entities):_mesh_iteration(meshIteration),_mesh_order(meshOrder),
+-    _father(fath)
+-{
+-  INTERP_KERNEL::AutoPtr<char> meshName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  INTERP_KERNEL::AutoPtr<char> pflName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  INTERP_KERNEL::AutoPtr<char> locName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  const MEDFileUMesh *mmu(dynamic_cast<const MEDFileUMesh *>(mm));
+-  INTERP_KERNEL::AutoCppPtr<MFFPMIter> iter0(MFFPMIter::NewCell(entities));
+-  for(iter0->begin();!iter0->finished();iter0->next())
+-    {
+-      int nbProfile (MEDfield23nProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_CELL        ,typmai[iter0->current()],meshCsit+1,meshName,pflName,locName));
+-      std::string name0(MEDLoaderBase::buildStringFromFortran(meshName,MED_NAME_SIZE+1));
+-      int nbProfile2(MEDfield23nProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_NODE_ELEMENT,typmai[iter0->current()],meshCsit+1,meshName,pflName,locName));
+-      std::string name1(MEDLoaderBase::buildStringFromFortran(meshName,MED_NAME_SIZE+1));
+-      if(nbProfile>0 || nbProfile2>0)
+-        {
+-          const PartDefinition *pd(0);
+-          if(mmu)
+-            pd=mmu->getPartDefAtLevel(mmu->getRelativeLevOnGeoType(typmai2[iter0->current()]),typmai2[iter0->current()]);
+-          _field_pm_pt.push_back(MEDFileFieldPerMeshPerType::NewOnRead(fid,this,ON_CELLS,typmai2[iter0->current()],nasc,pd));
+-          if(nbProfile>0)
+-            setMeshName(name0);
+-          else
+-            setMeshName(name1);
+-        }
+-    }
+-  if(MFFPMIter::IsPresenceOfNode(entities))
+-    {
+-      int nbProfile(MEDfield23nProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_NODE,MED_NONE,meshCsit+1,meshName,pflName,locName));
+-      if(nbProfile>0)
+-        {
+-          const PartDefinition *pd(0);
+-          if(mmu)
+-            pd=mmu->getPartDefAtLevel(1,INTERP_KERNEL::NORM_ERROR);
+-          _field_pm_pt.push_back(MEDFileFieldPerMeshPerType::NewOnRead(fid,this,ON_NODES,INTERP_KERNEL::NORM_ERROR,nasc,pd));
+-          setMeshName(MEDLoaderBase::buildStringFromFortran(meshName,MED_NAME_SIZE));
+-        }
+-    }
+-  if(!entities)
+-    return ;
+-  std::vector<int> dynGT(entities->getDynGTAvail());
+-  for(std::vector<int>::const_iterator it=dynGT.begin();it!=dynGT.end();it++)
+-    {
+-      int nbPfl(MEDfieldnProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_STRUCT_ELEMENT,*it,pflName,locName));
+-      if(nbPfl>0)
+-        {
+-          _field_pm_pt.push_back(MEDFileFieldPerMeshPerTypeDyn::NewOnRead(fid,this,entities,*it,nasc));
+-          setMeshName(MEDLoaderBase::buildStringFromFortran(meshName,MED_NAME_SIZE));
+-        }
+-    }
+-}
+-
+-MEDFileFieldPerMesh::MEDFileFieldPerMesh(MEDFileAnyTypeField1TSWithoutSDA *fath, const MEDCouplingMesh *mesh):_father(fath)
+-{
+-  copyTinyInfoFrom(mesh);
+-}
+-
+-void MEDFileFieldGlobs::loadProfileInFile(med_idt fid, int id, const std::string& pflName)
+-{
+-  if(id>=(int)_pfls.size())
+-    _pfls.resize(id+1);
+-  _pfls[id]=DataArrayInt::New();
+-  int lgth(MEDprofileSizeByName(fid,pflName.c_str()));
+-  _pfls[id]->setName(pflName);
+-  _pfls[id]->alloc(lgth,1);
+-  MEDFILESAFECALLERRD0(MEDprofileRd,(fid,pflName.c_str(),_pfls[id]->getPointer()));
+-  _pfls[id]->applyLin(1,-1,0);//Converting into C format
+-}
+-
+-void MEDFileFieldGlobs::loadProfileInFile(med_idt fid, int i)
+-{
+-  INTERP_KERNEL::AutoPtr<char> pflName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
+-  int sz;
+-  MEDFILESAFECALLERRD0(MEDprofileInfo,(fid,i+1,pflName,&sz));
+-  std::string pflCpp=MEDLoaderBase::buildStringFromFortran(pflName,MED_NAME_SIZE);
+-  if(i>=(int)_pfls.size())
+-    _pfls.resize(i+1);
+-  _pfls[i]=DataArrayInt::New();
+-  _pfls[i]->alloc(sz,1);
+-  _pfls[i]->setName(pflCpp.c_str());
+-  MEDFILESAFECALLERRD0(MEDprofileRd,(fid,pflName,_pfls[i]->getPointer()));
+-  _pfls[i]->applyLin(1,-1,0);//Converting into C format
+-}
+-
+-void MEDFileFieldGlobs::writeGlobals(med_idt fid, const MEDFileWritable& opt) const
+-{
+-  int nbOfPfls=_pfls.size();
+-  for(int i=0;i<nbOfPfls;i++)
+-    {
+-      MCAuto<DataArrayInt> cpy=_pfls[i]->deepCopy();
+-      cpy->applyLin(1,1,0);
+-      INTERP_KERNEL::AutoPtr<char> pflName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
+-      MEDLoaderBase::safeStrCpy(_pfls[i]->getName().c_str(),MED_NAME_SIZE,pflName,opt.getTooLongStrPolicy());
+-      MEDFILESAFECALLERWR0(MEDprofileWr,(fid,pflName,_pfls[i]->getNumberOfTuples(),cpy->getConstPointer()));
+-    }
+-  //
+-  int nbOfLocs=_locs.size();
+-  for(int i=0;i<nbOfLocs;i++)
+-    _locs[i]->writeLL(fid);
+-}
+-
+-void MEDFileFieldGlobs::appendGlobs(const MEDFileFieldGlobs& other, double eps)
+-{
+-  std::vector<std::string> pfls=getPfls();
+-  for(std::vector< MCAuto<DataArrayInt> >::const_iterator it=other._pfls.begin();it!=other._pfls.end();it++)
+-    {
+-      std::vector<std::string>::iterator it2=std::find(pfls.begin(),pfls.end(),(*it)->getName());
+-      if(it2==pfls.end())
+-        {
+-          _pfls.push_back(*it);
+-        }
+-      else
+-        {
+-          int id=std::distance(pfls.begin(),it2);
+-          if(!(*it)->isEqual(*_pfls[id]))
+-            {
+-              std::ostringstream oss; oss << "MEDFileFieldGlobs::appendGlobs : Profile \"" << (*it)->getName() << "\" already exists and is different from those expecting to be append !";
+-              throw INTERP_KERNEL::Exception(oss.str());
+-            }
+-        }
+-    }
+-  std::vector<std::string> locs=getLocs();
+-  for(std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=other._locs.begin();it!=other._locs.end();it++)
+-    {
+-      std::vector<std::string>::iterator it2=std::find(locs.begin(),locs.end(),(*it)->getName());
+-      if(it2==locs.end())
+-        {
+-          _locs.push_back(*it);
+-        }
+-      else
+-        {
+-          int id=std::distance(locs.begin(),it2);
+-          if(!(*it)->isEqual(*_locs[id],eps))
+-            {
+-              std::ostringstream oss; oss << "MEDFileFieldGlobs::appendGlobs : Localization \"" << (*it)->getName() << "\" already exists and is different from those expecting to be append !";
+-              throw INTERP_KERNEL::Exception(oss.str());
+-            }
+-        }
+-    }
+-}
+-
+-void MEDFileFieldGlobs::checkGlobsPflsPartCoherency(const std::vector<std::string>& pflsUsed) const
+-{
+-  for(std::vector<std::string>::const_iterator it=pflsUsed.begin();it!=pflsUsed.end();it++)
+-    getProfile((*it).c_str());
+-}
+-
+-void MEDFileFieldGlobs::checkGlobsLocsPartCoherency(const std::vector<std::string>& locsUsed) const
+-{
+-  for(std::vector<std::string>::const_iterator it=locsUsed.begin();it!=locsUsed.end();it++)
+-    getLocalization((*it).c_str());
+-}
+-
+-void MEDFileFieldGlobs::loadGlobals(med_idt fid, const MEDFileFieldGlobsReal& real)
+-{
+-  std::vector<std::string> profiles=real.getPflsReallyUsed();
+-  int sz=profiles.size();
+-  _pfls.resize(sz);
+-  for(int i=0;i<sz;i++)
+-    loadProfileInFile(fid,i,profiles[i].c_str());
+-  //
+-  std::vector<std::string> locs=real.getLocsReallyUsed();
+-  sz=locs.size();
+-  _locs.resize(sz);
+-  for(int i=0;i<sz;i++)
+-    _locs[i]=MEDFileFieldLoc::New(fid,locs[i].c_str());
+-}
+-
+-void MEDFileFieldGlobs::loadAllGlobals(med_idt fid, const MEDFileEntities *entities)
+-{
+-  int nProfil=MEDnProfile(fid);
+-  for(int i=0;i<nProfil;i++)
+-    loadProfileInFile(fid,i);
+-  int sz=MEDnLocalization(fid);
+-  _locs.resize(sz);
+-  for(int i=0;i<sz;i++)
+-    {
+-      _locs[i]=MEDFileFieldLoc::New(fid,i,entities);
+-    }
+-}
+-
+-MEDFileFieldGlobs *MEDFileFieldGlobs::New(med_idt fid)
+-{
+-  return new MEDFileFieldGlobs(fid);
+-}
+-
+-MEDFileFieldGlobs *MEDFileFieldGlobs::New()
+-{
+-  return new MEDFileFieldGlobs;
+-}
+-
+-std::size_t MEDFileFieldGlobs::getHeapMemorySizeWithoutChildren() const
+-{
+-  return _file_name.capacity()+_pfls.capacity()*sizeof(MCAuto<DataArrayInt>)+_locs.capacity()*sizeof(MCAuto<MEDFileFieldLoc>);
+-}
+-
+-std::vector<const BigMemoryObject *> MEDFileFieldGlobs::getDirectChildrenWithNull() const
+-{
+-  std::vector<const BigMemoryObject *> ret;
+-  for(std::vector< MCAuto< DataArrayInt > >::const_iterator it=_pfls.begin();it!=_pfls.end();it++)
+-    ret.push_back((const DataArrayInt *)*it);
+-  for(std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=_locs.begin();it!=_locs.end();it++)
+-    ret.push_back((const MEDFileFieldLoc *)*it);
+-  return ret;
+-}
+-
+-MEDFileFieldGlobs *MEDFileFieldGlobs::deepCopy() const
+-{
+-  MCAuto<MEDFileFieldGlobs> ret=new MEDFileFieldGlobs(*this);
+-  std::size_t i=0;
+-  for(std::vector< MCAuto<DataArrayInt> >::const_iterator it=_pfls.begin();it!=_pfls.end();it++,i++)
+-    {
+-      if((const DataArrayInt *)*it)
+-        ret->_pfls[i]=(*it)->deepCopy();
+-    }
+-  i=0;
+-  for(std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=_locs.begin();it!=_locs.end();it++,i++)
+-    {
+-      if((const MEDFileFieldLoc*)*it)
+-        ret->_locs[i]=(*it)->deepCopy();
+-    }
+-  return ret.retn();
+-}
+-
+-/*!
+- * \throw if a profile in \a pfls in not in \a this.
+- * \throw if a localization in \a locs in not in \a this.
+- * \sa MEDFileFieldGlobs::deepCpyPart
+- */
+-MEDFileFieldGlobs *MEDFileFieldGlobs::shallowCpyPart(const std::vector<std::string>& pfls, const std::vector<std::string>& locs) const
+-{
+-  MCAuto<MEDFileFieldGlobs> ret=MEDFileFieldGlobs::New();
+-  for(std::vector<std::string>::const_iterator it1=pfls.begin();it1!=pfls.end();it1++)
+-    {
+-      DataArrayInt *pfl=const_cast<DataArrayInt *>(getProfile((*it1).c_str()));
+-      if(!pfl)
+-        throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::shallowCpyPart : internal error ! pfl null !");
+-      pfl->incrRef();
+-      MCAuto<DataArrayInt> pfl2(pfl);
+-      ret->_pfls.push_back(pfl2);
+-    }
+-  for(std::vector<std::string>::const_iterator it2=locs.begin();it2!=locs.end();it2++)
+-    {
+-      MEDFileFieldLoc *loc=const_cast<MEDFileFieldLoc *>(&getLocalization((*it2).c_str()));
+-      if(!loc)
+-        throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::shallowCpyPart : internal error ! loc null !");
+-      loc->incrRef();
+-      MCAuto<MEDFileFieldLoc> loc2(loc);
+-      ret->_locs.push_back(loc2);
+-    }
+-  ret->setFileName(getFileName());
+-  return ret.retn();
+-}
+-
+-/*!
+- * \throw if a profile in \a pfls in not in \a this.
+- * \throw if a localization in \a locs in not in \a this.
+- * \sa MEDFileFieldGlobs::shallowCpyPart
+- */
+-MEDFileFieldGlobs *MEDFileFieldGlobs::deepCpyPart(const std::vector<std::string>& pfls, const std::vector<std::string>& locs) const
+-{
+-  MCAuto<MEDFileFieldGlobs> ret=MEDFileFieldGlobs::New();
+-  for(std::vector<std::string>::const_iterator it1=pfls.begin();it1!=pfls.end();it1++)
+-    {
+-      DataArrayInt *pfl=const_cast<DataArrayInt *>(getProfile((*it1).c_str()));
+-      if(!pfl)
+-        throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::deepCpyPart : internal error ! pfl null !");
+-      ret->_pfls.push_back(pfl->deepCopy());
+-    }
+-  for(std::vector<std::string>::const_iterator it2=locs.begin();it2!=locs.end();it2++)
+-    {
+-      MEDFileFieldLoc *loc=const_cast<MEDFileFieldLoc *>(&getLocalization((*it2).c_str()));
+-      if(!loc)
+-        throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::deepCpyPart : internal error ! loc null !");
+-      ret->_locs.push_back(loc->deepCopy());
+-    }
+-  ret->setFileName(getFileName());
+-  return ret.retn();
+-}
+-
+-MEDFileFieldGlobs::MEDFileFieldGlobs(med_idt fid):_file_name(MEDFileWritable::FileNameFromFID(fid))
+-{
+-}
+-
+-MEDFileFieldGlobs::MEDFileFieldGlobs()
+-{
+-}
+-
+-MEDFileFieldGlobs::~MEDFileFieldGlobs()
+-{
+-}
+-
+-void MEDFileFieldGlobs::simpleRepr(std::ostream& oss) const
+-{
+-  oss << "Profiles :\n";
+-  std::size_t n=_pfls.size();
+-  for(std::size_t i=0;i<n;i++)
+-    {
+-      oss << "  - #" << i << " ";
+-      const DataArrayInt *pfl=_pfls[i];
+-      if(pfl)
+-        oss << "\"" << pfl->getName() << "\"\n";
+-      else
+-        oss << "EMPTY !\n";
+-    }
+-  n=_locs.size();
+-  oss << "Localizations :\n";
+-  for(std::size_t i=0;i<n;i++)
+-    {
+-      oss << "  - #" << i << " ";
+-      const MEDFileFieldLoc *loc=_locs[i];
+-      if(loc)
+-        loc->simpleRepr(oss);
+-      else
+-        oss<< "EMPTY !\n";
+-    }
+-}
+-
+-void MEDFileFieldGlobs::changePflsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< MCAuto<DataArrayInt> >::iterator it=_pfls.begin();it!=_pfls.end();it++)
+-    {
+-      DataArrayInt *elt(*it);
+-      if(elt)
+-        {
+-          std::string name(elt->getName());
+-          for(std::vector< std::pair<std::vector<std::string>, std::string > >::const_iterator it2=mapOfModif.begin();it2!=mapOfModif.end();it2++)
+-            {
+-              if(std::find((*it2).first.begin(),(*it2).first.end(),name)!=(*it2).first.end())
+-                {
+-                  elt->setName((*it2).second.c_str());
+-                  return;
+-                }
+-            }
+-        }
+-    }
+-}
+-
+-void MEDFileFieldGlobs::changeLocsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< MCAuto<MEDFileFieldLoc> >::iterator it=_locs.begin();it!=_locs.end();it++)
+-    {
+-      MEDFileFieldLoc *elt(*it);
+-      if(elt)
+-        {
+-          std::string name(elt->getName());
+-          for(std::vector< std::pair<std::vector<std::string>, std::string > >::const_iterator it2=mapOfModif.begin();it2!=mapOfModif.end();it2++)
+-            {
+-              if(std::find((*it2).first.begin(),(*it2).first.end(),name)!=(*it2).first.end())
+-                {
+-                  elt->setName((*it2).second.c_str());
+-                  return;
+-                }
+-            }
+-        }
+-    }
+-}
+-
+-int MEDFileFieldGlobs::getNbOfGaussPtPerCell(int locId) const
+-{
+-  if(locId<0 || locId>=(int)_locs.size())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::getNbOfGaussPtPerCell : Invalid localization id !");
+-  return _locs[locId]->getNbOfGaussPtPerCell();
+-}
+-
+-const MEDFileFieldLoc& MEDFileFieldGlobs::getLocalization(const std::string& locName) const
+-{
+-  return getLocalizationFromId(getLocalizationId(locName));
+-}
+-
+-const MEDFileFieldLoc& MEDFileFieldGlobs::getLocalizationFromId(int locId) const
+-{
+-  if(locId<0 || locId>=(int)_locs.size())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::getLocalizationFromId : Invalid localization id !");
+-  return *_locs[locId];
+-}
+-
+-/// @cond INTERNAL
+-namespace MEDCouplingImpl
+-{
+-  class LocFinder
+-  {
+-  public:
+-    LocFinder(const std::string& loc):_loc(loc) { }
+-    bool operator() (const MCAuto<MEDFileFieldLoc>& loc) { return loc->isName(_loc); }
+-  private:
+-    const std::string &_loc;
+-  };
+-
+-  class PflFinder
+-  {
+-  public:
+-    PflFinder(const std::string& pfl):_pfl(pfl) { }
+-    bool operator() (const MCAuto<DataArrayInt>& pfl) { return _pfl==pfl->getName(); }
+-  private:
+-    const std::string& _pfl;
+-  };
+-}
+-/// @endcond
+-
+-int MEDFileFieldGlobs::getLocalizationId(const std::string& loc) const
+-{
+-  std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=std::find_if(_locs.begin(),_locs.end(),MEDCouplingImpl::LocFinder(loc));
+-  if(it==_locs.end())
+-    {
+-      std::ostringstream oss; oss << "MEDFileFieldGlobs::getLocalisationId : no such localisation name : \"" << loc << "\" Possible localizations are : ";
+-      for(it=_locs.begin();it!=_locs.end();it++)
+-        oss << "\"" << (*it)->getName() << "\", ";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  return std::distance(_locs.begin(),it);
+-}
+-
+-/*!
+- * The returned value is never null.
+- */
+-const DataArrayInt *MEDFileFieldGlobs::getProfile(const std::string& pflName) const
+-{
+-  std::string pflNameCpp(pflName);
+-  std::vector< MCAuto<DataArrayInt> >::const_iterator it=std::find_if(_pfls.begin(),_pfls.end(),MEDCouplingImpl::PflFinder(pflNameCpp));
+-  if(it==_pfls.end())
+-    {
+-      std::ostringstream oss; oss << "MEDFileFieldGlobs::getProfile: no such profile name : \"" << pflNameCpp << "\" Possible profiles are : ";
+-      for(it=_pfls.begin();it!=_pfls.end();it++)
+-        oss << "\"" << (*it)->getName() << "\", ";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  return *it;
+-}
+-
+-const DataArrayInt *MEDFileFieldGlobs::getProfileFromId(int pflId) const
+-{
+-  if(pflId<0 || pflId>=(int)_pfls.size())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::getProfileFromId : Invalid profile id !");
+-  return _pfls[pflId];
+-}
+-
+-MEDFileFieldLoc& MEDFileFieldGlobs::getLocalizationFromId(int locId)
+-{
+-  if(locId<0 || locId>=(int)_locs.size())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::getLocalizationFromId : Invalid localization id !");
+-  return *_locs[locId];
+-}
+-
+-MEDFileFieldLoc& MEDFileFieldGlobs::getLocalization(const std::string& locName)
+-{
+-  return getLocalizationFromId(getLocalizationId(locName));
+-}
+-
+-/*!
+- * The returned value is never null.
+- */
+-DataArrayInt *MEDFileFieldGlobs::getProfile(const std::string& pflName)
+-{
+-  std::string pflNameCpp(pflName);
+-  std::vector< MCAuto<DataArrayInt> >::iterator it=std::find_if(_pfls.begin(),_pfls.end(),MEDCouplingImpl::PflFinder(pflNameCpp));
+-  if(it==_pfls.end())
+-    {
+-      std::ostringstream oss; oss << "MEDFileFieldGlobs::getProfile: no such profile name : \"" << pflNameCpp << "\" Possible profiles are : ";
+-      for(it=_pfls.begin();it!=_pfls.end();it++)
+-        oss << "\"" << (*it)->getName() << "\", ";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  return *it;
+-}
+-
+-DataArrayInt *MEDFileFieldGlobs::getProfileFromId(int pflId)
+-{
+-  if(pflId<0 || pflId>=(int)_pfls.size())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::getProfileFromId : Invalid profile id !");
+-  return _pfls[pflId];
+-}
+-
+-void MEDFileFieldGlobs::killProfileIds(const std::vector<int>& pflIds)
+-{
+-  std::vector< MCAuto<DataArrayInt> > newPfls;
+-  int i=0;
+-  for(std::vector< MCAuto<DataArrayInt> >::const_iterator it=_pfls.begin();it!=_pfls.end();it++,i++)
+-    {
+-      if(std::find(pflIds.begin(),pflIds.end(),i)==pflIds.end())
+-        newPfls.push_back(*it);
+-    }
+-  _pfls=newPfls;
+-}
+-
+-void MEDFileFieldGlobs::killLocalizationIds(const std::vector<int>& locIds)
+-{
+-  std::vector< MCAuto<MEDFileFieldLoc> > newLocs;
+-  int i=0;
+-  for(std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=_locs.begin();it!=_locs.end();it++,i++)
+-    {
+-      if(std::find(locIds.begin(),locIds.end(),i)==locIds.end())
+-        newLocs.push_back(*it);
+-    }
+-  _locs=newLocs;
+-}
+-
+-void MEDFileFieldGlobs::killStructureElementsInGlobs()
+-{
+-  std::vector< MCAuto<MEDFileFieldLoc> > newLocs;
+-  for(std::vector< MCAuto<MEDFileFieldLoc> >::iterator it=_locs.begin();it!=_locs.end();it++)
+-    {
+-      if((*it).isNull())
+-        continue;
+-      if(!(*it)->isOnStructureElement())
+-        newLocs.push_back(*it);
+-    }
+-  _locs=newLocs;
+-}
+-
+-std::vector<std::string> MEDFileFieldGlobs::getPfls() const
+-{
+-  int sz=_pfls.size();
+-  std::vector<std::string> ret(sz);
+-  for(int i=0;i<sz;i++)
+-    ret[i]=_pfls[i]->getName();
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileFieldGlobs::getLocs() const
+-{
+-  int sz=_locs.size();
+-  std::vector<std::string> ret(sz);
+-  for(int i=0;i<sz;i++)
+-    ret[i]=_locs[i]->getName();
+-  return ret;
+-}
+-
+-bool MEDFileFieldGlobs::existsPfl(const std::string& pflName) const
+-{
+-  std::vector<std::string> v=getPfls();
+-  std::string s(pflName);
+-  return std::find(v.begin(),v.end(),s)!=v.end();
+-}
+-
+-bool MEDFileFieldGlobs::existsLoc(const std::string& locName) const
+-{
+-  std::vector<std::string> v=getLocs();
+-  std::string s(locName);
+-  return std::find(v.begin(),v.end(),s)!=v.end();
+-}
+-
+-std::vector< std::vector<int> > MEDFileFieldGlobs::whichAreEqualProfiles() const
+-{
+-  std::map<int,std::vector<int> > m;
+-  int i=0;
+-  for(std::vector< MCAuto<DataArrayInt> >::const_iterator it=_pfls.begin();it!=_pfls.end();it++,i++)
+-    {
+-      const DataArrayInt *tmp=(*it);
+-      if(tmp)
+-        {
+-          m[tmp->getHashCode()].push_back(i);
+-        }
+-    }
+-  std::vector< std::vector<int> > ret;
+-  for(std::map<int,std::vector<int> >::const_iterator it2=m.begin();it2!=m.end();it2++)
+-    {
+-      if((*it2).second.size()>1)
+-        {
+-          std::vector<int> ret0;
+-          bool equalityOrNot=false;
+-          for(std::vector<int>::const_iterator it3=(*it2).second.begin();it3!=(*it2).second.end();it3++)
+-            {
+-              std::vector<int>::const_iterator it4=it3; it4++;
+-              for(;it4!=(*it2).second.end();it4++)
+-                {
+-                  if(_pfls[*it3]->isEqualWithoutConsideringStr(*_pfls[*it4]))
+-                    {
+-                      if(!equalityOrNot)
+-                        ret0.push_back(*it3);
+-                      ret0.push_back(*it4);
+-                      equalityOrNot=true;
+-                    }
+-                }
+-            }
+-          if(!ret0.empty())
+-            ret.push_back(ret0);
+-        }
+-    }
+-  return ret;
+-}
+-
+-std::vector< std::vector<int> > MEDFileFieldGlobs::whichAreEqualLocs(double eps) const
+-{
+-  throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::whichAreEqualLocs : no implemented yet ! Sorry !");
+-}
+-
+-void MEDFileFieldGlobs::appendProfile(DataArrayInt *pfl)
+-{
+-  std::string name(pfl->getName());
+-  if(name.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::appendProfile : unsupported profiles with no name !");
+-  for(std::vector< MCAuto<DataArrayInt> >::const_iterator it=_pfls.begin();it!=_pfls.end();it++)
+-    if(name==(*it)->getName())
+-      {
+-        if(!pfl->isEqual(*(*it)))
+-          {
+-            std::ostringstream oss; oss << "MEDFileFieldGlobs::appendProfile : profile \"" << name << "\" already exists and is different from existing !";
+-            throw INTERP_KERNEL::Exception(oss.str());
+-          }
+-      }
+-  pfl->incrRef();
+-  _pfls.push_back(pfl);
+-}
+-
+-void MEDFileFieldGlobs::appendLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w)
+-{
+-  std::string name(locName);
+-  if(name.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::appendLoc : unsupported localizations with no name !");
+-  MCAuto<MEDFileFieldLoc> obj=MEDFileFieldLoc::New(locName,geoType,refCoo,gsCoo,w);
+-  for(std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=_locs.begin();it!=_locs.end();it++)
+-    if((*it)->isName(locName))
+-      {
+-        if(!(*it)->isEqual(*obj,1e-12))
+-          {
+-            std::ostringstream oss; oss << "MEDFileFieldGlobs::appendLoc : localization \"" << name << "\" already exists and is different from existing !";
+-            throw INTERP_KERNEL::Exception(oss.str());
+-          }
+-      }
+-  _locs.push_back(obj);
+-}
+-
+-std::string MEDFileFieldGlobs::createNewNameOfPfl() const
+-{
+-  std::vector<std::string> names=getPfls();
+-  return CreateNewNameNotIn("NewPfl_",names);
+-}
+-
+-std::string MEDFileFieldGlobs::createNewNameOfLoc() const
+-{
+-  std::vector<std::string> names=getLocs();
+-  return CreateNewNameNotIn("NewLoc_",names);
+-}
+-
+-std::string MEDFileFieldGlobs::CreateNewNameNotIn(const std::string& prefix, const std::vector<std::string>& namesToAvoid)
+-{
+-  for(std::size_t sz=0;sz<100000;sz++)
+-    {
+-      std::ostringstream tryName;
+-      tryName << prefix << sz;
+-      if(std::find(namesToAvoid.begin(),namesToAvoid.end(),tryName.str())==namesToAvoid.end())
+-        return tryName.str();
+-    }
+-  throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::CreateNewNameNotIn : impossible to create an additional profile limit of 100000 profiles reached !");
+-}
+-
+-/*!
+- * Creates a MEDFileFieldGlobsReal on a given file name. Nothing is read here.
+- *  \param [in] fname - the file name.
+- */
+-MEDFileFieldGlobsReal::MEDFileFieldGlobsReal(med_idt fid):_globals(MEDFileFieldGlobs::New(fid))
+-{
+-}
+-
+-/*!
+- * Creates an empty MEDFileFieldGlobsReal.
+- */
+-MEDFileFieldGlobsReal::MEDFileFieldGlobsReal():_globals(MEDFileFieldGlobs::New())
+-{
+-}
+-
+-std::size_t MEDFileFieldGlobsReal::getHeapMemorySizeWithoutChildren() const
+-{
+-  return 0;
+-}
+-
+-std::vector<const BigMemoryObject *> MEDFileFieldGlobsReal::getDirectChildrenWithNull() const
+-{
+-  std::vector<const BigMemoryObject *> ret;
+-  ret.push_back((const MEDFileFieldGlobs *)_globals);
+-  return ret;
+-}
+-
+-/*!
+- * Returns a string describing profiles and Gauss points held in \a this.
+- *  \return std::string - the description string.
+- */
+-void MEDFileFieldGlobsReal::simpleReprGlobs(std::ostream& oss) const
+-{
+-  const MEDFileFieldGlobs *glob=_globals;
+-  std::ostringstream oss2; oss2 << glob;
+-  std::string stars(oss2.str().length(),'*');
+-  oss << "Globals information on fields (at " << oss2.str() << "):" << "\n************************************" << stars  << "\n\n";
+-  if(glob)
+-    glob->simpleRepr(oss);
+-  else
+-    oss << "NO GLOBAL INFORMATION !\n";
+-}
+-
+-void MEDFileFieldGlobsReal::resetContent()
+-{
+-  _globals=MEDFileFieldGlobs::New();
+-}
+-
+-void MEDFileFieldGlobsReal::killStructureElementsInGlobs()
+-{
+-  contentNotNull()->killStructureElementsInGlobs();
+-}
+-
+-MEDFileFieldGlobsReal::~MEDFileFieldGlobsReal()
+-{
+-}
+-
+-/*!
+- * Copies references to profiles and Gauss points from another MEDFileFieldGlobsReal.
+- *  \param [in] other - the other MEDFileFieldGlobsReal to copy data from.
+- */
+-void MEDFileFieldGlobsReal::shallowCpyGlobs(const MEDFileFieldGlobsReal& other)
+-{
+-  _globals=other._globals;
+-}
+-
+-/*!
+- * Copies references to ** only used ** by \a this, profiles and Gauss points from another MEDFileFieldGlobsReal.
+- *  \param [in] other - the other MEDFileFieldGlobsReal to copy data from.
+- */
+-void MEDFileFieldGlobsReal::shallowCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other)
+-{
+-  const MEDFileFieldGlobs *otherg(other._globals);
+-  if(!otherg)
+-    return ;
+-  _globals=otherg->shallowCpyPart(getPflsReallyUsed(),getLocsReallyUsed());
+-}
+-
+-/*!
+- * Copies deeply to ** only used ** by \a this, profiles and Gauss points from another MEDFileFieldGlobsReal.
+- *  \param [in] other - the other MEDFileFieldGlobsReal to copy data from.
+- */
+-void MEDFileFieldGlobsReal::deepCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other)
+-{
+-  const MEDFileFieldGlobs *otherg(other._globals);
+-  if(!otherg)
+-    return ;
+-  _globals=otherg->deepCpyPart(getPflsReallyUsed(),getLocsReallyUsed());
+-}
+-
+-void MEDFileFieldGlobsReal::deepCpyGlobs(const MEDFileFieldGlobsReal& other)
+-{
+-  _globals=other._globals;
+-  if((const MEDFileFieldGlobs *)_globals)
+-    _globals=other._globals->deepCopy();
+-}
+-
+-/*!
+- * Adds profiles and Gauss points held by another MEDFileFieldGlobsReal to \a this one.
+- *  \param [in] other - the MEDFileFieldGlobsReal to copy data from.
+- *  \param [in] eps - a precision used to compare Gauss points with same name held by
+- *         \a this and \a other MEDFileFieldGlobsReal.
+- *  \throw If \a this and \a other hold profiles with equal names but different ids.
+- *  \throw If  \a this and \a other hold different Gauss points with equal names.
+- */
+-void MEDFileFieldGlobsReal::appendGlobs(const MEDFileFieldGlobsReal& other, double eps)
+-{
+-  const MEDFileFieldGlobs *thisGlobals(_globals),*otherGlobals(other._globals);
+-  if(thisGlobals==otherGlobals)
+-    return ;
+-  if(!thisGlobals)
+-    {
+-      _globals=other._globals;
+-      return ;
+-    }
+-  _globals->appendGlobs(*other._globals,eps);
+-}
+-
+-void MEDFileFieldGlobsReal::checkGlobsCoherency() const
+-{
+-  checkGlobsPflsPartCoherency();
+-  checkGlobsLocsPartCoherency();
+-}
+-
+-void MEDFileFieldGlobsReal::checkGlobsPflsPartCoherency() const
+-{
+-  contentNotNull()->checkGlobsPflsPartCoherency(getPflsReallyUsed());
+-}
+-
+-void MEDFileFieldGlobsReal::checkGlobsLocsPartCoherency() const
+-{
+-  contentNotNull()->checkGlobsLocsPartCoherency(getLocsReallyUsed());
+-}
+-
+-void MEDFileFieldGlobsReal::loadProfileInFile(med_idt fid, int id, const std::string& pflName)
+-{
+-  contentNotNull()->loadProfileInFile(fid,id,pflName);
+-}
+-
+-void MEDFileFieldGlobsReal::loadProfileInFile(med_idt fid, int id)
+-{
+-  contentNotNull()->loadProfileInFile(fid,id);
+-}
+-
+-void MEDFileFieldGlobsReal::loadGlobals(med_idt fid)
+-{
+-  contentNotNull()->loadGlobals(fid,*this);
+-}
+-
+-void MEDFileFieldGlobsReal::loadAllGlobals(med_idt fid, const MEDFileEntities *entities)
+-{
+-  contentNotNull()->loadAllGlobals(fid,entities);
+-}
+-
+-void MEDFileFieldGlobsReal::writeGlobals(med_idt fid, const MEDFileWritable& opt) const
+-{
+-  contentNotNull()->writeGlobals(fid,opt);
+-}
+-
+-/*!
+- * Returns names of all profiles. To get only used profiles call getPflsReallyUsed()
+- * or getPflsReallyUsedMulti().
+- *  \return std::vector<std::string> - a sequence of names of all profiles.
+- */
+-std::vector<std::string> MEDFileFieldGlobsReal::getPfls() const
+-{
+-  return contentNotNull()->getPfls();
+-}
+-
+-/*!
+- * Returns names of all localizations. To get only used localizations call getLocsReallyUsed()
+- * or getLocsReallyUsedMulti().
+- *  \return std::vector<std::string> - a sequence of names of all localizations.
+- */
+-std::vector<std::string> MEDFileFieldGlobsReal::getLocs() const
+-{
+-  return contentNotNull()->getLocs();
+-}
+-
+-/*!
+- * Checks if the profile with a given name exists.
+- *  \param [in] pflName - the profile name of interest.
+- *  \return bool - \c true if the profile named \a pflName exists.
+- */
+-bool MEDFileFieldGlobsReal::existsPfl(const std::string& pflName) const
+-{
+-  return contentNotNull()->existsPfl(pflName);
+-}
+-
+-/*!
+- * Checks if the localization with a given name exists.
+- *  \param [in] locName - the localization name of interest.
+- *  \return bool - \c true if the localization named \a locName exists.
+- */
+-bool MEDFileFieldGlobsReal::existsLoc(const std::string& locName) const
+-{
+-  return contentNotNull()->existsLoc(locName);
+-}
+-
+-std::string MEDFileFieldGlobsReal::createNewNameOfPfl() const
+-{
+-  return contentNotNull()->createNewNameOfPfl();
+-}
+-
+-std::string MEDFileFieldGlobsReal::createNewNameOfLoc() const
+-{
+-  return contentNotNull()->createNewNameOfLoc();
+-}
+-
+-/*!
+- * Sets the name of a MED file.
+- *  \param [inout] fileName - the file name.
+- */
+-void MEDFileFieldGlobsReal::setFileName(const std::string& fileName)
+-{
+-  contentNotNull()->setFileName(fileName);
+-}
+-
+-/*!
+- * Finds equal profiles. Two profiles are considered equal if they contain the same ids
+- * in the same order.
+- *  \return std::vector< std::vector<int> > - a sequence of groups of equal profiles.
+- *          Each item of this sequence is a vector containing ids of equal profiles.
+- */
+-std::vector< std::vector<int> > MEDFileFieldGlobsReal::whichAreEqualProfiles() const
+-{
+-  return contentNotNull()->whichAreEqualProfiles();
+-}
+-
+-/*!
+- * Finds equal localizations.
+- *  \param [in] eps - a precision used to compare real values of the localizations.
+- *  \return std::vector< std::vector<int> > - a sequence of groups of equal localizations.
+- *          Each item of this sequence is a vector containing ids of equal localizations.
+- */
+-std::vector< std::vector<int> > MEDFileFieldGlobsReal::whichAreEqualLocs(double eps) const
+-{
+-  return contentNotNull()->whichAreEqualLocs(eps);
+-}
+-
+-/*!
+- * Renames the profiles. References to profiles (a reference is a profile name) are not changed.
+- * \param [in] mapOfModif - a sequence describing required renaming. Each element of
+- *        this sequence is a pair whose 
+- *        - the first item is a vector of profile names to replace by the second item,
+- *        - the second item is a profile name to replace every profile name of the first item.
+- */
+-void MEDFileFieldGlobsReal::changePflsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  contentNotNull()->changePflsNamesInStruct(mapOfModif);
+-}
+-
+-/*!
+- * Renames the localizations. References to localizations (a reference is a localization name) are not changed.
+- * \param [in] mapOfModif - a sequence describing required renaming. Each element of
+- *        this sequence is a pair whose 
+- *        - the first item is a vector of localization names to replace by the second item,
+- *        - the second item is a localization name to replace every localization name of the first item.
+- */
+-void MEDFileFieldGlobsReal::changeLocsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  contentNotNull()->changeLocsNamesInStruct(mapOfModif);
+-}
+-
+-/*!
+- * Replaces references to some profiles (a reference is a profile name) by references
+- * to other profiles and, contrary to changePflsRefsNamesGen(), renames the profiles
+- * them-selves accordingly. <br>
+- * This method is a generalization of changePflName().
+- * \param [in] mapOfModif - a sequence describing required replacements. Each element of
+- *        this sequence is a pair whose 
+- *        - the first item is a vector of profile names to replace by the second item,
+- *        - the second item is a profile name to replace every profile of the first item.
+- * \sa changePflsRefsNamesGen()
+- * \sa changePflName()
+- */
+-void MEDFileFieldGlobsReal::changePflsNames(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  changePflsRefsNamesGen(mapOfModif);
+-  changePflsNamesInStruct(mapOfModif);
+-}
+-
+-/*!
+- * Replaces references to some localizations (a reference is a localization name) by references
+- * to other localizations and, contrary to changeLocsRefsNamesGen(), renames the localizations
+- * them-selves accordingly. <br>
+- * This method is a generalization of changeLocName().
+- * \param [in] mapOfModif - a sequence describing required replacements. Each element of
+- *        this sequence is a pair whose 
+- *        - the first item is a vector of localization names to replace by the second item,
+- *        - the second item is a localization name to replace every localization of the first item.
+- * \sa changeLocsRefsNamesGen()
+- * \sa changeLocName()
+- */
+-void MEDFileFieldGlobsReal::changeLocsNames(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  changeLocsRefsNamesGen(mapOfModif);
+-  changeLocsNamesInStruct(mapOfModif);
+-}
+-
+-/*!
+- * Renames the profile having a given name and updates references to this profile.
+- *  \param [in] oldName - the name of the profile to rename.
+- *  \param [in] newName - a new name of the profile.
+- * \sa changePflsNames().
+- */
+-void MEDFileFieldGlobsReal::changePflName(const std::string& oldName, const std::string& newName)
+-{
+-  std::vector< std::pair<std::vector<std::string>, std::string > > mapOfModif(1);
+-  std::pair<std::vector<std::string>, std::string > p(std::vector<std::string>(1,std::string(oldName)),std::string(newName));
+-  mapOfModif[0]=p;
+-  changePflsNames(mapOfModif);
+-}
+-
+-/*!
+- * Renames the localization having a given name and updates references to this localization.
+- *  \param [in] oldName - the name of the localization to rename.
+- *  \param [in] newName - a new name of the localization.
+- * \sa changeLocsNames().
+- */
+-void MEDFileFieldGlobsReal::changeLocName(const std::string& oldName, const std::string& newName)
+-{
+-  std::vector< std::pair<std::vector<std::string>, std::string > > mapOfModif(1);
+-  std::pair<std::vector<std::string>, std::string > p(std::vector<std::string>(1,std::string(oldName)),std::string(newName));
+-  mapOfModif[0]=p;
+-  changeLocsNames(mapOfModif);
+-}
+-
+-/*!
+- * Removes duplicated profiles. Returns a map used to update references to removed 
+- * profiles via changePflsRefsNamesGen().
+- * Equal profiles are found using whichAreEqualProfiles().
+- *  \return std::vector< std::pair<std::vector<std::string>, std::string > > - 
+- *          a sequence describing the performed replacements of profiles. Each element of
+- *          this sequence is a pair whose
+- *          - the first item is a vector of profile names replaced by the second item,
+- *          - the second item is a profile name replacing every profile of the first item.
+- */
+-std::vector< std::pair<std::vector<std::string>, std::string > > MEDFileFieldGlobsReal::zipPflsNames()
+-{
+-  std::vector< std::vector<int> > pseudoRet=whichAreEqualProfiles();
+-  std::vector< std::pair<std::vector<std::string>, std::string > > ret(pseudoRet.size());
+-  int i=0;
+-  for(std::vector< std::vector<int> >::const_iterator it=pseudoRet.begin();it!=pseudoRet.end();it++,i++)
+-    {
+-      std::vector< std::string > tmp((*it).size());
+-      int j=0;
+-      for(std::vector<int>::const_iterator it2=(*it).begin();it2!=(*it).end();it2++,j++)
+-        tmp[j]=std::string(getProfileFromId(*it2)->getName());
+-      std::pair<std::vector<std::string>, std::string > p(tmp,tmp.front());
+-      ret[i]=p;
+-      std::vector<int> tmp2((*it).begin()+1,(*it).end());
+-      killProfileIds(tmp2);
+-    }
+-  changePflsRefsNamesGen(ret);
+-  return ret;
+-}
+-
+-/*!
+- * Removes duplicated localizations. Returns a map used to update references to removed 
+- * localizations via changeLocsRefsNamesGen().
+- * Equal localizations are found using whichAreEqualLocs().
+- *  \param [in] eps - a precision used to compare real values of the localizations.
+- *  \return std::vector< std::pair<std::vector<std::string>, std::string > > - 
+- *          a sequence describing the performed replacements of localizations. Each element of
+- *          this sequence is a pair whose
+- *          - the first item is a vector of localization names replaced by the second item,
+- *          - the second item is a localization name replacing every localization of the first item.
+- */
+-std::vector< std::pair<std::vector<std::string>, std::string > > MEDFileFieldGlobsReal::zipLocsNames(double eps)
+-{
+-  std::vector< std::vector<int> > pseudoRet=whichAreEqualLocs(eps);
+-  std::vector< std::pair<std::vector<std::string>, std::string > > ret(pseudoRet.size());
+-  int i=0;
+-  for(std::vector< std::vector<int> >::const_iterator it=pseudoRet.begin();it!=pseudoRet.end();it++,i++)
+-    {
+-      std::vector< std::string > tmp((*it).size());
+-      int j=0;
+-      for(std::vector<int>::const_iterator it2=(*it).begin();it2!=(*it).end();it2++,j++)
+-        tmp[j]=std::string(getLocalizationFromId(*it2).getName());
+-      std::pair<std::vector<std::string>, std::string > p(tmp,tmp.front());
+-      ret[i]=p;
+-      std::vector<int> tmp2((*it).begin()+1,(*it).end());
+-      killLocalizationIds(tmp2);
+-    }
+-  changeLocsRefsNamesGen(ret);
+-  return ret;
+-}
+-
+-/*!
+- * Returns number of Gauss points per cell in a given localization.
+- *  \param [in] locId - an id of the localization of interest.
+- *  \return int - the number of the Gauss points per cell.
+- */
+-int MEDFileFieldGlobsReal::getNbOfGaussPtPerCell(int locId) const
+-{
+-  return contentNotNull()->getNbOfGaussPtPerCell(locId);
+-}
+-
+-/*!
+- * Returns an id of a localization by its name.
+- *  \param [in] loc - the localization name of interest.
+- *  \return int - the id of the localization.
+- *  \throw If there is no a localization named \a loc.
+- */
+-int MEDFileFieldGlobsReal::getLocalizationId(const std::string& loc) const
+-{
+-  return contentNotNull()->getLocalizationId(loc);
+-}
+-
+-/*!
+- * Returns the name of the MED file.
+- *  \return const std::string&  - the MED file name.
+- */
+-std::string MEDFileFieldGlobsReal::getFileName() const
+-{
+-  return contentNotNull()->getFileName();
+-}
+-
+-/*!
+- * Returns a localization object by its name.
+- *  \param [in] locName - the name of the localization of interest.
+- *  \return const MEDFileFieldLoc& - the localization object having the name \a locName.
+- *  \throw If there is no a localization named \a locName.
+- */
+-const MEDFileFieldLoc& MEDFileFieldGlobsReal::getLocalization(const std::string& locName) const
+-{
+-  return contentNotNull()->getLocalization(locName);
+-}
+-
+-/*!
+- * Returns a localization object by its id.
+- *  \param [in] locId - the id of the localization of interest.
+- *  \return const MEDFileFieldLoc& - the localization object having the id \a locId.
+- *  \throw If there is no a localization with id \a locId.
+- */
+-const MEDFileFieldLoc& MEDFileFieldGlobsReal::getLocalizationFromId(int locId) const
+-{
+-  return contentNotNull()->getLocalizationFromId(locId);
+-}
+-
+-/*!
+- * Returns a profile array by its name.
+- *  \param [in] pflName - the name of the profile of interest.
+- *  \return const DataArrayInt * - the profile array having the name \a pflName.
+- *  \throw If there is no a profile named \a pflName.
+- */
+-const DataArrayInt *MEDFileFieldGlobsReal::getProfile(const std::string& pflName) const
+-{
+-  return contentNotNull()->getProfile(pflName);
+-}
+-
+-/*!
+- * Returns a profile array by its id.
+- *  \param [in] pflId - the id of the profile of interest.
+- *  \return const DataArrayInt * - the profile array having the id \a pflId.
+- *  \throw If there is no a profile with id \a pflId.
+- */
+-const DataArrayInt *MEDFileFieldGlobsReal::getProfileFromId(int pflId) const
+-{
+-  return contentNotNull()->getProfileFromId(pflId);
+-}
+-
+-/*!
+- * Returns a localization object, apt for modification, by its id.
+- *  \param [in] locId - the id of the localization of interest.
+- *  \return MEDFileFieldLoc& - a non-const reference to the localization object
+- *          having the id \a locId.
+- *  \throw If there is no a localization with id \a locId.
+- */
+-MEDFileFieldLoc& MEDFileFieldGlobsReal::getLocalizationFromId(int locId)
+-{
+-  return contentNotNull()->getLocalizationFromId(locId);
+-}
+-
+-/*!
+- * Returns a localization object, apt for modification, by its name.
+- *  \param [in] locName - the name of the localization of interest.
+- *  \return MEDFileFieldLoc& - a non-const reference to the localization object
+- *          having the name \a locName.
+- *  \throw If there is no a localization named \a locName.
+- */
+-MEDFileFieldLoc& MEDFileFieldGlobsReal::getLocalization(const std::string& locName)
+-{
+-  return contentNotNull()->getLocalization(locName);
+-}
+-
+-/*!
+- * Returns a profile array, apt for modification, by its name.
+- *  \param [in] pflName - the name of the profile of interest.
+- *  \return DataArrayInt * - a non-const pointer to the profile array having the name \a pflName.
+- *  \throw If there is no a profile named \a pflName.
+- */
+-DataArrayInt *MEDFileFieldGlobsReal::getProfile(const std::string& pflName)
+-{
+-  return contentNotNull()->getProfile(pflName);
+-}
+-
+-/*!
+- * Returns a profile array, apt for modification, by its id.
+- *  \param [in] pflId - the id of the profile of interest.
+- *  \return DataArrayInt * - a non-const pointer to the profile array having the id \a pflId.
+- *  \throw If there is no a profile with id \a pflId.
+- */
+-DataArrayInt *MEDFileFieldGlobsReal::getProfileFromId(int pflId)
+-{
+-  return contentNotNull()->getProfileFromId(pflId);
+-}
+-
+-/*!
+- * Removes profiles given by their ids. No data is updated to track this removal.
+- *  \param [in] pflIds - a sequence of ids of the profiles to remove.
+- */
+-void MEDFileFieldGlobsReal::killProfileIds(const std::vector<int>& pflIds)
+-{
+-  contentNotNull()->killProfileIds(pflIds);
+-}
+-
+-/*!
+- * Removes localizations given by their ids. No data is updated to track this removal.
+- *  \param [in] locIds - a sequence of ids of the localizations to remove.
+- */
+-void MEDFileFieldGlobsReal::killLocalizationIds(const std::vector<int>& locIds)
+-{
+-  contentNotNull()->killLocalizationIds(locIds);
+-}
+-
+-/*!
+- * Stores a profile array.
+- *  \param [in] pfl - the profile array to store.
+- *  \throw If the name of \a pfl is empty.
+- *  \throw If a profile with the same name as that of \a pfl already exists but contains
+- *         different ids.
+- */
+-void MEDFileFieldGlobsReal::appendProfile(DataArrayInt *pfl)
+-{
+-  contentNotNull()->appendProfile(pfl);
+-}
+-
+-/*!
+- * Adds a new localization of Gauss points.
+- *  \param [in] locName - the name of the new localization.
+- *  \param [in] geoType - a geometrical type of the reference cell.
+- *  \param [in] refCoo - coordinates of points of the reference cell. Size of this vector
+- *         must be \c nbOfNodesPerCell * \c dimOfType.
+- *  \param [in] gsCoo - coordinates of Gauss points on the reference cell. Size of this vector
+- *         must be  _wg_.size() * \c dimOfType.
+- *  \param [in] w - the weights of Gauss points.
+- *  \throw If \a locName is empty.
+- *  \throw If a localization with the name \a locName already exists but is
+- *         different form the new one.
+- */
+-void MEDFileFieldGlobsReal::appendLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w)
+-{
+-  contentNotNull()->appendLoc(locName,geoType,refCoo,gsCoo,w);
+-}
+-
+-MEDFileFieldGlobs *MEDFileFieldGlobsReal::contentNotNull()
+-{
+-  MEDFileFieldGlobs *g(_globals);
+-  if(!g)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldGlobsReal::contentNotNull : no content in not const !");
+-  return g;
+-}
+-
+-const MEDFileFieldGlobs *MEDFileFieldGlobsReal::contentNotNull() const
+-{
+-  const MEDFileFieldGlobs *g(_globals);
+-  if(!g)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldGlobsReal::contentNotNull : no content in const !");
+-  return g;
+-}
+-
+-//= MEDFileFieldNameScope
+-
+-MEDFileFieldNameScope::MEDFileFieldNameScope()
+-{
+-}
+-
+-MEDFileFieldNameScope::MEDFileFieldNameScope(const std::string& fieldName, const std::string& meshName):_name(fieldName),_mesh_name(meshName)
+-{
+-}
+-
+-/*!
+- * Returns the name of \a this field.
+- *  \return std::string - a string containing the field name.
+- */
+-std::string MEDFileFieldNameScope::getName() const
+-{
+-  return _name;
+-}
+-
+-/*!
+- * Sets name of \a this field
+- *  \param [in] name - the new field name.
+- */
+-void MEDFileFieldNameScope::setName(const std::string& fieldName)
+-{
+-  _name=fieldName;
+-}
+-
+-std::string MEDFileFieldNameScope::getDtUnit() const
+-{
+-  return _dt_unit;
+-}
+-
+-void MEDFileFieldNameScope::setDtUnit(const std::string& dtUnit)
+-{
+-  _dt_unit=dtUnit;
+-}
+-
+-void MEDFileFieldNameScope::copyNameScope(const MEDFileFieldNameScope& other)
+-{
+-  _name=other._name;
+-  _mesh_name=other._mesh_name;
+-  _dt_unit=other._dt_unit;
+-}
+-
+-/*!
+- * Returns the mesh name.
+- *  \return std::string - a string holding the mesh name.
+- *  \throw If \c _field_per_mesh.empty()
+- */
+-std::string MEDFileFieldNameScope::getMeshName() const
+-{
+-  return _mesh_name;
+-}
+-
+-void MEDFileFieldNameScope::setMeshName(const std::string& meshName)
+-{
+-  _mesh_name=meshName;
+-}
+-
+-//= MEDFileAnyTypeField1TSWithoutSDA
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::deepCpyLeavesFrom(const MEDFileAnyTypeField1TSWithoutSDA& other)
+-{
+-  _field_per_mesh.resize(other._field_per_mesh.size());
+-  std::size_t i=0;
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=other._field_per_mesh.begin();it!=other._field_per_mesh.end();it++,i++)
+-    {
+-      if((const MEDFileFieldPerMesh *)*it)
+-        _field_per_mesh[i]=(*it)->deepCopy(this);
+-    }
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::accept(MEDFileFieldVisitor& visitor) const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    if((*it).isNotNull())
+-      {
+-        visitor.newMeshEntry(*it);
+-        (*it)->accept(visitor);
+-        visitor.endMeshEntry(*it);
+-      }
+-}
+-
+-/*!
+- * Prints a string describing \a this field into a stream. This string is outputted 
+- * by \c print Python command.
+- *  \param [in] bkOffset - number of white spaces printed at the beginning of each line.
+- *  \param [in,out] oss - the out stream.
+- *  \param [in] f1tsId - the field index within a MED file. If \a f1tsId < 0, the tiny
+- *          info id printed, else, not.
+- */
+-void MEDFileAnyTypeField1TSWithoutSDA::simpleRepr(int bkOffset, std::ostream& oss, int f1tsId) const
+-{
+-  std::string startOfLine(bkOffset,' ');
+-  oss << startOfLine << "Field ";
+-  if(bkOffset==0)
+-    oss << "[Type=" << getTypeStr() << "] with name \"" << getName() << "\" ";
+-  oss << "on one time Step ";
+-  if(f1tsId>=0)
+-    oss << "(" << f1tsId << ") ";
+-  oss << "on iteration=" << _iteration << " order=" << _order << "." << std::endl;
+-  oss << startOfLine << "Time attached is : " << _dt << " [" << _dt_unit << "]." << std::endl;
+-  const DataArray *arr=getUndergroundDataArray();
+-  if(arr)
+-    {
+-      const std::vector<std::string> &comps=arr->getInfoOnComponents();
+-      if(f1tsId<0)
+-        {
+-          oss << startOfLine << "Field has " << comps.size() << " components with the following infos :" << std::endl;
+-          for(std::vector<std::string>::const_iterator it=comps.begin();it!=comps.end();it++)
+-            oss << startOfLine << "  -  \"" << (*it) << "\"" << std::endl;
+-        }
+-      if(arr->isAllocated())
+-        {
+-          oss << startOfLine << "Whole field contains " << arr->getNumberOfTuples() << " tuples." << std::endl;
+-        }
+-      else
+-        oss << startOfLine << "The array of the current field has not allocated yet !" << std::endl;
+-    }
+-  else
+-    {
+-      oss << startOfLine << "Field infos are empty ! Not defined yet !" << std::endl;
+-    }
+-  oss << startOfLine << "----------------------" << std::endl;
+-  if(!_field_per_mesh.empty())
+-    {
+-      int i=0;
+-      for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it2=_field_per_mesh.begin();it2!=_field_per_mesh.end();it2++,i++)
+-        {
+-          const MEDFileFieldPerMesh *cur=(*it2);
+-          if(cur)
+-            cur->simpleRepr(bkOffset,oss,i);
+-          else
+-            oss << startOfLine << "Field per mesh #" << i << " is not defined !" << std::endl;
+-        }
+-    }
+-  else
+-    {
+-      oss << startOfLine << "Field is not defined on any meshes !" << std::endl;
+-    }
+-  oss << startOfLine << "----------------------" << std::endl;
+-}
+-
+-std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > MEDFileAnyTypeField1TSWithoutSDA::splitComponents() const
+-{
+-  const DataArray *arr(getUndergroundDataArray());
+-  if(!arr)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::splitComponents : no array defined !");
+-  int nbOfCompo=arr->getNumberOfComponents();
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret(nbOfCompo);
+-  for(int i=0;i<nbOfCompo;i++)
+-    {
+-      ret[i]=deepCopy();
+-      std::vector<int> v(1,i);
+-      MCAuto<DataArray> arr2=arr->keepSelectedComponents(v);
+-      ret[i]->setArray(arr2);
+-    }
+-  return ret;
+-}
+-
+-MEDFileAnyTypeField1TSWithoutSDA::MEDFileAnyTypeField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order):MEDFileFieldNameScope(fieldName,meshName),_iteration(iteration),_order(order),_csit(csit),_nb_of_tuples_to_be_allocated(-2)
+-{
+-}
+-
+-MEDFileAnyTypeField1TSWithoutSDA::MEDFileAnyTypeField1TSWithoutSDA():_iteration(-1),_order(-1),_dt(0.),_csit(-1),_nb_of_tuples_to_be_allocated(-1)
+-{
+-}
+-
+-/*!
+- * Returns the maximal dimension of supporting elements. Returns -2 if \a this is
+- * empty. Returns -1 if this in on nodes.
+- *  \return int - the dimension of \a this.
+- */
+-int MEDFileAnyTypeField1TSWithoutSDA::getDimension() const
+-{
+-  int ret=-2;
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    (*it)->getDimension(ret);
+-  return ret;
+-}
+-
+-bool MEDFileAnyTypeField1TSWithoutSDA::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab)
+-{
+-  bool ret=false;
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    {
+-      MEDFileFieldPerMesh *cur(*it);
+-      if(cur)
+-        ret=cur->changeMeshNames(modifTab) || ret;
+-    }
+-  return ret;
+-}
+-
+-/*!
+- * Returns the number of iteration of the state of underlying mesh.
+- *  \return int - the iteration number.
+- *  \throw If \c _field_per_mesh.empty()
+- */
+-int MEDFileAnyTypeField1TSWithoutSDA::getMeshIteration() const
+-{
+-  if(_field_per_mesh.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::getMeshIteration : No field set !");
+-  return _field_per_mesh[0]->getMeshIteration();
+-}
+-
+-/*!
+- * Returns the order number of iteration of the state of underlying mesh.
+- *  \return int - the order number.
+- *  \throw If \c _field_per_mesh.empty()
+- */
+-int MEDFileAnyTypeField1TSWithoutSDA::getMeshOrder() const
+-{
+-  if(_field_per_mesh.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::getMeshOrder : No field set !");
+-  return _field_per_mesh[0]->getMeshOrder();
+-}
+-
+-/*!
+- * Checks if \a this field is tagged by a given iteration number and a given
+- * iteration order number.
+- *  \param [in] iteration - the iteration number of interest.
+- *  \param [in] order - the iteration order number of interest.
+- *  \return bool - \c true if \a this->getIteration() == \a iteration && 
+- *          \a this->getOrder() == \a order.
+- */
+-bool MEDFileAnyTypeField1TSWithoutSDA::isDealingTS(int iteration, int order) const
+-{
+-  return iteration==_iteration && order==_order;
+-}
+-
+-/*!
+- * Returns number of iteration and order number of iteration when
+- * \a this field has been calculated.
+- *  \return std::pair<int,int> - a pair of the iteration number and the iteration
+- *          order number.
+- */
+-std::pair<int,int> MEDFileAnyTypeField1TSWithoutSDA::getDtIt() const
+-{
+-  std::pair<int,int> p;
+-  fillIteration(p);
+-  return p;
+-}
+-
+-/*!
+- * Returns number of iteration and order number of iteration when
+- * \a this field has been calculated.
+- *  \param [in,out] p - a pair returning the iteration number and the iteration
+- *          order number.
+- */
+-void MEDFileAnyTypeField1TSWithoutSDA::fillIteration(std::pair<int,int>& p) const
+-{
+-  p.first=_iteration;
+-  p.second=_order;
+-}
+-
+-/*!
+- * Returns all types of spatial discretization of \a this field.
+- *  \param [in,out] types - a sequence of types of \a this field.
+- */
+-void MEDFileAnyTypeField1TSWithoutSDA::fillTypesOfFieldAvailable(std::vector<TypeOfField>& types) const
+-{
+-  std::set<TypeOfField> types2;
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    {
+-      (*it)->fillTypesOfFieldAvailable(types2);
+-    }
+-  std::back_insert_iterator< std::vector<TypeOfField> > bi(types);
+-  std::copy(types2.begin(),types2.end(),bi);
+-}
+-
+-/*!
+- * Returns all types of spatial discretization of \a this field.
+- *  \return std::vector<TypeOfField> - a sequence of types of spatial discretization
+- *          of \a this field.
+- */
+-std::vector<TypeOfField> MEDFileAnyTypeField1TSWithoutSDA::getTypesOfFieldAvailable() const
+-{
+-  std::vector<TypeOfField> ret;
+-  fillTypesOfFieldAvailable(ret);
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeField1TSWithoutSDA::getPflsReallyUsed2() const
+-{
+-  std::vector<std::string> ret;
+-  std::set<std::string> ret2;
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getPflsReallyUsed();
+-      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
+-        if(ret2.find(*it2)==ret2.end())
+-          {
+-            ret.push_back(*it2);
+-            ret2.insert(*it2);
+-          }
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeField1TSWithoutSDA::getLocsReallyUsed2() const
+-{
+-  std::vector<std::string> ret;
+-  std::set<std::string> ret2;
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getLocsReallyUsed();
+-      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
+-        if(ret2.find(*it2)==ret2.end())
+-          {
+-            ret.push_back(*it2);
+-            ret2.insert(*it2);
+-          }
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeField1TSWithoutSDA::getPflsReallyUsedMulti2() const
+-{
+-  std::vector<std::string> ret;
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getPflsReallyUsedMulti();
+-      ret.insert(ret.end(),tmp.begin(),tmp.end());
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeField1TSWithoutSDA::getLocsReallyUsedMulti2() const
+-{
+-  std::vector<std::string> ret;
+-  std::set<std::string> ret2;
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getLocsReallyUsedMulti();
+-      ret.insert(ret.end(),tmp.begin(),tmp.end());
+-    }
+-  return ret;
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::changePflsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    (*it)->changePflsRefsNamesGen(mapOfModif);
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::changeLocsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    (*it)->changeLocsRefsNamesGen(mapOfModif);
+-}
+-
+-/*!
+- * Returns all attributes of parts of \a this field lying on a given mesh.
+- * Each part differs from other ones by a type of supporting mesh entity. The _i_-th
+- * item of every of returned sequences refers to the _i_-th part of \a this field.
+- * Thus all sequences returned by this method are of the same length equal to number
+- * of different types of supporting entities.<br>
+- * A field part can include sub-parts with several different spatial discretizations,
+- * \ref MEDCoupling::ON_CELLS "ON_CELLS" and \ref MEDCoupling::ON_GAUSS_PT "ON_GAUSS_PT"
+- * for example. Hence, some of the returned sequences contains nested sequences, and an item
+- * of a nested sequence corresponds to a type of spatial discretization.<br>
+- * This method allows for iteration over MEDFile DataStructure without any overhead.
+- *  \param [in] mname - a name of a mesh of interest. It can be \c NULL, which is valid
+- *          for the case with only one underlying mesh. (Actually, the number of meshes is
+- *          not checked if \a mname == \c NULL).
+- *  \param [in,out] types - a sequence of types of underlying mesh entities. A type per
+- *          a field part is returned. 
+- *  \param [in,out] typesF - a sequence of sequences of types of spatial discretizations.
+- *          This sequence is of the same length as \a types. 
+- *  \param [in,out] pfls - a sequence returning a profile name per each type of spatial
+- *          discretization. A profile name can be empty.
+- *          Length of this and of nested sequences is the same as that of \a typesF.
+- *  \param [in,out] locs - a sequence returning a localization name per each type of spatial
+- *          discretization. A localization name can be empty.
+- *          Length of this and of nested sequences is the same as that of \a typesF.
+- *  \return std::vector< std::vector< std::pair<int,int> > > - a sequence holding a range
+- *          of ids of tuples within the data array, per each type of spatial
+- *          discretization within one mesh entity type. 
+- *          Length of this and of nested sequences is the same as that of \a typesF.
+- *  \throw If no field is lying on \a mname.
+- */
+-std::vector< std::vector< std::pair<int,int> > > MEDFileAnyTypeField1TSWithoutSDA::getFieldSplitedByType(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
+-{
+-  if(_field_per_mesh.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getFieldSplitedByType : This is empty !");
+-  return _field_per_mesh[0]->getFieldSplitedByType(types,typesF,pfls,locs);
+-}
+-
+-/*!
+- * Returns dimensions of mesh elements \a this field lies on. The returned value is a
+- * maximal absolute dimension and values returned via the out parameter \a levs are 
+- * dimensions relative to the maximal absolute dimension. <br>
+- * This method is designed for MEDFileField1TS instances that have a discretization
+- * \ref MEDCoupling::ON_CELLS "ON_CELLS", 
+- * \ref MEDCoupling::ON_GAUSS_PT "ON_GAUSS_PT", 
+- * \ref MEDCoupling::ON_GAUSS_NE "ON_GAUSS_NE".
+- * Only these 3 discretizations will be taken into account here. If \a this is
+- * \ref MEDCoupling::ON_NODES "ON_NODES", -1 is returned and \a levs are empty.<br>
+- * This method is useful to make the link between the dimension of the underlying mesh
+- * and the levels of \a this, because it is possible that the highest dimension of \a this
+- * field is not equal to the dimension of the underlying mesh.
+- * 
+- * Let's consider the following case:
+- * - mesh \a m1 has a meshDimension 3 and has non empty levels [0,-1,-2] with elements
+- * TETRA4, HEXA8, TRI3 and SEG2.
+- * - field \a f1 lies on \a m1 and is defined on 3D and 1D elements TETRA4 and SEG2.
+- * - field \a f2 lies on \a m1 and is defined on 2D and 1D elements TRI3 and SEG2.
+- *
+- * In this case \a f1->getNonEmptyLevels() returns (3,[0,-2]) and \a
+- * f2->getNonEmptyLevels() returns (2,[0,-1]). <br>
+- * The returned values can be used for example to retrieve a MEDCouplingFieldDouble lying
+- * on elements of a certain relative level by calling getFieldAtLevel(). \a meshDimRelToMax
+- * parameter of getFieldAtLevel() is computed basing on the returned values as this:
+- * <em> meshDimRelToMax = absDim - meshDim + relativeLev </em>.
+- * For example<br>
+- * to retrieve the highest level of
+- * \a f1: <em>f1->getFieldAtLevel( ON_CELLS, 3-3+0 ); // absDim - meshDim + relativeLev</em><br> 
+- * to retrieve the lowest level of \a f1: <em>f1->getFieldAtLevel( ON_CELLS, 3-3+(-2) );</em><br>
+- * to retrieve the highest level of \a f2: <em>f2->getFieldAtLevel( ON_CELLS, 2-3+0 );</em><br>
+- * to retrieve the lowest level of \a f2: <em>f2->getFieldAtLevel( ON_CELLS, 2-3+(-1) )</em>.
+- *  \param [in] mname - a name of a mesh of interest. It can be \c NULL, which is valid
+- *          for the case with only one underlying mesh. (Actually, the number of meshes is
+- *          not checked if \a mname == \c NULL).
+- *  \param [in,out] levs - a sequence returning the dimensions relative to the maximal
+- *          absolute one. They are in decreasing order. This sequence is cleared before
+- *          filling it in.
+- *  \return int - the maximal absolute dimension of elements \a this fields lies on.
+- *  \throw If no field is lying on \a mname.
+- */
+-int MEDFileAnyTypeField1TSWithoutSDA::getNonEmptyLevels(const std::string& mname, std::vector<int>& levs) const
+-{
+-  levs.clear();
+-  std::vector<INTERP_KERNEL::NormalizedCellType> types;
+-  std::vector< std::vector<TypeOfField> > typesF;
+-  std::vector< std::vector<std::string> > pfls, locs;
+-  if(_field_per_mesh.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::getNonEmptyLevels : This is empty !");
+-  _field_per_mesh[0]->getFieldSplitedByType(types,typesF,pfls,locs);
+-  if(types.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getNonEmptyLevels : 'this' is empty !");
+-  std::set<INTERP_KERNEL::NormalizedCellType> st(types.begin(),types.end());
+-  if(st.size()==1 && (*st.begin())==INTERP_KERNEL::NORM_ERROR)
+-    return -1;
+-  st.erase(INTERP_KERNEL::NORM_ERROR);
+-  std::set<int> ret1;
+-  for(std::set<INTERP_KERNEL::NormalizedCellType>::const_iterator it=st.begin();it!=st.end();it++)
+-    {
+-      const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(*it);
+-      ret1.insert((int)cm.getDimension());
+-    }
+-  int ret=*std::max_element(ret1.begin(),ret1.end());
+-  std::copy(ret1.rbegin(),ret1.rend(),std::back_insert_iterator<std::vector<int> >(levs));
+-  std::transform(levs.begin(),levs.end(),levs.begin(),std::bind2nd(std::plus<int>(),-ret));
+-  return ret;
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::convertMedBallIntoClassic()
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it<_field_per_mesh.end();it++)
+-    if((*it).isNotNull())
+-      (*it)->convertMedBallIntoClassic();
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::makeReduction(INTERP_KERNEL::NormalizedCellType ct, TypeOfField tof, const DataArrayInt *pfl)
+-{
+-  if(!pfl)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : null pfl !");
+-  std::string name(pfl->getName());
+-  pfl->checkAllocated();
+-  if(pfl->getNumberOfComponents()!=1)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : non mono compo array !");
+-  if(name.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : empty pfl name !");
+-  if(_field_per_mesh.size()!=1)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : only single mesh supported !");
+-  MCAuto<MEDFileFieldPerMesh> fpm(_field_per_mesh[0]);
+-  if(fpm.isNull())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : only single not null mesh supported !");
+-  MEDFileFieldPerMeshPerTypePerDisc *disc(fpm->getLeafGivenTypeAndLocId(ct,0));
+-  if(disc->getType()!=tof)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : error !");
+-  int s(disc->getStart()),e(disc->getEnd()),nt(pfl->getNumberOfTuples());
+-  DataArray *arr(getUndergroundDataArray());
+-  int nt2(arr->getNumberOfTuples()),delta((e-s)-nt);
+-  if(delta<0)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::makeReduction : internal error !");
+-  MCAuto<DataArray> arr0(arr->selectByTupleIdSafeSlice(0,s,1)),arr1(arr->selectByTupleIdSafeSlice(s,e,1)),arr2(arr->selectByTupleIdSafeSlice(e,nt2,1));
+-  MCAuto<DataArray> arr11(arr1->selectByTupleIdSafe(pfl->begin(),pfl->end()));
+-  MCAuto<DataArray> arrOut(arr->buildNewEmptyInstance());
+-  arrOut->alloc(nt2-delta,arr->getNumberOfComponents());
+-  arrOut->copyStringInfoFrom(*arr);
+-  arrOut->setContigPartOfSelectedValuesSlice(0,arr0,0,s,1);
+-  arrOut->setContigPartOfSelectedValuesSlice(s,arr11,0,nt,1);
+-  arrOut->setContigPartOfSelectedValuesSlice(e-delta,arr2,0,nt2-e,1);
+-  setArray(arrOut);
+-  disc->setEnd(e-delta);
+-  disc->setProfile(name);
+-}
+-
+-/*!
+- * \param [in] mName specifies the underlying mesh name. This value can be pointer 0 for users that do not deal with fields on multi mesh.
+- * \param [in] typ is for the geometric cell type (or INTERP_KERNEL::NORM_ERROR for node field) entry to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set.
+- * \param [in] locId is the localization id to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set. It corresponds to the position of 
+- *             \c pfls[std::distance(types.begin(),std::find(types.begin(),typ)] vector in MEDFileField1TSWithoutSDA::getFieldSplitedByType. For non gausspoints field users, the value is 0.
+- */
+-MEDFileFieldPerMeshPerTypePerDisc *MEDFileAnyTypeField1TSWithoutSDA::getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId)
+-{
+-  if(_field_per_mesh.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::getLeafGivenMeshAndTypeAndLocId : This is empty !");
+-  return _field_per_mesh[0]->getLeafGivenTypeAndLocId(typ,locId);
+-}
+-
+-/*!
+- * \param [in] mName specifies the underlying mesh name. This value can be pointer 0 for users that do not deal with fields on multi mesh.
+- * \param [in] typ is for the geometric cell type (or INTERP_KERNEL::NORM_ERROR for node field) entry to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set.
+- * \param [in] locId is the localization id to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set. It corresponds to the position of 
+- *             \c pfls[std::distance(types.begin(),std::find(types.begin(),typ)] vector in MEDFileField1TSWithoutSDA::getFieldSplitedByType. For non gausspoints field users, the value is 0.
+- */
+-const MEDFileFieldPerMeshPerTypePerDisc *MEDFileAnyTypeField1TSWithoutSDA::getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId) const
+-{
+-  if(_field_per_mesh.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::getLeafGivenMeshAndTypeAndLocId : This is empty !");
+-  return _field_per_mesh[0]->getLeafGivenTypeAndLocId(typ,locId);
+-}
+-
+-/*!
+- * \param [in] mName specifies the underlying mesh name. This value can be pointer 0 for users that do not deal with fields on multi mesh.
+- */
+-int MEDFileAnyTypeField1TSWithoutSDA::getMeshIdFromMeshName(const std::string& mName) const
+-{
+-  if(_field_per_mesh.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getMeshIdFromMeshName : No field set !");
+-  if(mName.empty())
+-    return 0;
+-  std::string mName2(mName);
+-  int ret=0;
+-  std::vector<std::string> msg;
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++,ret++)
+-    if(mName2==(*it)->getMeshName())
+-      return ret;
+-    else
+-      msg.push_back((*it)->getMeshName());
+-  std::ostringstream oss; oss << "MEDFileField1TSWithoutSDA::getMeshIdFromMeshName : No such mesh \"" << mName2 << "\" as underlying mesh of field \"" << getName() << "\" !\n";
+-  oss << "Possible meshes are : ";
+-  for(std::vector<std::string>::const_iterator it2=msg.begin();it2!=msg.end();it2++)
+-    oss << "\"" << (*it2) << "\" ";
+-  throw INTERP_KERNEL::Exception(oss.str());
+-}
+-
+-int MEDFileAnyTypeField1TSWithoutSDA::addNewEntryIfNecessary(const MEDCouplingMesh *mesh)
+-{
+-  if(!mesh)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::addNewEntryIfNecessary : input mesh is NULL !");
+-  std::string tmp(mesh->getName());
+-  if(tmp.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::addNewEntryIfNecessary : empty mesh name ! unsupported by MED file !");
+-  setMeshName(tmp);
+-  std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();
+-  int i=0;
+-  for(;it!=_field_per_mesh.end();it++,i++)
+-    {
+-      if((*it)->getMeshName()==tmp)
+-        return i;
+-    }
+-  int sz=_field_per_mesh.size();
+-  _field_per_mesh.resize(sz+1);
+-  _field_per_mesh[sz]=MEDFileFieldPerMesh::New(this,mesh);
+-  return sz;
+-}
+-
+-bool MEDFileAnyTypeField1TSWithoutSDA::renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N,
+-                                                                   MEDFileFieldGlobsReal& glob)
+-{
+-  bool ret=false;
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    {
+-      MEDFileFieldPerMesh *fpm(*it);
+-      if(fpm)
+-        ret=fpm->renumberEntitiesLyingOnMesh(meshName,oldCode,newCode,renumO2N,glob) || ret;
+-    }
+-  return ret;
+-}
+-
+-/*!
+- * This method splits \a this into several sub-parts so that each sub parts have exactly one spatial discretization. This method implements the minimal
+- * splitting that leads to single spatial discretization of this.
+- *
+- * \sa splitMultiDiscrPerGeoTypes
+- */
+-std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > MEDFileAnyTypeField1TSWithoutSDA::splitDiscretizations() const
+-{
+-  std::vector<INTERP_KERNEL::NormalizedCellType> types;
+-  std::vector< std::vector<TypeOfField> > typesF;
+-  std::vector< std::vector<std::string> > pfls,locs;
+-  std::vector< std::vector<std::pair<int,int> > > bgEnd(getFieldSplitedByType(getMeshName().c_str(),types,typesF,pfls,locs));
+-  std::set<TypeOfField> allEnt;
+-  for(std::vector< std::vector<TypeOfField> >::const_iterator it1=typesF.begin();it1!=typesF.end();it1++)
+-    for(std::vector<TypeOfField>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+-      allEnt.insert(*it2);
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret(allEnt.size());
+-  std::set<TypeOfField>::const_iterator it3(allEnt.begin());
+-  for(std::size_t i=0;i<allEnt.size();i++,it3++)
+-    {
+-      std::vector< std::pair<int,int> > its;
+-      ret[i]=shallowCpy();
+-      int newLgth(ret[i]->keepOnlySpatialDiscretization(*it3,its));
+-      ret[i]->updateData(newLgth,its);
+-    }
+-  return ret;
+-}
+-
+-/*!
+- * This method performs a sub splitting as splitDiscretizations does but finer. This is the finest spliting level that can be done.
+- * This method implements the minimal splitting so that each returned elements are mono Gauss discretization per geometric type.
+- *
+- * \sa splitDiscretizations
+- */
+-std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > MEDFileAnyTypeField1TSWithoutSDA::splitMultiDiscrPerGeoTypes() const
+-{
+-  std::vector<INTERP_KERNEL::NormalizedCellType> types;
+-  std::vector< std::vector<TypeOfField> > typesF;
+-  std::vector< std::vector<std::string> > pfls,locs;
+-  std::vector< std::vector<std::pair<int,int> > > bgEnd(getFieldSplitedByType(getMeshName().c_str(),types,typesF,pfls,locs));
+-  std::set<TypeOfField> allEnt;
+-  std::size_t nbOfMDPGT(0),ii(0);
+-  for(std::vector< std::vector<TypeOfField> >::const_iterator it1=typesF.begin();it1!=typesF.end();it1++,ii++)
+-    {
+-      nbOfMDPGT=std::max(nbOfMDPGT,locs[ii].size());
+-      for(std::vector<TypeOfField>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+-        allEnt.insert(*it2);
+-    }
+-  if(allEnt.size()!=1)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::splitMultiDiscrPerGeoTypes : this field is expected to be defined only on one spatial discretization !");
+-  if(nbOfMDPGT==0)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::splitMultiDiscrPerGeoTypes : empty field !");
+-  if(nbOfMDPGT==1)
+-    {
+-      std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret0(1);
+-      ret0[0]=const_cast<MEDFileAnyTypeField1TSWithoutSDA *>(this); this->incrRef();
+-      return ret0;
+-    }
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret(nbOfMDPGT);
+-  for(std::size_t i=0;i<nbOfMDPGT;i++)
+-    {
+-      std::vector< std::pair<int,int> > its;
+-      ret[i]=shallowCpy();
+-      int newLgth(ret[i]->keepOnlyGaussDiscretization(i,its));
+-      ret[i]->updateData(newLgth,its);
+-    }
+-  return ret;
+-}
+-
+-int MEDFileAnyTypeField1TSWithoutSDA::keepOnlySpatialDiscretization(TypeOfField tof, std::vector< std::pair<int,int> >& its)
+-{
+-  int globalCounter(0);
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    (*it)->keepOnlySpatialDiscretization(tof,globalCounter,its);
+-  return globalCounter;
+-}
+-
+-int MEDFileAnyTypeField1TSWithoutSDA::keepOnlyGaussDiscretization(std::size_t idOfDisc, std::vector< std::pair<int,int> >& its)
+-{
+-  int globalCounter(0);
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    (*it)->keepOnlyGaussDiscretization(idOfDisc,globalCounter,its);
+-  return globalCounter;
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::updateData(int newLgth, const std::vector< std::pair<int,int> >& oldStartStops)
+-{
+-  if(_nb_of_tuples_to_be_allocated>=0)
+-    {
+-      _nb_of_tuples_to_be_allocated=newLgth;
+-      const DataArray *oldArr(getUndergroundDataArray());
+-      if(oldArr)
+-        {
+-          MCAuto<DataArray> newArr(createNewEmptyDataArrayInstance());
+-          newArr->setInfoAndChangeNbOfCompo(oldArr->getInfoOnComponents());
+-          setArray(newArr);
+-          _nb_of_tuples_to_be_allocated=newLgth;//force the _nb_of_tuples_to_be_allocated because setArray has been used specialy
+-        }
+-      return ;
+-    }
+-  if(_nb_of_tuples_to_be_allocated==-1)
+-    return ;
+-  if(_nb_of_tuples_to_be_allocated==-2 || _nb_of_tuples_to_be_allocated==-3)
+-    {
+-      const DataArray *oldArr(getUndergroundDataArray());
+-      if(!oldArr || !oldArr->isAllocated())
+-        throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::updateData : internal error 1 !");
+-      MCAuto<DataArray> newArr(createNewEmptyDataArrayInstance());
+-      newArr->alloc(newLgth,getNumberOfComponents());
+-      if(oldArr)
+-        newArr->copyStringInfoFrom(*oldArr);
+-      int pos=0;
+-      for(std::vector< std::pair<int,int> >::const_iterator it=oldStartStops.begin();it!=oldStartStops.end();it++)
+-        {
+-          if((*it).second<(*it).first)
+-            throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::updateData : the range in the leaves was invalid !");
+-          newArr->setContigPartOfSelectedValuesSlice(pos,oldArr,(*it).first,(*it).second,1);
+-          pos+=(*it).second-(*it).first;
+-        }
+-      setArray(newArr);
+-      return ;
+-    }
+-  throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::updateData : internal error 2 !");
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::writeLL(med_idt fid, const MEDFileWritable& opts, const MEDFileFieldNameScope& nasc) const
+-{
+-  if(_field_per_mesh.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::writeLL : empty field !");
+-  if(_field_per_mesh.size()>1)
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::writeLL : In MED3.0 mode in writting mode only ONE underlying mesh supported !");
+-  _field_per_mesh[0]->copyOptionsFrom(opts);
+-  _field_per_mesh[0]->writeLL(fid,nasc);
+-}
+-
+-/*!
+- * This methods returns true is the allocation has been needed leading to a modification of state in \a this->_nb_of_tuples_to_be_allocated.
+- * If false is returned the memory allocation is not required.
+- */
+-bool MEDFileAnyTypeField1TSWithoutSDA::allocIfNecessaryTheArrayToReceiveDataFromFile()
+-{
+-  if(_nb_of_tuples_to_be_allocated>=0)
+-    {
+-      getOrCreateAndGetArray()->alloc(_nb_of_tuples_to_be_allocated,getNumberOfComponents());
+-      _nb_of_tuples_to_be_allocated=-2;
+-      return true;
+-    }
+-  if(_nb_of_tuples_to_be_allocated==-2 || _nb_of_tuples_to_be_allocated==-3)
+-    return false;
+-  if(_nb_of_tuples_to_be_allocated==-1)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::allocIfNecessaryTheArrayToReceiveDataFromFile : trying to read from a file an empty instance ! Need to prepare the structure before !");
+-  if(_nb_of_tuples_to_be_allocated<-3)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::allocIfNecessaryTheArrayToReceiveDataFromFile : internal error !");
+-  throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::allocIfNecessaryTheArrayToReceiveDataFromFile : internal error !");
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::loadOnlyStructureOfDataRecursively(med_idt fid, const MEDFileFieldNameScope& nasc, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-{
+-  med_int numdt,numit;
+-  med_float dt;
+-  med_int meshnumdt,meshnumit;
+-  MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,nasc.getName().c_str(),_csit,&numdt,&numit,&_dt));
+-  {
+-    med_bool localMesh;
+-    med_int nmesh;
+-    INTERP_KERNEL::AutoPtr<char> meshName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-    MEDFILESAFECALLERRD0(MEDfield23ComputingStepMeshInfo,(fid,nasc.getName().c_str(),_csit,&numdt,&numit,&dt,&nmesh,meshName,&localMesh,&meshnumdt,&meshnumit)); // to check with Adrien for legacy MED files
+-  }
+-  //MEDFILESAFECALLERRD0(MEDfieldComputingStepMeshInfo,(fid,nasc.getName().c_str(),_csit,&numdt,&numit,&_dt,&meshnumdt,&meshnumit));
+-  if(_iteration!=numdt || _order!=numit)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::loadBigArraysRecursively : unexpected exception internal error !");
+-  _field_per_mesh.resize(1);
+-  //
+-  MEDFileMesh *mm(0);
+-  if(ms)
+-    {
+-      mm=ms->getMeshWithName(getMeshName());
+-    }
+-  //
+-  _field_per_mesh[0]=MEDFileFieldPerMesh::NewOnRead(fid,this,0,meshnumdt,meshnumit,nasc,mm,entities);
+-  _nb_of_tuples_to_be_allocated=0;
+-  _field_per_mesh[0]->loadOnlyStructureOfDataRecursively(fid,_nb_of_tuples_to_be_allocated,nasc);
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc)
+-{
+-  allocIfNecessaryTheArrayToReceiveDataFromFile();
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    (*it)->loadBigArraysRecursively(fid,nasc);
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::loadBigArraysRecursivelyIfNecessary(med_idt fid, const MEDFileFieldNameScope& nasc)
+-{
+-  if(allocIfNecessaryTheArrayToReceiveDataFromFile())
+-    for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-      (*it)->loadBigArraysRecursively(fid,nasc);
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::loadStructureAndBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-{
+-  loadOnlyStructureOfDataRecursively(fid,nasc,ms,entities);
+-  loadBigArraysRecursively(fid,nasc);
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::unloadArrays()
+-{
+-  DataArray *thisArr(getUndergroundDataArray());
+-  if(thisArr && thisArr->isAllocated())
+-    {
+-      _nb_of_tuples_to_be_allocated=thisArr->getNumberOfTuples();
+-      thisArr->desallocate();
+-    }
+-}
+-
+-std::size_t MEDFileAnyTypeField1TSWithoutSDA::getHeapMemorySizeWithoutChildren() const
+-{
+-  return _mesh_name.capacity()+_dt_unit.capacity()+_field_per_mesh.capacity()*sizeof(MCAuto< MEDFileFieldPerMesh >);
+-}
+-
+-std::vector<const BigMemoryObject *> MEDFileAnyTypeField1TSWithoutSDA::getDirectChildrenWithNull() const
+-{
+-  std::vector<const BigMemoryObject *> ret;
+-  if(getUndergroundDataArray())
+-    ret.push_back(getUndergroundDataArray());
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    ret.push_back((const MEDFileFieldPerMesh *)*it);
+-  return ret;
+-}
+-
+-/*!
+- * Adds a MEDCouplingFieldDouble to \a this. The underlying mesh of the given field is
+- * checked if its elements are sorted suitable for writing to MED file ("STB" stands for
+- * "Sort By Type"), if not, an exception is thrown. 
+- *  \param [in] field - the field to add to \a this. The array of field \a field is ignored
+- *  \param [in] arr - the array of values.
+- *  \param [in,out] glob - the global data where profiles and localization present in
+- *          \a field, if any, are added.
+- *  \throw If the name of \a field is empty.
+- *  \throw If the data array of \a field is not set.
+- *  \throw If \a this->_arr is already allocated but has different number of components
+- *         than \a field.
+- *  \throw If the underlying mesh of \a field has no name.
+- *  \throw If elements in the mesh are not in the order suitable for writing to the MED file.
+- */
+-void MEDFileAnyTypeField1TSWithoutSDA::setFieldNoProfileSBT(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
+-{
+-  const MEDCouplingMesh *mesh(field->getMesh());
+-  //
+-  TypeOfField type(field->getTypeOfField());
+-  std::vector<DataArrayInt *> dummy;
+-  if(mesh)
+-    setMeshName(mesh->getName());
+-  int start(copyTinyInfoFrom(th,field,arr));
+-  int pos(addNewEntryIfNecessary(mesh));
+-  if(type!=ON_NODES)
+-    {
+-      std::vector<int> code=MEDFileField1TSWithoutSDA::CheckSBTMesh(mesh);
+-      _field_per_mesh[pos]->assignFieldNoProfileNoRenum(start,code,field,arr,glob,nasc);
+-    }
+-  else
+-    _field_per_mesh[pos]->assignNodeFieldNoProfile(start,field,arr,glob);
+-}
+-
+-/*!
+- * Adds a MEDCouplingFieldDouble to \a this. Specified entities of a given dimension
+- * of a given mesh are used as the support of the given field (a real support is not used). 
+- * Elements of the given mesh must be sorted suitable for writing to MED file. 
+- * Order of underlying mesh entities of the given field specified by \a profile parameter
+- * is not prescribed; this method permutes field values to have them sorted by element
+- * type as required for writing to MED file. A new profile is added only if no equal
+- * profile is missing. 
+- *  \param [in] field - the field to add to \a this. The field double values are ignored.
+- *  \param [in] arrOfVals - the values of the field \a field used.
+- *  \param [in] mesh - the supporting mesh of \a field.
+- *  \param [in] meshDimRelToMax - a relative dimension of mesh entities \a field lies on.
+- *  \param [in] profile - ids of mesh entities on which corresponding field values lie.
+- *  \param [in,out] glob - the global data where profiles and localization present in
+- *          \a field, if any, are added.
+- *  \throw If either \a field or \a mesh or \a profile has an empty name.
+- *  \throw If there are no mesh entities of \a meshDimRelToMax dimension in \a mesh.
+- *  \throw If the data array of \a field is not set.
+- *  \throw If \a this->_arr is already allocated but has different number of components
+- *         than \a field.
+- *  \throw If elements in \a mesh are not in the order suitable for writing to the MED file.
+- *  \sa setFieldNoProfileSBT()
+- */
+-void MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arrOfVals, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
+-{
+-  if(!field)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile : input field is null !");
+-  if(!arrOfVals || !arrOfVals->isAllocated())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile : input array is null or not allocated !");
+-  TypeOfField type=field->getTypeOfField();
+-  std::vector<DataArrayInt *> idsInPflPerType;
+-  std::vector<DataArrayInt *> idsPerType;
+-  std::vector<int> code,code2;
+-  MCAuto<MEDCouplingMesh> m(mesh->getMeshAtLevel(meshDimRelToMax));
+-  if(type!=ON_NODES)
+-    {
+-      m->splitProfilePerType(profile,code,idsInPflPerType,idsPerType);
+-      std::vector< MCAuto<DataArrayInt> > idsInPflPerType2(idsInPflPerType.size()); std::copy(idsInPflPerType.begin(),idsInPflPerType.end(),idsInPflPerType2.begin());
+-      std::vector< MCAuto<DataArrayInt> > idsPerType2(idsPerType.size()); std::copy(idsPerType.begin(),idsPerType.end(),idsPerType2.begin()); 
+-      std::vector<const DataArrayInt *> idsPerType3(idsPerType.size()); std::copy(idsPerType.begin(),idsPerType.end(),idsPerType3.begin());
+-      // start of check
+-      MCAuto<MEDCouplingFieldTemplate> field2=field->clone(false);
+-      int nbOfTuplesExp=field2->getNumberOfTuplesExpectedRegardingCode(code,idsPerType3);
+-      if(nbOfTuplesExp!=arrOfVals->getNumberOfTuples())
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile : The array is expected to have " << nbOfTuplesExp << " tuples ! It has " << arrOfVals->getNumberOfTuples() << " !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-      // end of check
+-      int start(copyTinyInfoFrom(th,field,arrOfVals));
+-      code2=m->getDistributionOfTypes();
+-      //
+-      int pos=addNewEntryIfNecessary(m);
+-      _field_per_mesh[pos]->assignFieldProfile(start,profile,code,code2,idsInPflPerType,idsPerType,field,arrOfVals,m,glob,nasc);
+-    }
+-  else
+-    {
+-      if(!profile || !profile->isAllocated() || profile->getNumberOfComponents()!=1)
+-        throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile : input profile is null, not allocated or with number of components != 1 !");
+-      std::vector<int> v(3); v[0]=-1; v[1]=profile->getNumberOfTuples(); v[2]=0;
+-      std::vector<const DataArrayInt *> idsPerType3(1); idsPerType3[0]=profile;
+-      int nbOfTuplesExp=field->getNumberOfTuplesExpectedRegardingCode(v,idsPerType3);
+-      if(nbOfTuplesExp!=arrOfVals->getNumberOfTuples())
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeField1TSWithoutSDA::setFieldProfile : For node field, the array is expected to have " << nbOfTuplesExp << " tuples ! It has " << arrOfVals->getNumberOfTuples() << " !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-      int start(copyTinyInfoFrom(th,field,arrOfVals));
+-      int pos(addNewEntryIfNecessary(m));
+-      _field_per_mesh[pos]->assignNodeFieldProfile(start,profile,field,arrOfVals,glob,nasc);
+-    }
+-}
+-
+-/*!
+- * \param [in] newNbOfTuples - The new nb of tuples to be allocated.
+- */
+-void MEDFileAnyTypeField1TSWithoutSDA::allocNotFromFile(int newNbOfTuples)
+-{
+-  if(_nb_of_tuples_to_be_allocated>=0)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::allocNotFromFile : the object is expected to be appended to a data coming from a file but not loaded ! Load before appending data !");
+-  DataArray *arr(getOrCreateAndGetArray());
+-  arr->alloc(newNbOfTuples,arr->getNumberOfComponents());
+-  _nb_of_tuples_to_be_allocated=-3;
+-}
+-
+-/*!
+- * Copies tiny info and allocates \a this->_arr instance of DataArrayDouble to
+- * append data of a given MEDCouplingFieldDouble. So that the size of \a this->_arr becomes
+- * larger by the size of \a field. Returns an id of the first not filled
+- * tuple of \a this->_arr.
+- *  \param [in] field - the field to copy the info on components and the name from.
+- *  \return int - the id of first not initialized tuple of \a this->_arr.
+- *  \throw If the name of \a field is empty.
+- *  \throw If the data array of \a field is not set.
+- *  \throw If \a this->_arr is already allocated but has different number of components
+- *         than \a field.
+- */
+-int MEDFileAnyTypeField1TSWithoutSDA::copyTinyInfoFrom(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr)
+-{
+-  if(!field)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::copyTinyInfoFrom : input field is NULL !");
+-  std::string name(field->getName());
+-  setName(name.c_str());
+-  if(field->getMesh())
+-    setMeshName(field->getMesh()->getName());
+-  setDtUnit(th->getTimeUnit());
+-  if(name.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::copyTinyInfoFrom : unsupported fields with no name in MED file !");
+-  if(!arr)
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::copyTinyInfoFrom : no array set !");
+-  if(!arr->isAllocated())
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::copyTinyInfoFrom : array is not allocated !");
+-  _dt=th->getTime(_iteration,_order);
+-  getOrCreateAndGetArray()->setInfoAndChangeNbOfCompo(arr->getInfoOnComponents());
+-  if(!getOrCreateAndGetArray()->isAllocated())
+-    {
+-      allocNotFromFile(arr->getNumberOfTuples());
+-      return 0;
+-    }
+-  else
+-    {
+-      int oldNbOfTuples=getOrCreateAndGetArray()->getNumberOfTuples();
+-      int newNbOfTuples=oldNbOfTuples+arr->getNumberOfTuples();
+-      getOrCreateAndGetArray()->reAlloc(newNbOfTuples);
+-      _nb_of_tuples_to_be_allocated=-3;
+-      return oldNbOfTuples;
+-    }
+-}
+-
+-/*!
+- * Returns number of components in \a this field
+- *  \return int - the number of components.
+- */
+-int MEDFileAnyTypeField1TSWithoutSDA::getNumberOfComponents() const
+-{
+-  return getOrCreateAndGetArray()->getNumberOfComponents();
+-}
+-
+-/*!
+- * Change info on components in \a this.
+- * \throw If size of \a infos is not equal to the number of components already in \a this.
+- */
+-void MEDFileAnyTypeField1TSWithoutSDA::setInfo(const std::vector<std::string>& infos)
+-{
+-  DataArray *arr=getOrCreateAndGetArray();
+-  arr->setInfoOnComponents(infos);//will throw an exception if number of components mimatches
+-}
+-
+-/*!
+- * Returns info on components of \a this field.
+- *  \return const std::vector<std::string>& - a sequence of strings each being an
+- *          information on _i_-th component.
+- */
+-const std::vector<std::string>& MEDFileAnyTypeField1TSWithoutSDA::getInfo() const
+-{
+-  const DataArray *arr=getOrCreateAndGetArray();
+-  return arr->getInfoOnComponents();
+-}
+-
+-/*!
+- * Returns a mutable info on components of \a this field.
+- *  \return std::vector<std::string>& - a sequence of strings each being an
+- *          information on _i_-th component.
+- */
+-std::vector<std::string>& MEDFileAnyTypeField1TSWithoutSDA::getInfo()
+-{
+-  DataArray *arr=getOrCreateAndGetArray();
+-  return arr->getInfoOnComponents();
+-}
+-
+-bool MEDFileAnyTypeField1TSWithoutSDA::presenceOfMultiDiscPerGeoType() const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    {
+-      const MEDFileFieldPerMesh *fpm(*it);
+-      if(!fpm)
+-        continue;
+-      if(fpm->presenceOfMultiDiscPerGeoType())
+-        return true;
+-    }
+-  return false;
+-}
+-
+-bool MEDFileAnyTypeField1TSWithoutSDA::presenceOfStructureElements() const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    if((*it).isNotNull())
+-      if((*it)->presenceOfStructureElements())
+-        return true;
+-  return false;
+-}
+-
+-bool MEDFileAnyTypeField1TSWithoutSDA::onlyStructureElements() const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    if((*it).isNotNull())
+-      if(!(*it)->onlyStructureElements())
+-        return false;
+-  return true;
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::killStructureElements()
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    if((*it).isNotNull())
+-      (*it)->killStructureElements();
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::keepOnlyStructureElements()
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    if((*it).isNotNull())
+-      (*it)->keepOnlyStructureElements();
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::keepOnlyOnSE(const std::string& seName)
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    if((*it).isNotNull())
+-      (*it)->keepOnlyOnSE(seName);
+-}
+-
+-void MEDFileAnyTypeField1TSWithoutSDA::getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const
+-{
+-  for(std::vector< MCAuto< MEDFileFieldPerMesh > >::const_iterator it=_field_per_mesh.begin();it!=_field_per_mesh.end();it++)
+-    if((*it).isNotNull())
+-      (*it)->getMeshSENames(ps);
+-}
+-
+-MEDCouplingFieldDouble *MEDFileAnyTypeField1TSWithoutSDA::fieldOnMesh(const MEDFileFieldGlobsReal *glob, const MEDFileMesh *mesh, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
+-{
+-  static const char MSG0[]="MEDFileAnyTypeField1TSWithoutSDA::fieldOnMesh : the field is too complex to be able to be extracted with  \"field\" method ! Call getFieldOnMeshAtLevel method instead to deal with complexity !";
+-  if(_field_per_mesh.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::fieldOnMesh : the field is empty ! Nothing to extract !");
+-  if(_field_per_mesh.size()>1)
+-    throw INTERP_KERNEL::Exception(MSG0);
+-  if(_field_per_mesh[0].isNull())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::fieldOnMesh : the field is inconsistent !");
+-  const MEDFileFieldPerMesh *pm(_field_per_mesh[0]);
+-  std::set<TypeOfField> types;
+-  pm->fillTypesOfFieldAvailable(types);
+-  if(types.size()!=1)
+-    throw INTERP_KERNEL::Exception(MSG0);
+-  TypeOfField type(*types.begin());
+-  int meshDimRelToMax(0);
+-  if(type==ON_NODES)
+-    meshDimRelToMax=0;
+-  else
+-    {
+-      int myDim(std::numeric_limits<int>::max());
+-      bool isUnique(pm->isUniqueLevel(myDim));
+-      if(!isUnique)
+-        throw INTERP_KERNEL::Exception(MSG0);
+-      meshDimRelToMax=myDim-mesh->getMeshDimension();
+-      if(meshDimRelToMax>0)
+-        throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::fieldOnMesh : the mesh attached to field is not compatible with the field !");
+-    }
+-  return MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(type,meshDimRelToMax,0/*renumPol*/,glob,mesh,arrOut,nasc);
+-}
+-
+-/*!
+- * Returns a new MEDCouplingFieldDouble of given type lying on a given support.
+- *  \param [in] type - a spatial discretization of the new field.
+- *  \param [in] meshDimRelToMax - a relative dimension of the supporting mesh entities.
+- *  \param [in] mName - a name of the supporting mesh.
+- *  \param [in] renumPol - specifies how to permute values of the result field according to
+- *          the optional numbers of cells and nodes, if any. The valid values are
+- *          - 0 - do not permute.
+- *          - 1 - permute cells.
+- *          - 2 - permute nodes.
+- *          - 3 - permute cells and nodes.
+- *
+- *  \param [in] glob - the global data storing profiles and localization.
+- *  \return MEDCouplingFieldDouble * - a new instance of MEDCouplingFieldDouble. The
+- *          caller is to delete this field using decrRef() as it is no more needed. 
+- *  \throw If the MED file is not readable.
+- *  \throw If there is no mesh named \a mName in the MED file.
+- *  \throw If there are no mesh entities of \a meshDimRelToMax dimension in the mesh.
+- *  \throw If no field of \a this is lying on the mesh \a mName.
+- *  \throw If no field values of the given \a type or given \a meshDimRelToMax are available.
+- */
+-MEDCouplingFieldDouble *MEDFileAnyTypeField1TSWithoutSDA::getFieldAtLevel(TypeOfField type, int meshDimRelToMax, const std::string& mName, int renumPol, const MEDFileFieldGlobsReal *glob, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
+-{
+-  MCAuto<MEDFileMesh> mm;
+-  if(mName.empty())
+-    mm=MEDFileMesh::New(glob->getFileName(),getMeshName().c_str(),getMeshIteration(),getMeshOrder());
+-  else
+-    mm=MEDFileMesh::New(glob->getFileName(),mName,getMeshIteration(),getMeshOrder());
+-  return MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(type,meshDimRelToMax,renumPol,glob,mm,arrOut,nasc);
+-}
+-
+-/*!
+- * Returns a new MEDCouplingFieldDouble of given type lying on a given support.
+- *  \param [in] type - a spatial discretization of the new field.
+- *  \param [in] meshDimRelToMax - a relative dimension of the supporting mesh entities.
+- *  \param [in] renumPol - specifies how to permute values of the result field according to
+- *          the optional numbers of cells and nodes, if any. The valid values are
+- *          - 0 - do not permute.
+- *          - 1 - permute cells.
+- *          - 2 - permute nodes.
+- *          - 3 - permute cells and nodes.
+- *
+- *  \param [in] glob - the global data storing profiles and localization.
+- *  \param [in] mesh - the supporting mesh.
+- *  \return MEDCouplingFieldDouble * - a new instance of MEDCouplingFieldDouble. The
+- *          caller is to delete this field using decrRef() as it is no more needed. 
+- *  \throw If the MED file is not readable.
+- *  \throw If no field of \a this is lying on \a mesh.
+- *  \throw If there are no mesh entities of \a meshDimRelToMax dimension in the mesh.
+- *  \throw If no field values of the given \a type or given \a meshDimRelToMax are available.
+- */
+-MEDCouplingFieldDouble *MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol, const MEDFileFieldGlobsReal *glob, const MEDFileMesh *mesh, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
+-{
+-  MCAuto<MEDCouplingMesh> m(mesh->getMeshAtLevel(meshDimRelToMax,false));
+-  const DataArrayInt *d(mesh->getNumberFieldAtLevel(meshDimRelToMax)),*e(mesh->getNumberFieldAtLevel(1));
+-  if(meshDimRelToMax==1)
+-    (static_cast<MEDCouplingUMesh *>((MEDCouplingMesh *)m))->setMeshDimension(0);
+-  return MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(type,renumPol,glob,m,d,e,arrOut,nasc);
+-}
+-
+-/*!
+- * Returns a new MEDCouplingFieldDouble of a given type lying on the top level cells of a
+- * given mesh. 
+- *  \param [in] type - a spatial discretization of the new field.
+- *  \param [in] mName - a name of the supporting mesh.
+- *  \param [in] renumPol - specifies how to permute values of the result field according to
+- *          the optional numbers of cells and nodes, if any. The valid values are
+- *          - 0 - do not permute.
+- *          - 1 - permute cells.
+- *          - 2 - permute nodes.
+- *          - 3 - permute cells and nodes.
+- *
+- *  \param [in] glob - the global data storing profiles and localization.
+- *  \return MEDCouplingFieldDouble * - a new instance of MEDCouplingFieldDouble. The
+- *          caller is to delete this field using decrRef() as it is no more needed. 
+- *  \throw If the MED file is not readable.
+- *  \throw If there is no mesh named \a mName in the MED file.
+- *  \throw If there are no mesh entities in the mesh.
+- *  \throw If no field values of the given \a type are available.
+- */
+-MEDCouplingFieldDouble *MEDFileAnyTypeField1TSWithoutSDA::getFieldAtTopLevel(TypeOfField type, const std::string& mName, int renumPol, const MEDFileFieldGlobsReal *glob, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
+-{
+-  MCAuto<MEDFileMesh> mm;
+-  if(mName.empty())
+-    mm=MEDFileMesh::New(glob->getFileName(),getMeshName().c_str(),getMeshIteration(),getMeshOrder());
+-  else
+-    mm=MEDFileMesh::New(glob->getFileName(),mName,getMeshIteration(),getMeshOrder());
+-  int absDim=getDimension();
+-  int meshDimRelToMax=absDim-mm->getMeshDimension();
+-  return MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(type,meshDimRelToMax,renumPol,glob,mm,arrOut,nasc);
+-}
+-
+-/*!
+- * Returns a new MEDCouplingFieldDouble of given type lying on a given support.
+- *  \param [in] type - a spatial discretization of the new field.
+- *  \param [in] renumPol - specifies how to permute values of the result field according to
+- *          the optional numbers of cells and nodes, if any. The valid values are
+- *          - 0 - do not permute.
+- *          - 1 - permute cells.
+- *          - 2 - permute nodes.
+- *          - 3 - permute cells and nodes.
+- *
+- *  \param [in] glob - the global data storing profiles and localization.
+- *  \param [in] mesh - the supporting mesh.
+- *  \param [in] cellRenum - the cell numbers array used for permutation of the result
+- *         field according to \a renumPol.
+- *  \param [in] nodeRenum - the node numbers array used for permutation of the result
+- *         field according to \a renumPol.
+- *  \return MEDCouplingFieldDouble * - a new instance of MEDCouplingFieldDouble. The
+- *          caller is to delete this field using decrRef() as it is no more needed. 
+- *  \throw If there are no mesh entities of \a meshDimRelToMax dimension in the mesh.
+- *  \throw If no field of \a this is lying on \a mesh.
+- *  \throw If no field values of the given \a type or given \a meshDimRelToMax are available.
+- */
+-MEDCouplingFieldDouble *MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel(TypeOfField type, int renumPol, const MEDFileFieldGlobsReal *glob, const MEDCouplingMesh *mesh, const DataArrayInt *cellRenum, const DataArrayInt *nodeRenum, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
+-{
+-  static const char msg1[]="MEDFileField1TSWithoutSDA::getFieldOnMeshAtLevel : request for a renumbered field following mesh numbering whereas it is a profile field !";
+-  bool isPfl=false;
+-  MCAuto<MEDCouplingFieldDouble> ret=_field_per_mesh[0]->getFieldOnMeshAtLevel(type,glob,mesh,isPfl,arrOut,nasc);
+-  switch(renumPol)
+-  {
+-    case 0:
+-      {
+-        //no need to test _field_per_mesh.empty() because geMeshName has already done it
+-        return ret.retn();
+-      }
+-    case 3:
+-    case 1:
+-      {
+-        if(isPfl)
+-          throw INTERP_KERNEL::Exception(msg1);
+-        //no need to test _field_per_mesh.empty() because geMeshName has already done it
+-        if(cellRenum)
+-          {
+-            if((int)cellRenum->getNbOfElems()!=mesh->getNumberOfCells())
+-              {
+-                std::ostringstream oss; oss << "MEDFileField1TSWithoutSDA::getFieldOnMeshAtLevel : Request of simple renumbering but it seems that underlying mesh \"" << mesh->getName() << "\" of requested field ";
+-                oss << "\"" << getName() << "\" has partial renumbering (some geotype has no renumber) !";
+-                throw INTERP_KERNEL::Exception(oss.str());
+-              }
+-            MEDCouplingFieldDiscretization *disc=ret->getDiscretization();
+-            if(!disc) throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TSWithoutSDA::getFieldOnMeshAtLevel : internal error, no discretization on field !");
+-            std::vector<DataArray *> arrOut2(1,arrOut);
+-            // 2 following lines replace ret->renumberCells(cellRenum->getConstPointer()) if not DataArrayDouble
+-            disc->renumberArraysForCell(ret->getMesh(),arrOut2,cellRenum->getConstPointer(),true);
+-            (const_cast<MEDCouplingMesh*>(ret->getMesh()))->renumberCells(cellRenum->getConstPointer(),true);
+-          }
+-        if(renumPol==1)
+-          return ret.retn();
+-      }
+-    case 2:
+-      {
+-        //no need to test _field_per_mesh.empty() because geMeshName has already done it
+-        if(isPfl)
+-          throw INTERP_KERNEL::Exception(msg1);
+-        if(nodeRenum)
+-          {
+-            if((int)nodeRenum->getNbOfElems()!=mesh->getNumberOfNodes())
+-              {
+-                std::ostringstream oss; oss << "MEDFileField1TSWithoutSDA::getFieldOnMeshAtLevel : Request of simple renumbering but it seems that underlying mesh \"" << mesh->getName() << "\" of requested field ";
+-                oss << "\"" << nasc.getName() << "\" not defined on all nodes !";
+-                throw INTERP_KERNEL::Exception(oss.str());
+-              }
+-            MCAuto<DataArrayInt> nodeRenumSafe=nodeRenum->checkAndPreparePermutation();
+-            if(!dynamic_cast<DataArrayDouble *>((DataArray *)arrOut))
+-              throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getFieldOnMeshAtLevel : node renumbering not implemented for not double DataArrays !");
+-            ret->renumberNodes(nodeRenumSafe->getConstPointer());
+-          }
+-        return ret.retn();
+-      }
+-    default:
+-      throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getFieldOnMeshAtLevel : unsupported renum policy ! Dealing with policy 0 1 2 and 3 !");
+-  }
+-}
+-
+-/*!
+- * Returns values and a profile of the field of a given type lying on a given support.
+- *  \param [in] type - a spatial discretization of the field.
+- *  \param [in] meshDimRelToMax - a relative dimension of the supporting mesh entities.
+- *  \param [in] mesh - the supporting mesh.
+- *  \param [out] pfl - a new instance of DataArrayInt holding ids of mesh entities the
+- *          field of interest lies on. If the field lies on all entities of the given
+- *          dimension, all ids in \a pfl are zero. The caller is to delete this array
+- *          using decrRef() as it is no more needed.  
+- *  \param [in] glob - the global data storing profiles and localization.
+- *  \return DataArrayDouble * - a new instance of DataArrayDouble holding values of the
+- *          field. The caller is to delete this array using decrRef() as it is no more needed.
+- *  \throw If there are no mesh entities of \a meshDimRelToMax dimension in \a mesh.
+- *  \throw If no field of \a this is lying on \a mesh.
+- *  \throw If no field values of the given \a type are available.
+- */
+-DataArray *MEDFileAnyTypeField1TSWithoutSDA::getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, DataArrayInt *&pfl, const MEDFileFieldGlobsReal *glob, const MEDFileFieldNameScope& nasc) const
+-{
+-  MCAuto<MEDCouplingMesh> m(mesh->getMeshAtLevel(meshDimRelToMax));
+-  MCAuto<DataArray> ret=_field_per_mesh[0]->getFieldOnMeshAtLevelWithPfl(type,m,pfl,glob,nasc);
+-  ret->setName(nasc.getName().c_str());
+-  return ret.retn();
+-}
+-
+-//= MEDFileField1TSWithoutSDA
+-
+-/*!
+- * Throws if a given value is not a valid (non-extended) relative dimension.
+- *  \param [in] meshDimRelToMax - the relative dimension value.
+- *  \throw If \a meshDimRelToMax > 0.
+- */
+-void MEDFileField1TSWithoutSDA::CheckMeshDimRel(int meshDimRelToMax)
+-{
+-  if(meshDimRelToMax>0)
+-    throw INTERP_KERNEL::Exception("CheckMeshDimRel : This is a meshDimRel not a meshDimRelExt ! So value should be <=0 !");
+-}
+-
+-/*!
+- * Checks if elements of a given mesh are in the order suitable for writing 
+- * to the MED file. If this is not so, an exception is thrown. In a case of success, returns a
+- * vector describing types of elements and their number.
+- *  \param [in] mesh - the mesh to check.
+- *  \return std::vector<int> - a vector holding for each element type (1) item of
+- *          INTERP_KERNEL::NormalizedCellType, (2) number of elements, (3) -1. 
+- *          These values are in full-interlace mode.
+- *  \throw If elements in \a mesh are not in the order suitable for writing to the MED file.
+- */
+-std::vector<int> MEDFileField1TSWithoutSDA::CheckSBTMesh(const MEDCouplingMesh *mesh)
+-{
+-  if(!mesh)
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::CheckSBTMesh : input mesh is NULL !");
+-  std::set<INTERP_KERNEL::NormalizedCellType> geoTypes=mesh->getAllGeoTypes();
+-  int nbOfTypes=geoTypes.size();
+-  std::vector<int> code(3*nbOfTypes);
+-  MCAuto<DataArrayInt> arr1=DataArrayInt::New();
+-  arr1->alloc(nbOfTypes,1);
+-  int *arrPtr=arr1->getPointer();
+-  std::set<INTERP_KERNEL::NormalizedCellType>::const_iterator it=geoTypes.begin();
+-  for(int i=0;i<nbOfTypes;i++,it++)
+-    arrPtr[i]=std::distance(typmai2,std::find(typmai2,typmai2+MED_N_CELL_FIXED_GEO,*it));
+-  MCAuto<DataArrayInt> arr2=arr1->checkAndPreparePermutation();
+-  const int *arrPtr2=arr2->getConstPointer();
+-  int i=0;
+-  for(it=geoTypes.begin();it!=geoTypes.end();it++,i++)
+-    {
+-      int pos=arrPtr2[i];
+-      int nbCells=mesh->getNumberOfCellsWithType(*it);
+-      code[3*pos]=(int)(*it);
+-      code[3*pos+1]=nbCells;
+-      code[3*pos+2]=-1;//no profiles
+-    }
+-  std::vector<const DataArrayInt *> idsPerType;//no profiles
+-  DataArrayInt *da=mesh->checkTypeConsistencyAndContig(code,idsPerType);
+-  if(da)
+-    {
+-      da->decrRef();
+-      throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::CheckSBTMesh : underlying mesh is not sorted by type as MED file expects !");
+-    }
+-  return code;
+-}
+-
+-MEDFileField1TSWithoutSDA *MEDFileField1TSWithoutSDA::New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos)
+-{
+-  return new MEDFileField1TSWithoutSDA(fieldName,meshName,csit,iteration,order,infos);
+-}
+-
+-/*!
+- * Returns all attributes and values of parts of \a this field lying on a given mesh.
+- * Each part differs from other ones by a type of supporting mesh entity. The _i_-th
+- * item of every of returned sequences refers to the _i_-th part of \a this field.
+- * Thus all sequences returned by this method are of the same length equal to number
+- * of different types of supporting entities.<br>
+- * A field part can include sub-parts with several different spatial discretizations,
+- * \ref MEDCoupling::ON_CELLS "ON_CELLS" and \ref MEDCoupling::ON_GAUSS_PT "ON_GAUSS_PT"
+- * for example. Hence, some of the returned sequences contains nested sequences, and an item
+- * of a nested sequence corresponds to a type of spatial discretization.<br>
+- * This method allows for iteration over MEDFile DataStructure with a reduced overhead.
+- * The overhead is due to selecting values into new instances of DataArrayDouble.
+- *  \param [in] mname - a name of a mesh of interest. It can be \c NULL, which is valid
+- *          for the case with only one underlying mesh. (Actually, the number of meshes is
+- *          not checked if \a mname == \c NULL).
+- *  \param [in,out] types - a sequence of types of underlying mesh entities. A type per
+- *          a field part is returned. 
+- *  \param [in,out] typesF - a sequence of sequences of types of spatial discretizations.
+- *          A field part can include sub-parts with several different spatial discretizations,
+- *          \ref MEDCoupling::ON_CELLS "ON_CELLS" and 
+- *          \ref MEDCoupling::ON_GAUSS_PT "ON_GAUSS_PT" for example.
+- *          This sequence is of the same length as \a types. 
+- *  \param [in,out] pfls - a sequence returning a profile name per each type of spatial
+- *          discretization. A profile name can be empty.
+- *          Length of this and of nested sequences is the same as that of \a typesF.
+- *  \param [in,out] locs - a sequence returning a localization name per each type of spatial
+- *          discretization. A localization name can be empty.
+- *          Length of this and of nested sequences is the same as that of \a typesF.
+- *  \return std::vector< std::vector<DataArrayDouble *> > - a sequence holding arrays of values
+- *          per each type of spatial discretization within one mesh entity type.
+- *          The caller is to delete each DataArrayDouble using decrRef() as it is no more needed.
+- *          Length of this and of nested sequences is the same as that of \a typesF.
+- *  \throw If no field is lying on \a mname.
+- */
+-std::vector< std::vector<DataArrayDouble *> > MEDFileField1TSWithoutSDA::getFieldSplitedByType2(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
+-{
+-  if(mname.empty())
+-    if(_field_per_mesh.empty())
+-      throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getFieldSplitedByType : This is empty !");
+-  std::vector< std::vector< std::pair<int,int> > > ret0=_field_per_mesh[0]->getFieldSplitedByType(types,typesF,pfls,locs);
+-  int nbOfRet=ret0.size();
+-  std::vector< std::vector<DataArrayDouble *> > ret(nbOfRet);
+-  for(int i=0;i<nbOfRet;i++)
+-    {
+-      const std::vector< std::pair<int,int> >& p=ret0[i];
+-      int nbOfRet1=p.size();
+-      ret[i].resize(nbOfRet1);
+-      for(int j=0;j<nbOfRet1;j++)
+-        {
+-          DataArrayDouble *tmp=_arr->selectByTupleIdSafeSlice(p[j].first,p[j].second,1);
+-          ret[i][j]=tmp;
+-        }
+-    }
+-  return ret;
+-}
+-
+-const char *MEDFileField1TSWithoutSDA::getTypeStr() const
+-{
+-  return TYPE_STR;
+-}
+-
+-MEDFileIntField1TSWithoutSDA *MEDFileField1TSWithoutSDA::convertToInt() const
+-{
+-  MCAuto<MEDFileIntField1TSWithoutSDA> ret(new MEDFileIntField1TSWithoutSDA);
+-  ret->MEDFileAnyTypeField1TSWithoutSDA::operator =(*this);
+-  ret->deepCpyLeavesFrom(*this);
+-  const DataArrayDouble *arr(_arr);
+-  if(arr)
+-    {
+-      MCAuto<DataArrayInt> arr2(arr->convertToIntArr());
+-      ret->setArray(arr2);
+-    }
+-  return ret.retn();
+-}
+-
+-/*!
+- * Returns a pointer to the underground DataArrayDouble instance and a
+- * sequence describing parameters of a support of each part of \a this field. The
+- * caller should not decrRef() the returned DataArrayDouble. This method allows for a
+- * direct access to the field values. This method is intended for the field lying on one
+- * mesh only.
+- *  \param [in,out] entries - the sequence describing parameters of a support of each
+- *         part of \a this field. Each item of this sequence consists of two parts. The
+- *         first part describes a type of mesh entity and an id of discretization of a
+- *         current field part. The second part describes a range of values [begin,end)
+- *         within the returned array relating to the current field part.
+- *  \return DataArrayDouble * - the pointer to the field values array.
+- *  \throw If the number of underlying meshes is not equal to 1.
+- *  \throw If no field values are available.
+- *  \sa getUndergroundDataArray()
+- */
+-DataArray *MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
+-{
+-  return getUndergroundDataArrayTemplateExt(entries);
+-}
+-
+-MEDFileField1TSWithoutSDA::MEDFileField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos):MEDFileField1TSTemplateWithoutSDA<double>(fieldName,meshName,csit,iteration,order)
+-{
+-  DataArrayDouble *arr(getOrCreateAndGetArrayTemplate());
+-  arr->setInfoAndChangeNbOfCompo(infos);
+-}
+-
+-MEDFileField1TSWithoutSDA::MEDFileField1TSWithoutSDA():MEDFileField1TSTemplateWithoutSDA<double>()
+-{
+-}
+-
+-MEDFileField1TSWithoutSDA *MEDFileField1TSWithoutSDA::shallowCpy() const
+-{
+-  MCAuto<MEDFileField1TSWithoutSDA> ret(new MEDFileField1TSWithoutSDA(*this));
+-  ret->deepCpyLeavesFrom(*this);
+-  return ret.retn();
+-}
+-
+-MEDFileField1TSWithoutSDA *MEDFileField1TSWithoutSDA::deepCopy() const
+-{
+-  MCAuto<MEDFileField1TSWithoutSDA> ret(shallowCpy());
+-  if(_arr.isNotNull())
+-    ret->_arr=_arr->deepCopy();
+-  return ret.retn();
+-}
+-
+-//= MEDFileIntField1TSWithoutSDA
+-
+-MEDFileIntField1TSWithoutSDA *MEDFileIntField1TSWithoutSDA::New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos)
+-{
+-  return new MEDFileIntField1TSWithoutSDA(fieldName,meshName,csit,iteration,order,infos);
+-}
+-
+-MEDFileIntField1TSWithoutSDA::MEDFileIntField1TSWithoutSDA()
+-{
+-}
+-
+-MEDFileIntField1TSWithoutSDA::MEDFileIntField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order,
+-                                                           const std::vector<std::string>& infos):MEDFileField1TSNDTemplateWithoutSDA<int>(fieldName,meshName,csit,iteration,order,infos)
+-{
+-  DataArrayInt *arr(getOrCreateAndGetArrayTemplate());
+-  arr->setInfoAndChangeNbOfCompo(infos);
+-}
+-
+-const char *MEDFileIntField1TSWithoutSDA::getTypeStr() const
+-{
+-  return TYPE_STR;
+-}
+-
+-/*!
+- * Returns a pointer to the underground DataArrayInt instance and a
+- * sequence describing parameters of a support of each part of \a this field. The
+- * caller should not decrRef() the returned DataArrayInt. This method allows for a
+- * direct access to the field values. This method is intended for the field lying on one
+- * mesh only.
+- *  \param [in,out] entries - the sequence describing parameters of a support of each
+- *         part of \a this field. Each item of this sequence consists of two parts. The
+- *         first part describes a type of mesh entity and an id of discretization of a
+- *         current field part. The second part describes a range of values [begin,end)
+- *         within the returned array relating to the current field part.
+- *  \return DataArrayInt * - the pointer to the field values array.
+- *  \throw If the number of underlying meshes is not equal to 1.
+- *  \throw If no field values are available.
+- *  \sa getUndergroundDataArray()
+- */
+-DataArray *MEDFileIntField1TSWithoutSDA::getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
+-{
+-  return getUndergroundDataArrayIntExt(entries);
+-}
+-
+-/*!
+- * Returns a pointer to the underground DataArrayInt instance and a
+- * sequence describing parameters of a support of each part of \a this field. The
+- * caller should not decrRef() the returned DataArrayInt. This method allows for a
+- * direct access to the field values. This method is intended for the field lying on one
+- * mesh only.
+- *  \param [in,out] entries - the sequence describing parameters of a support of each
+- *         part of \a this field. Each item of this sequence consists of two parts. The
+- *         first part describes a type of mesh entity and an id of discretization of a
+- *         current field part. The second part describes a range of values [begin,end)
+- *         within the returned array relating to the current field part.
+- *  \return DataArrayInt * - the pointer to the field values array.
+- *  \throw If the number of underlying meshes is not equal to 1.
+- *  \throw If no field values are available.
+- *  \sa getUndergroundDataArray()
+- */
+-DataArrayInt *MEDFileIntField1TSWithoutSDA::getUndergroundDataArrayIntExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
+-{
+-  if(_field_per_mesh.size()!=1)
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt : field lies on several meshes, this method has no sense !");
+-  if(_field_per_mesh[0]==0)
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt : no field specified !");
+-  _field_per_mesh[0]->getUndergroundDataArrayExt(entries);
+-  return getUndergroundDataArrayTemplate();
+-}
+-
+-MEDFileIntField1TSWithoutSDA *MEDFileIntField1TSWithoutSDA::shallowCpy() const
+-{
+-  MCAuto<MEDFileIntField1TSWithoutSDA> ret(new MEDFileIntField1TSWithoutSDA(*this));
+-  ret->deepCpyLeavesFrom(*this);
+-  return ret.retn();
+-}
+-
+-MEDFileIntField1TSWithoutSDA *MEDFileIntField1TSWithoutSDA::deepCopy() const
+-{
+-  MCAuto<MEDFileIntField1TSWithoutSDA> ret(shallowCpy());
+-  if(_arr.isNotNull())
+-    ret->_arr=_arr->deepCopy();
+-  return ret.retn();
+-}
+-
+-//= MEDFileFloatField1TSWithoutSDA
+-
+-MEDFileFloatField1TSWithoutSDA *MEDFileFloatField1TSWithoutSDA::New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos)
+-{
+-  return new MEDFileFloatField1TSWithoutSDA(fieldName,meshName,csit,iteration,order,infos);
+-}
+-
+-MEDFileFloatField1TSWithoutSDA::MEDFileFloatField1TSWithoutSDA()
+-{
+-}
+-
+-MEDFileFloatField1TSWithoutSDA::MEDFileFloatField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order,
+-                                                               const std::vector<std::string>& infos):MEDFileField1TSNDTemplateWithoutSDA<float>(fieldName,meshName,csit,iteration,order,infos)
+-{
+-  DataArrayFloat *arr(getOrCreateAndGetArrayTemplate());
+-  arr->setInfoAndChangeNbOfCompo(infos);
+-}
+-
+-const char *MEDFileFloatField1TSWithoutSDA::getTypeStr() const
+-{
+-  return TYPE_STR;
+-}
+-
+-/*!
+- * Returns a pointer to the underground DataArrayFloat instance and a
+- * sequence describing parameters of a support of each part of \a this field. The
+- * caller should not decrRef() the returned DataArrayFloat. This method allows for a
+- * direct access to the field values. This method is intended for the field lying on one
+- * mesh only.
+- *  \param [in,out] entries - the sequence describing parameters of a support of each
+- *         part of \a this field. Each item of this sequence consists of two parts. The
+- *         first part describes a type of mesh entity and an id of discretization of a
+- *         current field part. The second part describes a range of values [begin,end)
+- *         within the returned array relating to the current field part.
+- *  \return DataArrayFloat * - the pointer to the field values array.
+- *  \throw If the number of underlying meshes is not equal to 1.
+- *  \throw If no field values are available.
+- *  \sa getUndergroundDataArray()
+- */
+-DataArray *MEDFileFloatField1TSWithoutSDA::getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
+-{
+-  return getUndergroundDataArrayFloatExt(entries);
+-}
+-
+-/*!
+- * Returns a pointer to the underground DataArrayFloat instance and a
+- * sequence describing parameters of a support of each part of \a this field. The
+- * caller should not decrRef() the returned DataArrayFloat. This method allows for a
+- * direct access to the field values. This method is intended for the field lying on one
+- * mesh only.
+- *  \param [in,out] entries - the sequence describing parameters of a support of each
+- *         part of \a this field. Each item of this sequence consists of two parts. The
+- *         first part describes a type of mesh entity and an id of discretization of a
+- *         current field part. The second part describes a range of values [begin,end)
+- *         within the returned array relating to the current field part.
+- *  \return DataArrayFloat * - the pointer to the field values array.
+- *  \throw If the number of underlying meshes is not equal to 1.
+- *  \throw If no field values are available.
+- *  \sa getUndergroundDataArray()
+- */
+-DataArrayFloat *MEDFileFloatField1TSWithoutSDA::getUndergroundDataArrayFloatExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
+-{
+-  if(_field_per_mesh.size()!=1)
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt : field lies on several meshes, this method has no sense !");
+-  if(_field_per_mesh[0]==0)
+-    throw INTERP_KERNEL::Exception("MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt : no field specified !");
+-  _field_per_mesh[0]->getUndergroundDataArrayExt(entries);
+-  return getUndergroundDataArrayTemplate();
+-}
+-
+-MEDFileFloatField1TSWithoutSDA *MEDFileFloatField1TSWithoutSDA::shallowCpy() const
+-{
+-  MCAuto<MEDFileFloatField1TSWithoutSDA> ret(new MEDFileFloatField1TSWithoutSDA(*this));
+-  ret->deepCpyLeavesFrom(*this);
+-  return ret.retn();
+-}
+-
+-MEDFileFloatField1TSWithoutSDA *MEDFileFloatField1TSWithoutSDA::deepCopy() const
+-{
+-  MCAuto<MEDFileFloatField1TSWithoutSDA> ret(shallowCpy());
+-  if(_arr.isNotNull())
+-    ret->_arr=_arr->deepCopy();
+-  return ret.retn();
+-}
+-
+-//= MEDFileAnyTypeField1TS
+-
+-MEDFileAnyTypeField1TS::MEDFileAnyTypeField1TS()
+-{
+-}
+-
+-MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeField1TS::BuildContentFrom(med_idt fid, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-{
+-  med_field_type typcha;
+-  //
+-  std::vector<std::string> infos;
+-  std::string dtunit,fieldName,meshName;
+-  LocateField2(fid,0,true,fieldName,typcha,infos,dtunit,meshName);
+-  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> ret;
+-  switch(typcha)
+-  {
+-    case MED_FLOAT64:
+-      {
+-        ret=MEDFileField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
+-        break;
+-      }
+-    case MED_INT32:
+-      {
+-        ret=MEDFileIntField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
+-        break;
+-      }
+-    case MED_NODE://6432
+-      {
+-        ret=MEDFileFloatField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
+-        break;
+-      }
+-    default:
+-      {
+-        std::ostringstream oss; oss << "MEDFileAnyTypeField1TS::BuildContentFrom(fid) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but the type of the first field is not in [MED_FLOAT64, MED_INT32] !";
+-        throw INTERP_KERNEL::Exception(oss.str());
+-      }
+-  }
+-  ret->setDtUnit(dtunit.c_str());
+-  ret->getOrCreateAndGetArray()->setInfoAndChangeNbOfCompo(infos);
+-  //
+-  med_int numdt,numit;
+-  med_float dt;
+-  MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,fieldName.c_str(),1,&numdt,&numit,&dt));
+-  ret->setTime(numdt,numit,dt);
+-  ret->_csit=1;
+-  if(loadAll)
+-    ret->loadStructureAndBigArraysRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
+-  else
+-    ret->loadOnlyStructureOfDataRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
+-  return ret.retn();
+-}
+-
+-MEDFileAnyTypeField1TS::MEDFileAnyTypeField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-try:MEDFileFieldGlobsReal(fid)
+-{
+-  _content=BuildContentFrom(fid,loadAll,ms,entities);
+-  loadGlobals(fid);
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{
+-    throw e;
+-}
+-
+-MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeField1TS::BuildContentFrom(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-{
+-  med_field_type typcha;
+-  std::vector<std::string> infos;
+-  std::string dtunit,meshName;
+-  int nbSteps(0);
+-  {
+-    int iii=-1;
+-    nbSteps=LocateField(fid,fieldName,iii,typcha,infos,dtunit,meshName);
+-  }
+-  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> ret;
+-  switch(typcha)
+-  {
+-    case MED_FLOAT64:
+-      {
+-        ret=MEDFileField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
+-        break;
+-      }
+-    case MED_INT32:
+-      {
+-        ret=MEDFileIntField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
+-        break;
+-      }
+-    case MED_NODE://6432
+-      {
+-        ret=MEDFileFloatField1TSWithoutSDA::New(fieldName,meshName,-1,-1/*iteration*/,-1/*order*/,std::vector<std::string>());
+-        break;
+-      }
+-    default:
+-      {
+-        std::ostringstream oss; oss << "MEDFileAnyTypeField1TS::BuildContentFrom(fid,fieldName) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but the type of field is not in [MED_FLOAT64, MED_INT32, MED_FLOAT32] !";
+-        throw INTERP_KERNEL::Exception(oss.str());
+-      }
+-  }
+-  ret->setMeshName(meshName);
+-  ret->setDtUnit(dtunit.c_str());
+-  ret->getOrCreateAndGetArray()->setInfoAndChangeNbOfCompo(infos);
+-  //
+-  if(nbSteps<1)
+-    {
+-      std::ostringstream oss; oss << "MEDFileField1TS(fid,fieldName) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but there is no time steps on it !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  //
+-  med_int numdt,numit;
+-  med_float dt;
+-  MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,fieldName.c_str(),1,&numdt,&numit,&dt));
+-  ret->setTime(numdt,numit,dt);
+-  ret->_csit=1;
+-  if(loadAll)
+-    ret->loadStructureAndBigArraysRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
+-  else
+-    ret->loadOnlyStructureOfDataRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
+-  return ret.retn();
+-}
+-
+-MEDFileAnyTypeField1TS::MEDFileAnyTypeField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-try:MEDFileFieldGlobsReal(fid)
+-{
+-  _content=BuildContentFrom(fid,fieldName,loadAll,ms,entities);
+-  loadGlobals(fid);
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{
+-    throw e;
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::BuildNewInstanceFromContent(MEDFileAnyTypeField1TSWithoutSDA *c)
+-{
+-  if(!c)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::BuildNewInstanceFromContent : empty content in input : unable to build a new instance !");
+-  if(dynamic_cast<const MEDFileField1TSWithoutSDA *>(c))
+-    {
+-      MCAuto<MEDFileField1TS> ret(MEDFileField1TS::New());
+-      ret->_content=c; c->incrRef();
+-      return ret.retn();
+-    }
+-  if(dynamic_cast<const MEDFileIntField1TSWithoutSDA *>(c))
+-    {
+-      MCAuto<MEDFileIntField1TS> ret(MEDFileIntField1TS::New());
+-      ret->_content=c; c->incrRef();
+-      return ret.retn();
+-    }
+-  throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::BuildNewInstanceFromContent : internal error ! a content of type different from FLOAT64 and INT32 has been built but not intercepted !");
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::BuildNewInstanceFromContent(MEDFileAnyTypeField1TSWithoutSDA *c, med_idt fid)
+-{
+-  MEDFileAnyTypeField1TS *ret(BuildNewInstanceFromContent(c));
+-  ret->setFileName(FileNameFromFID(fid));
+-  return ret;
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(const std::string& fileName, bool loadAll)
+-{
+-  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
+-  return New(fid,loadAll);
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(med_idt fid, bool loadAll)
+-{
+-  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> c(BuildContentFrom(fid,loadAll,0,0));
+-  MCAuto<MEDFileAnyTypeField1TS> ret(BuildNewInstanceFromContent(c,fid));
+-  ret->loadGlobals(fid);
+-  return ret.retn();
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(const std::string& fileName, const std::string& fieldName, bool loadAll)
+-{
+-  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
+-  return New(fid,fieldName,loadAll);
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(med_idt fid, const std::string& fieldName, bool loadAll)
+-{
+-  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> c(BuildContentFrom(fid,fieldName,loadAll,0,0));
+-  MCAuto<MEDFileAnyTypeField1TS> ret(BuildNewInstanceFromContent(c,fid));
+-  ret->loadGlobals(fid);
+-  return ret.retn();
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll)
+-{
+-  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
+-  return New(fid,fieldName,iteration,order,loadAll);
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::New(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll)
+-{
+-  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> c(BuildContentFrom(fid,fieldName,iteration,order,loadAll,0,0));
+-  MCAuto<MEDFileAnyTypeField1TS> ret(BuildNewInstanceFromContent(c,fid));
+-  ret->loadGlobals(fid);
+-  return ret.retn();
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::NewAdv(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities)
+-{
+-  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
+-  return NewAdv(fid,fieldName,iteration,order,loadAll,entities);
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::NewAdv(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities)
+-{
+-  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> c(BuildContentFrom(fid,fieldName,iteration,order,loadAll,0,entities));
+-  MCAuto<MEDFileAnyTypeField1TS> ret(BuildNewInstanceFromContent(c,fid));
+-  ret->loadGlobals(fid);
+-  return ret.retn();
+-}
+-
+-MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeField1TS::BuildContentFrom(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-{
+-  med_field_type typcha;
+-  std::vector<std::string> infos;
+-  std::string dtunit,meshName;
+-  int iii(-1);
+-  int nbOfStep2(LocateField(fid,fieldName,iii,typcha,infos,dtunit,meshName));
+-  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> ret;
+-  switch(typcha)
+-  {
+-    case MED_FLOAT64:
+-      {
+-        ret=MEDFileField1TSWithoutSDA::New(fieldName,meshName,-1,iteration,order,std::vector<std::string>());
+-        break;
+-      }
+-    case MED_INT32:
+-      {
+-        ret=MEDFileIntField1TSWithoutSDA::New(fieldName,meshName,-1,iteration,order,std::vector<std::string>());
+-        break;
+-      }
+-    case MED_NODE://6432
+-      {
+-        ret=MEDFileFloatField1TSWithoutSDA::New(fieldName,meshName,-1,iteration,order,std::vector<std::string>());
+-        break;
+-      }
+-    default:
+-      {
+-        std::ostringstream oss; oss << "MEDFileAnyTypeField1TS::BuildContentFrom(fid,fieldName,iteration,order) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but the type of field is not in [MED_FLOAT64, MED_INT32, MED_FLOAT32] !";
+-        throw INTERP_KERNEL::Exception(oss.str());
+-      }
+-  }
+-  ret->setDtUnit(dtunit.c_str());
+-  ret->getOrCreateAndGetArray()->setInfoAndChangeNbOfCompo(infos);
+-  //
+-  bool found=false;
+-  std::vector< std::pair<int,int> > dtits(nbOfStep2);
+-  for(int i=0;i<nbOfStep2 && !found;i++)
+-    {
+-      med_int numdt,numit;
+-      med_float dt;
+-      MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,fieldName.c_str(),i+1,&numdt,&numit,&dt));
+-      if(numdt==iteration && numit==order)
+-        {
+-          found=true;
+-          ret->_csit=i+1;
+-        }
+-      else
+-        dtits[i]=std::pair<int,int>(numdt,numit);
+-    }
+-  if(!found)
+-    {
+-      std::ostringstream oss; oss << "No such iteration (" << iteration << "," << order << ") in existing field '" << fieldName << "' in file '" << FileNameFromFID(fid) << "' ! Available iterations are : ";
+-      for(std::vector< std::pair<int,int> >::const_iterator iter=dtits.begin();iter!=dtits.end();iter++)
+-        oss << "(" << (*iter).first << "," << (*iter).second << "), ";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  if(loadAll)
+-    ret->loadStructureAndBigArraysRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
+-  else
+-    ret->loadOnlyStructureOfDataRecursively(fid,*((const MEDFileAnyTypeField1TSWithoutSDA*)ret),ms,entities);
+-  return ret.retn();
+-}
+-
+-MEDFileAnyTypeField1TS::MEDFileAnyTypeField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-try:MEDFileFieldGlobsReal(fid)
+-{
+-  _content=BuildContentFrom(fid,fieldName,iteration,order,loadAll,ms,entities);
+-  loadGlobals(fid);
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{
+-    throw e;
+-}
+-
+-/*!
+- * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
+- * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
+- *
+- * \warning this is a shallow copy constructor
+- */
+-MEDFileAnyTypeField1TS::MEDFileAnyTypeField1TS(const MEDFileAnyTypeField1TSWithoutSDA& other, bool shallowCopyOfContent)
+-{
+-  if(!shallowCopyOfContent)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *otherPtr(&other);
+-      otherPtr->incrRef();
+-      _content=const_cast<MEDFileAnyTypeField1TSWithoutSDA *>(otherPtr);
+-    }
+-  else
+-    {
+-      _content=other.shallowCpy();
+-    }
+-}
+-
+-int MEDFileAnyTypeField1TS::LocateField2(med_idt fid, int fieldIdCFormat, bool checkFieldId, std::string& fieldName, med_field_type& typcha, std::vector<std::string>& infos, std::string& dtunitOut, std::string& meshName)
+-{
+-  if(checkFieldId)
+-    {
+-      int nbFields=MEDnField(fid);
+-      if(fieldIdCFormat>=nbFields)
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeField1TS::LocateField2(fileName) : in file \'" << FileNameFromFID(fid) << "\' number of fields is " << nbFields << " ! Trying to request for id " << fieldIdCFormat << " !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-    }
+-  int ncomp(MEDfieldnComponent(fid,fieldIdCFormat+1));
+-  INTERP_KERNEL::AutoPtr<char> comp(MEDLoaderBase::buildEmptyString(ncomp*MED_SNAME_SIZE));
+-  INTERP_KERNEL::AutoPtr<char> unit(MEDLoaderBase::buildEmptyString(ncomp*MED_SNAME_SIZE));
+-  INTERP_KERNEL::AutoPtr<char> dtunit(MEDLoaderBase::buildEmptyString(MED_LNAME_SIZE));
+-  INTERP_KERNEL::AutoPtr<char> nomcha(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  INTERP_KERNEL::AutoPtr<char> nomMaa(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
+-  med_bool localMesh;
+-  int nbOfStep;
+-  MEDFILESAFECALLERRD0(MEDfieldInfo,(fid,fieldIdCFormat+1,nomcha,nomMaa,&localMesh,&typcha,comp,unit,dtunit,&nbOfStep));
+-  fieldName=MEDLoaderBase::buildStringFromFortran(nomcha,MED_NAME_SIZE);
+-  dtunitOut=MEDLoaderBase::buildStringFromFortran(dtunit,MED_LNAME_SIZE);
+-  meshName=MEDLoaderBase::buildStringFromFortran(nomMaa,MED_NAME_SIZE);
+-  infos.clear(); infos.resize(ncomp);
+-  for(int j=0;j<ncomp;j++)
+-    infos[j]=MEDLoaderBase::buildUnionUnit((char *)comp+j*MED_SNAME_SIZE,MED_SNAME_SIZE,(char *)unit+j*MED_SNAME_SIZE,MED_SNAME_SIZE);
+-  return nbOfStep;
+-}
+-
+-/*!
+- * This method throws an INTERP_KERNEL::Exception if \a fieldName field is not in file pointed by \a fid and with name \a fileName.
+- * 
+- * \param [out]
+- * \return in case of success the number of time steps available for the field with name \a fieldName.
+- */
+-int MEDFileAnyTypeField1TS::LocateField(med_idt fid, const std::string& fieldName, int& posCFormat, med_field_type& typcha, std::vector<std::string>& infos, std::string& dtunitOut, std::string& meshName)
+-{
+-  int nbFields=MEDnField(fid);
+-  bool found=false;
+-  std::vector<std::string> fns(nbFields);
+-  int nbOfStep2(-1);
+-  for(int i=0;i<nbFields && !found;i++)
+-    {
+-      std::string tmp,tmp2;
+-      nbOfStep2=LocateField2(fid,i,false,tmp,typcha,infos,dtunitOut,tmp2);
+-      fns[i]=tmp;
+-      found=(tmp==fieldName);
+-      if(found)
+-        {
+-          posCFormat=i;
+-          meshName=tmp2;
+-        }
+-    }
+-  if(!found)
+-    {
+-      std::ostringstream oss; oss << "No such field '" << fieldName << "' in file '" << FileNameFromFID(fid) << "' ! Available fields are : ";
+-      for(std::vector<std::string>::const_iterator it=fns.begin();it!=fns.end();it++)
+-        oss << "\"" << *it << "\" ";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  return nbOfStep2;
+-}
+-
+-/*!
+- * This method as MEDFileField1TSW::setLocNameOnLeaf, is dedicated for advanced user that a want a very fine control on their data structure
+- * without overhead. This method can be called only regarding information returned by MEDFileField1TSWithoutSDA::getFieldSplitedByType or MEDFileField1TSWithoutSDA::getFieldSplitedByType2.
+- * This method changes the attribute (here it's profile name) of the leaf datastructure (MEDFileFieldPerMeshPerTypePerDisc instance).
+- * It is the responsability of the caller to invoke MEDFileFieldGlobs::appendProfile or MEDFileFieldGlobs::getProfile
+- * to keep a valid instance.
+- * If \b this do not have any leaf that correspond to the request of the input parameter (\b mName, \b typ, \b locId) an INTERP_KERNEL::Exception will be thrown.
+- * If \b newPflName profile name does not already exist the profile with old name will be renamed with name \b newPflName.
+- * If \b newPflName already exists and that \b forceRenameOnGlob is false (the default) an INTERP_KERNEL::Exception will be thrown to avoid big confusion. In this case the called should rename before the profile name with name \b newPflName.
+- *
+- * \param [in] mName specifies the underlying mesh name. This value can be pointer 0 for users that do not deal with fields on multi mesh.
+- * \param [in] typ is for the geometric cell type (or INTERP_KERNEL::NORM_ERROR for node field) entry to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set.
+- * \param [in] locId is the localization id to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set. It corresponds to the position of 
+- *             \c pfls[std::distance(types.begin(),std::find(types.begin(),typ)] vector in MEDFileField1TSWithoutSDA::getFieldSplitedByType. For non gausspoints field users, the value is 0.
+- * \param [in] newLocName is the new localization name.
+- * \param [in] forceRenameOnGlob specifies the behaviour in case of profile \b newPflName already exists. If true, the renaming is done without check. It can lead to major bug.
+- *             If false, an exception will be thrown to force user to change previously the name of the profile with name \b newPflName
+- */
+-void MEDFileAnyTypeField1TS::setProfileNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newPflName, bool forceRenameOnGlob)
+-{
+-  MEDFileFieldPerMeshPerTypePerDisc *disc=getLeafGivenMeshAndTypeAndLocId(mName,typ,locId);
+-  std::string oldPflName=disc->getProfile();
+-  std::vector<std::string> vv=getPflsReallyUsedMulti();
+-  int nbOfOcc=std::count(vv.begin(),vv.end(),oldPflName);
+-  if(forceRenameOnGlob || (!existsPfl(newPflName) && nbOfOcc==1))
+-    {
+-      disc->setProfile(newPflName);
+-      DataArrayInt *pfl=getProfile(oldPflName.c_str());
+-      pfl->setName(newPflName);
+-    }
+-  else
+-    {
+-      std::ostringstream oss; oss << "MEDFileField1TS::setProfileNameOnLeaf : Profile \"" << newPflName << "\" already exists or referenced more than one !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-}
+-
+-/*!
+- * This method as MEDFileField1TSW::setProfileNameOnLeaf, is dedicated for advanced user that a want a very fine control on their data structure
+- * without overhead. This method can be called only regarding information returned by MEDFileField1TSWithoutSDA::getFieldSplitedByType or MEDFileField1TSWithoutSDA::getFieldSplitedByType2.
+- * This method changes the attribute (here it's localization name) of the leaf datastructure (MEDFileFieldPerMeshPerTypePerDisc instance).
+- * It is the responsability of the caller to invoke MEDFileFieldGlobs::appendProfile or MEDFileFieldGlobs::getProfile
+- * to keep a valid instance.
+- * If \b this do not have any leaf that correspond to the request of the input parameter (\b mName, \b typ, \b locId) an INTERP_KERNEL::Exception will be thrown.
+- * This method is an extension of MEDFileField1TSWithoutSDA::setProfileNameOnLeafExt method because it performs a modification of global info.
+- * If \b newLocName profile name does not already exist the localization with old name will be renamed with name \b newLocName.
+- * If \b newLocName already exists an INTERP_KERNEL::Exception will be thrown to avoid big confusion. In this case the called should rename before the profile name with name \b newLocName.
+- *
+- * \param [in] mName specifies the underlying mesh name. This value can be pointer 0 for users that do not deal with fields on multi mesh.
+- * \param [in] typ is for the geometric cell type (or INTERP_KERNEL::NORM_ERROR for node field) entry to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set.
+- * \param [in] locId is the localization id to find the right MEDFileFieldPerMeshPerTypePerDisc instance to set. It corresponds to the position of 
+- *             \c pfls[std::distance(types.begin(),std::find(types.begin(),typ)] vector in MEDFileField1TSWithoutSDA::getFieldSplitedByType. For non gausspoints field users, the value is 0.
+- * \param [in] newLocName is the new localization name.
+- * \param [in] forceRenameOnGlob specifies the behaviour in case of profile \b newLocName already exists. If true, the renaming is done without check. It can lead to major bug.
+- *             If false, an exception will be thrown to force user to change previously the name of the profile with name \b newLocName
+- */
+-void MEDFileAnyTypeField1TS::setLocNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newLocName, bool forceRenameOnGlob)
+-{
+-  MEDFileFieldPerMeshPerTypePerDisc *disc=getLeafGivenMeshAndTypeAndLocId(mName,typ,locId);
+-  std::string oldLocName=disc->getLocalization();
+-  std::vector<std::string> vv=getLocsReallyUsedMulti();
+-  int nbOfOcc=std::count(vv.begin(),vv.end(),oldLocName);
+-  if(forceRenameOnGlob || (!existsLoc(newLocName) && nbOfOcc==1))
+-    {
+-      disc->setLocalization(newLocName);
+-      MEDFileFieldLoc& loc=getLocalization(oldLocName.c_str());
+-      loc.setName(newLocName);
+-    }
+-  else
+-    {
+-      std::ostringstream oss; oss << "MEDFileField1TS::setLocNameOnLeaf : Localization \"" << newLocName << "\" already exists or referenced more than one !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-}
+-
+-MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeField1TS::contentNotNullBase()
+-{
+-  MEDFileAnyTypeField1TSWithoutSDA *ret=_content;
+-  if(!ret)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS : content is expected to be not null !");
+-  return ret;
+-}
+-
+-const MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeField1TS::contentNotNullBase() const
+-{
+-  const MEDFileAnyTypeField1TSWithoutSDA *ret=_content;
+-  if(!ret)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS : const content is expected to be not null !");
+-  return ret;
+-}
+-
+-/*!
+- * This method alloc the arrays and load potentially huge arrays contained in this field.
+- * This method should be called when a MEDFileAnyTypeField1TS::New constructor has been with false as the last parameter.
+- * This method can be also called to refresh or reinit values from a file.
+- * 
+- * \throw If the fileName is not set or points to a non readable MED file.
+- * \sa MEDFileAnyTypeField1TS::loadArraysIfNecessary
+- */
+-void MEDFileAnyTypeField1TS::loadArrays()
+-{
+-  if(getFileName().empty())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::loadArrays : the structure does not come from a file !");
+-  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(getFileName()));
+-  contentNotNullBase()->loadBigArraysRecursively(fid,*contentNotNullBase());
+-}
+-
+-/*!
+- * This method behaves as MEDFileAnyTypeField1TS::loadArrays does, the first call, if \a this was built using a file without loading big arrays.
+- * But once data loaded once, this method does nothing. Contrary to MEDFileAnyTypeField1TS::loadArrays and MEDFileAnyTypeField1TS::unloadArrays
+- * this method does not throw if \a this does not come from file read.
+- * 
+- * \sa MEDFileAnyTypeField1TS::loadArrays, MEDFileAnyTypeField1TS::unloadArrays
+- */
+-void MEDFileAnyTypeField1TS::loadArraysIfNecessary()
+-{
+-  if(!getFileName().empty())
+-    {
+-      MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(getFileName()));
+-      contentNotNullBase()->loadBigArraysRecursivelyIfNecessary(fid,*contentNotNullBase());
+-    }
+-}
+-
+-/*!
+- * This method releases potentially big data arrays and so returns to the same heap memory than status loaded with 'loadAll' parameter set to false.
+- * \b WARNING, this method does release arrays even if \a this does not come from a load of a MED file.
+- * So this method can lead to a loss of data. If you want to unload arrays safely call MEDFileAnyTypeField1TS::unloadArraysWithoutDataLoss instead.
+- * 
+- * \sa MEDFileAnyTypeField1TS::loadArrays, MEDFileAnyTypeField1TS::loadArraysIfNecessary, MEDFileAnyTypeField1TS::unloadArraysWithoutDataLoss
+- */
+-void MEDFileAnyTypeField1TS::unloadArrays()
+-{
+-  contentNotNullBase()->unloadArrays();
+-}
+-
+-/*!
+- * This method potentially releases big data arrays if \a this is coming from a file. If \a this has been built from scratch this method will have no effect.
+- * This method is the symetrical method of MEDFileAnyTypeField1TS::loadArraysIfNecessary.
+- * This method is useful to reduce \b safely amount of heap memory necessary for \a this by using MED file as database.
+- * 
+- * \sa MEDFileAnyTypeField1TS::loadArraysIfNecessary
+- */
+-void MEDFileAnyTypeField1TS::unloadArraysWithoutDataLoss()
+-{
+-  if(!getFileName().empty())
+-    contentNotNullBase()->unloadArrays();
+-}
+-
+-void MEDFileAnyTypeField1TS::writeLL(med_idt fid) const
+-{
+-  int nbComp(getNumberOfComponents());
+-  INTERP_KERNEL::AutoPtr<char> comp(MEDLoaderBase::buildEmptyString(nbComp*MED_SNAME_SIZE));
+-  INTERP_KERNEL::AutoPtr<char> unit(MEDLoaderBase::buildEmptyString(nbComp*MED_SNAME_SIZE));
+-  for(int i=0;i<nbComp;i++)
+-    {
+-      std::string info=getInfo()[i];
+-      std::string c,u;
+-      MEDLoaderBase::splitIntoNameAndUnit(info,c,u);
+-      MEDLoaderBase::safeStrCpy2(c.c_str(),MED_SNAME_SIZE,comp+i*MED_SNAME_SIZE,_too_long_str);
+-      MEDLoaderBase::safeStrCpy2(u.c_str(),MED_SNAME_SIZE,unit+i*MED_SNAME_SIZE,_too_long_str);
+-    }
+-  if(getName().empty())
+-    throw INTERP_KERNEL::Exception("MEDFileField1TS::write : MED file does not accept field with empty name !");
+-  MEDFILESAFECALLERWR0(MEDfieldCr,(fid,getName().c_str(),getMEDFileFieldType(),nbComp,comp,unit,getDtUnit().c_str(),getMeshName().c_str()));
+-  writeGlobals(fid,*this);
+-  contentNotNullBase()->writeLL(fid,*this,*contentNotNullBase());
+-}
+-
+-std::size_t MEDFileAnyTypeField1TS::getHeapMemorySizeWithoutChildren() const
+-{
+-  return MEDFileFieldGlobsReal::getHeapMemorySizeWithoutChildren();
+-}
+-
+-std::vector<const BigMemoryObject *> MEDFileAnyTypeField1TS::getDirectChildrenWithNull() const
+-{
+-  std::vector<const BigMemoryObject *> ret(MEDFileFieldGlobsReal::getDirectChildrenWithNull());
+-  ret.push_back((const MEDFileAnyTypeField1TSWithoutSDA *)_content);
+-  return ret;
+-}
+-
+-/*!
+- * Returns a string describing \a this field. This string is outputted 
+- * by \c print Python command.
+- */
+-std::string MEDFileAnyTypeField1TS::simpleRepr() const
+-{
+-  std::ostringstream oss;
+-  contentNotNullBase()->simpleRepr(0,oss,-1);
+-  simpleReprGlobs(oss);
+-  return oss.str();
+-}
+-
+-/*!
+- * This method returns all profiles whose name is non empty used.
+- * \b WARNING If profile is used several times it will be reported \b only \b once.
+- * To get non empty name profiles as time as they appear in \b this call MEDFileField1TS::getPflsReallyUsedMulti instead.
+- */
+-std::vector<std::string> MEDFileAnyTypeField1TS::getPflsReallyUsed() const
+-{
+-  return contentNotNullBase()->getPflsReallyUsed2();
+-}
+-
+-/*!
+- * This method returns all localizations whose name is non empty used.
+- * \b WARNING If localization is used several times it will be reported \b only \b once.
+- */
+-std::vector<std::string> MEDFileAnyTypeField1TS::getLocsReallyUsed() const
+-{
+-  return contentNotNullBase()->getLocsReallyUsed2();
+-}
+-
+-/*!
+- * This method returns all profiles whose name is non empty used.
+- * \b WARNING contrary to MEDFileField1TS::getPflsReallyUsed, if profile is used several times it will be reported as time as it appears.
+- */
+-std::vector<std::string> MEDFileAnyTypeField1TS::getPflsReallyUsedMulti() const
+-{
+-  return contentNotNullBase()->getPflsReallyUsedMulti2();
+-}
+-
+-/*!
+- * This method returns all localizations whose name is non empty used.
+- * \b WARNING contrary to MEDFileField1TS::getLocsReallyUsed if localization is used several times it will be reported as time as it appears.
+- */
+-std::vector<std::string> MEDFileAnyTypeField1TS::getLocsReallyUsedMulti() const
+-{
+-  return contentNotNullBase()->getLocsReallyUsedMulti2();
+-}
+-
+-void MEDFileAnyTypeField1TS::changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  contentNotNullBase()->changePflsRefsNamesGen2(mapOfModif);
+-}
+-
+-void MEDFileAnyTypeField1TS::changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  contentNotNullBase()->changeLocsRefsNamesGen2(mapOfModif);
+-}
+-
+-int MEDFileAnyTypeField1TS::getDimension() const
+-{
+-  return contentNotNullBase()->getDimension();
+-}
+-
+-int MEDFileAnyTypeField1TS::getIteration() const
+-{
+-  return contentNotNullBase()->getIteration();
+-}
+-
+-int MEDFileAnyTypeField1TS::getOrder() const
+-{
+-  return contentNotNullBase()->getOrder();
+-}
+-
+-double MEDFileAnyTypeField1TS::getTime(int& iteration, int& order) const
+-{
+-  return contentNotNullBase()->getTime(iteration,order);
+-}
+-
+-void MEDFileAnyTypeField1TS::setTime(int iteration, int order, double val)
+-{
+-  contentNotNullBase()->setTime(iteration,order,val);
+-}
+-
+-std::string MEDFileAnyTypeField1TS::getName() const
+-{
+-  return contentNotNullBase()->getName();
+-}
+-
+-void MEDFileAnyTypeField1TS::setName(const std::string& name)
+-{
+-  contentNotNullBase()->setName(name);
+-}
+-
+-void MEDFileAnyTypeField1TS::simpleRepr(int bkOffset, std::ostream& oss, int f1tsId) const
+-{
+-  contentNotNullBase()->simpleRepr(bkOffset,oss,f1tsId);
+-}
+-
+-std::string MEDFileAnyTypeField1TS::getDtUnit() const
+-{
+-  return contentNotNullBase()->getDtUnit();
+-}
+-
+-void MEDFileAnyTypeField1TS::setDtUnit(const std::string& dtUnit)
+-{
+-  contentNotNullBase()->setDtUnit(dtUnit);
+-}
+-
+-std::string MEDFileAnyTypeField1TS::getMeshName() const
+-{
+-  return contentNotNullBase()->getMeshName();
+-}
+-
+-void MEDFileAnyTypeField1TS::setMeshName(const std::string& newMeshName)
+-{
+-  contentNotNullBase()->setMeshName(newMeshName);
+-}
+-
+-bool MEDFileAnyTypeField1TS::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab)
+-{
+-  return contentNotNullBase()->changeMeshNames(modifTab);
+-}
+-
+-int MEDFileAnyTypeField1TS::getMeshIteration() const
+-{
+-  return contentNotNullBase()->getMeshIteration();
+-}
+-
+-int MEDFileAnyTypeField1TS::getMeshOrder() const
+-{
+-  return contentNotNullBase()->getMeshOrder();
+-}
+-
+-int MEDFileAnyTypeField1TS::getNumberOfComponents() const
+-{
+-  return contentNotNullBase()->getNumberOfComponents();
+-}
+-
+-bool MEDFileAnyTypeField1TS::isDealingTS(int iteration, int order) const
+-{
+-  return contentNotNullBase()->isDealingTS(iteration,order);
+-}
+-
+-std::pair<int,int> MEDFileAnyTypeField1TS::getDtIt() const
+-{
+-  return contentNotNullBase()->getDtIt();
+-}
+-
+-void MEDFileAnyTypeField1TS::fillIteration(std::pair<int,int>& p) const
+-{
+-  contentNotNullBase()->fillIteration(p);
+-}
+-
+-void MEDFileAnyTypeField1TS::fillTypesOfFieldAvailable(std::vector<TypeOfField>& types) const
+-{
+-  contentNotNullBase()->fillTypesOfFieldAvailable(types);
+-}
+-
+-void MEDFileAnyTypeField1TS::setInfo(const std::vector<std::string>& infos)
+-{
+-  contentNotNullBase()->setInfo(infos);
+-}
+-
+-const std::vector<std::string>& MEDFileAnyTypeField1TS::getInfo() const
+-{
+-  return contentNotNullBase()->getInfo();
+-}
+-std::vector<std::string>& MEDFileAnyTypeField1TS::getInfo()
+-{
+-  return contentNotNullBase()->getInfo();
+-}
+-
+-bool MEDFileAnyTypeField1TS::presenceOfMultiDiscPerGeoType() const
+-{
+-  return contentNotNullBase()->presenceOfMultiDiscPerGeoType();
+-}
+-
+-MEDFileFieldPerMeshPerTypePerDisc *MEDFileAnyTypeField1TS::getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId)
+-{
+-  return contentNotNullBase()->getLeafGivenMeshAndTypeAndLocId(mName,typ,locId);
+-}
+-
+-const MEDFileFieldPerMeshPerTypePerDisc *MEDFileAnyTypeField1TS::getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId) const
+-{
+-  return contentNotNullBase()->getLeafGivenMeshAndTypeAndLocId(mName,typ,locId);
+-}
+-
+-int MEDFileAnyTypeField1TS::getNonEmptyLevels(const std::string& mname, std::vector<int>& levs) const
+-{
+-  return contentNotNullBase()->getNonEmptyLevels(mname,levs);
+-}
+-
+-void MEDFileAnyTypeField1TS::convertMedBallIntoClassic()
+-{
+-  return contentNotNullBase()->convertMedBallIntoClassic();
+-}
+-
+-void MEDFileAnyTypeField1TS::makeReduction(INTERP_KERNEL::NormalizedCellType ct, TypeOfField tof, const DataArrayInt *pfl)
+-{
+-  return contentNotNullBase()->makeReduction(ct,tof,pfl);
+-}
+-
+-std::vector<TypeOfField> MEDFileAnyTypeField1TS::getTypesOfFieldAvailable() const
+-{
+-  return contentNotNullBase()->getTypesOfFieldAvailable();
+-}
+-
+-std::vector< std::vector<std::pair<int,int> > > MEDFileAnyTypeField1TS::getFieldSplitedByType(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF,
+-                                                                                              std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
+-{
+-  return contentNotNullBase()->getFieldSplitedByType(mname,types,typesF,pfls,locs);
+-}
+-
+-/*!
+- * This method returns as MEDFileAnyTypeField1TS new instances as number of components in \a this.
+- * The returned instances are deep copy of \a this except that for globals that are share with those contained in \a this.
+- * ** WARNING ** do no forget to rename the ouput instances to avoid to write n-times in the same MED file field !
+- */
+-std::vector< MCAuto< MEDFileAnyTypeField1TS > > MEDFileAnyTypeField1TS::splitComponents() const
+-{
+-  const MEDFileAnyTypeField1TSWithoutSDA *content(_content);
+-  if(!content)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::splitComponents : no content in this ! Unable to split components !");
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > contentsSplit=content->splitComponents();
+-  std::size_t sz(contentsSplit.size());
+-  std::vector< MCAuto< MEDFileAnyTypeField1TS > > ret(sz);
+-  for(std::size_t i=0;i<sz;i++)
+-    {
+-      ret[i]=shallowCpy();
+-      ret[i]->_content=contentsSplit[i];
+-    }
+-  return ret;
+-}
+-
+-/*!
+- * This method returns as MEDFileAnyTypeField1TS new instances as number of spatial discretizations in \a this.
+- * The returned instances are shallowed copied of \a this except that for globals that are share with those contained in \a this.
+- */
+-std::vector< MCAuto< MEDFileAnyTypeField1TS > > MEDFileAnyTypeField1TS::splitDiscretizations() const
+-{
+-  const MEDFileAnyTypeField1TSWithoutSDA *content(_content);
+-  if(!content)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::splitDiscretizations : no content in this ! Unable to split discretization !");
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > contentsSplit(content->splitDiscretizations());
+-  std::size_t sz(contentsSplit.size());
+-  std::vector< MCAuto< MEDFileAnyTypeField1TS > > ret(sz);
+-  for(std::size_t i=0;i<sz;i++)
+-    {
+-      ret[i]=shallowCpy();
+-      ret[i]->_content=contentsSplit[i];
+-    }
+-  return ret;
+-}
+-
+-/*!
+- * This method returns as MEDFileAnyTypeField1TS new instances as number of maximal number of discretization in \a this.
+- * The returned instances are shallowed copied of \a this except that for globals that are share with those contained in \a this.
+- */
+-std::vector< MCAuto< MEDFileAnyTypeField1TS > > MEDFileAnyTypeField1TS::splitMultiDiscrPerGeoTypes() const
+-{
+-  const MEDFileAnyTypeField1TSWithoutSDA *content(_content);
+-  if(!content)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeField1TS::splitMultiDiscrPerGeoTypes : no content in this ! Unable to split discretization !");
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > contentsSplit(content->splitMultiDiscrPerGeoTypes());
+-  std::size_t sz(contentsSplit.size());
+-  std::vector< MCAuto< MEDFileAnyTypeField1TS > > ret(sz);
+-  for(std::size_t i=0;i<sz;i++)
+-    {
+-      ret[i]=shallowCpy();
+-      ret[i]->_content=contentsSplit[i];
+-    }
+-  return ret;
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeField1TS::deepCopy() const
+-{
+-  MCAuto<MEDFileAnyTypeField1TS> ret=shallowCpy();
+-  if((const MEDFileAnyTypeField1TSWithoutSDA *)_content)
+-    ret->_content=_content->deepCopy();
+-  ret->deepCpyGlobs(*this);
+-  return ret.retn();
+-}
+-
+-int MEDFileAnyTypeField1TS::copyTinyInfoFrom(const MEDCouplingFieldDouble *field, const DataArray *arr)
+-{
+-  MCAuto<MEDCouplingFieldTemplate> ft(MEDCouplingFieldTemplate::New(*field));
+-  return copyTinyInfoFrom(field->timeDiscrSafe(),ft,arr);
+-}
+-
+-int MEDFileAnyTypeField1TS::copyTinyInfoFrom(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr)
+-{
+-  return contentNotNullBase()->copyTinyInfoFrom(th,field,arr);
+-}
+-
+-//= MEDFileField1TS
+-
+-/*!
+- * This method performs a copy with datatype modification ( float64->int32 ) of \a this. The globals information are copied
+- * following the given input policy.
+- *
+- * \param [in] isDeepCpyGlobs - a boolean that indicates the behaviour concerning globals (profiles and localizations)
+- *                            By default (true) the globals are deeply copied.
+- * \return MEDFileIntField1TS * - a new object that is the result of the conversion of \a this to int32 field.
+- */
+-MEDFileIntField1TS *MEDFileField1TS::convertToInt(bool isDeepCpyGlobs) const
+-{
+-  MCAuto<MEDFileIntField1TS> ret;
+-  const MEDFileAnyTypeField1TSWithoutSDA *content(_content);
+-  if(content)
+-    {
+-      const MEDFileField1TSWithoutSDA *contc=dynamic_cast<const MEDFileField1TSWithoutSDA *>(content);
+-      if(!contc)
+-        throw INTERP_KERNEL::Exception("MEDFileField1TS::convertToInt : the content inside this is not FLOAT64 ! This is incoherent !");
+-      MCAuto<MEDFileIntField1TSWithoutSDA> newc(contc->convertToInt());
+-      ret=static_cast<MEDFileIntField1TS *>(MEDFileAnyTypeField1TS::BuildNewInstanceFromContent((MEDFileIntField1TSWithoutSDA *)newc));
+-    }
+-  else
+-    ret=MEDFileIntField1TS::New();
+-  if(isDeepCpyGlobs)
+-    ret->deepCpyGlobs(*this);
+-  else
+-    ret->shallowCpyGlobs(*this);
+-  return ret.retn();
+-}
+-
+-MEDFileField1TS::MEDFileField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms)
+-try:MEDFileTemplateField1TS<double>(fid,loadAll,ms)
+-{
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{ throw e; }
+-
+-MEDFileField1TS::MEDFileField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms)
+-try:MEDFileTemplateField1TS<double>(fid,fieldName,loadAll,ms)
+-{
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{ throw e; }
+-
+-MEDFileField1TS::MEDFileField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms)
+-try:MEDFileTemplateField1TS<double>(fid,fieldName,iteration,order,loadAll,ms)
+-{
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{ throw e; }
+-
+-/*!
+- * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
+- * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
+- *
+- * \warning this is a shallow copy constructor
+- */
+-MEDFileField1TS::MEDFileField1TS(const MEDFileField1TSWithoutSDA& other, bool shallowCopyOfContent)
+-try:MEDFileTemplateField1TS<double>(other,shallowCopyOfContent)
+-{
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{ throw e; }
+-
+-MEDFileField1TS *MEDFileField1TS::shallowCpy() const
+-{
+-  return new MEDFileField1TS(*this);
+-}
+-
+-std::vector< std::vector<DataArrayDouble *> > MEDFileField1TS::getFieldSplitedByType2(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF,
+-                                                                                      std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
+-{
+-  return contentNotNull()->getFieldSplitedByType2(mname,types,typesF,pfls,locs);
+-}
+-
+-//= MEDFileIntField1TS
+-
+-MCAuto<MEDCouplingFieldDouble> MEDFileIntField1TS::ConvertFieldIntToFieldDouble(const MEDCouplingFieldInt *f)
+-{
+-  if(!f)
+-    throw INTERP_KERNEL::Exception("MEDFileIntField1TS::ConvertFieldIntToFieldDouble : null input field !");
+-  int t1,t2;
+-  double t0(f->getTime(t1,t2));
+-  std::string tu(f->getTimeUnit());
+-  MCAuto<MEDCouplingFieldTemplate> ft(MEDCouplingFieldTemplate::New(*f));
+-  MCAuto<MEDCouplingFieldDouble> ret(MEDCouplingFieldDouble::New(*ft));
+-  ret->setTime(t0,t1,t2); ret->setTimeUnit(tu);
+-  return ret;
+-}
+-
+-//= MEDFileFloatField1TS
+-
+-//= MEDFileFloatField1TS
+-
+-//= MEDFileAnyTypeFieldMultiTSWithoutSDA
+-
+-MEDFileAnyTypeFieldMultiTSWithoutSDA::MEDFileAnyTypeFieldMultiTSWithoutSDA()
+-{
+-}
+-
+-MEDFileAnyTypeFieldMultiTSWithoutSDA::MEDFileAnyTypeFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileFieldNameScope(fieldName,meshName)
+-{
+-}
+-
+-/*!
+- * \param [in] fieldId field id in C mode
+- */
+-MEDFileAnyTypeFieldMultiTSWithoutSDA::MEDFileAnyTypeFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-{
+-  med_field_type typcha;
+-  std::string dtunitOut,meshName;
+-  int nbOfStep(MEDFileAnyTypeField1TS::LocateField2(fid,fieldId,false,_name,typcha,_infos,dtunitOut,meshName));
+-  setMeshName(meshName);
+-  setDtUnit(dtunitOut.c_str());
+-  loadStructureOrStructureAndBigArraysRecursively(fid,nbOfStep,typcha,loadAll,ms,entities);
+-}
+-
+-MEDFileAnyTypeFieldMultiTSWithoutSDA::MEDFileAnyTypeFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-try:MEDFileFieldNameScope(fieldName,meshName),_infos(infos)
+-{
+-  setDtUnit(dtunit.c_str());
+-  loadStructureOrStructureAndBigArraysRecursively(fid,nbOfStep,fieldTyp,loadAll,ms,entities);
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{
+-    throw e;
+-}
+-
+-std::size_t MEDFileAnyTypeFieldMultiTSWithoutSDA::getHeapMemorySizeWithoutChildren() const
+-{
+-  std::size_t ret(_mesh_name.capacity()+_name.capacity()+_infos.capacity()*sizeof(std::string)+_time_steps.capacity()*sizeof(MCAuto<MEDFileField1TSWithoutSDA>));
+-  for(std::vector<std::string>::const_iterator it=_infos.begin();it!=_infos.end();it++)
+-    ret+=(*it).capacity();
+-  return ret;
+-}
+-
+-std::vector<const BigMemoryObject *> MEDFileAnyTypeFieldMultiTSWithoutSDA::getDirectChildrenWithNull() const
+-{
+-  std::vector<const BigMemoryObject *> ret;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    ret.push_back((const MEDFileAnyTypeField1TSWithoutSDA *)*it);
+-  return ret;
+-}
+-
+-/*!
+- * If one of the id in [ \a startIds , \a endIds ) points to a null element, there is not throw. Simply, this empty element is added as if it were not
+- * NULL.
+- */
+-MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::buildFromTimeStepIds(const int *startIds, const int *endIds) const
+-{
+-  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> ret=createNew();
+-  ret->setInfo(_infos);
+-  int sz=(int)_time_steps.size();
+-  for(const int *id=startIds;id!=endIds;id++)
+-    {
+-      if(*id>=0 && *id<sz)
+-        {
+-          const MEDFileAnyTypeField1TSWithoutSDA *tse=_time_steps[*id];
+-          MCAuto<MEDFileAnyTypeField1TSWithoutSDA> tse2;
+-          if(tse)
+-            {
+-              tse->incrRef();
+-              tse2=(const_cast<MEDFileAnyTypeField1TSWithoutSDA *>(tse));
+-            }
+-          ret->pushBackTimeStep(tse2);
+-        }
+-      else
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::buildFromTimeStepIds : At pos #" << std::distance(startIds,id) << " value is " << *id;
+-          oss << " ! Should be in [0," << sz << ") !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-    }
+-  if(ret->getNumberOfTS()>0)
+-    ret->synchronizeNameScope();
+-  ret->copyNameScope(*this);
+-  return ret.retn();
+-}
+-
+-/*!
+- * If one of the id in the input range points to a null element, there is not throw. Simply, this empty element is added as if it were not
+- * NULL.
+- */
+-MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::buildFromTimeStepIds2(int bg, int end, int step) const
+-{
+-  static const char msg[]="MEDFileAnyTypeFieldMultiTSWithoutSDA::buildFromTimeStepIds2";
+-  int nbOfEntriesToKeep=DataArrayInt::GetNumberOfItemGivenBESRelative(bg,end,step,msg);
+-  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> ret=createNew();
+-  ret->setInfo(_infos);
+-  int sz=(int)_time_steps.size();
+-  int j=bg;
+-  for(int i=0;i<nbOfEntriesToKeep;i++,j+=step)
+-    {
+-      if(j>=0 && j<sz)
+-        {
+-          const MEDFileAnyTypeField1TSWithoutSDA *tse=_time_steps[j];
+-          MCAuto<MEDFileAnyTypeField1TSWithoutSDA> tse2;
+-          if(tse)
+-            {
+-              tse->incrRef();
+-              tse2=(const_cast<MEDFileAnyTypeField1TSWithoutSDA *>(tse));
+-            }
+-          ret->pushBackTimeStep(tse2);
+-        }
+-      else
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::buildFromTimeStepIds : At pos #" << i << " value is " << j;
+-          oss << " ! Should be in [0," << sz << ") !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-    }
+-  if(ret->getNumberOfTS()>0)
+-    ret->synchronizeNameScope();
+-  ret->copyNameScope(*this);
+-  return ret.retn();
+-}
+-
+-MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::partOfThisLyingOnSpecifiedTimeSteps(const std::vector< std::pair<int,int> >& timeSteps) const
+-{
+-  int id=0;
+-  MCAuto<DataArrayInt> ids=DataArrayInt::New(); ids->alloc(0,1);
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,id++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *cur(*it);
+-      if(!cur)
+-        continue;
+-      std::pair<int,int> p(cur->getIteration(),cur->getOrder());
+-      if(std::find(timeSteps.begin(),timeSteps.end(),p)!=timeSteps.end())
+-        ids->pushBackSilent(id);
+-    }
+-  return buildFromTimeStepIds(ids->begin(),ids->end());
+-}
+-
+-MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::partOfThisNotLyingOnSpecifiedTimeSteps(const std::vector< std::pair<int,int> >& timeSteps) const
+-{
+-  int id=0;
+-  MCAuto<DataArrayInt> ids=DataArrayInt::New(); ids->alloc(0,1);
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,id++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *cur(*it);
+-      if(!cur)
+-        continue;
+-      std::pair<int,int> p(cur->getIteration(),cur->getOrder());
+-      if(std::find(timeSteps.begin(),timeSteps.end(),p)==timeSteps.end())
+-        ids->pushBackSilent(id);
+-    }
+-  return buildFromTimeStepIds(ids->begin(),ids->end());
+-}
+-
+-bool MEDFileAnyTypeFieldMultiTSWithoutSDA::presenceOfStructureElements() const
+-{
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    if((*it).isNotNull())
+-      if((*it)->presenceOfStructureElements())
+-        return true;
+-  return false;
+-}
+-
+-bool MEDFileAnyTypeFieldMultiTSWithoutSDA::onlyStructureElements() const
+-{
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    if((*it).isNotNull())
+-      if(!(*it)->onlyStructureElements())
+-        return false;
+-  return true;
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::killStructureElements()
+-{
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    if((*it).isNotNull())
+-      {
+-        if((*it)->presenceOfStructureElements())
+-          {
+-            if(!(*it)->onlyStructureElements())
+-              {
+-                (*it)->killStructureElements();
+-                ret.push_back(*it);
+-              }
+-          }
+-        else
+-          {
+-            ret.push_back(*it);
+-          }
+-      }
+-  _time_steps=ret;
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::keepOnlyStructureElements()
+-{
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    if((*it).isNotNull())
+-      {
+-        if((*it)->presenceOfStructureElements())
+-          {
+-            if(!(*it)->onlyStructureElements())
+-              (*it)->keepOnlyStructureElements();
+-            ret.push_back(*it);
+-          }
+-      }
+-  _time_steps=ret;
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::keepOnlyOnSE(const std::string& seName)
+-{
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    if((*it).isNotNull())
+-      (*it)->keepOnlyOnSE(seName);
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const
+-{
+-  std::vector< std::pair<std::string,std::string> > ps2;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    if((*it).isNotNull())
+-      {
+-        (*it)->getMeshSENames(ps2);
+-        break;
+-      }
+-  if(ps2.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::getMeshSENames : this appears to not contain SE only !");
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    if((*it).isNotNull())
+-      {
+-        std::vector< std::pair<std::string,std::string> > ps3;
+-        (*it)->getMeshSENames(ps3);
+-        if(ps2!=ps3)
+-          throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::getMeshSENames : For the moment only homogeneous SE def through time managed !");
+-      }
+-  for(std::vector< std::pair<std::string,std::string> >::const_iterator it=ps2.begin();it!=ps2.end();it++)
+-    {
+-      std::vector< std::pair<std::string,std::string> >::iterator it2(std::find(ps.begin(),ps.end(),*it));
+-      if(it2==ps.end())
+-        ps.push_back(*it);
+-    }
+-}
+-
+-bool MEDFileAnyTypeFieldMultiTSWithoutSDA::presenceOfMultiDiscPerGeoType() const
+-{
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *cur(*it);
+-      if(!cur)
+-        continue;
+-      if(cur->presenceOfMultiDiscPerGeoType())
+-        return true;
+-    }
+-  return false;
+-}
+-
+-const std::vector<std::string>& MEDFileAnyTypeFieldMultiTSWithoutSDA::getInfo() const
+-{
+-  return _infos;
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::setInfo(const std::vector<std::string>& info)
+-{
+-  _infos=info;
+-}
+-
+-int MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepPos(int iteration, int order) const
+-{
+-  int ret=0;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA>  >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,ret++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *pt(*it);
+-      if(pt->isDealingTS(iteration,order))
+-        return ret;
+-    }
+-  std::ostringstream oss; oss << "MEDFileFieldMultiTS::getTimeStepPos : Muli timestep field on time (" << iteration << "," << order << ") does not exist ! Available (iteration,order) are :\n";
+-  std::vector< std::pair<int,int> > vp=getIterations();
+-  for(std::vector< std::pair<int,int> >::const_iterator it2=vp.begin();it2!=vp.end();it2++)
+-    oss << "(" << (*it2).first << "," << (*it2).second << ") ";
+-  throw INTERP_KERNEL::Exception(oss.str());
+-}
+-
+-const MEDFileAnyTypeField1TSWithoutSDA& MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepEntry(int iteration, int order) const
+-{
+-  return *_time_steps[getTimeStepPos(iteration,order)];
+-}
+-
+-MEDFileAnyTypeField1TSWithoutSDA& MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepEntry(int iteration, int order)
+-{
+-  return *_time_steps[getTimeStepPos(iteration,order)];
+-}
+-
+-bool MEDFileAnyTypeFieldMultiTSWithoutSDA::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab)
+-{
+-  bool ret(false);
+-  for(std::vector< std::pair<std::string,std::string> >::const_iterator it=modifTab.begin();it!=modifTab.end();it++)
+-    {
+-      if((*it).first==getMeshName())
+-        {
+-          setMeshName((*it).second);
+-          ret=true;
+-        }
+-    }
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      MEDFileAnyTypeField1TSWithoutSDA *cur(*it);
+-      if(cur)
+-        ret=cur->changeMeshNames(modifTab) || ret;
+-    }
+-  return ret;
+-}
+-
+-/*!
+- * See doc at MEDFileField1TSWithoutSDA::getUndergroundDataArray
+- */
+-DataArray *MEDFileAnyTypeFieldMultiTSWithoutSDA::getUndergroundDataArray(int iteration, int order) const
+-{
+-  return getTimeStepEntry(iteration,order).getUndergroundDataArray();
+-}
+-
+-/*!
+- * See doc at MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt
+- */
+-DataArray *MEDFileAnyTypeFieldMultiTSWithoutSDA::getUndergroundDataArrayExt(int iteration, int order, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
+-{
+-  return getTimeStepEntry(iteration,order).getUndergroundDataArrayExt(entries);
+-}
+-
+-bool MEDFileAnyTypeFieldMultiTSWithoutSDA::renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N,
+-                                                                       MEDFileFieldGlobsReal& glob)
+-{
+-  bool ret=false;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      MEDFileAnyTypeField1TSWithoutSDA *f1ts(*it);
+-      if(f1ts)
+-        ret=f1ts->renumberEntitiesLyingOnMesh(meshName,oldCode,newCode,renumO2N,glob) || ret;
+-    }
+-  return ret;
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::accept(MEDFileFieldVisitor& visitor) const
+-{
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    if((*it).isNotNull())
+-      {
+-        visitor.newTimeStepEntry(*it);
+-        (*it)->accept(visitor);
+-        visitor.endTimeStepEntry(*it);
+-      }
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::simpleRepr(int bkOffset, std::ostream& oss, int fmtsId) const
+-{
+-  std::string startLine(bkOffset,' ');
+-  oss << startLine << "Field multi time steps [Type=" << getTypeStr() << "]";
+-  if(fmtsId>=0)
+-    oss << " (" << fmtsId << ")";
+-  oss << " has the following name: \"" << _name << "\"." << std::endl;
+-  oss << startLine << "Field multi time steps has " << _infos.size() << " components with the following infos :" << std::endl;
+-  for(std::vector<std::string>::const_iterator it=_infos.begin();it!=_infos.end();it++)
+-    {
+-      oss << startLine << "  -  \"" << *it << "\"" << std::endl;
+-    }
+-  int i=0;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,i++)
+-    {
+-      std::string chapter(17,'0'+i);
+-      oss << startLine << chapter << std::endl;
+-      const MEDFileAnyTypeField1TSWithoutSDA *cur=(*it);
+-      if(cur)
+-        cur->simpleRepr(bkOffset+2,oss,i);
+-      else
+-        oss << startLine << "  Field on one time step #" << i << " is not defined !" << std::endl;
+-      oss << startLine << chapter << std::endl;
+-    }
+-}
+-
+-std::vector< std::pair<int,int> > MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeSteps(std::vector<double>& ret1) const
+-{
+-  std::size_t sz=_time_steps.size();
+-  std::vector< std::pair<int,int> > ret(sz);
+-  ret1.resize(sz);
+-  for(std::size_t i=0;i<sz;i++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *f1ts=_time_steps[i];
+-      if(f1ts)
+-        {
+-          ret1[i]=f1ts->getTime(ret[i].first,ret[i].second);
+-        }
+-      else
+-        {
+-          std::ostringstream oss; oss << "MEDFileFieldMultiTSWithoutSDA::getTimeSteps : At rank #" << i << " time step is not defined. Invoke eraseEmptyTS method !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-    }
+-  return ret;
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::pushBackTimeStep(MCAuto<MEDFileAnyTypeField1TSWithoutSDA>& tse)
+-{
+-  MEDFileAnyTypeField1TSWithoutSDA *tse2(tse);
+-  if(!tse2)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::pushBackTimeStep : input content object is null !");
+-  checkCoherencyOfType(tse2);
+-  if(_time_steps.empty())
+-    {
+-      setName(tse2->getName());
+-      setMeshName(tse2->getMeshName());
+-      setInfo(tse2->getInfo());
+-    }
+-  checkThatComponentsMatch(tse2->getInfo());
+-  if(getDtUnit().empty() && !tse->getDtUnit().empty())
+-    setDtUnit(tse->getDtUnit());
+-  _time_steps.push_back(tse);
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::synchronizeNameScope()
+-{
+-  std::size_t nbOfCompo=_infos.size();
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      MEDFileAnyTypeField1TSWithoutSDA *cur=(*it);
+-      if(cur)
+-        {
+-          if((cur->getInfo()).size()!=nbOfCompo)
+-            {
+-              std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::synchronizeNameScope : Mismatch in the number of components of parts ! Should be " << nbOfCompo;
+-              oss << " ! but the field at iteration=" << cur->getIteration() << " order=" << cur->getOrder() << " has " << (cur->getInfo()).size() << " components !";
+-              throw INTERP_KERNEL::Exception(oss.str());
+-            }
+-          cur->copyNameScope(*this);
+-        }
+-    }
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::loadStructureOrStructureAndBigArraysRecursively(med_idt fid, int nbPdt, med_field_type fieldTyp, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-{
+-  _time_steps.resize(nbPdt);
+-  for(int i=0;i<nbPdt;i++)
+-    {
+-      std::vector< std::pair<int,int> > ts;
+-      med_int numdt=0,numo=0;
+-      med_float dt=0.0;
+-      MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,_name.c_str(),i+1,&numdt,&numo,&dt));
+-      switch(fieldTyp)
+-      {
+-        case MED_FLOAT64:
+-          {
+-            _time_steps[i]=MEDFileField1TSWithoutSDA::New(getName(),getMeshName(),i+1,numdt,numo,_infos);
+-            break;
+-          }
+-        case MED_INT32:
+-          {
+-            _time_steps[i]=MEDFileIntField1TSWithoutSDA::New(getName(),getMeshName(),i+1,numdt,numo,_infos);
+-            break;
+-          }
+-        case MED_NODE://6432
+-          {
+-            _time_steps[i]=MEDFileFloatField1TSWithoutSDA::New(getName(),getMeshName(),i+1,numdt,numo,_infos);
+-            break;
+-          }
+-        default:
+-          throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::loadStructureOrStructureAndBigArraysRecursively : managed field type are : FLOAT64, INT32, FLOAT32 !");
+-      }
+-      if(loadAll)
+-        _time_steps[i]->loadStructureAndBigArraysRecursively(fid,*this,ms,entities);
+-      else
+-        _time_steps[i]->loadOnlyStructureOfDataRecursively(fid,*this,ms,entities);
+-      synchronizeNameScope();
+-    }
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::writeLL(med_idt fid, const MEDFileWritable& opts) const
+-{
+-  if(_time_steps.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::writeLL : no time steps set !");
+-  checkThatNbOfCompoOfTSMatchThis();
+-  std::vector<std::string> infos(getInfo());
+-  int nbComp=infos.size();
+-  INTERP_KERNEL::AutoPtr<char> comp=MEDLoaderBase::buildEmptyString(nbComp*MED_SNAME_SIZE);
+-  INTERP_KERNEL::AutoPtr<char> unit=MEDLoaderBase::buildEmptyString(nbComp*MED_SNAME_SIZE);
+-  for(int i=0;i<nbComp;i++)
+-    {
+-      std::string info=infos[i];
+-      std::string c,u;
+-      MEDLoaderBase::splitIntoNameAndUnit(info,c,u);
+-      MEDLoaderBase::safeStrCpy2(c.c_str(),MED_SNAME_SIZE,comp+i*MED_SNAME_SIZE,opts.getTooLongStrPolicy());
+-      MEDLoaderBase::safeStrCpy2(u.c_str(),MED_SNAME_SIZE,unit+i*MED_SNAME_SIZE,opts.getTooLongStrPolicy());
+-    }
+-  if(_name.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::write : MED file does not accept field with empty name !");
+-  MEDFILESAFECALLERWR0(MEDfieldCr,(fid,_name.c_str(),getMEDFileFieldType(),nbComp,comp,unit,getDtUnit().c_str(),getMeshName().c_str()));
+-  int nbOfTS=_time_steps.size();
+-  for(int i=0;i<nbOfTS;i++)
+-    _time_steps[i]->writeLL(fid,opts,*this);
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc)
+-{
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      MEDFileAnyTypeField1TSWithoutSDA *elt(*it);
+-      if(elt)
+-        elt->loadBigArraysRecursively(fid,nasc);
+-    }
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::loadBigArraysRecursivelyIfNecessary(med_idt fid, const MEDFileFieldNameScope& nasc)
+-{
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      MEDFileAnyTypeField1TSWithoutSDA *elt(*it);
+-      if(elt)
+-        elt->loadBigArraysRecursivelyIfNecessary(fid,nasc);
+-    }
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::unloadArrays()
+-{
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      MEDFileAnyTypeField1TSWithoutSDA *elt(*it);
+-      if(elt)
+-        elt->unloadArrays();
+-    }
+-}
+-
+-int MEDFileAnyTypeFieldMultiTSWithoutSDA::getNumberOfTS() const
+-{
+-  return _time_steps.size();
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::eraseEmptyTS()
+-{
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA>  > newTS;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA>  >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *tmp=(*it);
+-      if(tmp)
+-        newTS.push_back(*it);
+-    }
+-  _time_steps=newTS;
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::eraseTimeStepIds(const int *startIds, const int *endIds)
+-{
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > newTS;
+-  int maxId=(int)_time_steps.size();
+-  int ii=0;
+-  std::set<int> idsToDel;
+-  for(const int *id=startIds;id!=endIds;id++,ii++)
+-    {
+-      if(*id>=0 && *id<maxId)
+-        {
+-          idsToDel.insert(*id);
+-        }
+-      else
+-        {
+-          std::ostringstream oss; oss << "MEDFileFieldMultiTSWithoutSDA::eraseTimeStepIds : At pos #" << ii << " request for id=" << *id << " not in [0," << maxId << ") !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-    }
+-  for(int iii=0;iii<maxId;iii++)
+-    if(idsToDel.find(iii)==idsToDel.end())
+-      newTS.push_back(_time_steps[iii]);
+-  _time_steps=newTS;
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::eraseTimeStepIds2(int bg, int end, int step)
+-{
+-  static const char msg[]="MEDFileAnyTypeFieldMultiTSWithoutSDA::eraseTimeStepIds2";
+-  int nbOfEntriesToKill=DataArrayInt::GetNumberOfItemGivenBESRelative(bg,end,step,msg);
+-  if(nbOfEntriesToKill==0)
+-    return ;
+-  std::size_t sz=_time_steps.size();
+-  std::vector<bool> b(sz,true);
+-  int j=bg;
+-  for(int i=0;i<nbOfEntriesToKill;i++,j+=step)
+-    b[j]=false;
+-  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > newTS;
+-  for(std::size_t i=0;i<sz;i++)
+-    if(b[i])
+-      newTS.push_back(_time_steps[i]);
+-  _time_steps=newTS;
+-}
+-
+-int MEDFileAnyTypeFieldMultiTSWithoutSDA::getPosOfTimeStep(int iteration, int order) const
+-{
+-  int ret=0;
+-  std::ostringstream oss; oss << "MEDFileFieldMultiTSWithoutSDA::getPosOfTimeStep : No such time step (" << iteration << "," << order << ") !\nPossibilities are : "; 
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA>  >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,ret++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *tmp(*it);
+-      if(tmp)
+-        {
+-          int it2,ord;
+-          tmp->getTime(it2,ord);
+-          if(it2==iteration && order==ord)
+-            return ret;
+-          else
+-            oss << "(" << it2 << ","  << ord << "), ";
+-        }
+-    }
+-  throw INTERP_KERNEL::Exception(oss.str());
+-}
+-
+-int MEDFileAnyTypeFieldMultiTSWithoutSDA::getPosGivenTime(double time, double eps) const
+-{
+-  int ret=0;
+-  std::ostringstream oss; oss << "MEDFileFieldMultiTSWithoutSDA::getPosGivenTime : No such time step " << time << "! \nPossibilities are : ";
+-  oss.precision(15);
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA>  >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,ret++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *tmp(*it);
+-      if(tmp)
+-        {
+-          int it2,ord;
+-          double ti=tmp->getTime(it2,ord);
+-          if(fabs(time-ti)<eps)
+-            return ret;
+-          else
+-            oss << ti << ", ";
+-        }
+-    }
+-  throw INTERP_KERNEL::Exception(oss.str());
+-}
+-
+-std::vector< std::pair<int,int> > MEDFileAnyTypeFieldMultiTSWithoutSDA::getIterations() const
+-{
+-  int lgth=_time_steps.size();
+-  std::vector< std::pair<int,int> > ret(lgth);
+-  for(int i=0;i<lgth;i++)
+-    _time_steps[i]->fillIteration(ret[i]);
+-  return ret;
+-}
+-
+-/*!
+- * This method has 3 inputs 'iteration' 'order' 'mname'. 'mname' can be null if the user is the general case where there is only one meshName lying on 'this'
+- * This method returns two things.
+- * - The absolute dimension of 'this' in first parameter. 
+- * - The available ext levels relative to the absolute dimension returned in first parameter. These relative levels are relative
+- *   to the first output parameter. The values in 'levs' will be returned in decreasing order.
+- *
+- * This method is designed for MEDFileFieldMultiTS instances that have a discritization ON_CELLS, ON_GAUSS_NE and ON_GAUSS.
+- * Only these 3 discretizations will be taken into account here.
+- *
+- * If 'this' is empty this method will throw an INTERP_KERNEL::Exception.
+- * If there is \b only node fields defined in 'this' -1 is returned and 'levs' output parameter will be empty. In this
+- * case the caller has to know the underlying mesh it refers to. By defaut it is the level 0 of the corresponding mesh.
+- *
+- * This method is usefull to make the link between meshDimension of the underlying mesh in 'this' and the levels on 'this'.
+- * It is possible (even if it is not common) that the highest level in 'this' were not equal to the meshDimension of the underlying mesh in 'this'.
+- * 
+- * Let's consider the typical following case :
+- * - a mesh 'm1' has a meshDimension 3 and has the following non empty levels
+- * [0,-1,-2] for example 'm1' lies on TETRA4, HEXA8 TRI3 and SEG2
+- * - 'f1' lies on 'm1' and is defined on 3D and 1D cells for example
+- *   TETRA4 and SEG2
+- * - 'f2' lies on 'm1' too and is defined on 2D and 1D cells for example TRI3 and SEG2
+- *
+- * In this case f1->getNonEmptyLevelsExt will return (3,[0,-2]) and f2->getNonEmptyLevelsExt will return (2,[0,-1])
+- * 
+- * To retrieve the highest level of f1 it should be done, f1->getFieldAtLevel(ON_CELLS,3-3+0);//absDim-meshDim+relativeLev
+- * To retrieve the lowest level of f1 it should be done, f1->getFieldAtLevel(ON_CELLS,3-3+(-2));//absDim-meshDim+relativeLev
+- * To retrieve the highest level of f2 it should be done, f1->getFieldAtLevel(ON_CELLS,2-3+0);//absDim-meshDim+relativeLev
+- * To retrieve the lowest level of f2 it should be done, f1->getFieldAtLevel(ON_CELLS,2-3+(-1));//absDim-meshDim+relativeLev
+- */
+-int MEDFileAnyTypeFieldMultiTSWithoutSDA::getNonEmptyLevels(int iteration, int order, const std::string& mname, std::vector<int>& levs) const
+-{
+-  return getTimeStepEntry(iteration,order).getNonEmptyLevels(mname,levs);
+-}
+-
+-const MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2(int pos) const
+-{
+-  if(pos<0 || pos>=(int)_time_steps.size())
+-    {
+-      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2 : request for pos #" << pos << " whereas should be in [0," << _time_steps.size() << ") !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  const MEDFileAnyTypeField1TSWithoutSDA *item=_time_steps[pos];
+-  if(item==0)
+-    {
+-      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2 : request for pos #" << pos << ", this pos id exists but the underlying Field1TS is null !";
+-      oss << "\nTry to use following method eraseEmptyTS !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  return item;
+-}
+-
+-MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2(int pos)
+-{
+-  if(pos<0 || pos>=(int)_time_steps.size())
+-    {
+-      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2 : request for pos #" << pos << " whereas should be in [0," << _time_steps.size() << ") !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  MEDFileAnyTypeField1TSWithoutSDA *item=_time_steps[pos];
+-  if(item==0)
+-    {
+-      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2 : request for pos #" << pos << ", this pos id exists but the underlying Field1TS is null !";
+-      oss << "\nTry to use following method eraseEmptyTS !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  return item;
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeFieldMultiTSWithoutSDA::getPflsReallyUsed2() const
+-{
+-  std::vector<std::string> ret;
+-  std::set<std::string> ret2;
+-  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getPflsReallyUsed2();
+-      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
+-        if(ret2.find(*it2)==ret2.end())
+-          {
+-            ret.push_back(*it2);
+-            ret2.insert(*it2);
+-          }
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeFieldMultiTSWithoutSDA::getLocsReallyUsed2() const
+-{
+-  std::vector<std::string> ret;
+-  std::set<std::string> ret2;
+-  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getLocsReallyUsed2();
+-      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
+-        if(ret2.find(*it2)==ret2.end())
+-          {
+-            ret.push_back(*it2);
+-            ret2.insert(*it2);
+-          }
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeFieldMultiTSWithoutSDA::getPflsReallyUsedMulti2() const
+-{
+-  std::vector<std::string> ret;
+-  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getPflsReallyUsedMulti2();
+-      ret.insert(ret.end(),tmp.begin(),tmp.end());
+-    }
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeFieldMultiTSWithoutSDA::getLocsReallyUsedMulti2() const
+-{
+-  std::vector<std::string> ret;
+-  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    {
+-      std::vector<std::string> tmp=(*it)->getLocsReallyUsedMulti2();
+-      ret.insert(ret.end(),tmp.begin(),tmp.end());
+-    }
+-  return ret;
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::changePflsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    (*it)->changePflsRefsNamesGen2(mapOfModif);
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::changeLocsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
+-    (*it)->changeLocsRefsNamesGen2(mapOfModif);
+-}
+-
+-std::vector< std::vector<TypeOfField> > MEDFileAnyTypeFieldMultiTSWithoutSDA::getTypesOfFieldAvailable() const
+-{
+-  int lgth=_time_steps.size();
+-  std::vector< std::vector<TypeOfField> > ret(lgth);
+-  for(int i=0;i<lgth;i++)
+-    _time_steps[i]->fillTypesOfFieldAvailable(ret[i]);
+-  return ret;
+-}
+-
+-/*!
+- * entry point for users that want to iterate into MEDFile DataStructure without any overhead.
+- */
+-std::vector< std::vector< std::pair<int,int> > > MEDFileAnyTypeFieldMultiTSWithoutSDA::getFieldSplitedByType(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
+-{
+-  return getTimeStepEntry(iteration,order).getFieldSplitedByType(mname,types,typesF,pfls,locs);
+-}
+-
+-MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::deepCopy() const
+-{
+-  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> ret=shallowCpy();
+-  std::size_t i=0;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,i++)
+-    {
+-      if((const MEDFileAnyTypeField1TSWithoutSDA *)*it)
+-        ret->_time_steps[i]=(*it)->deepCopy();
+-    }
+-  return ret.retn();
+-}
+-
+-std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > MEDFileAnyTypeFieldMultiTSWithoutSDA::splitComponents() const
+-{
+-  std::size_t sz(_infos.size()),sz2(_time_steps.size());
+-  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > ret(sz);
+-  std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > > ts(sz2);
+-  for(std::size_t i=0;i<sz;i++)
+-    {
+-      ret[i]=shallowCpy();
+-      ret[i]->_infos.resize(1); ret[i]->_infos[0]=_infos[i];
+-    }
+-  for(std::size_t i=0;i<sz2;i++)
+-    {
+-      std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret1=_time_steps[i]->splitComponents();
+-      if(ret1.size()!=sz)
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::splitComponents : At rank #" << i << " number of components is " << ret1.size() << " whereas it should be for all time steps " << sz << " !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-      ts[i]=ret1;
+-    }
+-  for(std::size_t i=0;i<sz;i++)
+-    for(std::size_t j=0;j<sz2;j++)
+-      ret[i]->_time_steps[j]=ts[j][i];
+-  return ret;
+-}
+-
+-/*!
+- * This method splits into discretization each time steps in \a this.
+- * ** WARNING ** the returned instances are not compulsary defined on the same time steps series !
+- */
+-std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > MEDFileAnyTypeFieldMultiTSWithoutSDA::splitDiscretizations() const
+-{
+-  std::size_t sz(_time_steps.size());
+-  std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > > items(sz);
+-  for(std::size_t i=0;i<sz;i++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *timeStep(_time_steps[i]);
+-      if(!timeStep)
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::splitDiscretizations : time step #" << i << " is null !"; 
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-      items[i]=timeStep->splitDiscretizations();  
+-    }
+-  //
+-  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > ret;
+-  std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > > ret2;
+-  std::vector< TypeOfField > types;
+-  for(std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > >::const_iterator it0=items.begin();it0!=items.end();it0++)
+-    for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it1=(*it0).begin();it1!=(*it0).end();it1++)
+-      {
+-        std::vector<TypeOfField> ts=(*it1)->getTypesOfFieldAvailable();
+-        if(ts.size()!=1)
+-          throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::splitDiscretizations : it appears that the splitting of MEDFileAnyTypeField1TSWithoutSDA::splitDiscretizations has returned invalid result !");
+-        std::vector< TypeOfField >::iterator it2=std::find(types.begin(),types.end(),ts[0]);
+-        if(it2==types.end())
+-          types.push_back(ts[0]);
+-      }
+-  ret.resize(types.size()); ret2.resize(types.size());
+-  for(std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > >::const_iterator it0=items.begin();it0!=items.end();it0++)
+-    for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it1=(*it0).begin();it1!=(*it0).end();it1++)
+-      {
+-        TypeOfField typ=(*it1)->getTypesOfFieldAvailable()[0];
+-        std::size_t pos=std::distance(types.begin(),std::find(types.begin(),types.end(),typ));
+-        ret2[pos].push_back(*it1);
+-      }
+-  for(std::size_t i=0;i<types.size();i++)
+-    {
+-      MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> elt(createNew());
+-      for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it1=ret2[i].begin();it1!=ret2[i].end();it1++)
+-        elt->pushBackTimeStep(*it1);//also updates infos in elt
+-      ret[i]=elt;
+-      elt->MEDFileFieldNameScope::operator=(*this);
+-    }
+-  return ret;
+-}
+-
+-/*!
+- * Contrary to splitDiscretizations method this method makes the hypothesis that the times series are **NOT** impacted by the splitting of multi discretization.
+- */
+-std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > MEDFileAnyTypeFieldMultiTSWithoutSDA::splitMultiDiscrPerGeoTypes() const
+-{
+-  std::size_t sz(_time_steps.size());
+-  std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > > items(sz);
+-  std::size_t szOut(std::numeric_limits<std::size_t>::max());
+-  for(std::size_t i=0;i<sz;i++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *timeStep(_time_steps[i]);
+-      if(!timeStep)
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::splitMultiDiscrPerGeoTypes : time step #" << i << " is null !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-      items[i]=timeStep->splitMultiDiscrPerGeoTypes();
+-      if(szOut==std::numeric_limits<std::size_t>::max())
+-        szOut=items[i].size();
+-      else
+-        if(items[i].size()!=szOut)
+-          throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::splitMultiDiscrPerGeoTypes : The splitting per discretization is expected to be same among time steps !");
+-    }
+-  if(szOut==std::numeric_limits<std::size_t>::max())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::splitMultiDiscrPerGeoTypes : empty field !");
+-  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > ret(szOut);
+-  for(std::size_t i=0;i<szOut;i++)
+-    {
+-      MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> elt(createNew());
+-      for(std::size_t j=0;j<sz;j++)
+-        elt->pushBackTimeStep(items[j][i]);
+-      ret[i]=elt;
+-      elt->MEDFileFieldNameScope::operator=(*this);
+-    }
+-  return ret;
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::copyTinyInfoFrom(const MEDCouplingFieldDouble *field, const DataArray *arr)
+-{
+-  setName(field->getName());
+-  if(field->getMesh())
+-    setMeshName(field->getMesh()->getName());
+-  if(_name.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::copyTinyInfoFrom : unsupported fields with no name in MED file !");
+-  if(!arr)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::copyTinyInfoFrom : no array set !");
+-  _infos=arr->getInfoOnComponents();
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::checkCoherencyOfTinyInfo(const MEDCouplingFieldDouble *field, const DataArray *arr) const
+-{
+-  static const char MSG[]="MEDFileFieldMultiTSWithoutSDA::checkCoherencyOfTinyInfo : invalid ";
+-  if(_name!=field->getName())
+-    {
+-      std::ostringstream oss; oss << MSG << "name ! should be \"" << _name;
+-      oss << "\" and it is set in input field to \"" << field->getName() << "\" !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  if(!arr)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::checkCoherencyOfTinyInfo : no array set !");
+-  checkThatComponentsMatch(arr->getInfoOnComponents());
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::checkThatComponentsMatch(const std::vector<std::string>& compos) const
+-{
+-  static const char MSG[]="MEDFileFieldMultiTSWithoutSDA::checkThatComponentsMatch : ";
+-  if(getInfo().size()!=compos.size())
+-    {
+-      std::ostringstream oss; oss << MSG << "mismatch of number of components between this (" << getInfo().size() << ") and ";
+-      oss << " number of components of element to append (" << compos.size() << ") !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  if(_infos!=compos)
+-    {
+-      std::ostringstream oss; oss << MSG << "components have same size but are different ! should be \"";
+-      std::copy(_infos.begin(),_infos.end(),std::ostream_iterator<std::string>(oss,", "));
+-      oss << " But compo in input fields are : ";
+-      std::copy(compos.begin(),compos.end(),std::ostream_iterator<std::string>(oss,", "));
+-      oss << " !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::checkThatNbOfCompoOfTSMatchThis() const
+-{
+-  std::size_t sz=_infos.size();
+-  int j=0;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,j++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *elt(*it);
+-      if(elt)
+-        if(elt->getInfo().size()!=sz)
+-          {
+-            std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::checkThatNbOfCompoOfTSMatchThis : At pos #" << j << " the number of components is equal to ";
+-            oss << elt->getInfo().size() << " whereas it is expected to be equal to " << sz << " !";
+-            throw INTERP_KERNEL::Exception(oss.str());
+-          }
+-    }
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::appendFieldNoProfileSBT(const MEDCouplingFieldDouble *field, const DataArray *arr, MEDFileFieldGlobsReal& glob)
+-{
+-  if(!field)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::appendFieldNoProfileSBT : input field is NULL !");
+-  if(!_time_steps.empty())
+-    checkCoherencyOfTinyInfo(field,arr);
+-  MEDFileAnyTypeField1TSWithoutSDA *objC(createNew1TSWithoutSDAEmptyInstance());
+-  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> obj(objC);
+-  {
+-    MCAuto<MEDCouplingFieldTemplate> ft(MEDCouplingFieldTemplate::New(*field));
+-    objC->setFieldNoProfileSBT(field->timeDiscrSafe(),ft,arr,glob,*this);
+-  }
+-  copyTinyInfoFrom(field,arr);
+-  _time_steps.push_back(obj);
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::appendFieldProfile(const MEDCouplingFieldDouble *field, const DataArray *arr, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, MEDFileFieldGlobsReal& glob)
+-{
+-  if(!field)
+-    throw INTERP_KERNEL::Exception("MEDFileIntFieldMultiTSWithoutSDA::appendFieldNoProfileSBT : input field is NULL !");
+-  if(!_time_steps.empty())
+-    checkCoherencyOfTinyInfo(field,arr);
+-  MEDFileAnyTypeField1TSWithoutSDA *objC=createNew1TSWithoutSDAEmptyInstance();
+-  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> obj(objC);
+-  {
+-    MCAuto<MEDCouplingFieldTemplate> ft(MEDCouplingFieldTemplate::NewWithoutCheck(*field));
+-    objC->setFieldProfile(field->timeDiscrSafe(),ft,arr,mesh,meshDimRelToMax,profile,glob,*this);
+-  }
+-  copyTinyInfoFrom(field,arr);
+-  setMeshName(objC->getMeshName());
+-  _time_steps.push_back(obj);
+-}
+-
+-void MEDFileAnyTypeFieldMultiTSWithoutSDA::setIteration(int i, MCAuto<MEDFileAnyTypeField1TSWithoutSDA> ts)
+-{
+-  int sz=(int)_time_steps.size();
+-  if(i<0 || i>=sz)
+-    {
+-      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::setIteration : trying to set element at place #" << i << " should be in [0," << sz << ") !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  const MEDFileAnyTypeField1TSWithoutSDA *tsPtr(ts);
+-  if(tsPtr)
+-    {
+-      if(tsPtr->getNumberOfComponents()!=(int)_infos.size())
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::setIteration : trying to set element with " << tsPtr->getNumberOfComponents() << " components ! Should be " << _infos.size() <<  " !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-    }
+-  _time_steps[i]=ts;
+-}
+-
+-//= MEDFileFieldMultiTSWithoutSDA
+-
+-/*!
+- * entry point for users that want to iterate into MEDFile DataStructure with a reduced overhead because output arrays are extracted (created) specially
+- * for the call of this method. That's why the DataArrayDouble instance in returned vector of vector should be dealed by the caller.
+- */
+-std::vector< std::vector<DataArrayDouble *> > MEDFileFieldMultiTSWithoutSDA::getFieldSplitedByType2(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
+-{
+-  const MEDFileAnyTypeField1TSWithoutSDA& myF1TS=getTimeStepEntry(iteration,order);
+-  const MEDFileField1TSWithoutSDA *myF1TSC=dynamic_cast<const MEDFileField1TSWithoutSDA *>(&myF1TS);
+-  if(!myF1TSC)
+-    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::getFieldSplitedByType2 : mismatch of type of field expecting FLOAT64 !");
+-  return myF1TSC->getFieldSplitedByType2(mname,types,typesF,pfls,locs);
+-}
+-
+-MEDFileIntFieldMultiTSWithoutSDA *MEDFileFieldMultiTSWithoutSDA::convertToInt() const
+-{
+-  MCAuto<MEDFileIntFieldMultiTSWithoutSDA> ret(new MEDFileIntFieldMultiTSWithoutSDA);
+-  ret->MEDFileAnyTypeFieldMultiTSWithoutSDA::operator =(*this);
+-  int i=0;
+-  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,i++)
+-    {
+-      const MEDFileAnyTypeField1TSWithoutSDA *eltToConv(*it);
+-      if(eltToConv)
+-        {
+-          const MEDFileField1TSWithoutSDA *eltToConvC=dynamic_cast<const MEDFileField1TSWithoutSDA *>(eltToConv);
+-          if(!eltToConvC)
+-            throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::convertToInt : presence of an invalid 1TS type ! Should be of type FLOAT64 !");
+-          MCAuto<MEDFileAnyTypeField1TSWithoutSDA> elt=eltToConvC->convertToInt();
+-          ret->setIteration(i,elt);
+-        }
+-    }
+-  return ret.retn();
+-}
+-
+-//= MEDFileAnyTypeFieldMultiTS
+-
+-MEDFileAnyTypeFieldMultiTS::MEDFileAnyTypeFieldMultiTS()
+-{
+-}
+-
+-MEDFileAnyTypeFieldMultiTS::MEDFileAnyTypeFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms)
+-try:MEDFileFieldGlobsReal(fid)
+-{
+-  _content=BuildContentFrom(fid,loadAll,ms);
+-  loadGlobals(fid);
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{
+-    throw e;
+-}
+-
+-MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTS::BuildContentFrom(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-{
+-  med_field_type typcha;
+-  std::vector<std::string> infos;
+-  std::string dtunit;
+-  std::string meshName;
+-  int i(-1);
+-  MEDFileAnyTypeField1TS::LocateField(fid,fieldName,i,typcha,infos,dtunit,meshName);
+-  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> ret;
+-  switch(typcha)
+-  {
+-    case MED_FLOAT64:
+-      {
+-        ret=new MEDFileFieldMultiTSWithoutSDA(fid,i,loadAll,ms,entities);
+-        break;
+-      }
+-    case MED_INT32:
+-      {
+-        ret=new MEDFileIntFieldMultiTSWithoutSDA(fid,i,loadAll,ms,entities);
+-        break;
+-      }
+-    case MED_NODE://6432
+-      {
+-        ret=new MEDFileFloatFieldMultiTSWithoutSDA(fid,i,loadAll,ms,entities);
+-        break;
+-      }
+-    default:
+-      {
+-        std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::BuildContentFrom(fid,fieldName) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but the type of field is not in [MED_FLOAT64, MED_INT32, MED_FLOAT32] !";
+-        throw INTERP_KERNEL::Exception(oss.str());
+-      }
+-  }
+-  ret->setMeshName(meshName);
+-  ret->setDtUnit(dtunit.c_str());
+-  return ret.retn();
+-}
+-
+-MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTS::BuildContentFrom(med_idt fid, bool loadAll, const MEDFileMeshes *ms)
+-{
+-  med_field_type typcha;
+-  //
+-  std::vector<std::string> infos;
+-  std::string dtunit,fieldName,meshName;
+-  MEDFileAnyTypeField1TS::LocateField2(fid,0,true,fieldName,typcha,infos,dtunit,meshName);
+-  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> ret;
+-  switch(typcha)
+-  {
+-    case MED_FLOAT64:
+-      {
+-        ret=new MEDFileFieldMultiTSWithoutSDA(fid,0,loadAll,ms,0);
+-        break;
+-      }
+-    case MED_INT32:
+-      {
+-        ret=new MEDFileIntFieldMultiTSWithoutSDA(fid,0,loadAll,ms,0);
+-        break;
+-      }
+-    case MED_NODE://6432
+-      {
+-        ret=new MEDFileFloatFieldMultiTSWithoutSDA(fid,0,loadAll,ms,0);
+-        break;
+-      }
+-    default:
+-      {
+-        std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::BuildContentFrom(fid) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but the type of the first field is not in [MED_FLOAT64, MED_INT32, MED_FLOAT32] !";
+-        throw INTERP_KERNEL::Exception(oss.str());
+-      }
+-  }
+-  ret->setMeshName(meshName);
+-  ret->setDtUnit(dtunit.c_str());
+-  return ret.retn();
+-}
+-
+-MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::BuildNewInstanceFromContent(MEDFileAnyTypeFieldMultiTSWithoutSDA *c)
+-{
+-  if(!c)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::BuildNewInstanceFromContent : empty content in input : unable to build a new instance !");
+-  if(dynamic_cast<const MEDFileFieldMultiTSWithoutSDA *>(c))
+-    {
+-      MCAuto<MEDFileFieldMultiTS> ret(MEDFileFieldMultiTS::New());
+-      ret->_content=c;  c->incrRef();
+-      return ret.retn();
+-    }
+-  if(dynamic_cast<const MEDFileIntFieldMultiTSWithoutSDA *>(c))
+-    {
+-      MCAuto<MEDFileIntFieldMultiTS> ret(MEDFileIntFieldMultiTS::New());
+-      ret->_content=c;  c->incrRef();
+-      return ret.retn();
+-    }
+-  throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::BuildNewInstanceFromContent : internal error ! a content of type different from FLOAT64 and INT32 has been built but not intercepted !");
+-}
+-
+-MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::BuildNewInstanceFromContent(MEDFileAnyTypeFieldMultiTSWithoutSDA *c, med_idt fid)
+-{
+-  MEDFileAnyTypeFieldMultiTS *ret(BuildNewInstanceFromContent(c));
+-  std::string fileName(FileNameFromFID(fid));
+-  ret->setFileName(fileName);
+-  return ret;
+-}
+-
+-MEDFileAnyTypeFieldMultiTS::MEDFileAnyTypeFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-try:MEDFileFieldGlobsReal(fid)
+-{
+-  _content=BuildContentFrom(fid,fieldName,loadAll,ms,entities);
+-  loadGlobals(fid);
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{
+-    throw e;
+-}
+-
+-//= MEDFileAnyTypeFieldMultiTS
+-
+-/*!
+- * Returns a new instance of MEDFileFieldMultiTS or MEDFileIntFieldMultiTS holding data of the first field
+- * that has been read from a specified MED file.
+- *  \param [in] fileName - the name of the MED file to read.
+- *  \return MEDFileFieldMultiTS * - a new instance of MEDFileFieldMultiTS or MEDFileIntFieldMultiTS. The caller
+- *          is to delete this field using decrRef() as it is no more needed.
+- *  \throw If reading the file fails.
+- */
+-MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::New(const std::string& fileName, bool loadAll)
+-{
+-  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
+-  return New(fid,loadAll);
+-}
+-
+-MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::New(med_idt fid, bool loadAll)
+-{
+-  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> c(BuildContentFrom(fid,loadAll,0));
+-  MCAuto<MEDFileAnyTypeFieldMultiTS> ret(BuildNewInstanceFromContent(c,fid));
+-  ret->loadGlobals(fid);
+-  return ret.retn();
+-}
+-
+-/*!
+- * Returns a new instance of MEDFileFieldMultiTS or MEDFileIntFieldMultiTS holding data of a given field
+- * that has been read from a specified MED file.
+- *  \param [in] fileName - the name of the MED file to read.
+- *  \param [in] fieldName - the name of the field to read.
+- *  \return MEDFileFieldMultiTS * - a new instance of MEDFileFieldMultiTS or MEDFileIntFieldMultiTS. The caller
+- *          is to delete this field using decrRef() as it is no more needed.
+- *  \throw If reading the file fails.
+- *  \throw If there is no field named \a fieldName in the file.
+- */
+-MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::New(const std::string& fileName, const std::string& fieldName, bool loadAll)
+-{
+-  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
+-  return New(fid,fieldName,loadAll);
+-}
+-
+-MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::New(med_idt fid, const std::string& fieldName, bool loadAll)
+-{
+-  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> c(BuildContentFrom(fid,fieldName,loadAll,0,0));
+-  MCAuto<MEDFileAnyTypeFieldMultiTS> ret(BuildNewInstanceFromContent(c,fid));
+-  ret->loadGlobals(fid);
+-  return ret.retn();
+-}
+-
+-/*!
+- * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
+- * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
+- *
+- * \warning this is a shallow copy constructor
+- */
+-MEDFileAnyTypeFieldMultiTS::MEDFileAnyTypeFieldMultiTS(const MEDFileAnyTypeFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent)
+-{
+-  if(!shallowCopyOfContent)
+-    {
+-      const MEDFileAnyTypeFieldMultiTSWithoutSDA *otherPtr(&other);
+-      otherPtr->incrRef();
+-      _content=const_cast<MEDFileAnyTypeFieldMultiTSWithoutSDA *>(otherPtr);
+-    }
+-  else
+-    {
+-      _content=other.shallowCpy();
+-    }
+-}
+-
+-MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTS::contentNotNullBase()
+-{
+-  MEDFileAnyTypeFieldMultiTSWithoutSDA *ret=_content;
+-  if(!ret)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS : content is expected to be not null !");
+-  return ret;
+-}
+-
+-const MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTS::contentNotNullBase() const
+-{
+-  const MEDFileAnyTypeFieldMultiTSWithoutSDA *ret=_content;
+-  if(!ret)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS : const content is expected to be not null !");
+-  return ret;
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeFieldMultiTS::getPflsReallyUsed() const
+-{
+-  return contentNotNullBase()->getPflsReallyUsed2();
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeFieldMultiTS::getLocsReallyUsed() const
+-{
+-  return contentNotNullBase()->getLocsReallyUsed2();
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeFieldMultiTS::getPflsReallyUsedMulti() const
+-{
+-  return contentNotNullBase()->getPflsReallyUsedMulti2();
+-}
+-
+-std::vector<std::string> MEDFileAnyTypeFieldMultiTS::getLocsReallyUsedMulti() const
+-{
+-  return contentNotNullBase()->getLocsReallyUsedMulti2();
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  contentNotNullBase()->changePflsRefsNamesGen2(mapOfModif);
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
+-{
+-  contentNotNullBase()->changeLocsRefsNamesGen2(mapOfModif);
+-}
+-
+-int MEDFileAnyTypeFieldMultiTS::getNumberOfTS() const
+-{
+-  return contentNotNullBase()->getNumberOfTS();
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::eraseEmptyTS()
+-{
+-  contentNotNullBase()->eraseEmptyTS();
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::eraseTimeStepIds(const int *startIds, const int *endIds)
+-{
+-  contentNotNullBase()->eraseTimeStepIds(startIds,endIds);
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::eraseTimeStepIds2(int bg, int end, int step)
+-{
+-  contentNotNullBase()->eraseTimeStepIds2(bg,end,step);
+-}
+-
+-MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::buildSubPart(const int *startIds, const int *endIds) const
+-{
+-  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> c=contentNotNullBase()->buildFromTimeStepIds(startIds,endIds);
+-  MCAuto<MEDFileAnyTypeFieldMultiTS> ret=shallowCpy();
+-  ret->_content=c;
+-  return ret.retn();
+-}
+-
+-MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::buildSubPartSlice(int bg, int end, int step) const
+-{
+-  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> c=contentNotNullBase()->buildFromTimeStepIds2(bg,end,step);
+-  MCAuto<MEDFileAnyTypeFieldMultiTS> ret=shallowCpy();
+-  ret->_content=c;
+-  return ret.retn();
+-}
+-
+-std::vector< std::pair<int,int> > MEDFileAnyTypeFieldMultiTS::getIterations() const
+-{
+-  return contentNotNullBase()->getIterations();
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::pushBackTimeSteps(const std::vector<MEDFileAnyTypeField1TS *>& f1ts)
+-{
+-  for(std::vector<MEDFileAnyTypeField1TS *>::const_iterator it=f1ts.begin();it!=f1ts.end();it++)
+-    pushBackTimeStep(*it);
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::pushBackTimeSteps(MEDFileAnyTypeFieldMultiTS *fmts)
+-{
+-  if(!fmts)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::pushBackTimeSteps : Input fmts is NULL !");
+-  int nbOfTS(fmts->getNumberOfTS());
+-  for(int i=0;i<nbOfTS;i++)
+-    {
+-      MCAuto<MEDFileAnyTypeField1TS> elt(fmts->getTimeStepAtPos(i));
+-      pushBackTimeStep(elt);
+-    }
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::pushBackTimeStep(MEDFileAnyTypeField1TS *f1ts)
+-{
+-  if(!f1ts)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::pushBackTimeStep : input pointer is NULL !");
+-  checkCoherencyOfType(f1ts);
+-  f1ts->incrRef();
+-  MCAuto<MEDFileAnyTypeField1TS> f1tsSafe(f1ts);
+-  MEDFileAnyTypeField1TSWithoutSDA *c=f1ts->contentNotNullBase();
+-  c->incrRef();
+-  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> cSafe(c);
+-  if(!((MEDFileAnyTypeFieldMultiTSWithoutSDA *)_content))
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::pushBackTimeStep : no content in this !");
+-  _content->pushBackTimeStep(cSafe);
+-  appendGlobs(*f1ts,1e-12);
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::synchronizeNameScope()
+-{
+-  contentNotNullBase()->synchronizeNameScope();
+-}
+-
+-int MEDFileAnyTypeFieldMultiTS::getPosOfTimeStep(int iteration, int order) const
+-{
+-  return contentNotNullBase()->getPosOfTimeStep(iteration,order);
+-}
+-
+-int MEDFileAnyTypeFieldMultiTS::getPosGivenTime(double time, double eps) const
+-{
+-  return contentNotNullBase()->getPosGivenTime(time,eps);
+-}
+-
+-int MEDFileAnyTypeFieldMultiTS::getNonEmptyLevels(int iteration, int order, const std::string& mname, std::vector<int>& levs) const
+-{
+-  return contentNotNullBase()->getNonEmptyLevels(iteration,order,mname,levs);
+-}
+-
+-std::vector< std::vector<TypeOfField> > MEDFileAnyTypeFieldMultiTS::getTypesOfFieldAvailable() const
+-{
+-  return contentNotNullBase()->getTypesOfFieldAvailable();
+-}
+-
+-std::vector< std::vector< std::pair<int,int> > > MEDFileAnyTypeFieldMultiTS::getFieldSplitedByType(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
+-{
+-  return contentNotNullBase()->getFieldSplitedByType(iteration,order,mname,types,typesF,pfls,locs);
+-}
+-
+-std::string MEDFileAnyTypeFieldMultiTS::getName() const
+-{
+-  return contentNotNullBase()->getName();
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::setName(const std::string& name)
+-{
+-  contentNotNullBase()->setName(name);
+-}
+-
+-std::string MEDFileAnyTypeFieldMultiTS::getDtUnit() const
+-{
+-  return contentNotNullBase()->getDtUnit();
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::setDtUnit(const std::string& dtUnit)
+-{
+-  contentNotNullBase()->setDtUnit(dtUnit);
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::simpleRepr(int bkOffset, std::ostream& oss, int fmtsId) const
+-{
+-  contentNotNullBase()->simpleRepr(bkOffset,oss,fmtsId);
+-}
+-
+-std::vector< std::pair<int,int> > MEDFileAnyTypeFieldMultiTS::getTimeSteps(std::vector<double>& ret1) const
+-{
+-  return contentNotNullBase()->getTimeSteps(ret1);
+-}
+-
+-std::string MEDFileAnyTypeFieldMultiTS::getMeshName() const
+-{
+-  return contentNotNullBase()->getMeshName();
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::setMeshName(const std::string& newMeshName)
+-{
+-  contentNotNullBase()->setMeshName(newMeshName);
+-}
+-
+-bool MEDFileAnyTypeFieldMultiTS::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab)
+-{
+-  return contentNotNullBase()->changeMeshNames(modifTab);
+-}
+-
+-const std::vector<std::string>& MEDFileAnyTypeFieldMultiTS::getInfo() const
+-{
+-  return contentNotNullBase()->getInfo();
+-}
+-
+-bool MEDFileAnyTypeFieldMultiTS::presenceOfMultiDiscPerGeoType() const
+-{
+-  return contentNotNullBase()->presenceOfMultiDiscPerGeoType();
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::setInfo(const std::vector<std::string>& info)
+-{
+-  return contentNotNullBase()->setInfo(info);
+-}
+-
+-int MEDFileAnyTypeFieldMultiTS::getNumberOfComponents() const
+-{
+-  const std::vector<std::string> ret=getInfo();
+-  return (int)ret.size();
+-}
+-
+-void MEDFileAnyTypeFieldMultiTS::writeLL(med_idt fid) const
+-{
+-  writeGlobals(fid,*this);
+-  contentNotNullBase()->writeLL(fid,*this);
+-}
+-
+-/*!
+- * This method alloc the arrays and load potentially huge arrays contained in this field.
+- * This method should be called when a MEDFileAnyTypeFieldMultiTS::New constructor has been with false as the last parameter.
+- * This method can be also called to refresh or reinit values from a file.
+- * 
+- * \throw If the fileName is not set or points to a non readable MED file.
+- */
+-void MEDFileAnyTypeFieldMultiTS::loadArrays()
+-{
+-  if(getFileName().empty())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::loadArrays : the structure does not come from a file !");
+-  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(getFileName()));
+-  contentNotNullBase()->loadBigArraysRecursively(fid,*contentNotNullBase());
+-}
+-
+-/*!
+- * This method behaves as MEDFileAnyTypeFieldMultiTS::loadArrays does, the first call, if \a this was built using a file without loading big arrays.
+- * But once data loaded once, this method does nothing.
+- * 
+- * \throw If the fileName is not set or points to a non readable MED file.
+- * \sa MEDFileAnyTypeFieldMultiTS::loadArrays, MEDFileAnyTypeFieldMultiTS::unloadArrays
+- */
+-void MEDFileAnyTypeFieldMultiTS::loadArraysIfNecessary()
+-{
+-  if(!getFileName().empty())
+-    {
+-      MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(getFileName()));
+-      contentNotNullBase()->loadBigArraysRecursivelyIfNecessary(fid,*contentNotNullBase());
+-    }
+-}
+-
+-/*!
+- * This method releases potentially big data arrays and so returns to the same heap memory than status loaded with 'loadAll' parameter set to false.
+- * \b WARNING, this method does release arrays even if \a this does not come from a load of a MED file.
+- * So this method can lead to a loss of data. If you want to unload arrays safely call MEDFileAnyTypeFieldMultiTS::unloadArraysWithoutDataLoss instead.
+- * 
+- * \sa MEDFileAnyTypeFieldMultiTS::loadArrays, MEDFileAnyTypeFieldMultiTS::loadArraysIfNecessary, MEDFileAnyTypeFieldMultiTS::unloadArraysWithoutDataLoss
+- */
+-void MEDFileAnyTypeFieldMultiTS::unloadArrays()
+-{
+-  contentNotNullBase()->unloadArrays();
+-}
+-
+-/*!
+- * This method potentially releases big data arrays if \a this is coming from a file. If \a this has been built from scratch this method will have no effect.
+- * This method is the symetrical method of MEDFileAnyTypeFieldMultiTS::loadArraysIfNecessary.
+- * This method is useful to reduce \b safely amount of heap memory necessary for \a this by using MED file as database.
+- * 
+- * \sa MEDFileAnyTypeFieldMultiTS::loadArraysIfNecessary
+- */
+-void MEDFileAnyTypeFieldMultiTS::unloadArraysWithoutDataLoss()
+-{
+-  if(!getFileName().empty())
+-    contentNotNullBase()->unloadArrays();
+-}
+-
+-std::string MEDFileAnyTypeFieldMultiTS::simpleRepr() const
+-{
+-  std::ostringstream oss;
+-  contentNotNullBase()->simpleRepr(0,oss,-1);
+-  simpleReprGlobs(oss);
+-  return oss.str();
+-}
+-
+-std::size_t MEDFileAnyTypeFieldMultiTS::getHeapMemorySizeWithoutChildren() const
+-{
+-  return MEDFileFieldGlobsReal::getHeapMemorySizeWithoutChildren();
+-}
+-
+-std::vector<const BigMemoryObject *> MEDFileAnyTypeFieldMultiTS::getDirectChildrenWithNull() const
+-{
+-  std::vector<const BigMemoryObject *> ret(MEDFileFieldGlobsReal::getDirectChildrenWithNull());
+-  ret.push_back((const MEDFileAnyTypeFieldMultiTSWithoutSDA *)_content);
+-  return ret;
+-}
+-
+-/*!
+- * This method returns as MEDFileAnyTypeFieldMultiTS new instances as number of components in \a this.
+- * The returned instances are deep copy of \a this except that for globals that are share with those contained in \a this.
+- * ** WARNING ** do no forget to rename the ouput instances to avoid to write n-times in the same MED file field !
+- */
+-std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > MEDFileAnyTypeFieldMultiTS::splitComponents() const
+-{
+-  const MEDFileAnyTypeFieldMultiTSWithoutSDA *content(_content);
+-  if(!content)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::splitComponents : no content in this ! Unable to split components !");
+-  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > contentsSplit=content->splitComponents();
+-  std::size_t sz(contentsSplit.size());
+-  std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > ret(sz);
+-  for(std::size_t i=0;i<sz;i++)
+-    {
+-      ret[i]=shallowCpy();
+-      ret[i]->_content=contentsSplit[i];
+-    }
+-  return ret;
+-}
+-
+-/*!
+- * This method returns as MEDFileAnyTypeFieldMultiTS new instances as number of discretizations over time steps in \a this.
+- * The returned instances are shallow copied of \a this included globals that are share with those contained in \a this.
+- */
+-std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > MEDFileAnyTypeFieldMultiTS::splitDiscretizations() const
+-{
+-  const MEDFileAnyTypeFieldMultiTSWithoutSDA *content(_content);
+-  if(!content)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::splitDiscretizations : no content in this ! Unable to split discretizations !");
+-  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > contentsSplit(content->splitDiscretizations());
+-  std::size_t sz(contentsSplit.size());
+-  std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > ret(sz);
+-  for(std::size_t i=0;i<sz;i++)
+-    {
+-      ret[i]=shallowCpy();
+-      ret[i]->_content=contentsSplit[i];
+-    }
+-  return ret;
+-}
+-
+-/*!
+- * This method returns as MEDFileAnyTypeFieldMultiTS new instances as number of sub-discretizations over time steps in \a this.
+- * The returned instances are shallow copied of \a this included globals that are share with those contained in \a this.
+- */
+-std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > MEDFileAnyTypeFieldMultiTS::splitMultiDiscrPerGeoTypes() const
+-{
+-  const MEDFileAnyTypeFieldMultiTSWithoutSDA *content(_content);
+-  if(!content)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::splitMultiDiscrPerGeoTypes : no content in this ! Unable to split discretizations !");
+-  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > contentsSplit(content->splitMultiDiscrPerGeoTypes());
+-  std::size_t sz(contentsSplit.size());
+-  std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > ret(sz);
+-  for(std::size_t i=0;i<sz;i++)
+-    {
+-      ret[i]=shallowCpy();
+-      ret[i]->_content=contentsSplit[i];
+-    }
+-  return ret;
+-}
+-
+-MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::deepCopy() const
+-{
+-  MCAuto<MEDFileAnyTypeFieldMultiTS> ret=shallowCpy();
+-  if((const MEDFileAnyTypeFieldMultiTSWithoutSDA *)_content)
+-    ret->_content=_content->deepCopy();
+-  ret->deepCpyGlobs(*this);
+-  return ret.retn();
+-}
+-
+-MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> MEDFileAnyTypeFieldMultiTS::getContent()
+-{
+-  return _content;
+-}
+-
+-/*!
+- * Returns a new MEDFileField1TS or MEDFileIntField1TS holding data of a given time step of \a this field.
+- *  \param [in] iteration - the iteration number of a required time step.
+- *  \param [in] order - the iteration order number of required time step.
+- *  \return MEDFileField1TS * or MEDFileIntField1TS *- a new instance of MEDFileField1TS or MEDFileIntField1TS. The caller is to
+- *          delete this field using decrRef() as it is no more needed.
+- *  \throw If there is no required time step in \a this field.
+- */
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeFieldMultiTS::getTimeStep(int iteration, int order) const
+-{
+-  int pos=getPosOfTimeStep(iteration,order);
+-  return getTimeStepAtPos(pos);
+-}
+-
+-/*!
+- * Returns a new MEDFileField1TS or MEDFileIntField1TS holding data of a given time step of \a this field.
+- *  \param [in] time - the time of the time step of interest.
+- *  \param [in] eps - a precision used to compare time values.
+- *  \return MEDFileField1TS * - a new instance of MEDFileField1TS. The caller is to
+- *          delete this field using decrRef() as it is no more needed.
+- *  \throw If there is no required time step in \a this field.
+- */
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeFieldMultiTS::getTimeStepGivenTime(double time, double eps) const
+-{
+-  int pos=getPosGivenTime(time,eps);
+-  return getTimeStepAtPos(pos);
+-}
+-
+-/*!
+- * This method groups not null items in \a vectFMTS per time step series. Two time series are considered equal if the list of their pair of integers iteration,order are equal.
+- * The float64 value of time attached to the pair of integers are not considered here.
+- * WARNING the returned pointers are not incremented. The caller is \b not responsible to deallocate them ! This method only reorganizes entries in \a vectFMTS.
+- *
+- * \param [in] vectFMTS - vector of not null fields defined on a same global data pointer.
+- * \throw If there is a null pointer in \a vectFMTS.
+- */
+-std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > MEDFileAnyTypeFieldMultiTS::SplitIntoCommonTimeSeries(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS)
+-{
+-  static const char msg[]="MEDFileAnyTypeFieldMultiTS::SplitIntoCommonTimeSeries : presence of null instance in input vector !";
+-  std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > ret;
+-  std::list<MEDFileAnyTypeFieldMultiTS *> lstFMTS(vectFMTS.begin(),vectFMTS.end());
+-  while(!lstFMTS.empty())
+-    {
+-      std::list<MEDFileAnyTypeFieldMultiTS *>::iterator it(lstFMTS.begin());
+-      MEDFileAnyTypeFieldMultiTS *curIt(*it);
+-      if(!curIt)
+-        throw INTERP_KERNEL::Exception(msg);
+-      std::vector< std::pair<int,int> > refIts=curIt->getIterations();
+-      std::vector<MEDFileAnyTypeFieldMultiTS *> elt;
+-      elt.push_back(curIt); it=lstFMTS.erase(it);
+-      while(it!=lstFMTS.end())
+-        {
+-          curIt=*it;
+-          if(!curIt)
+-            throw INTERP_KERNEL::Exception(msg);
+-          std::vector< std::pair<int,int> > curIts=curIt->getIterations();
+-          if(refIts==curIts)
+-            { elt.push_back(curIt); it=lstFMTS.erase(it); }
+-          else
+-            it++;
+-        }
+-      ret.push_back(elt);
+-    }
+-  return ret;
+-}
+-
+-/*!
+- * This method splits the input list \a vectFMTS considering the aspect of the geometrical support over time.
+- * All returned instances in a subvector can be safely loaded, rendered along time
+- * All items must be defined on the same time step ids ( see MEDFileAnyTypeFieldMultiTS::SplitIntoCommonTimeSeries method ).
+- * Each item in \a vectFMTS is expected to have one and exactly one spatial discretization along time.
+- * All items in \a vectFMTS must lie on the mesh (located by meshname and time step) and compatible with the input mesh \a mesh (having the same name than those in items).
+- * All items in \a vectFMTS whose spatial discretization is not ON_NODES will appear once.
+- * For items in \a vectFMTS that are ON_NODES it is possible to appear several times (more than once or once) in the returned vector.
+- *
+- * \param [in] vectFMTS - list of multi times step part all defined each on a same spatial discretization along time and pointing to a mesh whose name is equal to \c mesh->getName().
+- * \param [in] mesh - the mesh shared by all items in \a vectFMTS across time.
+- * \param [out] fsc - A vector having same size than returned vector. It specifies the support comporator of the corresponding vector of MEDFileAnyTypeFieldMultiTS in returned vector of vector.
+- * \return - A vector of vector of objects that contains the same pointers (objects) than thoose in \a vectFMTS except that there are organized differently. So pointers included in returned vector of vector should \b not been dealt by the caller.
+- *
+- * \throw If an element in \a vectFMTS has not only one spatial discretization set.
+- * \throw If an element in \a vectFMTS change of spatial discretization along time.
+- * \throw If an element in \a vectFMTS lies on a mesh with meshname different from those in \a mesh.
+- * \thorw If some elements in \a vectFMTS do not have the same times steps.
+- * \throw If mesh is null.
+- * \throw If an element in \a vectFMTS is null.
+- * \sa MEDFileAnyTypeFieldMultiTS::AreOnSameSupportAcrossTime
+- */
+-std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS, const MEDFileMesh *mesh, std::vector< MCAuto<MEDFileFastCellSupportComparator> >& fsc)
+-{
+-  static const char msg[]="MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport : presence of a null instance in the input vector !";
+-  if(!mesh)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport : input mesh is null !");
+-  std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > ret;
+-  if(vectFMTS.empty())
+-    return ret;
+-  std::vector<MEDFileAnyTypeFieldMultiTS *>::const_iterator it(vectFMTS.begin());
+-  MEDFileAnyTypeFieldMultiTS *frstElt(*it);
+-  if(!frstElt)
+-    throw INTERP_KERNEL::Exception(msg);
+-  std::size_t i=0;
+-  std::vector<MEDFileAnyTypeFieldMultiTS *> vectFMTSNotNodes;
+-  std::vector<MEDFileAnyTypeFieldMultiTS *> vectFMTSNodes;
+-  for(;it!=vectFMTS.end();it++,i++)
+-    {
+-      if(!(*it))
+-        throw INTERP_KERNEL::Exception(msg);
+-      TypeOfField tof0,tof1;
+-      if(CheckSupportAcrossTime(frstElt,*it,mesh,tof0,tof1)>0)
+-        {
+-          if(tof1!=ON_NODES)
+-            vectFMTSNotNodes.push_back(*it);
+-          else
+-            vectFMTSNodes.push_back(*it);
+-        }
+-      else
+-        vectFMTSNotNodes.push_back(*it);
+-    }
+-  std::vector< MCAuto<MEDFileFastCellSupportComparator> > cmps;
+-  std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > retCell=SplitPerCommonSupportNotNodesAlg(vectFMTSNotNodes,mesh,cmps);
+-  ret=retCell;
+-  for(std::vector<MEDFileAnyTypeFieldMultiTS *>::const_iterator it2=vectFMTSNodes.begin();it2!=vectFMTSNodes.end();it2++)
+-    {
+-      i=0;
+-      bool isFetched(false);
+-      for(std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> >::const_iterator it0=retCell.begin();it0!=retCell.end();it0++,i++)
+-        {
+-          if((*it0).empty())
+-            throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport : internal error !");
+-          if(cmps[i]->isCompatibleWithNodesDiscr(*it2))
+-            { ret[i].push_back(*it2); isFetched=true; }
+-        }
+-      if(!isFetched)
+-        {
+-          std::vector<MEDFileAnyTypeFieldMultiTS *> tmp(1,*it2);
+-          MCAuto<MEDFileMeshStruct> tmp2(MEDFileMeshStruct::New(mesh));
+-          ret.push_back(tmp); retCell.push_back(tmp); cmps.push_back(MEDFileFastCellSupportComparator::New(tmp2,*it2));
+-        }
+-    }
+-  fsc=cmps;
+-  return ret;
+-}
+-
+-/*!
+- * WARNING no check here. The caller must be sure that all items in vectFMTS are coherent each other in time steps, only one same spatial discretization and not ON_NODES.
+- * \param [out] cmps - same size than the returned vector.
+- */
+-std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupportNotNodesAlg(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS, const MEDFileMesh *mesh, std::vector< MCAuto<MEDFileFastCellSupportComparator> >& cmps)
+-{
+-  std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > ret;
+-  std::list<MEDFileAnyTypeFieldMultiTS *> lstFMTS(vectFMTS.begin(),vectFMTS.end());
+-  while(!lstFMTS.empty())
+-    {
+-      std::list<MEDFileAnyTypeFieldMultiTS *>::iterator it(lstFMTS.begin());
+-      MEDFileAnyTypeFieldMultiTS *ref(*it);
+-      std::vector<MEDFileAnyTypeFieldMultiTS *> elt;
+-      elt.push_back(ref); it=lstFMTS.erase(it);
+-      MCAuto<MEDFileMeshStruct> mst(MEDFileMeshStruct::New(mesh));
+-      MCAuto<MEDFileFastCellSupportComparator> cmp(MEDFileFastCellSupportComparator::New(mst,ref));
+-      while(it!=lstFMTS.end())
+-        {
+-          MEDFileAnyTypeFieldMultiTS *curIt(*it);
+-          if(cmp->isEqual(curIt))
+-            { elt.push_back(curIt); it=lstFMTS.erase(it); }
+-          else
+-            it++;
+-        }
+-      ret.push_back(elt); cmps.push_back(cmp);
+-    }
+-  return ret;
+-}
+-
+-/*!
+- * This method scan the two main structs along time of \a f0 and \a f1 to see if there are all lying on the same mesh along time than those in \a mesh.
+- * \a f0 and \a f1 must be defined each only on a same spatial discretization even if this can be different each other.
+- *
+- * \throw If \a f0 or \a f1 has not only one spatial discretization set.
+- * \throw If \a f0 or \a f1 change of spatial discretization along time.
+- * \throw If \a f0 or \a f1 on a mesh with meshname different from those in \a mesh.
+- * \thorw If \a f0 and \a f1 do not have the same times steps.
+- * \throw If mesh is null.
+- * \throw If \a f0 or \a f1 is null.
+- * \sa MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport
+- */
+-int MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime(MEDFileAnyTypeFieldMultiTS *f0, MEDFileAnyTypeFieldMultiTS *f1, const MEDFileMesh *mesh, TypeOfField& tof0, TypeOfField& tof1)
+-{
+-  if(!mesh)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : input mesh is null !");
+-  if(!f0 || !f1)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : presence of null instance in fields over time !");
+-  if(f0->getMeshName()!=mesh->getName())
+-    {
+-      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : first field points to mesh \""<< f0->getMeshName() << "\" and input mesh to compare has name \"" << mesh->getName() << "\" !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  if(f1->getMeshName()!=mesh->getName())
+-    {
+-      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : second field points to mesh \""<< f1->getMeshName() << "\" and input mesh to compare has name \"" << mesh->getName() << "\" !";
+-      throw INTERP_KERNEL::Exception(oss.str());
+-    }
+-  int nts=f0->getNumberOfTS();
+-  if(nts!=f1->getNumberOfTS())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : number of time steps are not the same !");
+-  if(nts==0)
+-    return nts;
+-  for(int i=0;i<nts;i++)
+-    {
+-      MCAuto<MEDFileAnyTypeField1TS> f0cur=f0->getTimeStepAtPos(i);
+-      MCAuto<MEDFileAnyTypeField1TS> f1cur=f1->getTimeStepAtPos(i);
+-      std::vector<TypeOfField> tofs0(f0cur->getTypesOfFieldAvailable()),tofs1(f1cur->getTypesOfFieldAvailable());
+-      if(tofs0.size()!=1 || tofs1.size()!=1)
+-        throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : All time steps must be defined on only one spatial discretization !");
+-      if(i!=0)
+-        {
+-          if(tof0!=tofs0[0] || tof1!=tofs1[0])
+-            throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : Across times steps MEDFileAnyTypeFieldMultiTS instances have to keep the same unique spatial discretization !");
+-        }
+-      else
+-        { tof0=tofs0[0]; tof1=tofs1[0]; }
+-      if(f0cur->getMeshIteration()!=mesh->getIteration() || f0cur->getMeshOrder()!=mesh->getOrder())
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : first field points to mesh time step (" << f0cur->getMeshIteration() << ","<< f0cur->getMeshOrder() << ") whereas input mesh points to time step (" << mesh->getIteration() << "," << mesh->getOrder() << ") !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-      if(f1cur->getMeshIteration()!=mesh->getIteration() || f1cur->getMeshOrder()!=mesh->getOrder())
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : second field points to mesh time step (" << f1cur->getMeshIteration() << ","<< f1cur->getMeshOrder() << ") whereas input mesh points to time step (" << mesh->getIteration() << "," << mesh->getOrder() << ") !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-      if(f0cur->getIteration()!=f1cur->getIteration() || f0cur->getOrder()!=f1cur->getOrder())
+-        {
+-          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : all the time steps must be the same ! it is not the case (" << f0cur->getIteration() << "," << f0cur->getOrder() << ")!=(" << f1cur->getIteration() << "," << f1cur->getOrder() << ") !";
+-          throw INTERP_KERNEL::Exception(oss.str());
+-        }
+-    }
+-  return nts;
+-}
+-
+-template<class T>
+-MCAuto<MEDFileAnyTypeField1TS> AggregateHelperF1TS(const std::vector< typename MLFieldTraits<T>::F1TSType const *>& f1tss, const std::vector< std::vector< std::pair<int,int> > >& dts)
+-{
+-  MCAuto< typename MLFieldTraits<T>::F1TSType > ret(MLFieldTraits<T>::F1TSType::New());
+-  if(f1tss.empty())
+-    throw INTERP_KERNEL::Exception("AggregateHelperF1TS : empty vector !");
+-  std::size_t sz(f1tss.size()),i(0);
+-  std::vector< typename MLFieldTraits<T>::F1TSWSDAType const *> f1tsw(sz);
+-  for(typename std::vector< typename MLFieldTraits<T>::F1TSType const *>::const_iterator it=f1tss.begin();it!=f1tss.end();it++,i++)
+-    {
+-      typename MLFieldTraits<T>::F1TSType const *elt(*it);
+-      if(!elt)
+-        throw INTERP_KERNEL::Exception("AggregateHelperF1TS : presence of a null pointer !");
+-      f1tsw[i]=dynamic_cast<typename MLFieldTraits<T>::F1TSWSDAType const *>(elt->contentNotNullBase());
+-    }
+-  typename MLFieldTraits<T>::F1TSWSDAType *retc(dynamic_cast<typename MLFieldTraits<T>::F1TSWSDAType *>(ret->contentNotNullBase()));
+-  if(!retc)
+-    throw INTERP_KERNEL::Exception("AggregateHelperF1TS : internal error 1 !");
+-  retc->aggregate(f1tsw,dts);
+-  ret->setDtUnit(f1tss[0]->getDtUnit());
+-  return DynamicCast<typename MLFieldTraits<T>::F1TSType , MEDFileAnyTypeField1TS>(ret);
+-}
+-
+-template<class T>
+-MCAuto< MEDFileAnyTypeFieldMultiTS > AggregateHelperFMTS(const std::vector< typename MLFieldTraits<T>::FMTSType const *>& fmtss, const std::vector< std::vector< std::pair<int,int> > >& dts)
+-{
+-  MCAuto< typename MLFieldTraits<T>::FMTSType > ret(MLFieldTraits<T>::FMTSType::New());
+-  if(fmtss.empty())
+-    throw INTERP_KERNEL::Exception("AggregateHelperFMTS : empty vector !");
+-  std::size_t sz(fmtss.size());
+-  for(typename std::vector< typename MLFieldTraits<T>::FMTSType const *>::const_iterator it=fmtss.begin();it!=fmtss.end();it++)
+-    {
+-      typename MLFieldTraits<T>::FMTSType const *elt(*it);
+-      if(!elt)
+-        throw INTERP_KERNEL::Exception("AggregateHelperFMTS : presence of null pointer !");
+-    }
+-  int nbTS(fmtss[0]->getNumberOfTS());
+-  for(typename std::vector< typename MLFieldTraits<T>::FMTSType const *>::const_iterator it=fmtss.begin();it!=fmtss.end();it++)
+-    if((*it)->getNumberOfTS()!=nbTS)
+-      throw INTERP_KERNEL::Exception("AggregateHelperFMTS : all fields must have the same number of TS !");
+-  for(int iterTS=0;iterTS<nbTS;iterTS++)
+-    {
+-      std::size_t i(0);
+-      std::vector< typename MLFieldTraits<T>::F1TSType const *> f1tss(sz);
+-      std::vector< MCAuto<typename MLFieldTraits<T>::F1TSType> > f1tss2(sz);
+-      for(typename std::vector< typename MLFieldTraits<T>::FMTSType const *>::const_iterator it=fmtss.begin();it!=fmtss.end();it++,i++)
+-        { f1tss2[i]=(*it)->getTimeStepAtPos(iterTS); f1tss[i]=f1tss2[i]; }
+-      MCAuto<MEDFileAnyTypeField1TS> f1ts(AggregateHelperF1TS<T>(f1tss,dts));
+-      ret->pushBackTimeStep(f1ts);
+-      ret->setDtUnit(f1ts->getDtUnit());
+-    }
+-  return DynamicCast<typename MLFieldTraits<T>::FMTSType , MEDFileAnyTypeFieldMultiTS>(ret);
+-}
+-
+-/*!
+- * \a dts and \a ftmss are expected to have same size.
+- */
+-MCAuto<MEDFileAnyTypeFieldMultiTS> MEDFileAnyTypeFieldMultiTS::Aggregate(const std::vector<const MEDFileAnyTypeFieldMultiTS *>& fmtss, const std::vector< std::vector< std::pair<int,int> > >& dts)
+-{
+-  if(fmtss.empty())
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::Aggregate : input vector is empty !");
+-  std::size_t sz(fmtss.size());
+-  std::vector<const MEDFileFieldMultiTS *> fmtss1;
+-  std::vector<const MEDFileIntFieldMultiTS *> fmtss2;
+-  for(std::vector<const MEDFileAnyTypeFieldMultiTS *>::const_iterator it=fmtss.begin();it!=fmtss.end();it++)
+-    {
+-      if(!(*it))
+-        throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::Aggregate : presence of null instance in input vector !");
+-      const MEDFileFieldMultiTS *elt1(dynamic_cast<const MEDFileFieldMultiTS *>(*it));
+-      if(elt1)
+-        {
+-          fmtss1.push_back(elt1);
+-          continue;
+-        }
+-      const MEDFileIntFieldMultiTS *elt2(dynamic_cast<const MEDFileIntFieldMultiTS *>(*it));
+-      if(elt2)
+-        {
+-          fmtss2.push_back(elt2);
+-          continue;
+-        }
+-      throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::Aggregate : not recognized type !");
+-    }
+-  if(fmtss1.size()!=sz && fmtss2.size()!=sz)
+-    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::Aggregate : type of data is not homogeneous !");
+-  if(fmtss1.size()==sz)
+-    return AggregateHelperFMTS<double>(fmtss1,dts);
+-  if(fmtss2.size()!=sz)
+-    return AggregateHelperFMTS<int>(fmtss2,dts);
+-  throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::Aggregate : not implemented yet !");
+-}
+-
+-MEDFileAnyTypeFieldMultiTSIterator *MEDFileAnyTypeFieldMultiTS::iterator()
+-{
+-  return new MEDFileAnyTypeFieldMultiTSIterator(this);
+-}
+-
+-//= MEDFileFieldMultiTS
+-
+-MEDFileAnyTypeFieldMultiTS *MEDFileFieldMultiTS::shallowCpy() const
+-{
+-  return new MEDFileFieldMultiTS(*this);
+-}
+-
+-/*!
+- * This method performs a copy with datatype modification ( float64->int32 ) of \a this. The globals information are copied
+- * following the given input policy.
+- *
+- * \param [in] isDeepCpyGlobs - a boolean that indicates the behaviour concerning globals (profiles and localizations)
+- *                            By default (true) the globals are deeply copied.
+- * \return MEDFileIntFieldMultiTS * - a new object that is the result of the conversion of \a this to int32 field.
+- */
+-MEDFileIntFieldMultiTS *MEDFileFieldMultiTS::convertToInt(bool isDeepCpyGlobs) const
+-{
+-  MCAuto<MEDFileIntFieldMultiTS> ret;
+-  const MEDFileAnyTypeFieldMultiTSWithoutSDA *content(_content);
+-  if(content)
+-    {
+-      const MEDFileFieldMultiTSWithoutSDA *contc=dynamic_cast<const MEDFileFieldMultiTSWithoutSDA *>(content);
+-      if(!contc)
+-        throw INTERP_KERNEL::Exception("MEDFileFieldMultiTS::convertToInt : the content inside this is not FLOAT64 ! This is incoherent !");
+-      MCAuto<MEDFileIntFieldMultiTSWithoutSDA> newc(contc->convertToInt());
+-      ret=static_cast<MEDFileIntFieldMultiTS *>(MEDFileAnyTypeFieldMultiTS::BuildNewInstanceFromContent((MEDFileIntFieldMultiTSWithoutSDA *)newc));
+-    }
+-  else
+-    ret=MEDFileIntFieldMultiTS::New();
+-  if(isDeepCpyGlobs)
+-    ret->deepCpyGlobs(*this);
+-  else
+-    ret->shallowCpyGlobs(*this);
+-  return ret.retn();
+-}
+-
+-MEDFileFieldMultiTS::MEDFileFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms)
+-try:MEDFileTemplateFieldMultiTS<double>(fid,loadAll,ms)
+-{
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{ throw e; }
+-
+-MEDFileFieldMultiTS::MEDFileFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
+-try:MEDFileTemplateFieldMultiTS<double>(fid,fieldName,loadAll,ms,entities)
+-{
+-}
+-catch(INTERP_KERNEL::Exception& e)
+-{ throw e; }
+-
+-MEDFileFieldMultiTS::MEDFileFieldMultiTS(const MEDFileFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent):MEDFileTemplateFieldMultiTS<double>(other,shallowCopyOfContent)
+-{
+-}
+-
+-std::vector< std::vector<DataArrayDouble *> > MEDFileFieldMultiTS::getFieldSplitedByType2(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
+-{
+-  return contentNotNull()->getFieldSplitedByType2(iteration,order,mname,types,typesF,pfls,locs);
+-}
+-
+-//= MEDFileAnyTypeFieldMultiTSIterator
+-
+-MEDFileAnyTypeFieldMultiTSIterator::MEDFileAnyTypeFieldMultiTSIterator(MEDFileAnyTypeFieldMultiTS *fmts):_fmts(fmts),_iter_id(0),_nb_iter(0)
+-{
+-  if(fmts)
+-    {
+-      fmts->incrRef();
+-      _nb_iter=fmts->getNumberOfTS();
+-    }
+-}
+-
+-MEDFileAnyTypeFieldMultiTSIterator::~MEDFileAnyTypeFieldMultiTSIterator() 
+-{
+-}
+-
+-MEDFileAnyTypeField1TS *MEDFileAnyTypeFieldMultiTSIterator::nextt()
+-{
+-  if(_iter_id<_nb_iter)
+-    {
+-      MEDFileAnyTypeFieldMultiTS *fmts(_fmts);
+-      if(fmts)
+-        return fmts->getTimeStepAtPos(_iter_id++);
+-      else
+-        return 0;
+-    }
+-  else
+-    return 0;
+-}
+-
+-//= MEDFileIntFieldMultiTS
+-
+ //= MEDFileFields
+ MEDFileFields *MEDFileFields::New()
+@@ -9187,11 +276,19 @@
+             _fields[i]=MEDFileIntFieldMultiTSWithoutSDA::New(fid,fieldName,meshName,typcha,infos,nbOfStep,dtunit,loadAll,ms,entities);
+             break;
+           }
+-        case MED_NODE://6432
++        case MED_FLOAT32:
+           {
+             _fields[i]=MEDFileFloatFieldMultiTSWithoutSDA::New(fid,fieldName,meshName,typcha,infos,nbOfStep,dtunit,loadAll,ms,entities);
+             break;
+           }
++        case MED_INT:
++          {
++            if(sizeof(med_int)==sizeof(int))
++              {
++                _fields[i]=MEDFileIntFieldMultiTSWithoutSDA::New(fid,fieldName,meshName,typcha,infos,nbOfStep,dtunit,loadAll,ms,entities);
++                break;
++              }
++          }
+         default:
+           {
+             std::ostringstream oss; oss << "constructor MEDFileFields(fileName) : file \'" << FileNameFromFID(fid) << "\' at pos #" << i << " field has name \'" << fieldName << "\' but the type of field is not in [MED_FLOAT64, MED_INT32, MED_FLOAT32] !";
+@@ -9282,7 +379,7 @@
+ /*!
+  * This method potentially releases big data arrays if \a this is coming from a file. If \a this has been built from scratch this method will have no effect.
+- * This method is the symetrical method of MEDFileFields::loadArraysIfNecessary.
++ * This method is the symmetrical method of MEDFileFields::loadArraysIfNecessary.
+  * This method is useful to reduce \b safely amount of heap memory necessary for \a this by using MED file as database.
+  * 
+  * \sa MEDFileFields::loadArraysIfNecessary
+@@ -9456,7 +553,7 @@
+  *             This code corresponds to the distribution of types in the corresponding mesh.
+  * \param [in] newCode idem to param \a oldCode except that here the new distribution is given.
+  * \param [in] renumO2N the old to new renumber array.
+- * \return If true a renumbering has been performed. The structure in \a this has been modified. If false, nothing has been done: it is typically the case if \a meshName is not refered by any 
++ * \return If true a renumbering has been performed. The structure in \a this has been modified. If false, nothing has been done: it is typically the case if \a meshName is not referred by any 
+  *         field in \a this.
+  */
+ bool MEDFileFields::renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N)
+@@ -9510,6 +607,235 @@
+       }
+ }
++class PFLData
++{
++public:
++  PFLData():_add_pts_in_pfl(0) { }
++  PFLData(const MCAuto<DataArrayInt>& mat, const MCAuto<DataArrayInt>& pfl, int nbOfNewPts):_matrix(mat),_pfl(pfl),_add_pts_in_pfl(nbOfNewPts) { }
++  std::string getPflName() const { if(_pfl.isNull()) { return std::string(); } else { return _pfl->getName(); } }
++  int getNbOfAddPtsInPfl() const { return _add_pts_in_pfl; }
++  MCAuto<DataArrayInt> getProfile() const { return _pfl; }
++  MCAuto<DataArrayInt> getMatrix() const { return _matrix; }
++private:
++  MCAuto<DataArrayInt> _matrix;
++  MCAuto<DataArrayInt> _pfl;
++  int _add_pts_in_pfl;
++};
++
++class MEDFileFieldLin2QuadVisitor : public MEDFileFieldVisitor
++{
++public:
++  MEDFileFieldLin2QuadVisitor(const MEDFileUMesh *lin, const MEDFileUMesh *quad, const MEDFileFieldGlobsReal *linGlobs, MEDFileFields* outFs):_lin(lin),_quad(quad),_lin_globs(linGlobs),_out_fs(outFs),_gt(INTERP_KERNEL::NORM_ERROR),_1ts_update_requested(false) { }
++  void newFieldEntry(const MEDFileAnyTypeFieldMultiTSWithoutSDA *field) { if(field->getMeshName()!=_lin->getName()) return; _cur_fmts=MEDFileFieldMultiTS::New(); }
++  void endFieldEntry(const MEDFileAnyTypeFieldMultiTSWithoutSDA *field) { if(_cur_fmts.isNotNull()) { if(_cur_fmts->getNumberOfTS()>0) _out_fs->pushField(_cur_fmts); } }
++  //
++  void newTimeStepEntry(const MEDFileAnyTypeField1TSWithoutSDA *ts);
++  void endTimeStepEntry(const MEDFileAnyTypeField1TSWithoutSDA *ts);
++  //
++  void newMeshEntry(const MEDFileFieldPerMesh *fpm);
++  void endMeshEntry(const MEDFileFieldPerMesh *fpm) { }
++  //
++  void newPerMeshPerTypeEntry(const MEDFileFieldPerMeshPerTypeCommon *pmpt);
++  void endPerMeshPerTypeEntry(const MEDFileFieldPerMeshPerTypeCommon *pmpt) { }
++  //
++  void newPerMeshPerTypePerDisc(const MEDFileFieldPerMeshPerTypePerDisc *pmptpd);
++private:
++  void updateData(MEDFileFieldPerMeshPerTypePerDisc *pmtd, int deltaNbNodes);
++private:
++  const MEDFileUMesh *_lin;
++  const MEDFileUMesh *_quad;
++  const MEDFileFieldGlobsReal *_lin_globs;
++  MEDFileFields *_out_fs;
++  MCAuto<MEDFileFieldMultiTS> _cur_fmts;
++  MCAuto<MEDFileField1TS> _cur_f1ts;
++  INTERP_KERNEL::NormalizedCellType _gt;
++  // Info on 1TS modification
++  bool _1ts_update_requested;
++  // Cache of matrix to compute faster the values on newly created points
++  std::map< std::string, PFLData > _cache;
++  std::vector<std::string> _pfls_to_be_updated;
++};
++
++void MEDFileFieldLin2QuadVisitor::newPerMeshPerTypePerDisc(const MEDFileFieldPerMeshPerTypePerDisc *pmptpd)
++{
++  if(_cur_f1ts.isNull())
++    return;
++  if(pmptpd->getType()!=ON_NODES)
++    throw INTERP_KERNEL::Exception("Not managed yet for ON_CELLS ON_GAUSS_NE and ON_GAUSS_PT");
++  _1ts_update_requested=true;
++  MEDFileAnyTypeField1TSWithoutSDA *ct(_cur_f1ts->contentNotNullBase());
++  int locId(pmptpd->getFather()->locIdOfLeaf(pmptpd));
++  MEDFileFieldPerMeshPerTypePerDisc *pmtdToModify(ct->getLeafGivenMeshAndTypeAndLocId(_lin->getName(),_gt,locId));
++  std::string pflName(pmptpd->getProfile());
++  _pfls_to_be_updated.push_back(pflName);
++  std::map< std::string, PFLData >::iterator itCache(_cache.find(pflName));
++  if(itCache!=_cache.end())
++    {
++      updateData(pmtdToModify,(*itCache).second.getNbOfAddPtsInPfl());
++      return ;
++    }
++  MCAuto<DataArrayInt> pfl;
++  if(pflName.empty())
++    pfl=DataArrayInt::Range(0,pmptpd->getNumberOfVals(),1);
++  else
++    pfl=_lin_globs->getProfile(pflName)->deepCopy();
++  //
++  MCAuto<MEDCouplingUMesh> mesh3D(_lin->getMeshAtLevel(0)),mesh3DQuadratic(_quad->getMeshAtLevel(0));
++  MCAuto<DataArrayInt> cellIds(mesh3D->getCellIdsLyingOnNodes(pfl->begin(),pfl->end(),true));
++  MCAuto<MEDCouplingUMesh> mesh3DQuadraticRestricted(mesh3DQuadratic->buildPartOfMySelf(cellIds->begin(),cellIds->end(),true));
++  MCAuto<DataArrayInt> mesh3DQuadraticRestrictedNodeIds(mesh3DQuadraticRestricted->computeFetchedNodeIds());
++  mesh3DQuadraticRestrictedNodeIds->checkMonotonic(true);
++  MCAuto<DataArrayInt> newPtsIds(mesh3DQuadraticRestrictedNodeIds->buildSubstraction(pfl));
++  MCAuto<MEDCoupling1SGTUMesh> allSeg3;
++  {
++    MCAuto<DataArrayInt> a,b,c,d;
++    MCAuto<MEDCouplingUMesh> seg3Tmp(mesh3DQuadraticRestricted->explodeIntoEdges(a,b,c,d));
++    allSeg3=MEDCoupling1SGTUMesh::New(seg3Tmp);
++  }
++  if(allSeg3->getCellModelEnum()!=INTERP_KERNEL::NORM_SEG3)
++    throw INTERP_KERNEL::Exception("MEDFileFieldLin2QuadVisitor::newPerMeshPerTypePerDisc : invalid situation where SEG3 expected !");
++  MCAuto<DataArrayInt> midPts,cellSeg3Ids,matrix;
++  {
++    DataArrayInt *nodeConn(allSeg3->getNodalConnectivity());
++    nodeConn->rearrange(3);
++    {
++      std::vector<int> v(1,2);
++      midPts=nodeConn->keepSelectedComponents(v);
++    }
++    cellSeg3Ids=DataArrayInt::FindPermutationFromFirstToSecond(midPts,newPtsIds);
++    {
++      std::vector<int> v(2); v[0]=0; v[1]=1;
++      MCAuto<DataArrayInt> tmp(nodeConn->keepSelectedComponents(v));
++      matrix=tmp->selectByTupleId(cellSeg3Ids->begin(),cellSeg3Ids->end());
++    }
++    nodeConn->rearrange(1);
++  }
++  MCAuto<DataArrayInt> pflq;
++  if(!pflName.empty())
++    {
++      std::vector<const DataArrayInt *> vs(2);
++      vs[0]=pfl; vs[1]=newPtsIds;
++      pflq=DataArrayInt::Aggregate(vs);
++      pflq->setName(pflName);
++    }
++  PFLData pdata(matrix,pflq,newPtsIds->getNumberOfTuples());
++  _cache[pflName]=pdata;
++  updateData(pmtdToModify,pdata.getNbOfAddPtsInPfl());
++}
++
++void MEDFileFieldLin2QuadVisitor::updateData(MEDFileFieldPerMeshPerTypePerDisc *pmtd, int deltaNbNodes)
++{
++  pmtd->incrementNbOfVals(deltaNbNodes);
++}
++
++void MEDFileFieldLin2QuadVisitor::newPerMeshPerTypeEntry(const MEDFileFieldPerMeshPerTypeCommon *pmpt)
++{
++  const MEDFileFieldPerMeshPerType *pmpt2(dynamic_cast<const MEDFileFieldPerMeshPerType *>(pmpt));
++  if(!pmpt2)
++    throw INTERP_KERNEL::Exception("MEDFileFieldLin2QuadVisitor::newPerMeshPerTypeEntry : not managed for structure elements !");
++  if(pmpt2->getNumberOfLoc()!=1)
++    throw INTERP_KERNEL::Exception("MEDFileFieldLin2QuadVisitor::newPerMeshPerTypeEntry : not managed for multi discr per timestep !");
++  _gt=pmpt->getGeoType();
++}
++
++void MEDFileFieldLin2QuadVisitor::newMeshEntry(const MEDFileFieldPerMesh *fpm)
++{
++  if(fpm->getMeshName()!=_lin->getName())
++    throw INTERP_KERNEL::Exception("MEDFileFieldLin2QuadVisitor::newMeshEntry : mismatch into meshName !");
++}
++
++void MEDFileFieldLin2QuadVisitor::newTimeStepEntry(const MEDFileAnyTypeField1TSWithoutSDA *ts)
++{
++  _1ts_update_requested=false; _pfls_to_be_updated.clear();
++  if(!ts)
++    return ;
++  const MEDFileField1TSWithoutSDA *tsd(dynamic_cast<const MEDFileField1TSWithoutSDA *>(ts));
++  if(!tsd)
++    return ;
++  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> contentCpy(ts->deepCopy());
++  MCAuto<MEDFileField1TSWithoutSDA> contentCpy2(DynamicCastSafe<MEDFileAnyTypeField1TSWithoutSDA,MEDFileField1TSWithoutSDA>(contentCpy));
++  if(contentCpy2.isNull())
++    return;
++  _cur_f1ts=MEDFileField1TS::New(*contentCpy2,true);
++  _cur_f1ts->deepCpyGlobs(*_lin_globs);
++}
++
++void MEDFileFieldLin2QuadVisitor::endTimeStepEntry(const MEDFileAnyTypeField1TSWithoutSDA *ts)
++{
++  if(_cur_f1ts.isNull())
++    return ;
++  if(_1ts_update_requested)
++    {
++      MCAuto<DataArrayInt> matrix,oldPfl;
++      for(std::vector<std::string>::const_iterator it=_pfls_to_be_updated.begin();it!=_pfls_to_be_updated.end();it++)
++        {
++          std::map< std::string, PFLData >::const_iterator it2(_cache.find(*it));
++          if(it2==_cache.end())
++            throw INTERP_KERNEL::Exception("MEDFileFieldLin2QuadVisitor::endTimeStepEntry : invalid situation !");
++          matrix=(*it2).second.getMatrix();
++          if((*it).empty())
++            continue;
++          int locId(_cur_f1ts->getProfileId(*it));
++          oldPfl.takeRef(_cur_f1ts->getProfile(*it));
++          {
++            std::vector<int> locToKill(1,locId);
++            _cur_f1ts->killProfileIds(locToKill);
++          }
++          _cur_f1ts->appendProfile((*it2).second.getProfile());
++        }
++      DataArrayDouble *arr(_cur_f1ts->getUndergroundDataArray());
++      MCAuto<DataArrayDouble> res;
++      {
++        std::vector<int> v(1,0),v2(1,1);
++        MCAuto<DataArrayInt> pts0(matrix->keepSelectedComponents(v));
++        MCAuto<DataArrayInt> pts1(matrix->keepSelectedComponents(v2));
++        if(oldPfl.isNotNull())
++          {
++            pts0=oldPfl->findIdForEach(pts0->begin(),pts0->end());
++            pts1=oldPfl->findIdForEach(pts1->begin(),pts1->end());
++          }
++        MCAuto<DataArrayDouble> part0(arr->selectByTupleId(*pts0));
++        MCAuto<DataArrayDouble> part1(arr->selectByTupleId(*pts1));
++        res=DataArrayDouble::Add(part0,part1);
++        res->applyLin(0.5,0.);
++      }
++      res=DataArrayDouble::Aggregate(arr,res);
++      _cur_f1ts->setArray(res);
++    }
++  if(_cur_fmts.isNotNull())
++    { _cur_fmts->pushBackTimeStep(_cur_f1ts); }
++  _1ts_update_requested=false;
++}
++
++/*!
++ * \a newQuad is expected to be the result of MEDFileUMesh::linearToQuadratic of \a oldLin
++ */
++MCAuto<MEDFileFields> MEDFileFields::linearToQuadratic(const MEDFileMeshes *oldLin, const MEDFileMeshes *newQuad) const
++{
++  if(!oldLin || !newQuad)
++    throw INTERP_KERNEL::Exception("MEDFileFields::linearToQuadratic : input meshes must be non NULL !");
++  MCAuto<MEDFileFields> ret(MEDFileFields::New());
++  for(int i=0;i<oldLin->getNumberOfMeshes();i++)
++    {
++      MEDFileMesh *mm(oldLin->getMeshAtPos(i));
++      if(!mm)
++        continue;
++      MEDFileUMesh *mmu(dynamic_cast<MEDFileUMesh *>(mm));
++      if(!mmu)
++        continue;
++      MEDFileMesh *mmq(newQuad->getMeshWithName(mmu->getName()));
++      MEDFileUMesh *mmqu(dynamic_cast<MEDFileUMesh *>(mmq));
++      if(!mmqu)
++        {
++          std::ostringstream oss; oss << "MEDFileFields::linearToQuadratic : mismatch of name between input meshes for name \"" << mmu->getName() << "\"";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      MEDFileFieldLin2QuadVisitor vis(mmu,mmqu,this,ret);
++      accept(vis);
++    }
++  return ret;
++}
++
+ MEDFileAnyTypeFieldMultiTS *MEDFileFields::getFieldAtPos(int i) const
+ {
+   if(i<0 || i>=(int)_fields.size())
+@@ -9523,13 +849,16 @@
+   MCAuto<MEDFileAnyTypeFieldMultiTS> ret;
+   const MEDFileFieldMultiTSWithoutSDA *fmtsC(dynamic_cast<const MEDFileFieldMultiTSWithoutSDA *>(fmts));
+   const MEDFileIntFieldMultiTSWithoutSDA *fmtsC2(dynamic_cast<const MEDFileIntFieldMultiTSWithoutSDA *>(fmts));
++  const MEDFileFloatFieldMultiTSWithoutSDA *fmtsC3(dynamic_cast<const MEDFileFloatFieldMultiTSWithoutSDA *>(fmts));
+   if(fmtsC)
+     ret=MEDFileFieldMultiTS::New(*fmtsC,false);
+   else if(fmtsC2)
+     ret=MEDFileIntFieldMultiTS::New(*fmtsC2,false);
++  else if(fmtsC3)
++    ret=MEDFileFloatFieldMultiTS::New(*fmtsC3,false);
+   else
+     {
+-      std::ostringstream oss; oss << "MEDFileFields::getFieldAtPos : At pos #" << i << " field is neither double (FLOAT64) nor integer (INT32) !";
++      std::ostringstream oss; oss << "MEDFileFields::getFieldAtPos : At pos #" << i << " field is neither double (FLOAT64) nor float (FLOAT32) nor integer (INT32) !";
+       throw INTERP_KERNEL::Exception(oss.str());
+     }
+   ret->shallowCpyGlobs(*this);
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileFieldGlobs.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileFieldGlobs.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileFieldGlobs.cxx        1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileFieldGlobs.cxx        2018-04-19 17:25:17.743797475 +0200
+@@ -0,0 +1,1279 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++#include "MEDFileFieldGlobs.hxx"
++#include "MEDFileField.txx"
++#include "MEDFileMesh.hxx"
++#include "MEDLoaderBase.hxx"
++#include "MEDLoaderTraits.hxx"
++#include "MEDFileSafeCaller.txx"
++#include "MEDFileFieldOverView.hxx"
++#include "MEDFileBlowStrEltUp.hxx"
++#include "MEDFileFieldVisitor.hxx"
++
++#include "MEDCouplingFieldDiscretization.hxx"
++#include "MCType.hxx"
++
++#include "InterpKernelAutoPtr.hxx"
++#include "CellModel.hxx"
++
++#include <algorithm>
++#include <iterator>
++
++using namespace MEDCoupling;
++
++void MEDFileFieldGlobs::loadProfileInFile(med_idt fid, int id, const std::string& pflName)
++{
++  if(id>=(int)_pfls.size())
++    _pfls.resize(id+1);
++  _pfls[id]=DataArrayInt::New();
++  int lgth(MEDprofileSizeByName(fid,pflName.c_str()));
++  _pfls[id]->setName(pflName);
++  _pfls[id]->alloc(lgth,1);
++  MEDFILESAFECALLERRD0(MEDprofileRd,(fid,pflName.c_str(),_pfls[id]->getPointer()));
++  _pfls[id]->applyLin(1,-1,0);//Converting into C format
++}
++
++void MEDFileFieldGlobs::loadProfileInFile(med_idt fid, int i)
++{
++  INTERP_KERNEL::AutoPtr<char> pflName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
++  int sz;
++  MEDFILESAFECALLERRD0(MEDprofileInfo,(fid,i+1,pflName,&sz));
++  std::string pflCpp=MEDLoaderBase::buildStringFromFortran(pflName,MED_NAME_SIZE);
++  if(i>=(int)_pfls.size())
++    _pfls.resize(i+1);
++  _pfls[i]=DataArrayInt::New();
++  _pfls[i]->alloc(sz,1);
++  _pfls[i]->setName(pflCpp.c_str());
++  MEDFILESAFECALLERRD0(MEDprofileRd,(fid,pflName,_pfls[i]->getPointer()));
++  _pfls[i]->applyLin(1,-1,0);//Converting into C format
++}
++
++void MEDFileFieldGlobs::writeGlobals(med_idt fid, const MEDFileWritable& opt) const
++{
++  int nbOfPfls=_pfls.size();
++  for(int i=0;i<nbOfPfls;i++)
++    {
++      MCAuto<DataArrayInt> cpy=_pfls[i]->deepCopy();
++      cpy->applyLin(1,1,0);
++      INTERP_KERNEL::AutoPtr<char> pflName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
++      MEDLoaderBase::safeStrCpy(_pfls[i]->getName().c_str(),MED_NAME_SIZE,pflName,opt.getTooLongStrPolicy());
++      MEDFILESAFECALLERWR0(MEDprofileWr,(fid,pflName,_pfls[i]->getNumberOfTuples(),cpy->getConstPointer()));
++    }
++  //
++  int nbOfLocs=_locs.size();
++  for(int i=0;i<nbOfLocs;i++)
++    _locs[i]->writeLL(fid);
++}
++
++void MEDFileFieldGlobs::appendGlobs(const MEDFileFieldGlobs& other, double eps)
++{
++  std::vector<std::string> pfls=getPfls();
++  for(std::vector< MCAuto<DataArrayInt> >::const_iterator it=other._pfls.begin();it!=other._pfls.end();it++)
++    {
++      std::vector<std::string>::iterator it2=std::find(pfls.begin(),pfls.end(),(*it)->getName());
++      if(it2==pfls.end())
++        {
++          _pfls.push_back(*it);
++        }
++      else
++        {
++          int id=std::distance(pfls.begin(),it2);
++          if(!(*it)->isEqual(*_pfls[id]))
++            {
++              std::ostringstream oss; oss << "MEDFileFieldGlobs::appendGlobs : Profile \"" << (*it)->getName() << "\" already exists and is different from those expecting to be append !";
++              throw INTERP_KERNEL::Exception(oss.str());
++            }
++        }
++    }
++  std::vector<std::string> locs=getLocs();
++  for(std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=other._locs.begin();it!=other._locs.end();it++)
++    {
++      std::vector<std::string>::iterator it2=std::find(locs.begin(),locs.end(),(*it)->getName());
++      if(it2==locs.end())
++        {
++          _locs.push_back(*it);
++        }
++      else
++        {
++          int id=std::distance(locs.begin(),it2);
++          if(!(*it)->isEqual(*_locs[id],eps))
++            {
++              std::ostringstream oss; oss << "MEDFileFieldGlobs::appendGlobs : Localization \"" << (*it)->getName() << "\" already exists and is different from those expecting to be append !";
++              throw INTERP_KERNEL::Exception(oss.str());
++            }
++        }
++    }
++}
++
++void MEDFileFieldGlobs::checkGlobsPflsPartCoherency(const std::vector<std::string>& pflsUsed) const
++{
++  for(std::vector<std::string>::const_iterator it=pflsUsed.begin();it!=pflsUsed.end();it++)
++    getProfile((*it).c_str());
++}
++
++void MEDFileFieldGlobs::checkGlobsLocsPartCoherency(const std::vector<std::string>& locsUsed) const
++{
++  for(std::vector<std::string>::const_iterator it=locsUsed.begin();it!=locsUsed.end();it++)
++    getLocalization((*it).c_str());
++}
++
++void MEDFileFieldGlobs::loadGlobals(med_idt fid, const MEDFileFieldGlobsReal& real)
++{
++  std::vector<std::string> profiles=real.getPflsReallyUsed();
++  int sz=profiles.size();
++  _pfls.resize(sz);
++  for(int i=0;i<sz;i++)
++    loadProfileInFile(fid,i,profiles[i].c_str());
++  //
++  std::vector<std::string> locs=real.getLocsReallyUsed();
++  sz=locs.size();
++  _locs.resize(sz);
++  for(int i=0;i<sz;i++)
++    _locs[i]=MEDFileFieldLoc::New(fid,locs[i].c_str());
++}
++
++void MEDFileFieldGlobs::loadAllGlobals(med_idt fid, const MEDFileEntities *entities)
++{
++  int nProfil=MEDnProfile(fid);
++  for(int i=0;i<nProfil;i++)
++    loadProfileInFile(fid,i);
++  int sz=MEDnLocalization(fid);
++  _locs.resize(sz);
++  for(int i=0;i<sz;i++)
++    {
++      _locs[i]=MEDFileFieldLoc::New(fid,i,entities);
++    }
++}
++
++MEDFileFieldGlobs *MEDFileFieldGlobs::New(med_idt fid)
++{
++  return new MEDFileFieldGlobs(fid);
++}
++
++MEDFileFieldGlobs *MEDFileFieldGlobs::New()
++{
++  return new MEDFileFieldGlobs;
++}
++
++std::size_t MEDFileFieldGlobs::getHeapMemorySizeWithoutChildren() const
++{
++  return _file_name.capacity()+_pfls.capacity()*sizeof(MCAuto<DataArrayInt>)+_locs.capacity()*sizeof(MCAuto<MEDFileFieldLoc>);
++}
++
++std::vector<const BigMemoryObject *> MEDFileFieldGlobs::getDirectChildrenWithNull() const
++{
++  std::vector<const BigMemoryObject *> ret;
++  for(std::vector< MCAuto< DataArrayInt > >::const_iterator it=_pfls.begin();it!=_pfls.end();it++)
++    ret.push_back((const DataArrayInt *)*it);
++  for(std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=_locs.begin();it!=_locs.end();it++)
++    ret.push_back((const MEDFileFieldLoc *)*it);
++  return ret;
++}
++
++MEDFileFieldGlobs *MEDFileFieldGlobs::deepCopy() const
++{
++  MCAuto<MEDFileFieldGlobs> ret=new MEDFileFieldGlobs(*this);
++  std::size_t i=0;
++  for(std::vector< MCAuto<DataArrayInt> >::const_iterator it=_pfls.begin();it!=_pfls.end();it++,i++)
++    {
++      if((const DataArrayInt *)*it)
++        ret->_pfls[i]=(*it)->deepCopy();
++    }
++  i=0;
++  for(std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=_locs.begin();it!=_locs.end();it++,i++)
++    {
++      if((const MEDFileFieldLoc*)*it)
++        ret->_locs[i]=(*it)->deepCopy();
++    }
++  return ret.retn();
++}
++
++/*!
++ * \throw if a profile in \a pfls in not in \a this.
++ * \throw if a localization in \a locs in not in \a this.
++ * \sa MEDFileFieldGlobs::deepCpyPart
++ */
++MEDFileFieldGlobs *MEDFileFieldGlobs::shallowCpyPart(const std::vector<std::string>& pfls, const std::vector<std::string>& locs) const
++{
++  MCAuto<MEDFileFieldGlobs> ret=MEDFileFieldGlobs::New();
++  for(std::vector<std::string>::const_iterator it1=pfls.begin();it1!=pfls.end();it1++)
++    {
++      DataArrayInt *pfl=const_cast<DataArrayInt *>(getProfile((*it1).c_str()));
++      if(!pfl)
++        throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::shallowCpyPart : internal error ! pfl null !");
++      pfl->incrRef();
++      MCAuto<DataArrayInt> pfl2(pfl);
++      ret->_pfls.push_back(pfl2);
++    }
++  for(std::vector<std::string>::const_iterator it2=locs.begin();it2!=locs.end();it2++)
++    {
++      MEDFileFieldLoc *loc=const_cast<MEDFileFieldLoc *>(&getLocalization((*it2).c_str()));
++      if(!loc)
++        throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::shallowCpyPart : internal error ! loc null !");
++      loc->incrRef();
++      MCAuto<MEDFileFieldLoc> loc2(loc);
++      ret->_locs.push_back(loc2);
++    }
++  ret->setFileName(getFileName());
++  return ret.retn();
++}
++
++/*!
++ * \throw if a profile in \a pfls in not in \a this.
++ * \throw if a localization in \a locs in not in \a this.
++ * \sa MEDFileFieldGlobs::shallowCpyPart
++ */
++MEDFileFieldGlobs *MEDFileFieldGlobs::deepCpyPart(const std::vector<std::string>& pfls, const std::vector<std::string>& locs) const
++{
++  MCAuto<MEDFileFieldGlobs> ret=MEDFileFieldGlobs::New();
++  for(std::vector<std::string>::const_iterator it1=pfls.begin();it1!=pfls.end();it1++)
++    {
++      DataArrayInt *pfl=const_cast<DataArrayInt *>(getProfile((*it1).c_str()));
++      if(!pfl)
++        throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::deepCpyPart : internal error ! pfl null !");
++      ret->_pfls.push_back(pfl->deepCopy());
++    }
++  for(std::vector<std::string>::const_iterator it2=locs.begin();it2!=locs.end();it2++)
++    {
++      MEDFileFieldLoc *loc=const_cast<MEDFileFieldLoc *>(&getLocalization((*it2).c_str()));
++      if(!loc)
++        throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::deepCpyPart : internal error ! loc null !");
++      ret->_locs.push_back(loc->deepCopy());
++    }
++  ret->setFileName(getFileName());
++  return ret.retn();
++}
++
++MEDFileFieldGlobs::MEDFileFieldGlobs(med_idt fid):_file_name(MEDFileWritable::FileNameFromFID(fid))
++{
++}
++
++MEDFileFieldGlobs::MEDFileFieldGlobs()
++{
++}
++
++MEDFileFieldGlobs::~MEDFileFieldGlobs()
++{
++}
++
++void MEDFileFieldGlobs::simpleRepr(std::ostream& oss) const
++{
++  oss << "Profiles :\n";
++  std::size_t n=_pfls.size();
++  for(std::size_t i=0;i<n;i++)
++    {
++      oss << "  - #" << i << " ";
++      const DataArrayInt *pfl=_pfls[i];
++      if(pfl)
++        oss << "\"" << pfl->getName() << "\"\n";
++      else
++        oss << "EMPTY !\n";
++    }
++  n=_locs.size();
++  oss << "Localizations :\n";
++  for(std::size_t i=0;i<n;i++)
++    {
++      oss << "  - #" << i << " ";
++      const MEDFileFieldLoc *loc=_locs[i];
++      if(loc)
++        loc->simpleRepr(oss);
++      else
++        oss<< "EMPTY !\n";
++    }
++}
++
++void MEDFileFieldGlobs::changePflsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< MCAuto<DataArrayInt> >::iterator it=_pfls.begin();it!=_pfls.end();it++)
++    {
++      DataArrayInt *elt(*it);
++      if(elt)
++        {
++          std::string name(elt->getName());
++          for(std::vector< std::pair<std::vector<std::string>, std::string > >::const_iterator it2=mapOfModif.begin();it2!=mapOfModif.end();it2++)
++            {
++              if(std::find((*it2).first.begin(),(*it2).first.end(),name)!=(*it2).first.end())
++                {
++                  elt->setName((*it2).second.c_str());
++                  return;
++                }
++            }
++        }
++    }
++}
++
++void MEDFileFieldGlobs::changeLocsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< MCAuto<MEDFileFieldLoc> >::iterator it=_locs.begin();it!=_locs.end();it++)
++    {
++      MEDFileFieldLoc *elt(*it);
++      if(elt)
++        {
++          std::string name(elt->getName());
++          for(std::vector< std::pair<std::vector<std::string>, std::string > >::const_iterator it2=mapOfModif.begin();it2!=mapOfModif.end();it2++)
++            {
++              if(std::find((*it2).first.begin(),(*it2).first.end(),name)!=(*it2).first.end())
++                {
++                  elt->setName((*it2).second.c_str());
++                  return;
++                }
++            }
++        }
++    }
++}
++
++int MEDFileFieldGlobs::getNbOfGaussPtPerCell(int locId) const
++{
++  if(locId<0 || locId>=(int)_locs.size())
++    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::getNbOfGaussPtPerCell : Invalid localization id !");
++  return _locs[locId]->getNbOfGaussPtPerCell();
++}
++
++const MEDFileFieldLoc& MEDFileFieldGlobs::getLocalization(const std::string& locName) const
++{
++  return getLocalizationFromId(getLocalizationId(locName));
++}
++
++const MEDFileFieldLoc& MEDFileFieldGlobs::getLocalizationFromId(int locId) const
++{
++  if(locId<0 || locId>=(int)_locs.size())
++    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::getLocalizationFromId : Invalid localization id !");
++  return *_locs[locId];
++}
++
++/// @cond INTERNAL
++namespace MEDCouplingImpl
++{
++  class LocFinder
++  {
++  public:
++    LocFinder(const std::string& loc):_loc(loc) { }
++    bool operator() (const MCAuto<MEDFileFieldLoc>& loc) { return loc->isName(_loc); }
++  private:
++    const std::string &_loc;
++  };
++
++  class PflFinder
++  {
++  public:
++    PflFinder(const std::string& pfl):_pfl(pfl) { }
++    bool operator() (const MCAuto<DataArrayInt>& loc) { return loc->getName()==_pfl; }
++  private:
++    const std::string _pfl;
++  };
++}
++/// @endcond
++
++int MEDFileFieldGlobs::getLocalizationId(const std::string& loc) const
++{
++  std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=std::find_if(_locs.begin(),_locs.end(),MEDCouplingImpl::LocFinder(loc));
++  if(it==_locs.end())
++    {
++      std::ostringstream oss; oss << "MEDFileFieldGlobs::getLocalisationId : no such localisation name : \"" << loc << "\" Possible localizations are : ";
++      for(it=_locs.begin();it!=_locs.end();it++)
++        oss << "\"" << (*it)->getName() << "\", ";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  return std::distance(_locs.begin(),it);
++}
++
++int MEDFileFieldGlobs::getProfileId(const std::string& pfl) const
++{
++  std::vector< MCAuto<DataArrayInt> >::const_iterator it=std::find_if(_pfls.begin(),_pfls.end(),MEDCouplingImpl::PflFinder(pfl));
++  if(it==_pfls.end())
++    {
++      std::ostringstream oss; oss << "MEDFileFieldGlobs::getProfileId : no such profile name : \"" << pfl << "\" Possible localizations are : ";
++      for(it=_pfls.begin();it!=_pfls.end();it++)
++        oss << "\"" << (*it)->getName() << "\", ";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  return std::distance(_pfls.begin(),it);
++}
++
++/*!
++ * The returned value is never null.
++ */
++const DataArrayInt *MEDFileFieldGlobs::getProfile(const std::string& pflName) const
++{
++  return getProfileFromId(getProfileId(pflName));
++}
++
++const DataArrayInt *MEDFileFieldGlobs::getProfileFromId(int pflId) const
++{
++  if(pflId<0 || pflId>=(int)_pfls.size())
++    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::getProfileFromId : Invalid profile id !");
++  return _pfls[pflId];
++}
++
++MEDFileFieldLoc& MEDFileFieldGlobs::getLocalizationFromId(int locId)
++{
++  if(locId<0 || locId>=(int)_locs.size())
++    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::getLocalizationFromId : Invalid localization id !");
++  return *_locs[locId];
++}
++
++MEDFileFieldLoc& MEDFileFieldGlobs::getLocalization(const std::string& locName)
++{
++  return getLocalizationFromId(getLocalizationId(locName));
++}
++
++/*!
++ * The returned value is never null. Borrowed reference returned.
++ */
++DataArrayInt *MEDFileFieldGlobs::getProfile(const std::string& pflName)
++{
++  std::string pflNameCpp(pflName);
++  std::vector< MCAuto<DataArrayInt> >::iterator it=std::find_if(_pfls.begin(),_pfls.end(),MEDCouplingImpl::PflFinder(pflNameCpp));
++  if(it==_pfls.end())
++    {
++      std::ostringstream oss; oss << "MEDFileFieldGlobs::getProfile: no such profile name : \"" << pflNameCpp << "\" Possible profiles are : ";
++      for(it=_pfls.begin();it!=_pfls.end();it++)
++        oss << "\"" << (*it)->getName() << "\", ";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  return *it;
++}
++
++DataArrayInt *MEDFileFieldGlobs::getProfileFromId(int pflId)
++{
++  if(pflId<0 || pflId>=(int)_pfls.size())
++    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::getProfileFromId : Invalid profile id !");
++  return _pfls[pflId];
++}
++
++void MEDFileFieldGlobs::killProfileIds(const std::vector<int>& pflIds)
++{
++  std::vector< MCAuto<DataArrayInt> > newPfls;
++  int i=0;
++  for(std::vector< MCAuto<DataArrayInt> >::const_iterator it=_pfls.begin();it!=_pfls.end();it++,i++)
++    {
++      if(std::find(pflIds.begin(),pflIds.end(),i)==pflIds.end())
++        newPfls.push_back(*it);
++    }
++  _pfls=newPfls;
++}
++
++void MEDFileFieldGlobs::killLocalizationIds(const std::vector<int>& locIds)
++{
++  std::vector< MCAuto<MEDFileFieldLoc> > newLocs;
++  int i=0;
++  for(std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=_locs.begin();it!=_locs.end();it++,i++)
++    {
++      if(std::find(locIds.begin(),locIds.end(),i)==locIds.end())
++        newLocs.push_back(*it);
++    }
++  _locs=newLocs;
++}
++
++void MEDFileFieldGlobs::killStructureElementsInGlobs()
++{
++  std::vector< MCAuto<MEDFileFieldLoc> > newLocs;
++  for(std::vector< MCAuto<MEDFileFieldLoc> >::iterator it=_locs.begin();it!=_locs.end();it++)
++    {
++      if((*it).isNull())
++        continue;
++      if(!(*it)->isOnStructureElement())
++        newLocs.push_back(*it);
++    }
++  _locs=newLocs;
++}
++
++std::vector<std::string> MEDFileFieldGlobs::getPfls() const
++{
++  int sz=_pfls.size();
++  std::vector<std::string> ret(sz);
++  for(int i=0;i<sz;i++)
++    ret[i]=_pfls[i]->getName();
++  return ret;
++}
++
++std::vector<std::string> MEDFileFieldGlobs::getLocs() const
++{
++  int sz=_locs.size();
++  std::vector<std::string> ret(sz);
++  for(int i=0;i<sz;i++)
++    ret[i]=_locs[i]->getName();
++  return ret;
++}
++
++bool MEDFileFieldGlobs::existsPfl(const std::string& pflName) const
++{
++  std::vector<std::string> v=getPfls();
++  std::string s(pflName);
++  return std::find(v.begin(),v.end(),s)!=v.end();
++}
++
++bool MEDFileFieldGlobs::existsLoc(const std::string& locName) const
++{
++  std::vector<std::string> v=getLocs();
++  std::string s(locName);
++  return std::find(v.begin(),v.end(),s)!=v.end();
++}
++
++std::vector< std::vector<int> > MEDFileFieldGlobs::whichAreEqualProfiles() const
++{
++  std::map<int,std::vector<int> > m;
++  int i=0;
++  for(std::vector< MCAuto<DataArrayInt> >::const_iterator it=_pfls.begin();it!=_pfls.end();it++,i++)
++    {
++      const DataArrayInt *tmp=(*it);
++      if(tmp)
++        {
++          m[tmp->getHashCode()].push_back(i);
++        }
++    }
++  std::vector< std::vector<int> > ret;
++  for(std::map<int,std::vector<int> >::const_iterator it2=m.begin();it2!=m.end();it2++)
++    {
++      if((*it2).second.size()>1)
++        {
++          std::vector<int> ret0;
++          bool equalityOrNot=false;
++          for(std::vector<int>::const_iterator it3=(*it2).second.begin();it3!=(*it2).second.end();it3++)
++            {
++              std::vector<int>::const_iterator it4=it3; it4++;
++              for(;it4!=(*it2).second.end();it4++)
++                {
++                  if(_pfls[*it3]->isEqualWithoutConsideringStr(*_pfls[*it4]))
++                    {
++                      if(!equalityOrNot)
++                        ret0.push_back(*it3);
++                      ret0.push_back(*it4);
++                      equalityOrNot=true;
++                    }
++                }
++            }
++          if(!ret0.empty())
++            ret.push_back(ret0);
++        }
++    }
++  return ret;
++}
++
++std::vector< std::vector<int> > MEDFileFieldGlobs::whichAreEqualLocs(double eps) const
++{
++  throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::whichAreEqualLocs : no implemented yet ! Sorry !");
++}
++
++void MEDFileFieldGlobs::appendProfile(DataArrayInt *pfl)
++{
++  std::string name(pfl->getName());
++  if(name.empty())
++    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::appendProfile : unsupported profiles with no name !");
++  for(std::vector< MCAuto<DataArrayInt> >::const_iterator it=_pfls.begin();it!=_pfls.end();it++)
++    if(name==(*it)->getName())
++      {
++        if(!pfl->isEqual(*(*it)))
++          {
++            std::ostringstream oss; oss << "MEDFileFieldGlobs::appendProfile : profile \"" << name << "\" already exists and is different from existing !";
++            throw INTERP_KERNEL::Exception(oss.str());
++          }
++      }
++  pfl->incrRef();
++  _pfls.push_back(pfl);
++}
++
++void MEDFileFieldGlobs::appendLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w)
++{
++  std::string name(locName);
++  if(name.empty())
++    throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::appendLoc : unsupported localizations with no name !");
++  MCAuto<MEDFileFieldLoc> obj=MEDFileFieldLoc::New(locName,geoType,refCoo,gsCoo,w);
++  for(std::vector< MCAuto<MEDFileFieldLoc> >::const_iterator it=_locs.begin();it!=_locs.end();it++)
++    if((*it)->isName(locName))
++      {
++        if(!(*it)->isEqual(*obj,1e-12))
++          {
++            std::ostringstream oss; oss << "MEDFileFieldGlobs::appendLoc : localization \"" << name << "\" already exists and is different from existing !";
++            throw INTERP_KERNEL::Exception(oss.str());
++          }
++      }
++  _locs.push_back(obj);
++}
++
++std::string MEDFileFieldGlobs::createNewNameOfPfl() const
++{
++  std::vector<std::string> names=getPfls();
++  return CreateNewNameNotIn("NewPfl_",names);
++}
++
++std::string MEDFileFieldGlobs::createNewNameOfLoc() const
++{
++  std::vector<std::string> names=getLocs();
++  return CreateNewNameNotIn("NewLoc_",names);
++}
++
++std::string MEDFileFieldGlobs::CreateNewNameNotIn(const std::string& prefix, const std::vector<std::string>& namesToAvoid)
++{
++  for(std::size_t sz=0;sz<100000;sz++)
++    {
++      std::ostringstream tryName;
++      tryName << prefix << sz;
++      if(std::find(namesToAvoid.begin(),namesToAvoid.end(),tryName.str())==namesToAvoid.end())
++        return tryName.str();
++    }
++  throw INTERP_KERNEL::Exception("MEDFileFieldGlobs::CreateNewNameNotIn : impossible to create an additional profile limit of 100000 profiles reached !");
++}
++
++/*!
++ * Creates a MEDFileFieldGlobsReal on a given file name. Nothing is read here.
++ *  \param [in] fname - the file name.
++ */
++MEDFileFieldGlobsReal::MEDFileFieldGlobsReal(med_idt fid):_globals(MEDFileFieldGlobs::New(fid))
++{
++}
++
++/*!
++ * Creates an empty MEDFileFieldGlobsReal.
++ */
++MEDFileFieldGlobsReal::MEDFileFieldGlobsReal():_globals(MEDFileFieldGlobs::New())
++{
++}
++
++std::size_t MEDFileFieldGlobsReal::getHeapMemorySizeWithoutChildren() const
++{
++  return 0;
++}
++
++std::vector<const BigMemoryObject *> MEDFileFieldGlobsReal::getDirectChildrenWithNull() const
++{
++  std::vector<const BigMemoryObject *> ret;
++  ret.push_back((const MEDFileFieldGlobs *)_globals);
++  return ret;
++}
++
++/*!
++ * Returns a string describing profiles and Gauss points held in \a this.
++ *  \return std::string - the description string.
++ */
++void MEDFileFieldGlobsReal::simpleReprGlobs(std::ostream& oss) const
++{
++  const MEDFileFieldGlobs *glob=_globals;
++  std::ostringstream oss2; oss2 << glob;
++  std::string stars(oss2.str().length(),'*');
++  oss << "Globals information on fields (at " << oss2.str() << "):" << "\n************************************" << stars  << "\n\n";
++  if(glob)
++    glob->simpleRepr(oss);
++  else
++    oss << "NO GLOBAL INFORMATION !\n";
++}
++
++void MEDFileFieldGlobsReal::resetContent()
++{
++  _globals=MEDFileFieldGlobs::New();
++}
++
++void MEDFileFieldGlobsReal::killStructureElementsInGlobs()
++{
++  contentNotNull()->killStructureElementsInGlobs();
++}
++
++MEDFileFieldGlobsReal::~MEDFileFieldGlobsReal()
++{
++}
++
++/*!
++ * Copies references to profiles and Gauss points from another MEDFileFieldGlobsReal.
++ *  \param [in] other - the other MEDFileFieldGlobsReal to copy data from.
++ */
++void MEDFileFieldGlobsReal::shallowCpyGlobs(const MEDFileFieldGlobsReal& other)
++{
++  _globals=other._globals;
++}
++
++/*!
++ * Copies references to ** only used ** by \a this, profiles and Gauss points from another MEDFileFieldGlobsReal.
++ *  \param [in] other - the other MEDFileFieldGlobsReal to copy data from.
++ */
++void MEDFileFieldGlobsReal::shallowCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other)
++{
++  const MEDFileFieldGlobs *otherg(other._globals);
++  if(!otherg)
++    return ;
++  _globals=otherg->shallowCpyPart(getPflsReallyUsed(),getLocsReallyUsed());
++}
++
++/*!
++ * Copies deeply to ** only used ** by \a this, profiles and Gauss points from another MEDFileFieldGlobsReal.
++ *  \param [in] other - the other MEDFileFieldGlobsReal to copy data from.
++ */
++void MEDFileFieldGlobsReal::deepCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other)
++{
++  const MEDFileFieldGlobs *otherg(other._globals);
++  if(!otherg)
++    return ;
++  _globals=otherg->deepCpyPart(getPflsReallyUsed(),getLocsReallyUsed());
++}
++
++void MEDFileFieldGlobsReal::deepCpyGlobs(const MEDFileFieldGlobsReal& other)
++{
++  _globals=other._globals;
++  if((const MEDFileFieldGlobs *)_globals)
++    _globals=other._globals->deepCopy();
++}
++
++/*!
++ * Adds profiles and Gauss points held by another MEDFileFieldGlobsReal to \a this one.
++ *  \param [in] other - the MEDFileFieldGlobsReal to copy data from.
++ *  \param [in] eps - a precision used to compare Gauss points with same name held by
++ *         \a this and \a other MEDFileFieldGlobsReal.
++ *  \throw If \a this and \a other hold profiles with equal names but different ids.
++ *  \throw If  \a this and \a other hold different Gauss points with equal names.
++ */
++void MEDFileFieldGlobsReal::appendGlobs(const MEDFileFieldGlobsReal& other, double eps)
++{
++  const MEDFileFieldGlobs *thisGlobals(_globals),*otherGlobals(other._globals);
++  if(thisGlobals==otherGlobals)
++    return ;
++  if(!thisGlobals)
++    {
++      _globals=other._globals;
++      return ;
++    }
++  _globals->appendGlobs(*other._globals,eps);
++}
++
++void MEDFileFieldGlobsReal::checkGlobsCoherency() const
++{
++  checkGlobsPflsPartCoherency();
++  checkGlobsLocsPartCoherency();
++}
++
++void MEDFileFieldGlobsReal::checkGlobsPflsPartCoherency() const
++{
++  contentNotNull()->checkGlobsPflsPartCoherency(getPflsReallyUsed());
++}
++
++void MEDFileFieldGlobsReal::checkGlobsLocsPartCoherency() const
++{
++  contentNotNull()->checkGlobsLocsPartCoherency(getLocsReallyUsed());
++}
++
++void MEDFileFieldGlobsReal::loadProfileInFile(med_idt fid, int id, const std::string& pflName)
++{
++  contentNotNull()->loadProfileInFile(fid,id,pflName);
++}
++
++void MEDFileFieldGlobsReal::loadProfileInFile(med_idt fid, int id)
++{
++  contentNotNull()->loadProfileInFile(fid,id);
++}
++
++void MEDFileFieldGlobsReal::loadGlobals(med_idt fid)
++{
++  contentNotNull()->loadGlobals(fid,*this);
++}
++
++void MEDFileFieldGlobsReal::loadAllGlobals(med_idt fid, const MEDFileEntities *entities)
++{
++  contentNotNull()->loadAllGlobals(fid,entities);
++}
++
++void MEDFileFieldGlobsReal::writeGlobals(med_idt fid, const MEDFileWritable& opt) const
++{
++  contentNotNull()->writeGlobals(fid,opt);
++}
++
++/*!
++ * Returns names of all profiles. To get only used profiles call getPflsReallyUsed()
++ * or getPflsReallyUsedMulti().
++ *  \return std::vector<std::string> - a sequence of names of all profiles.
++ */
++std::vector<std::string> MEDFileFieldGlobsReal::getPfls() const
++{
++  return contentNotNull()->getPfls();
++}
++
++/*!
++ * Returns names of all localizations. To get only used localizations call getLocsReallyUsed()
++ * or getLocsReallyUsedMulti().
++ *  \return std::vector<std::string> - a sequence of names of all localizations.
++ */
++std::vector<std::string> MEDFileFieldGlobsReal::getLocs() const
++{
++  return contentNotNull()->getLocs();
++}
++
++/*!
++ * Checks if the profile with a given name exists.
++ *  \param [in] pflName - the profile name of interest.
++ *  \return bool - \c true if the profile named \a pflName exists.
++ */
++bool MEDFileFieldGlobsReal::existsPfl(const std::string& pflName) const
++{
++  return contentNotNull()->existsPfl(pflName);
++}
++
++/*!
++ * Checks if the localization with a given name exists.
++ *  \param [in] locName - the localization name of interest.
++ *  \return bool - \c true if the localization named \a locName exists.
++ */
++bool MEDFileFieldGlobsReal::existsLoc(const std::string& locName) const
++{
++  return contentNotNull()->existsLoc(locName);
++}
++
++std::string MEDFileFieldGlobsReal::createNewNameOfPfl() const
++{
++  return contentNotNull()->createNewNameOfPfl();
++}
++
++std::string MEDFileFieldGlobsReal::createNewNameOfLoc() const
++{
++  return contentNotNull()->createNewNameOfLoc();
++}
++
++/*!
++ * Sets the name of a MED file.
++ *  \param [inout] fileName - the file name.
++ */
++void MEDFileFieldGlobsReal::setFileName(const std::string& fileName)
++{
++  contentNotNull()->setFileName(fileName);
++}
++
++/*!
++ * Finds equal profiles. Two profiles are considered equal if they contain the same ids
++ * in the same order.
++ *  \return std::vector< std::vector<int> > - a sequence of groups of equal profiles.
++ *          Each item of this sequence is a vector containing ids of equal profiles.
++ */
++std::vector< std::vector<int> > MEDFileFieldGlobsReal::whichAreEqualProfiles() const
++{
++  return contentNotNull()->whichAreEqualProfiles();
++}
++
++/*!
++ * Finds equal localizations.
++ *  \param [in] eps - a precision used to compare real values of the localizations.
++ *  \return std::vector< std::vector<int> > - a sequence of groups of equal localizations.
++ *          Each item of this sequence is a vector containing ids of equal localizations.
++ */
++std::vector< std::vector<int> > MEDFileFieldGlobsReal::whichAreEqualLocs(double eps) const
++{
++  return contentNotNull()->whichAreEqualLocs(eps);
++}
++
++/*!
++ * Renames the profiles. References to profiles (a reference is a profile name) are not changed.
++ * \param [in] mapOfModif - a sequence describing required renaming. Each element of
++ *        this sequence is a pair whose 
++ *        - the first item is a vector of profile names to replace by the second item,
++ *        - the second item is a profile name to replace every profile name of the first item.
++ */
++void MEDFileFieldGlobsReal::changePflsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  contentNotNull()->changePflsNamesInStruct(mapOfModif);
++}
++
++/*!
++ * Renames the localizations. References to localizations (a reference is a localization name) are not changed.
++ * \param [in] mapOfModif - a sequence describing required renaming. Each element of
++ *        this sequence is a pair whose 
++ *        - the first item is a vector of localization names to replace by the second item,
++ *        - the second item is a localization name to replace every localization name of the first item.
++ */
++void MEDFileFieldGlobsReal::changeLocsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  contentNotNull()->changeLocsNamesInStruct(mapOfModif);
++}
++
++/*!
++ * Replaces references to some profiles (a reference is a profile name) by references
++ * to other profiles and, contrary to changePflsRefsNamesGen(), renames the profiles
++ * them-selves accordingly. <br>
++ * This method is a generalization of changePflName().
++ * \param [in] mapOfModif - a sequence describing required replacements. Each element of
++ *        this sequence is a pair whose 
++ *        - the first item is a vector of profile names to replace by the second item,
++ *        - the second item is a profile name to replace every profile of the first item.
++ * \sa changePflsRefsNamesGen()
++ * \sa changePflName()
++ */
++void MEDFileFieldGlobsReal::changePflsNames(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  changePflsRefsNamesGen(mapOfModif);
++  changePflsNamesInStruct(mapOfModif);
++}
++
++/*!
++ * Replaces references to some localizations (a reference is a localization name) by references
++ * to other localizations and, contrary to changeLocsRefsNamesGen(), renames the localizations
++ * them-selves accordingly. <br>
++ * This method is a generalization of changeLocName().
++ * \param [in] mapOfModif - a sequence describing required replacements. Each element of
++ *        this sequence is a pair whose 
++ *        - the first item is a vector of localization names to replace by the second item,
++ *        - the second item is a localization name to replace every localization of the first item.
++ * \sa changeLocsRefsNamesGen()
++ * \sa changeLocName()
++ */
++void MEDFileFieldGlobsReal::changeLocsNames(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  changeLocsRefsNamesGen(mapOfModif);
++  changeLocsNamesInStruct(mapOfModif);
++}
++
++/*!
++ * Renames the profile having a given name and updates references to this profile.
++ *  \param [in] oldName - the name of the profile to rename.
++ *  \param [in] newName - a new name of the profile.
++ * \sa changePflsNames().
++ */
++void MEDFileFieldGlobsReal::changePflName(const std::string& oldName, const std::string& newName)
++{
++  std::vector< std::pair<std::vector<std::string>, std::string > > mapOfModif(1);
++  std::pair<std::vector<std::string>, std::string > p(std::vector<std::string>(1,std::string(oldName)),std::string(newName));
++  mapOfModif[0]=p;
++  changePflsNames(mapOfModif);
++}
++
++/*!
++ * Renames the localization having a given name and updates references to this localization.
++ *  \param [in] oldName - the name of the localization to rename.
++ *  \param [in] newName - a new name of the localization.
++ * \sa changeLocsNames().
++ */
++void MEDFileFieldGlobsReal::changeLocName(const std::string& oldName, const std::string& newName)
++{
++  std::vector< std::pair<std::vector<std::string>, std::string > > mapOfModif(1);
++  std::pair<std::vector<std::string>, std::string > p(std::vector<std::string>(1,std::string(oldName)),std::string(newName));
++  mapOfModif[0]=p;
++  changeLocsNames(mapOfModif);
++}
++
++/*!
++ * Removes duplicated profiles. Returns a map used to update references to removed 
++ * profiles via changePflsRefsNamesGen().
++ * Equal profiles are found using whichAreEqualProfiles().
++ *  \return std::vector< std::pair<std::vector<std::string>, std::string > > - 
++ *          a sequence describing the performed replacements of profiles. Each element of
++ *          this sequence is a pair whose
++ *          - the first item is a vector of profile names replaced by the second item,
++ *          - the second item is a profile name replacing every profile of the first item.
++ */
++std::vector< std::pair<std::vector<std::string>, std::string > > MEDFileFieldGlobsReal::zipPflsNames()
++{
++  std::vector< std::vector<int> > pseudoRet=whichAreEqualProfiles();
++  std::vector< std::pair<std::vector<std::string>, std::string > > ret(pseudoRet.size());
++  int i=0;
++  for(std::vector< std::vector<int> >::const_iterator it=pseudoRet.begin();it!=pseudoRet.end();it++,i++)
++    {
++      std::vector< std::string > tmp((*it).size());
++      int j=0;
++      for(std::vector<int>::const_iterator it2=(*it).begin();it2!=(*it).end();it2++,j++)
++        tmp[j]=std::string(getProfileFromId(*it2)->getName());
++      std::pair<std::vector<std::string>, std::string > p(tmp,tmp.front());
++      ret[i]=p;
++      std::vector<int> tmp2((*it).begin()+1,(*it).end());
++      killProfileIds(tmp2);
++    }
++  changePflsRefsNamesGen(ret);
++  return ret;
++}
++
++/*!
++ * Removes duplicated localizations. Returns a map used to update references to removed 
++ * localizations via changeLocsRefsNamesGen().
++ * Equal localizations are found using whichAreEqualLocs().
++ *  \param [in] eps - a precision used to compare real values of the localizations.
++ *  \return std::vector< std::pair<std::vector<std::string>, std::string > > - 
++ *          a sequence describing the performed replacements of localizations. Each element of
++ *          this sequence is a pair whose
++ *          - the first item is a vector of localization names replaced by the second item,
++ *          - the second item is a localization name replacing every localization of the first item.
++ */
++std::vector< std::pair<std::vector<std::string>, std::string > > MEDFileFieldGlobsReal::zipLocsNames(double eps)
++{
++  std::vector< std::vector<int> > pseudoRet=whichAreEqualLocs(eps);
++  std::vector< std::pair<std::vector<std::string>, std::string > > ret(pseudoRet.size());
++  int i=0;
++  for(std::vector< std::vector<int> >::const_iterator it=pseudoRet.begin();it!=pseudoRet.end();it++,i++)
++    {
++      std::vector< std::string > tmp((*it).size());
++      int j=0;
++      for(std::vector<int>::const_iterator it2=(*it).begin();it2!=(*it).end();it2++,j++)
++        tmp[j]=std::string(getLocalizationFromId(*it2).getName());
++      std::pair<std::vector<std::string>, std::string > p(tmp,tmp.front());
++      ret[i]=p;
++      std::vector<int> tmp2((*it).begin()+1,(*it).end());
++      killLocalizationIds(tmp2);
++    }
++  changeLocsRefsNamesGen(ret);
++  return ret;
++}
++
++/*!
++ * Returns number of Gauss points per cell in a given localization.
++ *  \param [in] locId - an id of the localization of interest.
++ *  \return int - the number of the Gauss points per cell.
++ */
++int MEDFileFieldGlobsReal::getNbOfGaussPtPerCell(int locId) const
++{
++  return contentNotNull()->getNbOfGaussPtPerCell(locId);
++}
++
++/*!
++ * Returns an id of a localization by its name.
++ *  \param [in] loc - the localization name of interest.
++ *  \return int - the id of the localization.
++ *  \throw If there is no a localization named \a loc.
++ */
++int MEDFileFieldGlobsReal::getLocalizationId(const std::string& loc) const
++{
++  return contentNotNull()->getLocalizationId(loc);
++}
++
++/*!
++ * Returns an id of a profile by its name.
++ *  \param [in] loc - the profile name of interest.
++ *  \return int - the id of the profile.
++ *  \throw If there is no a profile named \a loc.
++ */
++int MEDFileFieldGlobsReal::getProfileId(const std::string& pfl) const
++{
++  return contentNotNull()->getProfileId(pfl);
++}
++
++/*!
++ * Returns the name of the MED file.
++ *  \return const std::string&  - the MED file name.
++ */
++std::string MEDFileFieldGlobsReal::getFileName() const
++{
++  return contentNotNull()->getFileName();
++}
++
++/*!
++ * Returns a localization object by its name.
++ *  \param [in] locName - the name of the localization of interest.
++ *  \return const MEDFileFieldLoc& - the localization object having the name \a locName.
++ *  \throw If there is no a localization named \a locName.
++ */
++const MEDFileFieldLoc& MEDFileFieldGlobsReal::getLocalization(const std::string& locName) const
++{
++  return contentNotNull()->getLocalization(locName);
++}
++
++/*!
++ * Returns a localization object by its id.
++ *  \param [in] locId - the id of the localization of interest.
++ *  \return const MEDFileFieldLoc& - the localization object having the id \a locId.
++ *  \throw If there is no a localization with id \a locId.
++ */
++const MEDFileFieldLoc& MEDFileFieldGlobsReal::getLocalizationFromId(int locId) const
++{
++  return contentNotNull()->getLocalizationFromId(locId);
++}
++
++/*!
++ * Returns a profile array by its name.
++ *  \param [in] pflName - the name of the profile of interest.
++ *  \return const DataArrayInt * - the profile array having the name \a pflName.
++ *  \throw If there is no a profile named \a pflName.
++ */
++const DataArrayInt *MEDFileFieldGlobsReal::getProfile(const std::string& pflName) const
++{
++  return contentNotNull()->getProfile(pflName);
++}
++
++/*!
++ * Returns a profile array by its id.
++ *  \param [in] pflId - the id of the profile of interest.
++ *  \return const DataArrayInt * - the profile array having the id \a pflId.
++ *  \throw If there is no a profile with id \a pflId.
++ */
++const DataArrayInt *MEDFileFieldGlobsReal::getProfileFromId(int pflId) const
++{
++  return contentNotNull()->getProfileFromId(pflId);
++}
++
++/*!
++ * Returns a localization object, apt for modification, by its id.
++ *  \param [in] locId - the id of the localization of interest.
++ *  \return MEDFileFieldLoc& - a non-const reference to the localization object
++ *          having the id \a locId.
++ *  \throw If there is no a localization with id \a locId.
++ */
++MEDFileFieldLoc& MEDFileFieldGlobsReal::getLocalizationFromId(int locId)
++{
++  return contentNotNull()->getLocalizationFromId(locId);
++}
++
++/*!
++ * Returns a localization object, apt for modification, by its name.
++ *  \param [in] locName - the name of the localization of interest.
++ *  \return MEDFileFieldLoc& - a non-const reference to the localization object
++ *          having the name \a locName.
++ *  \throw If there is no a localization named \a locName.
++ */
++MEDFileFieldLoc& MEDFileFieldGlobsReal::getLocalization(const std::string& locName)
++{
++  return contentNotNull()->getLocalization(locName);
++}
++
++/*!
++ * Returns a profile array, apt for modification, by its name.
++ *  \param [in] pflName - the name of the profile of interest.
++ *  \return DataArrayInt * - Borrowed reference - a non-const pointer to the profile array having the name \a pflName.
++ *  \throw If there is no a profile named \a pflName.
++ */
++DataArrayInt *MEDFileFieldGlobsReal::getProfile(const std::string& pflName)
++{
++  return contentNotNull()->getProfile(pflName);
++}
++
++/*!
++ * Returns a profile array, apt for modification, by its id.
++ *  \param [in] pflId - the id of the profile of interest.
++ *  \return DataArrayInt * - Borrowed reference - a non-const pointer to the profile array having the id \a pflId.
++ *  \throw If there is no a profile with id \a pflId.
++ */
++DataArrayInt *MEDFileFieldGlobsReal::getProfileFromId(int pflId)
++{
++  return contentNotNull()->getProfileFromId(pflId);
++}
++
++/*!
++ * Removes profiles given by their ids. No data is updated to track this removal.
++ *  \param [in] pflIds - a sequence of ids of the profiles to remove.
++ */
++void MEDFileFieldGlobsReal::killProfileIds(const std::vector<int>& pflIds)
++{
++  contentNotNull()->killProfileIds(pflIds);
++}
++
++/*!
++ * Removes localizations given by their ids. No data is updated to track this removal.
++ *  \param [in] locIds - a sequence of ids of the localizations to remove.
++ */
++void MEDFileFieldGlobsReal::killLocalizationIds(const std::vector<int>& locIds)
++{
++  contentNotNull()->killLocalizationIds(locIds);
++}
++
++/*!
++ * Stores a profile array.
++ *  \param [in] pfl - the profile array to store.
++ *  \throw If the name of \a pfl is empty.
++ *  \throw If a profile with the same name as that of \a pfl already exists but contains
++ *         different ids.
++ */
++void MEDFileFieldGlobsReal::appendProfile(DataArrayInt *pfl)
++{
++  contentNotNull()->appendProfile(pfl);
++}
++
++/*!
++ * Adds a new localization of Gauss points.
++ *  \param [in] locName - the name of the new localization.
++ *  \param [in] geoType - a geometrical type of the reference cell.
++ *  \param [in] refCoo - coordinates of points of the reference cell. Size of this vector
++ *         must be \c nbOfNodesPerCell * \c dimOfType.
++ *  \param [in] gsCoo - coordinates of Gauss points on the reference cell. Size of this vector
++ *         must be  _wg_.size() * \c dimOfType.
++ *  \param [in] w - the weights of Gauss points.
++ *  \throw If \a locName is empty.
++ *  \throw If a localization with the name \a locName already exists but is
++ *         different form the new one.
++ */
++void MEDFileFieldGlobsReal::appendLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w)
++{
++  contentNotNull()->appendLoc(locName,geoType,refCoo,gsCoo,w);
++}
++
++MEDFileFieldGlobs *MEDFileFieldGlobsReal::contentNotNull()
++{
++  MEDFileFieldGlobs *g(_globals);
++  if(!g)
++    throw INTERP_KERNEL::Exception("MEDFileFieldGlobsReal::contentNotNull : no content in not const !");
++  return g;
++}
++
++const MEDFileFieldGlobs *MEDFileFieldGlobsReal::contentNotNull() const
++{
++  const MEDFileFieldGlobs *g(_globals);
++  if(!g)
++    throw INTERP_KERNEL::Exception("MEDFileFieldGlobsReal::contentNotNull : no content in const !");
++  return g;
++}
++
++//= MEDFileFieldNameScope
++
++MEDFileFieldNameScope::MEDFileFieldNameScope()
++{
++}
++
++MEDFileFieldNameScope::MEDFileFieldNameScope(const std::string& fieldName, const std::string& meshName):_name(fieldName),_mesh_name(meshName)
++{
++}
++
++/*!
++ * Returns the name of \a this field.
++ *  \return std::string - a string containing the field name.
++ */
++std::string MEDFileFieldNameScope::getName() const
++{
++  return _name;
++}
++
++/*!
++ * Sets name of \a this field
++ *  \param [in] name - the new field name.
++ */
++void MEDFileFieldNameScope::setName(const std::string& fieldName)
++{
++  _name=fieldName;
++}
++
++std::string MEDFileFieldNameScope::getDtUnit() const
++{
++  return _dt_unit;
++}
++
++void MEDFileFieldNameScope::setDtUnit(const std::string& dtUnit)
++{
++  _dt_unit=dtUnit;
++}
++
++void MEDFileFieldNameScope::copyNameScope(const MEDFileFieldNameScope& other)
++{
++  _name=other._name;
++  _mesh_name=other._mesh_name;
++  _dt_unit=other._dt_unit;
++}
++
++/*!
++ * Returns the mesh name.
++ *  \return std::string - a string holding the mesh name.
++ *  \throw If \c _field_per_mesh.empty()
++ */
++std::string MEDFileFieldNameScope::getMeshName() const
++{
++  return _mesh_name;
++}
++
++void MEDFileFieldNameScope::setMeshName(const std::string& meshName)
++{
++  _mesh_name=meshName;
++}
++
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileFieldGlobs.hxx MEDCOUPLING_new/src/MEDLoader/MEDFileFieldGlobs.hxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileFieldGlobs.hxx        1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileFieldGlobs.hxx        2018-04-19 17:25:17.835799294 +0200
+@@ -0,0 +1,192 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++#ifndef __MEDFILEFIELDGLOBS_HXX__
++#define __MEDFILEFIELDGLOBS_HXX__
++
++#include "MEDLoaderDefines.hxx"
++
++#include "NormalizedGeometricTypes"
++#include "MEDCouplingMemArray.hxx"
++#include "MCAuto.hxx"
++
++#include "med.h"
++
++namespace MEDCoupling
++{
++  class MEDFileFieldGlobsReal;
++  class MEDFileEntities;
++  class MEDFileWritable;
++  class MEDFileFieldLoc;
++  
++  class MEDFileFieldGlobs : public RefCountObject
++  {
++  public:
++    static MEDFileFieldGlobs *New(med_idt fid);
++    static MEDFileFieldGlobs *New();
++    std::size_t getHeapMemorySizeWithoutChildren() const;
++    std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
++    MEDFileFieldGlobs *deepCopy() const;
++    MEDFileFieldGlobs *shallowCpyPart(const std::vector<std::string>& pfls, const std::vector<std::string>& locs) const;
++    MEDFileFieldGlobs *deepCpyPart(const std::vector<std::string>& pfls, const std::vector<std::string>& locs) const;
++    void simpleRepr(std::ostream& oss) const;
++    void appendGlobs(const MEDFileFieldGlobs& other, double eps);
++    void checkGlobsPflsPartCoherency(const std::vector<std::string>& pflsUsed) const;
++    void checkGlobsLocsPartCoherency(const std::vector<std::string>& locsUsed) const;
++    void loadProfileInFile(med_idt fid, int id, const std::string& pflName);
++    void loadProfileInFile(med_idt fid, int id);
++    void loadGlobals(med_idt fid, const MEDFileFieldGlobsReal& real);
++    void loadAllGlobals(med_idt fid, const MEDFileEntities *entities);
++    void writeGlobals(med_idt fid, const MEDFileWritable& opt) 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;
++    void setFileName(const std::string& fileName) { _file_name=fileName; }
++    void changePflsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    void changeLocsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    int getNbOfGaussPtPerCell(int locId) const;
++    int getLocalizationId(const std::string& loc) const;
++    int getProfileId(const std::string& pfl) const;
++    std::string getFileName() const { return _file_name; }
++    const MEDFileFieldLoc& getLocalizationFromId(int locId) const;
++    const MEDFileFieldLoc& getLocalization(const std::string& locName) const;
++    const DataArrayInt *getProfileFromId(int pflId) const;
++    const DataArrayInt *getProfile(const std::string& pflName) const;
++    MEDFileFieldLoc& getLocalizationFromId(int locId);
++    MEDFileFieldLoc& getLocalization(const std::string& locName);
++    DataArrayInt *getProfile(const std::string& pflName);
++    DataArrayInt *getProfileFromId(int pflId);
++    void killProfileIds(const std::vector<int>& pflIds);
++    void killLocalizationIds(const std::vector<int>& locIds);
++    void killStructureElementsInGlobs();
++    //
++    void appendProfile(DataArrayInt *pfl);
++    void appendLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w);
++    //
++    static std::string CreateNewNameNotIn(const std::string& prefix, const std::vector<std::string>& namesToAvoid);
++  protected:
++    MEDFileFieldGlobs(med_idt fid);
++    MEDFileFieldGlobs();
++    ~MEDFileFieldGlobs();
++  protected:
++    std::vector< MCAuto<DataArrayInt> > _pfls;
++    std::vector< MCAuto<MEDFileFieldLoc> > _locs;
++    std::string _file_name;
++  };
++
++  /// @endcond INTERNAL
++
++  class MEDFileFieldGlobsReal
++  {
++  public:
++    MEDLOADER_EXPORT MEDFileFieldGlobsReal(med_idt fid);
++    MEDLOADER_EXPORT MEDFileFieldGlobsReal();
++    MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
++    MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
++    MEDLOADER_EXPORT void simpleReprGlobs(std::ostream& oss) const;
++    MEDLOADER_EXPORT void resetContent();
++    MEDLOADER_EXPORT void killStructureElementsInGlobs();
++    MEDLOADER_EXPORT void shallowCpyGlobs(const MEDFileFieldGlobsReal& other);
++    MEDLOADER_EXPORT void deepCpyGlobs(const MEDFileFieldGlobsReal& other);
++    MEDLOADER_EXPORT void shallowCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other);
++    MEDLOADER_EXPORT void deepCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other);
++    MEDLOADER_EXPORT void appendGlobs(const MEDFileFieldGlobsReal& other, double eps);
++    MEDLOADER_EXPORT void checkGlobsCoherency() const;
++    MEDLOADER_EXPORT void checkGlobsPflsPartCoherency() const;
++    MEDLOADER_EXPORT void checkGlobsLocsPartCoherency() const;
++    MEDLOADER_EXPORT virtual std::vector<std::string> getPflsReallyUsed() const = 0;
++    MEDLOADER_EXPORT virtual std::vector<std::string> getLocsReallyUsed() const = 0;
++    MEDLOADER_EXPORT virtual std::vector<std::string> getPflsReallyUsedMulti() const = 0;
++    MEDLOADER_EXPORT virtual std::vector<std::string> getLocsReallyUsedMulti() const = 0;
++    MEDLOADER_EXPORT virtual void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif) = 0;
++    MEDLOADER_EXPORT virtual void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif) = 0;
++    MEDLOADER_EXPORT virtual ~MEDFileFieldGlobsReal();
++    //
++    MEDLOADER_EXPORT void loadProfileInFile(med_idt fid, int id, const std::string& pflName);
++    MEDLOADER_EXPORT void loadProfileInFile(med_idt fid, int id);
++    MEDLOADER_EXPORT void loadGlobals(med_idt fid);
++    MEDLOADER_EXPORT void loadAllGlobals(med_idt fid, const MEDFileEntities *entities=0);
++    MEDLOADER_EXPORT void writeGlobals(med_idt fid, const MEDFileWritable& opt) const;
++    MEDLOADER_EXPORT std::vector<std::string> getPfls() const;
++    MEDLOADER_EXPORT std::vector<std::string> getLocs() const;
++    MEDLOADER_EXPORT bool existsPfl(const std::string& pflName) const;
++    MEDLOADER_EXPORT bool existsLoc(const std::string& locName) const;
++    MEDLOADER_EXPORT std::string createNewNameOfPfl() const;
++    MEDLOADER_EXPORT std::string createNewNameOfLoc() const;
++    MEDLOADER_EXPORT std::vector< std::vector<int> > whichAreEqualProfiles() const;
++    MEDLOADER_EXPORT std::vector< std::vector<int> > whichAreEqualLocs(double eps) const;
++    MEDLOADER_EXPORT void setFileName(const std::string& fileName);
++    MEDLOADER_EXPORT void changePflsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    MEDLOADER_EXPORT void changeLocsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    MEDLOADER_EXPORT void changePflsNames(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    MEDLOADER_EXPORT void changeLocsNames(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    MEDLOADER_EXPORT void changePflName(const std::string& oldName, const std::string& newName);
++    MEDLOADER_EXPORT void changeLocName(const std::string& oldName, const std::string& newName);
++    MEDLOADER_EXPORT std::vector< std::pair<std::vector<std::string>, std::string > > zipPflsNames();
++    MEDLOADER_EXPORT std::vector< std::pair<std::vector<std::string>, std::string > > zipLocsNames(double eps);
++    MEDLOADER_EXPORT int getNbOfGaussPtPerCell(int locId) const;
++    MEDLOADER_EXPORT int getLocalizationId(const std::string& loc) const;
++    MEDLOADER_EXPORT int getProfileId(const std::string& pfl) const;
++    MEDLOADER_EXPORT std::string getFileName() const;
++    MEDLOADER_EXPORT const MEDFileFieldLoc& getLocalizationFromId(int locId) const;
++    MEDLOADER_EXPORT const MEDFileFieldLoc& getLocalization(const std::string& locName) const;
++    MEDLOADER_EXPORT MEDFileFieldLoc& getLocalizationFromId(int locId);
++    MEDLOADER_EXPORT MEDFileFieldLoc& getLocalization(const std::string& locName);
++    MEDLOADER_EXPORT const DataArrayInt *getProfile(const std::string& pflName) const;
++    MEDLOADER_EXPORT const DataArrayInt *getProfileFromId(int pflId) const;
++    MEDLOADER_EXPORT DataArrayInt *getProfile(const std::string& pflName);
++    MEDLOADER_EXPORT DataArrayInt *getProfileFromId(int pflId);
++    MEDLOADER_EXPORT void killProfileIds(const std::vector<int>& pflIds);
++    MEDLOADER_EXPORT void killLocalizationIds(const std::vector<int>& locIds);
++    //
++    MEDLOADER_EXPORT void appendProfile(DataArrayInt *pfl);
++    MEDLOADER_EXPORT void appendLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w);
++  protected:
++    MEDFileFieldGlobs *contentNotNull();
++    const MEDFileFieldGlobs *contentNotNull() const;
++  protected:
++    MCAuto< MEDFileFieldGlobs > _globals;
++  };
++
++  class MEDFileFieldNameScope
++  {
++  public:
++    MEDLOADER_EXPORT MEDFileFieldNameScope();
++    MEDLOADER_EXPORT MEDFileFieldNameScope(const std::string& fieldName, const std::string& meshName);
++    MEDLOADER_EXPORT std::string getName() const;
++    MEDLOADER_EXPORT void setName(const std::string& fieldName);
++    MEDLOADER_EXPORT std::string getDtUnit() const;
++    MEDLOADER_EXPORT void setDtUnit(const std::string& dtUnit);
++    MEDLOADER_EXPORT void copyNameScope(const MEDFileFieldNameScope& other);
++    MEDLOADER_EXPORT std::string getMeshName() const;
++    MEDLOADER_EXPORT void setMeshName(const std::string& meshName);
++  protected:
++    std::string _name;
++    std::string _dt_unit;
++    std::string _mesh_name;
++  };
++}
++
++#endif
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileField.hxx MEDCOUPLING_new/src/MEDLoader/MEDFileField.hxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileField.hxx     2018-04-19 17:04:36.757223122 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileField.hxx     2018-04-19 17:25:17.821799017 +0200
+@@ -23,6 +23,11 @@
+ #include "MEDLoaderDefines.hxx"
++#include "MEDFileFieldInternal.hxx"
++#include "MEDFileFieldGlobs.hxx"
++#include "MEDFileField1TS.hxx"
++#include "MEDFileFieldMultiTS.hxx"
++
+ #include "MEDFileFieldOverView.hxx"
+ #include "MEDFileUtilities.txx"
+ #include "MEDFileEntities.hxx"
+@@ -53,1326 +58,8 @@
+   class MEDFileMesh;
+   class MEDFileFieldVisitor;
+-  class MEDFileGTKeeper
+-  {
+-  public:
+-    virtual MEDFileGTKeeper *deepCopy() const = 0;
+-    virtual INTERP_KERNEL::NormalizedCellType getGeoType() const = 0;
+-    virtual std::string getRepr() const = 0;
+-    virtual bool isEqual(const MEDFileGTKeeper *other) const = 0;
+-    virtual ~MEDFileGTKeeper();
+-  };
+-
+-  class MEDFileGTKeeperSta : public MEDFileGTKeeper
+-  {
+-  public:
+-    MEDFileGTKeeperSta(INTERP_KERNEL::NormalizedCellType gt):_geo_type(gt) { }
+-    MEDFileGTKeeper *deepCopy() const;
+-    INTERP_KERNEL::NormalizedCellType getGeoType() const;
+-    std::string getRepr() const;
+-    bool isEqual(const MEDFileGTKeeper *other) const;
+-  private:
+-    INTERP_KERNEL::NormalizedCellType _geo_type;
+-  };
+-
+-
+-  class MEDFileGTKeeperDyn : public MEDFileGTKeeper
+-  {
+-  public:
+-    MEDFileGTKeeperDyn(const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileStructureElement *se);
+-    MEDFileGTKeeper *deepCopy() const;
+-    INTERP_KERNEL::NormalizedCellType getGeoType() const;
+-    std::string getRepr() const;
+-    bool isEqual(const MEDFileGTKeeper *other) const;
+-    const MEDFileUMesh *getMesh() const { return _mesh; }
+-    const MEDFileUMesh *getSection() const { return _section; }
+-    const MEDFileStructureElement *getSE() const { return _se; }
+-  private:
+-    MCConstAuto<MEDFileUMesh> _mesh;
+-    MCConstAuto<MEDFileUMesh> _section;
+-    MCConstAuto<MEDFileStructureElement> _se;
+-  };
+-    
+-  class MEDFileFieldLoc : public RefCountObject
+-  {
+-  public:
+-    MEDLOADER_EXPORT void simpleRepr(std::ostream& oss) const;
+-    MEDLOADER_EXPORT std::string getName() const { return _name; }
+-    MEDLOADER_EXPORT void setName(const std::string& name);
+-    static MEDFileFieldLoc *New(med_idt fid, const std::string& locName);
+-    static MEDFileFieldLoc *New(med_idt fid, int i, const MEDFileEntities *entities);
+-    static MEDFileFieldLoc *New(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w);
+-    std::size_t getHeapMemorySizeWithoutChildren() const;
+-    std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
+-    MEDFileFieldLoc *deepCopy() const;
+-    bool isOnStructureElement() const;
+-    const MEDFileGTKeeper *getUndergroundGTKeeper() const { return _gt; }
+-    MEDLOADER_EXPORT int getNbOfGaussPtPerCell() const { return _nb_gauss_pt; }
+-    MEDLOADER_EXPORT void writeLL(med_idt fid) const;
+-    MEDLOADER_EXPORT std::string repr() const;
+-    MEDLOADER_EXPORT bool isName(const std::string& name) const { return _name==name; }
+-    MEDLOADER_EXPORT int getDimension() const { return _dim; }
+-    MEDLOADER_EXPORT int getNumberOfGaussPoints() const { return _nb_gauss_pt; }
+-    MEDLOADER_EXPORT int getNumberOfPointsInCells() const { return _nb_node_per_cell; }
+-    MEDLOADER_EXPORT const std::vector<double>& getRefCoords() const { return _ref_coo; }
+-    MEDLOADER_EXPORT const std::vector<double>& getGaussCoords() const { return _gs_coo; }
+-    MEDLOADER_EXPORT const std::vector<double>& getGaussWeights() const { return _w; }
+-    MEDLOADER_EXPORT INTERP_KERNEL::NormalizedCellType getGeoType() const { return _gt->getGeoType(); }
+-    MEDLOADER_EXPORT bool isEqual(const MEDFileFieldLoc& other, double eps) const;
+-  private:
+-    MEDFileFieldLoc(const MEDFileFieldLoc& other);
+-    MEDFileFieldLoc(med_idt fid, const std::string& locName);
+-    MEDFileFieldLoc(med_idt fid, int id, const MEDFileEntities *entities);
+-    MEDFileFieldLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w);
+-  private:
+-    int _dim;
+-    int _nb_gauss_pt;
+-    INTERP_KERNEL::AutoCppPtr<MEDFileGTKeeper> _gt;
+-    int _nb_node_per_cell;
+-    std::string _name;
+-    std::vector<double> _ref_coo;
+-    std::vector<double> _gs_coo;
+-    std::vector<double> _w;
+-  };
+-
+-  /// @cond INTERNAL
+-  class MEDFileAnyTypeField1TSWithoutSDA;
+-  class MEDFileFieldPerMeshPerTypeCommon;
+-  class MEDFileFieldPerMeshPerType;
+-  class MEDFileField1TSWithoutSDA;
+-  class MEDFileFieldNameScope;
+-  class MEDFileFieldGlobsReal;
+-  class MEDFileFieldPerMesh;
+-
+-  class MEDFileFieldPerMeshPerTypePerDisc : public RefCountObject, public MEDFileWritable
+-  {
+-  public:
+-    static MEDFileFieldPerMeshPerTypePerDisc *NewOnRead(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int profileIt, const PartDefinition *pd);
+-    static MEDFileFieldPerMeshPerTypePerDisc *New(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int locId);
+-    static MEDFileFieldPerMeshPerTypePerDisc *New(const MEDFileFieldPerMeshPerTypePerDisc& other);
+-    std::size_t getHeapMemorySizeWithoutChildren() const;
+-    std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
+-    MEDFileFieldPerMeshPerTypePerDisc *deepCopy(MEDFileFieldPerMeshPerTypeCommon *father) const;
+-    void assignFieldNoProfile(int& start, int offset, int nbOfCells, const MEDCouplingFieldTemplate *field, const DataArray *arrr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
+-    void assignFieldProfile(bool isPflAlone, int& start, const DataArrayInt *multiTypePfl, const DataArrayInt *idsInPfl, DataArrayInt *locIds, int nbOfEltsInWholeMesh, const MEDCouplingFieldTemplate *field, const DataArray *arrr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
+-    void assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arrr, MEDFileFieldGlobsReal& glob);
+-    void getCoarseData(TypeOfField& type, std::pair<int,int>& dad, std::string& pfl, std::string& loc) const;
+-    void writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const;
+-    const MEDFileFieldPerMeshPerTypeCommon *getFather() const;
+-    void loadOnlyStructureOfDataRecursively(med_idt fid, int& start, const MEDFileFieldNameScope& nasc);
+-    void loadBigArray(med_idt fid, const MEDFileFieldNameScope& nasc);
+-    void setNewStart(int newValueOfStart);
+-    int getIteration() const;
+-    int getOrder() const;
+-    double getTime() const;
+-    std::string getMeshName() const;
+-    TypeOfField getType() const;
+-    void simpleRepr(int bkOffset, std::ostream& oss, int id) const;
+-    void fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const;
+-    void setType(TypeOfField newType);
+-    INTERP_KERNEL::NormalizedCellType getGeoType() const;
+-    int getNumberOfComponents() const;
+-    int getNumberOfTuples() const;
+-    int getStart() const { return _start; }
+-    int getEnd() const { return _end; }
+-    void setEnd(int endd) { _end=endd; }
+-    int getNumberOfVals() const { return _nval; }
+-    DataArray *getOrCreateAndGetArray();
+-    const DataArray *getOrCreateAndGetArray() const;
+-    const std::vector<std::string>& getInfo() const;
+-    std::string getProfile() const;
+-    void setProfile(const std::string& newPflName);
+-    std::string getLocalization() const;
+-    void setLocalization(const std::string& newLocName);
+-    int getLocId() const { return _loc_id; }
+-    void setLocId(int newId) const { _loc_id=newId; }
+-    void setFather(MEDFileFieldPerMeshPerTypeCommon *newFather) { _father=newFather; }
+-    void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    void getFieldAtLevel(TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs,
+-                         std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const;
+-    void fillValues(int discId, int& startEntryId, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-    int fillEltIdsFromCode(int offset, const std::vector<int>& codeOfMesh, const MEDFileFieldGlobsReal& glob, int *ptToFill) const;
+-    int fillTupleIds(int *ptToFill) const;
+-    static int ConvertType(TypeOfField type, int locId);
+-    static std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> > SplitPerDiscretization(const std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>& entries);
+-    static bool RenumberChunks(int offset, const std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>& entriesOnSameDisc,
+-                               const DataArrayInt *explicitIdsInMesh, const std::vector<int>& newCode,
+-                               MEDFileFieldGlobsReal& glob, DataArrayDouble *arr, std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >& result);
+-    static MEDFileFieldPerMeshPerTypePerDisc *NewObjectOnSameDiscThanPool(TypeOfField typeF, INTERP_KERNEL::NormalizedCellType geoType, DataArrayInt *idsOfMeshElt,
+-                                                                          bool isPfl, int nbi, int offset, std::list< const MEDFileFieldPerMeshPerTypePerDisc *>& entriesOnSameDisc,
+-                                                                          MEDFileFieldGlobsReal& glob, bool &notInExisting);
+-    static MCAuto<MEDFileFieldPerMeshPerTypePerDisc> Aggregate(int &start, const std::vector<std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc *> >& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, TypeOfField tof, MEDFileFieldPerMeshPerType *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo);
+-    MEDFileFieldPerMeshPerTypePerDisc(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type):_type(type),_father(fath),_start(-1),_end(-1),_nval(-1),_loc_id(-5),_profile_it(-1) { }
+-  private:
+-    MEDFileFieldPerMeshPerTypePerDisc(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int profileIt, const PartDefinition *pd);
+-    MEDFileFieldPerMeshPerTypePerDisc(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int profileIt, const std::string& dummy);
+-    MEDFileFieldPerMeshPerTypePerDisc(const MEDFileFieldPerMeshPerTypePerDisc& other);
+-    MEDFileFieldPerMeshPerTypePerDisc();
+-  private:
+-    void goReadZeValuesInFile(med_idt fid, const std::string& fieldName, int nbOfCompo, int iteration, int order, med_entity_type menti, med_geometry_type mgeoti, unsigned char *startFeedingPtr);
+-  private:
+-    TypeOfField _type;
+-    MEDFileFieldPerMeshPerTypeCommon *_father;
+-    int _start;
+-    int _end;
+-    //! _nval is different than end-start in case of ON_GAUSS_PT and ON_GAUSS_NE ! (_nval=(_end-_start)/nbi)
+-    int _nval;
+-    std::string _profile;
+-    std::string _localization;
+-    //! only on assignement -3 : ON_NODES, -2 : ON_CELLS, -1 : ON_GAUSS_NE, 0..* : ON_GAUSS_PT
+-    mutable int _loc_id;
+-    mutable int _profile_it;
+-    MCAuto<PartDefinition> _pd;
+-  public:
+-    mutable int _tmp_work1;
+-  };
+-
+-  class MEDFileFieldPerMeshPerTypeCommon : public RefCountObject, public MEDFileWritable
+-  {
+-  public:
+-    std::size_t getHeapMemorySizeWithoutChildren() const;
+-    std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
+-    void assignFieldNoProfile(int& start, int offset, int nbOfCells, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
+-    void assignFieldProfile(bool isPflAlone, int& start, const DataArrayInt *multiTypePfl, const DataArrayInt *idsInPfl, DataArrayInt *locIds, int nbOfEltsInWholeMesh, const MEDCouplingFieldTemplate *field, const DataArray *arr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
+-    void assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob);
+-    void assignNodeFieldProfile(int& start, const DataArrayInt *pfl, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
+-    const MEDFileFieldPerMesh *getFather() const;
+-    void loadOnlyStructureOfDataRecursively(med_idt fid, int &start, const MEDFileFieldNameScope& nasc);
+-    void loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc);
+-    void writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const;
+-    bool isUniqueLevel(int& dim) const;
+-    void fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const;
+-    void fillFieldSplitedByType(std::vector< std::pair<int,int> >& dads, std::vector<TypeOfField>& types, std::vector<std::string>& pfls, std::vector<std::string>& locs) const;
+-    int getIteration() const;
+-    int getOrder() const;
+-    double getTime() const;
+-    std::string getMeshName() const;
+-    void getSizes(int& globalSz, int& nbOfEntries) const;
+-    int getNumberOfComponents() const;
+-    bool presenceOfMultiDiscPerGeoType() const;
+-    void pushDiscretization(MEDFileFieldPerMeshPerTypePerDisc *disc);
+-    DataArray *getOrCreateAndGetArray();
+-    const DataArray *getOrCreateAndGetArray() const;
+-    const std::vector<std::string>& getInfo() const;
+-    std::vector<std::string> getPflsReallyUsed() const;
+-    std::vector<std::string> getLocsReallyUsed() const;
+-    std::vector<std::string> getPflsReallyUsedMulti() const;
+-    std::vector<std::string> getLocsReallyUsedMulti() const;
+-    void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenLocId(int locId);
+-    const MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenLocId(int locId) const;
+-    int getNumberOfLoc() const { return _field_pm_pt_pd.size(); }
+-    void fillValues(int& startEntryId, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-    void setLeaves(const std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc > >& leaves);
+-    bool keepOnlySpatialDiscretization(TypeOfField tof, int &globalNum, std::vector< std::pair<int,int> >& its);
+-    bool keepOnlyGaussDiscretization(std::size_t idOfDisc, int &globalNum, std::vector< std::pair<int,int> >& its);
+-    static med_entity_type ConvertIntoMEDFileType(TypeOfField ikType, INTERP_KERNEL::NormalizedCellType ikGeoType, med_geometry_type& medfGeoType);
+-    MEDFileFieldPerMeshPerTypeCommon(MEDFileFieldPerMesh *father):_father(father) { }
+-    void setFather(MEDFileFieldPerMesh *father);
+-    void accept(MEDFileFieldVisitor& visitor) const;
+-  public:
+-    virtual ~MEDFileFieldPerMeshPerTypeCommon();
+-    virtual void getDimension(int& dim) const = 0;
+-    virtual INTERP_KERNEL::NormalizedCellType getGeoType() const = 0;
+-    virtual void entriesForMEDfile(TypeOfField mct, med_geometry_type& gt, med_entity_type& ent) const = 0;
+-    virtual void simpleRepr(int bkOffset, std::ostream& oss, int id) const = 0;
+-    virtual std::string getGeoTypeRepr() const = 0;
+-    virtual MEDFileFieldPerMeshPerTypeCommon *deepCopy(MEDFileFieldPerMesh *father) const = 0;
+-    virtual void getFieldAtLevel(int meshDim, TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const = 0;
+-  protected:
+-    void deepCopyElements();
+-    std::vector<int> addNewEntryIfNecessary(const MEDCouplingFieldTemplate *field, int offset, int nbOfCells);
+-    std::vector<int> addNewEntryIfNecessaryGauss(const MEDCouplingFieldTemplate *field, int offset, int nbOfCells);
+-    std::vector<int> addNewEntryIfNecessary(const MEDCouplingFieldTemplate *field, const DataArrayInt *subCells);
+-    std::vector<int> addNewEntryIfNecessaryGauss(const MEDCouplingFieldTemplate *field, const DataArrayInt *subCells);
+-  private:
+-    MEDFileFieldPerMesh *_father;
+-  protected:
+-    std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> > _field_pm_pt_pd;
+-  };
+-
+-  class MEDFileFieldPerMeshPerType : public MEDFileFieldPerMeshPerTypeCommon
+-  {
+-  public:
+-    static MEDFileFieldPerMeshPerType *New(MEDFileFieldPerMesh *fath, INTERP_KERNEL::NormalizedCellType geoType);
+-    static MEDFileFieldPerMeshPerType *NewOnRead(med_idt fid, MEDFileFieldPerMesh *fath, TypeOfField type, INTERP_KERNEL::NormalizedCellType geoType, const MEDFileFieldNameScope& nasc, const PartDefinition *pd);
+-    static MCAuto<MEDFileFieldPerMeshPerType> Aggregate(int &start, const std::vector< std::pair<int,const MEDFileFieldPerMeshPerType *> >& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, INTERP_KERNEL::NormalizedCellType gt, MEDFileFieldPerMesh *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo);
+-  public:// overload of abstract methods
+-    void getDimension(int& dim) const;
+-    INTERP_KERNEL::NormalizedCellType getGeoType() const;
+-    void entriesForMEDfile(TypeOfField mct, med_geometry_type& gt, med_entity_type& ent) const;
+-    void simpleRepr(int bkOffset, std::ostream& oss, int id) const;
+-    std::string getGeoTypeRepr() const;
+-    MEDFileFieldPerMeshPerType *deepCopy(MEDFileFieldPerMesh *father) const;
+-    void getFieldAtLevel(int meshDim, TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const;
+-  private:
+-    MEDFileFieldPerMeshPerType(med_idt fid, MEDFileFieldPerMesh *fath, TypeOfField type, INTERP_KERNEL::NormalizedCellType geoType, const MEDFileFieldNameScope& nasc, const PartDefinition *pd);
+-    MEDFileFieldPerMeshPerType(MEDFileFieldPerMesh *father, INTERP_KERNEL::NormalizedCellType gt);
+-  private:
+-    INTERP_KERNEL::NormalizedCellType _geo_type;
+-  };
+-
+-  class MEDFileFieldPerMeshPerTypeDyn : public MEDFileFieldPerMeshPerTypeCommon
+-  {
+-  public:
+-    static MEDFileFieldPerMeshPerTypeDyn *NewOnRead(med_idt fid, MEDFileFieldPerMesh *fath, const MEDFileEntities *entities, int idGT, const MEDFileFieldNameScope& nasc);
+-    int getDynGT() const;
+-    std::string getModelName() const;
+-  public:
+-    void getDimension(int& dim) const;
+-    INTERP_KERNEL::NormalizedCellType getGeoType() const;
+-    void entriesForMEDfile(TypeOfField mct, med_geometry_type& gt, med_entity_type& ent) const;
+-    void simpleRepr(int bkOffset, std::ostream& oss, int id) const;
+-    std::string getGeoTypeRepr() const;
+-    MEDFileFieldPerMeshPerTypeDyn *deepCopy(MEDFileFieldPerMesh *father) const;
+-    void getFieldAtLevel(int meshDim, TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const;
+-  private:
+-    MEDFileFieldPerMeshPerTypeDyn(med_idt fid, MEDFileFieldPerMesh *fath, const MEDFileStructureElement *se, const MEDFileFieldNameScope& nasc);
+-  private:
+-    MCConstAuto<MEDFileStructureElement> _se;
+-  };
+-  
+-  class MEDFileMesh;
+-
+-  class MEDFileFieldPerMesh : public RefCountObject, public MEDFileWritable
+-  {
+-  public:
+-    static MEDFileFieldPerMesh *New(MEDFileAnyTypeField1TSWithoutSDA *fath, const MEDCouplingMesh *mesh);
+-    static MEDFileFieldPerMesh *NewOnRead(med_idt fid, MEDFileAnyTypeField1TSWithoutSDA *fath, int meshCsit, int meshIteration, int meshOrder, const MEDFileFieldNameScope& nasc, const MEDFileMesh *mm, const MEDFileEntities *entities);
+-    std::size_t getHeapMemorySizeWithoutChildren() const;
+-    std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
+-    MEDFileFieldPerMesh *deepCopy(MEDFileAnyTypeField1TSWithoutSDA *father) const;
+-    void simpleRepr(int bkOffset,std::ostream& oss, int id) const;
+-    void copyTinyInfoFrom(const MEDCouplingMesh *mesh);
+-    void assignFieldProfile(int& start, const DataArrayInt *multiTypePfl, const std::vector<int>& code, const std::vector<int>& code2, const std::vector<DataArrayInt *>& idsInPflPerType, const std::vector<DataArrayInt *>& idsPerType, const MEDCouplingFieldTemplate *field, const DataArray *arr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
+-    void assignFieldNoProfileNoRenum(int& start, const std::vector<int>& code, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
+-    void assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob);
+-    void assignNodeFieldProfile(int& start, const DataArrayInt *pfl, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
+-    void loadOnlyStructureOfDataRecursively(med_idt fid, int &start, const MEDFileFieldNameScope& nasc);
+-    void loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc);
+-    void writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const;
+-    void fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const;
+-    std::vector< std::vector< std::pair<int,int> > > getFieldSplitedByType(std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
+-    void accept(MEDFileFieldVisitor& visitor) const;
+-    void getDimension(int& dim) const;
+-    bool isUniqueLevel(int& dim) const;
+-    double getTime() const;
+-    int getIteration() const;
+-    int getOrder() const;
+-    int getMeshIteration() const { return _mesh_iteration; }
+-    int getMeshOrder() const { return _mesh_order; }
+-    std::string getMeshName() const;
+-    void setMeshName(const std::string& meshName);
+-    int getNumberOfComponents() const;
+-    bool presenceOfMultiDiscPerGeoType() const;
+-    bool presenceOfStructureElements() const;
+-    bool onlyStructureElements() const;
+-    void killStructureElements();
+-    void keepOnlyStructureElements();
+-    void keepOnlyOnSE(const std::string& seName);
+-    void getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const;
+-    DataArray *getOrCreateAndGetArray();
+-    const DataArray *getOrCreateAndGetArray() const;
+-    const std::vector<std::string>& getInfo() const;
+-    std::vector<std::string> getPflsReallyUsed() const;
+-    std::vector<std::string> getLocsReallyUsed() const;
+-    std::vector<std::string> getPflsReallyUsedMulti() const;
+-    std::vector<std::string> getLocsReallyUsedMulti() const;
+-    void convertMedBallIntoClassic();
+-    bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
+-    bool renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N, MEDFileFieldGlobsReal& glob);
+-    void keepOnlySpatialDiscretization(TypeOfField tof, int &globalNum, std::vector< std::pair<int,int> >& its);
+-    void keepOnlyGaussDiscretization(std::size_t idOfDisc, int &globalNum, std::vector< std::pair<int,int> >& its);
+-    void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, const MEDFileFieldGlobsReal *glob, const MEDCouplingMesh *mesh, bool& isPfl, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
+-    DataArray *getFieldOnMeshAtLevelWithPfl(TypeOfField type, const MEDCouplingMesh *mesh, DataArrayInt *&pfl, const MEDFileFieldGlobsReal *glob, const MEDFileFieldNameScope& nasc) const;
+-    void getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-    MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenTypeAndLocId(INTERP_KERNEL::NormalizedCellType typ, int locId);
+-    const MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenTypeAndLocId(INTERP_KERNEL::NormalizedCellType typ, int locId) const;
+-    static MCAuto<MEDFileFieldPerMesh> Aggregate(int &start, const std::vector<const MEDFileFieldPerMesh *>& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, MEDFileAnyTypeField1TSWithoutSDA *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo);
+-  private:
+-    int addNewEntryIfNecessary(INTERP_KERNEL::NormalizedCellType type);
+-    MEDCouplingFieldDouble *finishField(TypeOfField type, const MEDFileFieldGlobsReal *glob,
+-                                        const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs, const MEDCouplingMesh *mesh, bool& isPfl, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
+-    MEDCouplingFieldDouble *finishField2(TypeOfField type, const MEDFileFieldGlobsReal *glob,
+-                                         const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs,
+-                                         const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes,
+-                                         const MEDCouplingMesh *mesh, const DataArrayInt *da, bool& isPfl, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
+-    MEDCouplingFieldDouble *finishFieldNode2(const MEDFileFieldGlobsReal *glob,
+-                                             const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs,
+-                                             const MEDCouplingMesh *mesh, const DataArrayInt *da, bool& isPfl, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
+-    DataArray *finishField4(const std::vector< std::pair<int,int> >& dads, const DataArrayInt *pflIn, int nbOfElems, DataArrayInt *&pflOut) const;
+-    void assignNewLeaves(const std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc > >& leaves);
+-    static void SortArraysPerType(const MEDFileFieldGlobsReal *glob, TypeOfField type, 
+-                                  const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes, const std::vector< std::pair<int,int> >& dads, const std::vector<const DataArrayInt *>& pfls, const std::vector<int>& locs,
+-                                  std::vector<int>& code, std::vector<DataArrayInt *>& notNullPfls);
+-    static int ComputeNbOfElems(const MEDFileFieldGlobsReal *glob, TypeOfField type, const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes, const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs);
+-    MEDFileFieldPerMesh(med_idt fid, MEDFileAnyTypeField1TSWithoutSDA *fath, int meshCsit, int meshIteration, int meshOrder, const MEDFileFieldNameScope& nasc, const MEDFileMesh *mm, const MEDFileEntities *entities);
+-    MEDFileFieldPerMesh(MEDFileAnyTypeField1TSWithoutSDA *fath, const MEDCouplingMesh *mesh);
+-    MEDFileFieldPerMesh(MEDFileAnyTypeField1TSWithoutSDA *fath, const std::string& meshName, int meshIt, int meshOrd):_father(fath),_mesh_iteration(meshIt),_mesh_order(meshOrd) { }
+-  private:
+-    int _mesh_iteration;
+-    int _mesh_order;
+-    MEDFileAnyTypeField1TSWithoutSDA *_father;
+-    std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > _field_pm_pt;
+-  };
+-
+-  class MEDFileFieldGlobsReal;
+-
+-  class MEDFileFieldGlobs : public RefCountObject
+-  {
+-  public:
+-    static MEDFileFieldGlobs *New(med_idt fid);
+-    static MEDFileFieldGlobs *New();
+-    std::size_t getHeapMemorySizeWithoutChildren() const;
+-    std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
+-    MEDFileFieldGlobs *deepCopy() const;
+-    MEDFileFieldGlobs *shallowCpyPart(const std::vector<std::string>& pfls, const std::vector<std::string>& locs) const;
+-    MEDFileFieldGlobs *deepCpyPart(const std::vector<std::string>& pfls, const std::vector<std::string>& locs) const;
+-    void simpleRepr(std::ostream& oss) const;
+-    void appendGlobs(const MEDFileFieldGlobs& other, double eps);
+-    void checkGlobsPflsPartCoherency(const std::vector<std::string>& pflsUsed) const;
+-    void checkGlobsLocsPartCoherency(const std::vector<std::string>& locsUsed) const;
+-    void loadProfileInFile(med_idt fid, int id, const std::string& pflName);
+-    void loadProfileInFile(med_idt fid, int id);
+-    void loadGlobals(med_idt fid, const MEDFileFieldGlobsReal& real);
+-    void loadAllGlobals(med_idt fid, const MEDFileEntities *entities);
+-    void writeGlobals(med_idt fid, const MEDFileWritable& opt) 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;
+-    void setFileName(const std::string& fileName) { _file_name=fileName; }
+-    void changePflsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    void changeLocsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    int getNbOfGaussPtPerCell(int locId) const;
+-    int getLocalizationId(const std::string& loc) const;
+-    std::string getFileName() const { return _file_name; }
+-    const MEDFileFieldLoc& getLocalizationFromId(int locId) const;
+-    const MEDFileFieldLoc& getLocalization(const std::string& locName) const;
+-    const DataArrayInt *getProfileFromId(int pflId) const;
+-    const DataArrayInt *getProfile(const std::string& pflName) const;
+-    MEDFileFieldLoc& getLocalizationFromId(int locId);
+-    MEDFileFieldLoc& getLocalization(const std::string& locName);
+-    DataArrayInt *getProfile(const std::string& pflName);
+-    DataArrayInt *getProfileFromId(int pflId);
+-    void killProfileIds(const std::vector<int>& pflIds);
+-    void killLocalizationIds(const std::vector<int>& locIds);
+-    void killStructureElementsInGlobs();
+-    //
+-    void appendProfile(DataArrayInt *pfl);
+-    void appendLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w);
+-    //
+-    static std::string CreateNewNameNotIn(const std::string& prefix, const std::vector<std::string>& namesToAvoid);
+-  protected:
+-    MEDFileFieldGlobs(med_idt fid);
+-    MEDFileFieldGlobs();
+-    ~MEDFileFieldGlobs();
+-  protected:
+-    std::vector< MCAuto<DataArrayInt> > _pfls;
+-    std::vector< MCAuto<MEDFileFieldLoc> > _locs;
+-    std::string _file_name;
+-  };
+-
+-  /// @endcond INTERNAL
+-
+-  class MEDFileFieldGlobsReal
+-  {
+-  public:
+-    MEDLOADER_EXPORT MEDFileFieldGlobsReal(med_idt fid);
+-    MEDLOADER_EXPORT MEDFileFieldGlobsReal();
+-    MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
+-    MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
+-    MEDLOADER_EXPORT void simpleReprGlobs(std::ostream& oss) const;
+-    MEDLOADER_EXPORT void resetContent();
+-    MEDLOADER_EXPORT void killStructureElementsInGlobs();
+-    MEDLOADER_EXPORT void shallowCpyGlobs(const MEDFileFieldGlobsReal& other);
+-    MEDLOADER_EXPORT void deepCpyGlobs(const MEDFileFieldGlobsReal& other);
+-    MEDLOADER_EXPORT void shallowCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other);
+-    MEDLOADER_EXPORT void deepCpyOnlyUsedGlobs(const MEDFileFieldGlobsReal& other);
+-    MEDLOADER_EXPORT void appendGlobs(const MEDFileFieldGlobsReal& other, double eps);
+-    MEDLOADER_EXPORT void checkGlobsCoherency() const;
+-    MEDLOADER_EXPORT void checkGlobsPflsPartCoherency() const;
+-    MEDLOADER_EXPORT void checkGlobsLocsPartCoherency() const;
+-    MEDLOADER_EXPORT virtual std::vector<std::string> getPflsReallyUsed() const = 0;
+-    MEDLOADER_EXPORT virtual std::vector<std::string> getLocsReallyUsed() const = 0;
+-    MEDLOADER_EXPORT virtual std::vector<std::string> getPflsReallyUsedMulti() const = 0;
+-    MEDLOADER_EXPORT virtual std::vector<std::string> getLocsReallyUsedMulti() const = 0;
+-    MEDLOADER_EXPORT virtual void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif) = 0;
+-    MEDLOADER_EXPORT virtual void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif) = 0;
+-    MEDLOADER_EXPORT virtual ~MEDFileFieldGlobsReal();
+-    //
+-    MEDLOADER_EXPORT void loadProfileInFile(med_idt fid, int id, const std::string& pflName);
+-    MEDLOADER_EXPORT void loadProfileInFile(med_idt fid, int id);
+-    MEDLOADER_EXPORT void loadGlobals(med_idt fid);
+-    MEDLOADER_EXPORT void loadAllGlobals(med_idt fid, const MEDFileEntities *entities=0);
+-    MEDLOADER_EXPORT void writeGlobals(med_idt fid, const MEDFileWritable& opt) const;
+-    MEDLOADER_EXPORT std::vector<std::string> getPfls() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getLocs() const;
+-    MEDLOADER_EXPORT bool existsPfl(const std::string& pflName) const;
+-    MEDLOADER_EXPORT bool existsLoc(const std::string& locName) const;
+-    MEDLOADER_EXPORT std::string createNewNameOfPfl() const;
+-    MEDLOADER_EXPORT std::string createNewNameOfLoc() const;
+-    MEDLOADER_EXPORT std::vector< std::vector<int> > whichAreEqualProfiles() const;
+-    MEDLOADER_EXPORT std::vector< std::vector<int> > whichAreEqualLocs(double eps) const;
+-    MEDLOADER_EXPORT void setFileName(const std::string& fileName);
+-    MEDLOADER_EXPORT void changePflsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    MEDLOADER_EXPORT void changeLocsNamesInStruct(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    MEDLOADER_EXPORT void changePflsNames(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    MEDLOADER_EXPORT void changeLocsNames(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    MEDLOADER_EXPORT void changePflName(const std::string& oldName, const std::string& newName);
+-    MEDLOADER_EXPORT void changeLocName(const std::string& oldName, const std::string& newName);
+-    MEDLOADER_EXPORT std::vector< std::pair<std::vector<std::string>, std::string > > zipPflsNames();
+-    MEDLOADER_EXPORT std::vector< std::pair<std::vector<std::string>, std::string > > zipLocsNames(double eps);
+-    MEDLOADER_EXPORT int getNbOfGaussPtPerCell(int locId) const;
+-    MEDLOADER_EXPORT int getLocalizationId(const std::string& loc) const;
+-    MEDLOADER_EXPORT std::string getFileName() const;
+-    MEDLOADER_EXPORT const MEDFileFieldLoc& getLocalizationFromId(int locId) const;
+-    MEDLOADER_EXPORT const MEDFileFieldLoc& getLocalization(const std::string& locName) const;
+-    MEDLOADER_EXPORT MEDFileFieldLoc& getLocalizationFromId(int locId);
+-    MEDLOADER_EXPORT MEDFileFieldLoc& getLocalization(const std::string& locName);
+-    MEDLOADER_EXPORT const DataArrayInt *getProfile(const std::string& pflName) const;
+-    MEDLOADER_EXPORT const DataArrayInt *getProfileFromId(int pflId) const;
+-    MEDLOADER_EXPORT DataArrayInt *getProfile(const std::string& pflName);
+-    MEDLOADER_EXPORT DataArrayInt *getProfileFromId(int pflId);
+-    MEDLOADER_EXPORT void killProfileIds(const std::vector<int>& pflIds);
+-    MEDLOADER_EXPORT void killLocalizationIds(const std::vector<int>& locIds);
+-    //
+-    MEDLOADER_EXPORT void appendProfile(DataArrayInt *pfl);
+-    MEDLOADER_EXPORT void appendLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w);
+-  protected:
+-    MEDFileFieldGlobs *contentNotNull();
+-    const MEDFileFieldGlobs *contentNotNull() const;
+-  protected:
+-    MCAuto< MEDFileFieldGlobs > _globals;
+-  };
+-
+-  class MEDFileFieldNameScope
+-  {
+-  public:
+-    MEDLOADER_EXPORT MEDFileFieldNameScope();
+-    MEDLOADER_EXPORT MEDFileFieldNameScope(const std::string& fieldName, const std::string& meshName);
+-    MEDLOADER_EXPORT std::string getName() const;
+-    MEDLOADER_EXPORT void setName(const std::string& fieldName);
+-    MEDLOADER_EXPORT std::string getDtUnit() const;
+-    MEDLOADER_EXPORT void setDtUnit(const std::string& dtUnit);
+-    MEDLOADER_EXPORT void copyNameScope(const MEDFileFieldNameScope& other);
+-    MEDLOADER_EXPORT std::string getMeshName() const;
+-    MEDLOADER_EXPORT void setMeshName(const std::string& meshName);
+-  protected:
+-    std::string _name;
+-    std::string _dt_unit;
+-    std::string _mesh_name;
+-  };
+-
+   class MEDFileMeshes;
+-  /*!
+-   * SDA is for Shared Data Arrays such as profiles.
+-   */
+-  class MEDFileAnyTypeField1TSWithoutSDA : public RefCountObject, public MEDFileFieldNameScope
+-  {
+-  public:
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA();
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order);
+-    MEDLOADER_EXPORT int getIteration() const { return _iteration; }
+-    MEDLOADER_EXPORT int getOrder() const { return _order; }
+-    MEDLOADER_EXPORT double getTime(int& iteration, int& order) const { iteration=_iteration; order=_order; return _dt; }
+-    MEDLOADER_EXPORT void setTime(int iteration, int order, double val) { _dt=val; _iteration=iteration; _order=order; }
+-    MEDLOADER_EXPORT int getDimension() const;
+-    MEDLOADER_EXPORT bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
+-    MEDLOADER_EXPORT int getMeshIteration() const;
+-    MEDLOADER_EXPORT int getMeshOrder() const;
+-    MEDLOADER_EXPORT bool isDealingTS(int iteration, int order) const;
+-    MEDLOADER_EXPORT std::pair<int,int> getDtIt() const;
+-    MEDLOADER_EXPORT void fillIteration(std::pair<int,int>& p) const;
+-    MEDLOADER_EXPORT void fillTypesOfFieldAvailable(std::vector<TypeOfField>& types) const;
+-    MEDLOADER_EXPORT std::vector<TypeOfField> getTypesOfFieldAvailable() const;
+-    //
+-    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsed2() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsed2() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsedMulti2() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsedMulti2() const;
+-    MEDLOADER_EXPORT void changePflsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    MEDLOADER_EXPORT void changeLocsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    //
+-    MEDLOADER_EXPORT int getNonEmptyLevels(const std::string& mname, std::vector<int>& levs) const;
+-    MEDLOADER_EXPORT void convertMedBallIntoClassic();
+-    MEDLOADER_EXPORT void makeReduction(INTERP_KERNEL::NormalizedCellType ct, TypeOfField tof, const DataArrayInt *pfl);
+-    MEDLOADER_EXPORT std::vector< std::vector<std::pair<int,int> > > getFieldSplitedByType(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
+-    //
+-    MEDLOADER_EXPORT MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId);
+-    MEDLOADER_EXPORT const MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId) const;
+-    MEDLOADER_EXPORT void deepCpyLeavesFrom(const MEDFileAnyTypeField1TSWithoutSDA& other);
+-    MEDLOADER_EXPORT void accept(MEDFileFieldVisitor& visitor) const;
+-  public:
+-    MEDLOADER_EXPORT int getNumberOfComponents() const;
+-    MEDLOADER_EXPORT const std::vector<std::string>& getInfo() const;
+-    MEDLOADER_EXPORT std::vector<std::string>& getInfo();
+-    MEDLOADER_EXPORT bool presenceOfMultiDiscPerGeoType() const;
+-    MEDLOADER_EXPORT bool presenceOfStructureElements() const;
+-    MEDLOADER_EXPORT bool onlyStructureElements() const;
+-    MEDLOADER_EXPORT void killStructureElements();
+-    MEDLOADER_EXPORT void keepOnlyStructureElements();
+-    MEDLOADER_EXPORT void keepOnlyOnSE(const std::string& seName);
+-    MEDLOADER_EXPORT void getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const;
+-    MEDLOADER_EXPORT void setInfo(const std::vector<std::string>& infos);
+-    MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
+-    MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
+-    MEDLOADER_EXPORT int copyTinyInfoFrom(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr);
+-    MEDLOADER_EXPORT void setFieldNoProfileSBT(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
+-    MEDLOADER_EXPORT void setFieldProfile(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arrOfVals, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
+-    MEDLOADER_EXPORT virtual void simpleRepr(int bkOffset, std::ostream& oss, int f1tsId) const;
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TSWithoutSDA *deepCopy() const = 0;
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TSWithoutSDA *shallowCpy() const = 0;
+-    MEDLOADER_EXPORT virtual std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > splitComponents() const;
+-    MEDLOADER_EXPORT virtual const char *getTypeStr() const = 0;
+-    MEDLOADER_EXPORT virtual DataArray *getUndergroundDataArray() const = 0;
+-    MEDLOADER_EXPORT virtual DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const = 0;
+-    MEDLOADER_EXPORT virtual void setArray(DataArray *arr) = 0;
+-    MEDLOADER_EXPORT virtual DataArray *createNewEmptyDataArrayInstance() const = 0;
+-    MEDLOADER_EXPORT virtual DataArray *getOrCreateAndGetArray() = 0;
+-    MEDLOADER_EXPORT virtual const DataArray *getOrCreateAndGetArray() const = 0;
+-  public:
+-    MEDLOADER_EXPORT MEDCouplingFieldDouble *fieldOnMesh(const MEDFileFieldGlobsReal *glob, const MEDFileMesh *mesh, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const;
+-    MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, const std::string& mName, int renumPol, const MEDFileFieldGlobsReal *glob, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
+-    MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol, const MEDFileFieldGlobsReal *glob, const MEDFileMesh *mesh, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
+-    MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldAtTopLevel(TypeOfField type, const std::string& mName, int renumPol, const MEDFileFieldGlobsReal *glob, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
+-    MEDLOADER_EXPORT MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, int renumPol, const MEDFileFieldGlobsReal *glob, const MEDCouplingMesh *mesh, const DataArrayInt *cellRenum, const DataArrayInt *nodeRenum, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
+-    DataArray *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, DataArrayInt *&pfl, const MEDFileFieldGlobsReal *glob, const MEDFileFieldNameScope& nasc) const;
+-  public:
+-    MEDLOADER_EXPORT bool renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N, MEDFileFieldGlobsReal& glob);
+-    MEDLOADER_EXPORT std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > splitDiscretizations() const;
+-    MEDLOADER_EXPORT std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > splitMultiDiscrPerGeoTypes() const;
+-    MEDLOADER_EXPORT int keepOnlySpatialDiscretization(TypeOfField tof, std::vector< std::pair<int,int> >& its);
+-    MEDLOADER_EXPORT int keepOnlyGaussDiscretization(std::size_t idOfDisc, std::vector< std::pair<int,int> >& its);
+-  public:
+-    MEDLOADER_EXPORT void allocNotFromFile(int newNbOfTuples);
+-    MEDLOADER_EXPORT bool allocIfNecessaryTheArrayToReceiveDataFromFile();
+-    MEDLOADER_EXPORT void loadOnlyStructureOfDataRecursively(med_idt fid, const MEDFileFieldNameScope& nasc, const MEDFileMeshes *ms, const MEDFileEntities *entities);
+-    MEDLOADER_EXPORT void loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc);
+-    MEDLOADER_EXPORT void loadBigArraysRecursivelyIfNecessary(med_idt fid, const MEDFileFieldNameScope& nasc);
+-    MEDLOADER_EXPORT void loadStructureAndBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc, const MEDFileMeshes *ms, const MEDFileEntities *entities);
+-    MEDLOADER_EXPORT void unloadArrays();
+-    MEDLOADER_EXPORT void writeLL(med_idt fid, const MEDFileWritable& opts, const MEDFileFieldNameScope& nasc) const;
+-  protected:
+-    int getMeshIdFromMeshName(const std::string& mName) const;
+-    int addNewEntryIfNecessary(const MEDCouplingMesh *mesh);
+-    void updateData(int newLgth, const std::vector< std::pair<int,int> >& oldStartStops);
+-  protected:
+-    std::vector< MCAuto< MEDFileFieldPerMesh > > _field_per_mesh;
+-    int _iteration;
+-    int _order;
+-    double _dt;
+-  public:
+-    //! only useable on reading
+-    mutable int _csit;
+-    // -3 means allocated and build from scratch
+-    // -2 means allocated and read from a file
+-    // -1 means not allocated and build from scratch
+-    // >=0 means not allocated and read from a file
+-    mutable int _nb_of_tuples_to_be_allocated;
+-  };
+-
+-  class MEDFileIntField1TSWithoutSDA;
+-
+-  template<class T>
+-  class MEDFileField1TSTemplateWithoutSDA : public MEDFileAnyTypeField1TSWithoutSDA
+-  {
+-  protected:
+-    MEDFileField1TSTemplateWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order):MEDFileAnyTypeField1TSWithoutSDA(fieldName,meshName,csit,iteration,order) { }
+-    MEDFileField1TSTemplateWithoutSDA() { }
+-  public:
+-    MEDLOADER_EXPORT void setArray(DataArray *arr);
+-    MEDLOADER_EXPORT DataArray *createNewEmptyDataArrayInstance() const;
+-    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getOrCreateAndGetArrayTemplate();
+-    MEDLOADER_EXPORT typename Traits<T>::ArrayType const *getOrCreateAndGetArrayTemplate() const;
+-    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArrayTemplate() const;
+-    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArrayTemplateExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-    MEDLOADER_EXPORT DataArray *getOrCreateAndGetArray();
+-    MEDLOADER_EXPORT const DataArray *getOrCreateAndGetArray() const;
+-    MEDLOADER_EXPORT DataArray *getUndergroundDataArray() const;
+-    MEDLOADER_EXPORT void aggregate(const typename std::vector< typename MLFieldTraits<T>::F1TSWSDAType const * >& f1tss, const std::vector< std::vector< std::pair<int,int> > >& dts);
+-  protected:
+-    MCAuto< typename Traits<T>::ArrayType > _arr;
+-  };
+-
+-  /*!
+-   * SDA is for Shared Data Arrays such as profiles.
+-   */
+-  class MEDFileField1TSWithoutSDA : public MEDFileField1TSTemplateWithoutSDA<double>
+-  {
+-  public:
+-    MEDLOADER_EXPORT const char *getTypeStr() const;
+-    MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-    MEDLOADER_EXPORT std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
+-    MEDLOADER_EXPORT static void CheckMeshDimRel(int meshDimRelToMax);
+-    MEDLOADER_EXPORT static std::vector<int> CheckSBTMesh(const MEDCouplingMesh *mesh);
+-    MEDLOADER_EXPORT static MEDFileField1TSWithoutSDA *New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
+-  public:
+-    MEDLOADER_EXPORT MEDFileField1TSWithoutSDA();
+-    MEDLOADER_EXPORT MEDFileField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
+-    MEDLOADER_EXPORT MEDFileField1TSWithoutSDA *shallowCpy() const;
+-    MEDLOADER_EXPORT MEDFileField1TSWithoutSDA *deepCopy() const;
+-    MEDLOADER_EXPORT MEDFileIntField1TSWithoutSDA *convertToInt() const;
+-  public:
+-    static const char TYPE_STR[];
+-  };
+-
+-  template<class T>
+-  class MEDFileField1TSNDTemplateWithoutSDA : public MEDFileField1TSTemplateWithoutSDA<T>
+-  {
+-  public:
+-    MEDLOADER_EXPORT MEDFileField1TSWithoutSDA *convertToDouble() const;
+-  protected:
+-    MEDFileField1TSNDTemplateWithoutSDA() { }
+-    MEDFileField1TSNDTemplateWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos):MEDFileField1TSTemplateWithoutSDA<T>(fieldName,meshName,csit,iteration,order) { }
+-  };
+-  
+-  /*!
+-   * SDA is for Shared Data Arrays such as profiles.
+-   */
+-  class MEDFileIntField1TSWithoutSDA : public MEDFileField1TSNDTemplateWithoutSDA<int>
+-  {
+-  public:
+-    MEDLOADER_EXPORT MEDFileIntField1TSWithoutSDA();
+-    MEDLOADER_EXPORT static MEDFileIntField1TSWithoutSDA *New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
+-    MEDLOADER_EXPORT MEDFileIntField1TSWithoutSDA *deepCopy() const;
+-    MEDLOADER_EXPORT MEDFileIntField1TSWithoutSDA *shallowCpy() const;
+-    MEDLOADER_EXPORT const char *getTypeStr() const;
+-    MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-    MEDLOADER_EXPORT DataArrayInt *getUndergroundDataArrayIntExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-  protected:
+-    MEDFileIntField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
+-  public:
+-    MEDLOADER_EXPORT static const char TYPE_STR[];
+-  };
+-
+-  /*!
+-   * SDA is for Shared Data Arrays such as profiles.
+-   */
+-  class MEDFileFloatField1TSWithoutSDA : public MEDFileField1TSNDTemplateWithoutSDA<float>
+-  {
+-  public:
+-    MEDLOADER_EXPORT MEDFileFloatField1TSWithoutSDA();
+-    MEDLOADER_EXPORT static MEDFileFloatField1TSWithoutSDA *New(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
+-    MEDLOADER_EXPORT MEDFileFloatField1TSWithoutSDA *deepCopy() const;
+-    MEDLOADER_EXPORT MEDFileFloatField1TSWithoutSDA *shallowCpy() const;
+-    MEDLOADER_EXPORT const char *getTypeStr() const;
+-    MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-    MEDLOADER_EXPORT DataArrayFloat *getUndergroundDataArrayFloatExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-  protected:
+-    MEDFileFloatField1TSWithoutSDA(const std::string& fieldName, const std::string& meshName, int csit, int iteration, int order, const std::vector<std::string>& infos);
+-  public:
+-    MEDLOADER_EXPORT static const char TYPE_STR[];
+-  };
+-
+-  /*!
+-   * User class.
+-   */
+-  class MEDFileAnyTypeField1TS : public RefCountObject, public MEDFileWritableStandAlone, public MEDFileFieldGlobsReal
+-  {
+-  protected:
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TS();
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TS(const MEDFileAnyTypeField1TSWithoutSDA& other, bool shallowCopyOfContent);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *BuildNewInstanceFromContent(MEDFileAnyTypeField1TSWithoutSDA *c);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *BuildNewInstanceFromContent(MEDFileAnyTypeField1TSWithoutSDA *c, med_idt fid);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TSWithoutSDA *BuildContentFrom(med_idt fid, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TSWithoutSDA *BuildContentFrom(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TSWithoutSDA *BuildContentFrom(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
+-    MEDLOADER_EXPORT void writeLL(med_idt fid) const;
+-    // direct forwarding to MEDFileAnyTypeField1TSWithoutSDA instance _content
+-  public:
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(const std::string& fileName, bool loadAll=true);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(med_idt fid, bool loadAll=true);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(med_idt fid, const std::string& fieldName, bool loadAll=true);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *New(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll=true);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *NewAdv(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeField1TS *NewAdv(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileEntities *entities);
+-    MEDLOADER_EXPORT int getDimension() const;
+-    MEDLOADER_EXPORT int getIteration() const;
+-    MEDLOADER_EXPORT int getOrder() const;
+-    MEDLOADER_EXPORT double getTime(int& iteration, int& order) const;
+-    MEDLOADER_EXPORT void setTime(int iteration, int order, double val);
+-    MEDLOADER_EXPORT std::string getName() const;
+-    MEDLOADER_EXPORT void setName(const std::string& name);
+-    MEDLOADER_EXPORT std::string simpleRepr() const;
+-    MEDLOADER_EXPORT void simpleRepr(int bkOffset, std::ostream& oss, int f1tsId) const;
+-    MEDLOADER_EXPORT std::string getDtUnit() const;
+-    MEDLOADER_EXPORT void setDtUnit(const std::string& dtUnit);
+-    MEDLOADER_EXPORT std::string getMeshName() const;
+-    MEDLOADER_EXPORT void setMeshName(const std::string& newMeshName);
+-    MEDLOADER_EXPORT bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
+-    MEDLOADER_EXPORT int getMeshIteration() const;
+-    MEDLOADER_EXPORT int getMeshOrder() const;
+-    MEDLOADER_EXPORT int getNumberOfComponents() const;
+-    MEDLOADER_EXPORT bool isDealingTS(int iteration, int order) const;
+-    MEDLOADER_EXPORT std::pair<int,int> getDtIt() const;
+-    MEDLOADER_EXPORT void fillIteration(std::pair<int,int>& p) const;
+-    MEDLOADER_EXPORT void fillTypesOfFieldAvailable(std::vector<TypeOfField>& types) const;
+-    MEDLOADER_EXPORT void setInfo(const std::vector<std::string>& infos);
+-    MEDLOADER_EXPORT const std::vector<std::string>& getInfo() const;
+-    MEDLOADER_EXPORT std::vector<std::string>& getInfo();
+-    MEDLOADER_EXPORT bool presenceOfMultiDiscPerGeoType() const;
+-    MEDLOADER_EXPORT std::vector<TypeOfField> getTypesOfFieldAvailable() const;
+-    MEDLOADER_EXPORT std::vector< std::vector<std::pair<int,int> > > getFieldSplitedByType(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF,
+-        std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
+-    MEDLOADER_EXPORT MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId);
+-    MEDLOADER_EXPORT const MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenMeshAndTypeAndLocId(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId) const;
+-    MEDLOADER_EXPORT int getNonEmptyLevels(const std::string& mname, std::vector<int>& levs) const;
+-    MEDLOADER_EXPORT void convertMedBallIntoClassic();
+-    MEDLOADER_EXPORT void makeReduction(INTERP_KERNEL::NormalizedCellType ct, TypeOfField tof, const DataArrayInt *pfl);
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TS *extractPart(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const = 0;
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TS *shallowCpy() const = 0;
+-  public:
+-    MEDLOADER_EXPORT void loadArrays();
+-    MEDLOADER_EXPORT void loadArraysIfNecessary();
+-    MEDLOADER_EXPORT void unloadArrays();
+-    MEDLOADER_EXPORT void unloadArraysWithoutDataLoss();
+-    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeField1TS > > splitComponents() const;
+-    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeField1TS > > splitDiscretizations() const;
+-    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeField1TS > > splitMultiDiscrPerGeoTypes() const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TS *deepCopy() const;
+-    MEDLOADER_EXPORT int copyTinyInfoFrom(const MEDCouplingFieldDouble *field, const DataArray *arr);
+-    MEDLOADER_EXPORT int copyTinyInfoFrom(const TimeHolder *th, const MEDCouplingFieldTemplate *field, const DataArray *arr);
+-  public:
+-    //! underground method see MEDFileField1TSWithoutSDA::setProfileNameOnLeaf
+-    MEDLOADER_EXPORT void setProfileNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newPflName, bool forceRenameOnGlob=false);
+-    //! underground method see MEDFileField1TSWithoutSDA::setLocNameOnLeaf
+-    MEDLOADER_EXPORT void setLocNameOnLeaf(const std::string& mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const std::string& newLocName, bool forceRenameOnGlob=false);
+-    MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
+-    MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsed() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsed() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsedMulti() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsedMulti() const;
+-    MEDLOADER_EXPORT void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    MEDLOADER_EXPORT void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-  public:
+-    MEDLOADER_EXPORT static int LocateField2(med_idt fid, int fieldIdCFormat, bool checkFieldId, std::string& fieldName, med_field_type& typcha, std::vector<std::string>& infos, std::string& dtunitOut, std::string& meshName);
+-    MEDLOADER_EXPORT static int LocateField(med_idt fid, const std::string& fieldName, int& posCFormat, med_field_type& typcha, std::vector<std::string>& infos, std::string& dtunitOut, std::string& meshName);
+-  public:
+-    MEDLOADER_EXPORT virtual med_field_type getMEDFileFieldType() const = 0;
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA *contentNotNullBase();
+-    MEDLOADER_EXPORT const MEDFileAnyTypeField1TSWithoutSDA *contentNotNullBase() const;
+-  protected:
+-    MCAuto<MEDFileAnyTypeField1TSWithoutSDA> _content;
+-  };
+-
+-  class MEDFileIntField1TS;
+-
+-  template<class T>
+-  class MEDFileTemplateField1TS : public MEDFileAnyTypeField1TS
+-  {
+-  public:
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New();
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const std::string& fileName, bool loadAll=true);
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(med_idt fid, bool loadAll=true);
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(DataArrayByte *db) { return BuildFromMemoryChunk<typename MLFieldTraits<T>::F1TSType>(db); }
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(med_idt fid, const std::string& fieldName, bool loadAll=true);
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const std::string& fileName, const std::string& fieldName, int iteration, int order, bool loadAll=true);
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll=true);
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::F1TSType *New(const typename MLFieldTraits<T>::F1TSWSDAType& other, bool shallowCopyOfContent);
+-  public:
+-    MEDLOADER_EXPORT static typename Traits<T>::ArrayType *ReturnSafelyTypedDataArray(MCAuto<DataArray>& arr);
+-    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, DataArrayInt *&pfl) const;
+-    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArray() const;
+-    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-    MEDLOADER_EXPORT static MCAuto<typename Traits<T>::FieldType> SetDataArrayInField(MEDCouplingFieldDouble *f, MCAuto<DataArray>& arr);
+-    MEDLOADER_EXPORT static MCAuto<MEDCouplingFieldDouble> ToFieldTemplateWithTime(const typename Traits<T>::FieldType *f);
+-  public:
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *field(const MEDFileMesh *mesh) const;
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtLevel(TypeOfField type, int meshDimRelToMax, int renumPol=0) const;
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtTopLevel(TypeOfField type, int renumPol=0) const;
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldOnMeshAtLevel(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const;
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldOnMeshAtLevel(TypeOfField type, const MEDCouplingMesh *mesh, int renumPol=0) const;
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtLevelOld(TypeOfField type, const std::string& mname, int meshDimRelToMax, int renumPol=0) const;
+-    MEDLOADER_EXPORT void setFieldNoProfileSBT(const typename Traits<T>::FieldType *field);
+-    MEDLOADER_EXPORT void setFieldProfile(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
+-    MEDLOADER_EXPORT typename MLFieldTraits<T>::F1TSType *extractPartImpl(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TS *extractPart(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const { return this->extractPartImpl(extractDef,mm); }
+-  protected:
+-    ~MEDFileTemplateField1TS() { }
+-    MEDFileTemplateField1TS();
+-    MEDFileTemplateField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileAnyTypeField1TS(fid,loadAll,ms) { }
+-    MEDFileTemplateField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileAnyTypeField1TS(fid,fieldName,loadAll,ms) { }
+-    MEDFileTemplateField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileAnyTypeField1TS(fid,fieldName,iteration,order,loadAll,ms) { }
+-    MEDFileTemplateField1TS(const typename MLFieldTraits<T>::F1TSWSDAType& other, bool shallowCopyOfContent):MEDFileAnyTypeField1TS(other,shallowCopyOfContent) { }
+-    const typename MLFieldTraits<T>::F1TSWSDAType *contentNotNull() const;
+-    typename MLFieldTraits<T>::F1TSWSDAType *contentNotNull();
+-  };
+-
+-  /*!
+-   * User class.
+-   */
+-  class MEDFileField1TS : public MEDFileTemplateField1TS<double>
+-  {
+-    friend class MEDFileTemplateField1TS<double>;
+-  public:
+-    MEDLOADER_EXPORT MEDFileIntField1TS *convertToInt(bool isDeepCpyGlobs=true) const;
+-  public:
+-    MEDLOADER_EXPORT MEDFileField1TS *shallowCpy() const;
+-    MEDLOADER_EXPORT std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF,
+-                                                                                          std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
+-  public:
+-  private:
+-    med_field_type getMEDFileFieldType() const { return MED_FLOAT64; }
+-  private:
+-    ~MEDFileField1TS() { }
+-    MEDFileField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms);
+-    MEDFileField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms);
+-    MEDFileField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms);
+-    MEDFileField1TS(const MEDFileField1TSWithoutSDA& other, bool shallowCopyOfContent);
+-    MEDFileField1TS() { }
+-  };
+-
+-  template<class T>
+-  class MEDFileNDTemplateField1TS : public MEDFileTemplateField1TS<T>
+-  {
+-  public:
+-    MEDLOADER_EXPORT MEDFileField1TS *convertToDouble(bool isDeepCpyGlobs=true) const;
+-  protected:
+-    ~MEDFileNDTemplateField1TS() { }
+-    MEDFileNDTemplateField1TS() { }
+-    MEDFileNDTemplateField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileTemplateField1TS<T>(fid,loadAll,ms) { }
+-    MEDFileNDTemplateField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileTemplateField1TS<T>(fid,fieldName,loadAll,ms) { }
+-    MEDFileNDTemplateField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileTemplateField1TS<T>(fid,fieldName,iteration,order,loadAll,ms) { }
+-    MEDFileNDTemplateField1TS(const typename MLFieldTraits<T>::F1TSWSDAType& other, bool shallowCopyOfContent):MEDFileTemplateField1TS<T>(other,shallowCopyOfContent) { }
+-  };
+-
+-  class MEDFileIntField1TS : public MEDFileNDTemplateField1TS<int>
+-  {
+-    friend class MEDFileTemplateField1TS<int>;
+-  public:
+-    MEDLOADER_EXPORT MEDFileIntField1TS *shallowCpy() const { return new MEDFileIntField1TS(*this); }
+-  public:
+-    MEDLOADER_EXPORT static MCAuto<MEDCouplingFieldDouble> ConvertFieldIntToFieldDouble(const MEDCouplingFieldInt *f);
+-  private:
+-    med_field_type getMEDFileFieldType() const { return MED_INT32; }
+-  private:
+-    ~MEDFileIntField1TS() { }
+-    MEDFileIntField1TS() { }
+-    MEDFileIntField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<int>(fid,loadAll,ms) { }
+-    MEDFileIntField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<int>(fid,fieldName,loadAll,ms) { }
+-    MEDFileIntField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<int>(fid,fieldName,iteration,order,loadAll,ms) { }
+-    /*!
+-     * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
+-     * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
+-     *
+-     * \warning this is a shallow copy constructor
+-     */
+-    MEDFileIntField1TS(const MEDFileIntField1TSWithoutSDA& other, bool shallowCopyOfContent):MEDFileNDTemplateField1TS<int>(other,shallowCopyOfContent) { }
+-  };
+-
+-  class MEDFileFloatField1TS : public MEDFileNDTemplateField1TS<float>
+-  {
+-    friend class MEDFileTemplateField1TS<float>;
+-  private:
+-    med_field_type getMEDFileFieldType() const { return MED_INT32; }//6432
+-    MEDLOADER_EXPORT MEDFileFloatField1TS *shallowCpy() const { return new MEDFileFloatField1TS(*this); }
+-  private:
+-    ~MEDFileFloatField1TS() { }
+-    MEDFileFloatField1TS() { }
+-    MEDFileFloatField1TS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<float>(fid,loadAll,ms) { }
+-    MEDFileFloatField1TS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<float>(fid,fieldName,loadAll,ms) { }
+-    MEDFileFloatField1TS(med_idt fid, const std::string& fieldName, int iteration, int order, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateField1TS<float>(fid,fieldName,iteration,order,loadAll,ms) { }
+-    /*!
+-     * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
+-     * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
+-     *
+-     * \warning this is a shallow copy constructor
+-     */
+-    MEDFileFloatField1TS(const MEDFileFloatField1TSWithoutSDA& other, bool shallowCopyOfContent):MEDFileNDTemplateField1TS<float>(other,shallowCopyOfContent) { }
+-  };
+-
+-  class MEDFileAnyTypeFieldMultiTSWithoutSDA : public RefCountObject, public MEDFileFieldNameScope
+-  {
+-  protected:
+-    MEDFileAnyTypeFieldMultiTSWithoutSDA();
+-    MEDFileAnyTypeFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName);
+-    MEDFileAnyTypeFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
+-    MEDFileAnyTypeFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
+-  public:
+-    MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
+-    MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTSWithoutSDA *deepCopy() const;
+-    MEDLOADER_EXPORT virtual std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > splitComponents() const;
+-    MEDLOADER_EXPORT virtual std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > splitDiscretizations() const;
+-    MEDLOADER_EXPORT virtual std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > splitMultiDiscrPerGeoTypes() const;
+-    MEDLOADER_EXPORT virtual const char *getTypeStr() const = 0;
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTSWithoutSDA *shallowCpy() const = 0;
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTSWithoutSDA *createNew() const = 0;
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TSWithoutSDA *createNew1TSWithoutSDAEmptyInstance() const = 0;
+-    MEDLOADER_EXPORT virtual void checkCoherencyOfType(const MEDFileAnyTypeField1TSWithoutSDA *f1ts) const = 0;
+-    MEDLOADER_EXPORT const std::vector<std::string>& getInfo() const;
+-    MEDLOADER_EXPORT bool presenceOfMultiDiscPerGeoType() const;
+-    MEDLOADER_EXPORT void setInfo(const std::vector<std::string>& info);
+-    MEDLOADER_EXPORT int getTimeStepPos(int iteration, int order) const;
+-    MEDLOADER_EXPORT const MEDFileAnyTypeField1TSWithoutSDA& getTimeStepEntry(int iteration, int order) const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA& getTimeStepEntry(int iteration, int order);
+-    MEDLOADER_EXPORT bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
+-    MEDLOADER_EXPORT int getNumberOfTS() const;
+-    MEDLOADER_EXPORT void eraseEmptyTS();
+-    MEDLOADER_EXPORT void eraseTimeStepIds(const int *startIds, const int *endIds);
+-    MEDLOADER_EXPORT void eraseTimeStepIds2(int bg, int end, int step);
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *buildFromTimeStepIds(const int *startIds, const int *endIds) const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *buildFromTimeStepIds2(int bg, int end, int step) const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *partOfThisLyingOnSpecifiedTimeSteps(const std::vector< std::pair<int,int> >& timeSteps) const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *partOfThisNotLyingOnSpecifiedTimeSteps(const std::vector< std::pair<int,int> >& timeSteps) const;
+-    MEDLOADER_EXPORT bool presenceOfStructureElements() const;
+-    MEDLOADER_EXPORT bool onlyStructureElements() const;
+-    MEDLOADER_EXPORT void killStructureElements();
+-    MEDLOADER_EXPORT void keepOnlyStructureElements();
+-    MEDLOADER_EXPORT void keepOnlyOnSE(const std::string& seName);
+-    MEDLOADER_EXPORT void getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const;
+-    MEDLOADER_EXPORT int getPosOfTimeStep(int iteration, int order) const;
+-    MEDLOADER_EXPORT int getPosGivenTime(double time, double eps=1e-8) const;
+-    MEDLOADER_EXPORT std::vector< std::pair<int,int> > getIterations() const;
+-    MEDLOADER_EXPORT std::vector< std::pair<int,int> > getTimeSteps(std::vector<double>& ret1) const;
+-    MEDLOADER_EXPORT void pushBackTimeStep(MCAuto<MEDFileAnyTypeField1TSWithoutSDA>& tse);
+-    MEDLOADER_EXPORT void synchronizeNameScope();
+-    MEDLOADER_EXPORT void simpleRepr(int bkOffset, std::ostream& oss, int fmtsId) const;
+-    MEDLOADER_EXPORT int getNonEmptyLevels(int iteration, int order, const std::string& mname, std::vector<int>& levs) const;
+-    MEDLOADER_EXPORT void appendFieldNoProfileSBT(const MEDCouplingFieldDouble *field, const DataArray *arr, MEDFileFieldGlobsReal& glob);
+-    MEDLOADER_EXPORT void appendFieldProfile(const MEDCouplingFieldDouble *field, const DataArray *arr, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, MEDFileFieldGlobsReal& glob);
+-    MEDLOADER_EXPORT std::vector< std::vector< std::pair<int,int> > > getFieldSplitedByType(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
+-    MEDLOADER_EXPORT std::vector< std::vector<TypeOfField> > getTypesOfFieldAvailable() const;
+-    MEDLOADER_EXPORT DataArray *getUndergroundDataArray(int iteration, int order) const;
+-    MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(int iteration, int order, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-    MEDLOADER_EXPORT bool renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N, MEDFileFieldGlobsReal& glob);
+-    MEDLOADER_EXPORT void accept(MEDFileFieldVisitor& visitor) const;
+-    MEDLOADER_EXPORT void loadStructureOrStructureAndBigArraysRecursively(med_idt fid, int nbPdt, med_field_type fieldTyp, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
+-    MEDLOADER_EXPORT void writeLL(med_idt fid, const MEDFileWritable& opts) const;
+-    MEDLOADER_EXPORT void loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc);
+-    MEDLOADER_EXPORT void loadBigArraysRecursivelyIfNecessary(med_idt fid, const MEDFileFieldNameScope& nasc);
+-    MEDLOADER_EXPORT void unloadArrays();
+-  public:
+-    MEDLOADER_EXPORT const MEDFileAnyTypeField1TSWithoutSDA *getTimeStepAtPos2(int pos) const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA *getTimeStepAtPos2(int pos);
+-    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsed2() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsed2() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsedMulti2() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsedMulti2() const;
+-    MEDLOADER_EXPORT void changePflsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    MEDLOADER_EXPORT void changeLocsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    MEDLOADER_EXPORT void setIteration(int i, MCAuto<MEDFileAnyTypeField1TSWithoutSDA> ts);
+-  protected:
+-    virtual med_field_type getMEDFileFieldType() const = 0;
+-    void copyTinyInfoFrom(const MEDCouplingFieldDouble *field, const DataArray *arr);
+-    void checkCoherencyOfTinyInfo(const MEDCouplingFieldDouble *field, const DataArray *arr) const;
+-    void checkThatComponentsMatch(const std::vector<std::string>& compos) const;
+-    void checkThatNbOfCompoOfTSMatchThis() const;
+-  protected:
+-    std::vector<std::string> _infos;
+-    std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > _time_steps;
+-  };
+-
+-  class MEDFileIntFieldMultiTSWithoutSDA;
+-
+-  template<class T>
+-  class MEDFileTemplateFieldMultiTSWithoutSDA : public MEDFileAnyTypeFieldMultiTSWithoutSDA
+-  {
+-  public:
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSWSDAType *New(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
+-    MEDLOADER_EXPORT const char *getTypeStr() const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *createNew() const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA *createNew1TSWithoutSDAEmptyInstance() const;
+-  protected:
+-    MEDFileTemplateFieldMultiTSWithoutSDA() { }
+-    MEDFileTemplateFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileAnyTypeFieldMultiTSWithoutSDA(fieldName,meshName) { }
+-    /** \param [in] fieldId field id in C mode */
+-    MEDFileTemplateFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileAnyTypeFieldMultiTSWithoutSDA(fid,fieldId,loadAll,ms,entities) { }
+-    MEDFileTemplateFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileAnyTypeFieldMultiTSWithoutSDA(fid,fieldName,meshName,fieldTyp,infos,nbOfStep,dtunit,loadAll,ms,entities) { }
+-    void checkCoherencyOfType(const MEDFileAnyTypeField1TSWithoutSDA *f1ts) const;
+-  };
+-  
+-  class MEDFileFieldMultiTSWithoutSDA : public MEDFileTemplateFieldMultiTSWithoutSDA<double>
+-  {
+-    friend class MEDFileTemplateFieldMultiTSWithoutSDA<double>;
+-  public:
+-    MEDLOADER_EXPORT MEDFileFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileTemplateFieldMultiTSWithoutSDA<double>(fid,fieldId,loadAll,ms,entities) { }
+-    MEDLOADER_EXPORT std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
+-    MEDLOADER_EXPORT MEDFileIntFieldMultiTSWithoutSDA *convertToInt() const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *shallowCpy() const { return new MEDFileFieldMultiTSWithoutSDA(*this); }
+-  protected:
+-    MEDFileFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileTemplateFieldMultiTSWithoutSDA<double>(fieldName,meshName) { }
+-    MEDFileFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileTemplateFieldMultiTSWithoutSDA<double>(fid,fieldName,meshName,fieldTyp,infos,nbOfStep,dtunit,loadAll,ms,entities) { }
+-    med_field_type getMEDFileFieldType() const { return MED_FLOAT64; }
+-  public:
+-    MEDLOADER_EXPORT MEDFileFieldMultiTSWithoutSDA() { }
+-  };
+-
+-  template<class T>
+-  class MEDFileNDTemplateFieldMultiTSWithoutSDA : public MEDFileTemplateFieldMultiTSWithoutSDA<T>
+-  {
+-  public:
+-    MEDLOADER_EXPORT MEDFileFieldMultiTSWithoutSDA *convertToDouble() const;
+-  protected:
+-    MEDFileNDTemplateFieldMultiTSWithoutSDA() { }
+-    MEDFileNDTemplateFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileTemplateFieldMultiTSWithoutSDA<T>(fid,fieldId,loadAll,ms,entities) { }
+-    MEDFileNDTemplateFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileTemplateFieldMultiTSWithoutSDA<T>(fieldName,meshName) { }
+-    MEDFileNDTemplateFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileTemplateFieldMultiTSWithoutSDA<T>(fid,fieldName,meshName,fieldTyp,infos,nbOfStep,dtunit,loadAll,ms,entities) { }
+-  };
+-
+-  class MEDFileIntFieldMultiTSWithoutSDA : public MEDFileNDTemplateFieldMultiTSWithoutSDA<int>
+-  {
+-    friend class MEDFileTemplateFieldMultiTSWithoutSDA<int>;
+-  public:
+-    MEDLOADER_EXPORT MEDFileIntFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileNDTemplateFieldMultiTSWithoutSDA<int>(fid,fieldId,loadAll,ms,entities) { }
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *shallowCpy() const { return new MEDFileIntFieldMultiTSWithoutSDA(*this); }
+-  protected:
+-    MEDFileIntFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileNDTemplateFieldMultiTSWithoutSDA<int>(fieldName,meshName) { }
+-    MEDFileIntFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileNDTemplateFieldMultiTSWithoutSDA<int>(fid,fieldName,meshName,fieldTyp,infos,nbOfStep,dtunit,loadAll,ms,entities) { }
+-    med_field_type getMEDFileFieldType() const { return MED_INT32; }
+-  public:
+-    MEDLOADER_EXPORT MEDFileIntFieldMultiTSWithoutSDA() { }
+-  };
+-
+-  class MEDFileFloatFieldMultiTSWithoutSDA : public MEDFileNDTemplateFieldMultiTSWithoutSDA<float>
+-  {
+-    friend class MEDFileTemplateFieldMultiTSWithoutSDA<float>;
+-  public:
+-    MEDLOADER_EXPORT MEDFileFloatFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileNDTemplateFieldMultiTSWithoutSDA<float>(fid,fieldId,loadAll,ms,entities) { }
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *shallowCpy() const { return new MEDFileFloatFieldMultiTSWithoutSDA(*this); }
+-  protected:
+-    MEDFileFloatFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileNDTemplateFieldMultiTSWithoutSDA<float>(fieldName,meshName) { }
+-    MEDFileFloatFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileNDTemplateFieldMultiTSWithoutSDA<float>(fid,fieldName,meshName,fieldTyp,infos,nbOfStep,dtunit,loadAll,ms,entities) { }
+-    med_field_type getMEDFileFieldType() const { return MED_INT32; }//6432
+-  public:
+-    MEDLOADER_EXPORT MEDFileFloatFieldMultiTSWithoutSDA() { }
+-  };
+-
+-  class MEDFileAnyTypeFieldMultiTSIterator;
+-  class MEDFileFastCellSupportComparator;
+-  /*!
+-   * User class.
+-   */
+-  class MEDFileAnyTypeFieldMultiTS : public RefCountObject, public MEDFileWritableStandAlone, public MEDFileFieldGlobsReal
+-  {
+-  protected:
+-    MEDFileAnyTypeFieldMultiTS();
+-    MEDFileAnyTypeFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms);
+-    MEDFileAnyTypeFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
+-    MEDFileAnyTypeFieldMultiTS(const MEDFileAnyTypeFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent);
+-    static MEDFileAnyTypeFieldMultiTS *BuildNewInstanceFromContent(MEDFileAnyTypeFieldMultiTSWithoutSDA *c, med_idt fid);
+-    static MEDFileAnyTypeFieldMultiTSWithoutSDA *BuildContentFrom(med_idt fid, bool loadAll, const MEDFileMeshes *ms);
+-    static MEDFileAnyTypeFieldMultiTSWithoutSDA *BuildContentFrom(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
+-  public:
+-    MEDLOADER_EXPORT static MEDFileAnyTypeFieldMultiTS *New(const std::string& fileName, bool loadAll=true);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeFieldMultiTS *New(med_idt fid, bool loadAll=true);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeFieldMultiTS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeFieldMultiTS *New(med_idt fid, const std::string& fieldName, bool loadAll=true);
+-    MEDLOADER_EXPORT static MEDFileAnyTypeFieldMultiTS *BuildNewInstanceFromContent(MEDFileAnyTypeFieldMultiTSWithoutSDA *c);
+-    MEDLOADER_EXPORT void loadArrays();
+-    MEDLOADER_EXPORT void loadArraysIfNecessary();
+-    MEDLOADER_EXPORT void unloadArrays();
+-    MEDLOADER_EXPORT void unloadArraysWithoutDataLoss();
+-    MEDLOADER_EXPORT void writeLL(med_idt fid) const;
+-    MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
+-    MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTS *deepCopy() const;
+-    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > splitComponents() const;
+-    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > splitDiscretizations() const;
+-    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > splitMultiDiscrPerGeoTypes() const;
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTS *shallowCpy() const = 0;
+-    MEDLOADER_EXPORT virtual void checkCoherencyOfType(const MEDFileAnyTypeField1TS *f1ts) const = 0;
+-    //
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TS *getTimeStepAtPos(int pos) const = 0;
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TS *getTimeStep(int iteration, int order) const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TS *getTimeStepGivenTime(double time, double eps=1e-8) const;
+-    MEDLOADER_EXPORT static std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > SplitIntoCommonTimeSeries(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS);
+-    MEDLOADER_EXPORT static std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > SplitPerCommonSupport(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS, const MEDFileMesh *mesh, std::vector< MCAuto<MEDFileFastCellSupportComparator> >& fsc);
+-    MEDLOADER_EXPORT static int CheckSupportAcrossTime(MEDFileAnyTypeFieldMultiTS *f0, MEDFileAnyTypeFieldMultiTS *f1, const MEDFileMesh *mesh, TypeOfField& tof0, TypeOfField& tof1);
+-  public:// direct forwarding to MEDFileField1TSWithoutSDA instance _content
+-    MEDLOADER_EXPORT std::string getName() const;
+-    MEDLOADER_EXPORT void setName(const std::string& name);
+-    MEDLOADER_EXPORT std::string getDtUnit() const;
+-    MEDLOADER_EXPORT void setDtUnit(const std::string& dtUnit);
+-    MEDLOADER_EXPORT std::string getMeshName() const;
+-    MEDLOADER_EXPORT void setMeshName(const std::string& newMeshName);
+-    MEDLOADER_EXPORT std::string simpleRepr() const;
+-    MEDLOADER_EXPORT void simpleRepr(int bkOffset, std::ostream& oss, int fmtsId) const;
+-    MEDLOADER_EXPORT int getNumberOfTS() const;
+-    MEDLOADER_EXPORT void eraseEmptyTS();
+-    MEDLOADER_EXPORT void eraseTimeStepIds(const int *startIds, const int *endIds);
+-    MEDLOADER_EXPORT void eraseTimeStepIds2(int bg, int end, int step);
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *buildSubPart(const int *startIds, const int *endIds) const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *buildSubPartSlice(int bg, int end, int step) const;
+-    MEDLOADER_EXPORT std::vector< std::pair<int,int> > getTimeSteps(std::vector<double>& ret1) const;
+-    MEDLOADER_EXPORT std::vector< std::pair<int,int> > getIterations() const;
+-    MEDLOADER_EXPORT void pushBackTimeSteps(const std::vector<MEDFileAnyTypeField1TS *>& f1ts);
+-    MEDLOADER_EXPORT void pushBackTimeSteps(MEDFileAnyTypeFieldMultiTS *fmts);
+-    MEDLOADER_EXPORT void pushBackTimeStep(MEDFileAnyTypeField1TS *f1ts);
+-    MEDLOADER_EXPORT void synchronizeNameScope();
+-    MEDLOADER_EXPORT int getPosOfTimeStep(int iteration, int order) const;
+-    MEDLOADER_EXPORT int getPosGivenTime(double time, double eps=1e-8) const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSIterator *iterator();
+-    MEDLOADER_EXPORT bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
+-    MEDLOADER_EXPORT const std::vector<std::string>& getInfo() const;
+-    MEDLOADER_EXPORT bool presenceOfMultiDiscPerGeoType() const;
+-    MEDLOADER_EXPORT void setInfo(const std::vector<std::string>& info);
+-    MEDLOADER_EXPORT int getNumberOfComponents() const;
+-    MEDLOADER_EXPORT int getNonEmptyLevels(int iteration, int order, const std::string& mname, std::vector<int>& levs) const;
+-    MEDLOADER_EXPORT std::vector< std::vector<TypeOfField> > getTypesOfFieldAvailable() const;
+-    MEDLOADER_EXPORT std::vector< std::vector< std::pair<int,int> > > getFieldSplitedByType(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
+-    MEDLOADER_EXPORT MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> getContent();
+-  public:
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTS *buildNewEmpty() const = 0;
+-    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTS *extractPart(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const = 0;
+-    MEDLOADER_EXPORT static MCAuto<MEDFileAnyTypeFieldMultiTS> Aggregate(const std::vector<const MEDFileAnyTypeFieldMultiTS *>& fmtss, const std::vector< std::vector< std::pair<int,int> > >& dts);
+-  public:
+-    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsed() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsed() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsedMulti() const;
+-    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsedMulti() const;
+-    MEDLOADER_EXPORT void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-    MEDLOADER_EXPORT void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
+-  protected:
+-    MEDFileAnyTypeFieldMultiTSWithoutSDA *contentNotNullBase();
+-    const MEDFileAnyTypeFieldMultiTSWithoutSDA *contentNotNullBase() const;
+-  private:
+-    static std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > SplitPerCommonSupportNotNodesAlg(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS, const MEDFileMesh *mesh, std::vector< MCAuto<MEDFileFastCellSupportComparator> >& cmps);
+-  protected:
+-    MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> _content;
+-  };
+-
+-  template<class T>
+-  class MEDFileTemplateFieldMultiTS : public MEDFileAnyTypeFieldMultiTS
+-  {
+-  public:
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New();
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(const std::string& fileName, bool loadAll=true);
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(med_idt fid, bool loadAll=true);
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(DataArrayByte *db) { return BuildFromMemoryChunk<typename MLFieldTraits<T>::FMTSType>(db); }
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(med_idt fid, const std::string& fieldName, bool loadAll=true);
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(const typename MLFieldTraits<T>::FMTSWSDAType& other, bool shallowCopyOfContent);
+-    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *LoadSpecificEntities(const std::string& fileName, const std::string& fieldName, const std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> >& entities, bool loadAll=true);
+-    MEDLOADER_EXPORT typename MLFieldTraits<T>::FMTSType *extractPartImpl(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const;
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *extractPart(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const { return this->extractPartImpl(extractDef,mm); }
+-    //
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *field(int iteration, int order, const MEDFileMesh *mesh) const;
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, int renumPol=0) const;
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtTopLevel(TypeOfField type, int iteration, int order, int renumPol=0) const;
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const;
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, const MEDCouplingMesh *mesh, int renumPol=0) const;
+-    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtLevelOld(TypeOfField type, int iteration, int order, const std::string& mname, int meshDimRelToMax, int renumPol=0) const;
+-    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getFieldWithProfile(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh, DataArrayInt *&pfl) const;
+-    //
+-    MEDLOADER_EXPORT void appendFieldNoProfileSBT(const typename Traits<T>::FieldType *field);
+-    MEDLOADER_EXPORT void appendFieldProfile(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
+-    //
+-    MEDLOADER_EXPORT typename MLFieldTraits<T>::F1TSType *getTimeStepAtPos(int pos) const;
+-    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArray(int iteration, int order) const;
+-    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArrayExt(int iteration, int order, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
+-    MEDLOADER_EXPORT typename MLFieldTraits<T>::FMTSType *buildNewEmptyImpl() const;
+-    MEDLOADER_EXPORT void checkCoherencyOfType(const MEDFileAnyTypeField1TS *f1ts) const;
+-  protected:
+-    const typename MLFieldTraits<T>::FMTSWSDAType *contentNotNull() const;
+-    typename MLFieldTraits<T>::FMTSWSDAType *contentNotNull();
+-  protected:
+-    ~MEDFileTemplateFieldMultiTS() { }
+-    MEDFileTemplateFieldMultiTS();
+-    MEDFileTemplateFieldMultiTS(const typename MLFieldTraits<T>::FMTSWSDAType& other, bool shallowCopyOfContent);
+-    MEDFileTemplateFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms);
+-    MEDFileTemplateFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
+-  };
+-  
+-  class MEDFileIntFieldMultiTS;
+-
+-  /*!
+-   * User class.
+-   */
+-  class MEDFileFieldMultiTS : public MEDFileTemplateFieldMultiTS<double>
+-  {
+-    friend class MEDFileTemplateFieldMultiTS<double>;
+-  public:
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *shallowCpy() const;
+-    MEDLOADER_EXPORT MEDFileIntFieldMultiTS *convertToInt(bool isDeepCpyGlobs=true) const;
+-    //
+-    MEDLOADER_EXPORT std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
+-    MEDLOADER_EXPORT MEDFileFieldMultiTS *buildNewEmpty() const { return buildNewEmptyImpl(); }
+-  public:
+-  private:
+-    ~MEDFileFieldMultiTS() { }
+-    MEDFileFieldMultiTS() { }
+-    MEDFileFieldMultiTS(const MEDFileFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent);
+-    MEDFileFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms);
+-    MEDFileFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
+-  };
+-
+-  template<class T>
+-  class MEDFileNDTemplateFieldMultiTS : public MEDFileTemplateFieldMultiTS<T>
+-  {
+-  public:
+-    MEDLOADER_EXPORT MEDFileFieldMultiTS *convertToDouble(bool isDeepCpyGlobs=true) const;
+-  protected:
+-    ~MEDFileNDTemplateFieldMultiTS() { }
+-    MEDFileNDTemplateFieldMultiTS() { }
+-    MEDFileNDTemplateFieldMultiTS(const typename MLFieldTraits<T>::FMTSWSDAType& other, bool shallowCopyOfContent):MEDFileTemplateFieldMultiTS<T>(other,shallowCopyOfContent) { }
+-    MEDFileNDTemplateFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileTemplateFieldMultiTS<T>(fid,loadAll,ms) { }
+-    MEDFileNDTemplateFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileTemplateFieldMultiTS<T>(fid,fieldName,loadAll,ms,entities) { }
+-  };
+-
+-  /*!
+-   * User class.
+-   */
+-  class MEDFileIntFieldMultiTS : public MEDFileNDTemplateFieldMultiTS<int>
+-  {
+-    friend class MEDFileTemplateFieldMultiTS<int>;
+-  public:
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *shallowCpy() const { return new MEDFileIntFieldMultiTS(*this); }
+-    MEDLOADER_EXPORT MEDFileIntFieldMultiTS *buildNewEmpty() const { return buildNewEmptyImpl(); }
+-  private:
+-    ~MEDFileIntFieldMultiTS() { }
+-    MEDFileIntFieldMultiTS() { }
+-    MEDFileIntFieldMultiTS(const MEDFileIntFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent):MEDFileNDTemplateFieldMultiTS<int>(other,shallowCopyOfContent) { }
+-    MEDFileIntFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateFieldMultiTS<int>(fid,loadAll,ms) { }
+-    MEDFileIntFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0):MEDFileNDTemplateFieldMultiTS<int>(fid,fieldName,loadAll,ms,entities) { }
+-  };
+-
+-  /*!
+-   * User class.
+-   */
+-  class MEDFileFloatFieldMultiTS : public MEDFileNDTemplateFieldMultiTS<float>
+-  {
+-    friend class MEDFileTemplateFieldMultiTS<float>;
+-  public:
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *shallowCpy() const { return new MEDFileFloatFieldMultiTS(*this); }
+-    MEDLOADER_EXPORT MEDFileFloatFieldMultiTS *buildNewEmpty() const { return buildNewEmptyImpl(); }
+-  private:
+-    ~MEDFileFloatFieldMultiTS() { }
+-    MEDFileFloatFieldMultiTS() { }
+-    MEDFileFloatFieldMultiTS(const MEDFileFloatFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent):MEDFileNDTemplateFieldMultiTS<float>(other,shallowCopyOfContent) { }
+-    MEDFileFloatFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateFieldMultiTS<float>(fid,loadAll,ms) { }
+-    MEDFileFloatFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0):MEDFileNDTemplateFieldMultiTS<float>(fid,fieldName,loadAll,ms,entities) { }
+-  };
+-
+-  class MEDFileAnyTypeFieldMultiTSIterator
+-  {
+-  public:
+-    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSIterator(MEDFileAnyTypeFieldMultiTS *fmts);
+-    MEDLOADER_EXPORT ~MEDFileAnyTypeFieldMultiTSIterator();
+-    MEDLOADER_EXPORT MEDFileAnyTypeField1TS *nextt();
+-  private:
+-    MCAuto<MEDFileAnyTypeFieldMultiTS> _fmts;
+-    int _iter_id;
+-    int _nb_iter;
+-  };
+-
+   class MEDFileFieldsIterator;
+   class MEDFileStructureElements;
+   
+@@ -1436,6 +123,7 @@
+     MEDLOADER_EXPORT bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
+     MEDLOADER_EXPORT bool renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N);
+     MEDLOADER_EXPORT void accept(MEDFileFieldVisitor& visitor) const;
++    MEDLOADER_EXPORT MCAuto<MEDFileFields> linearToQuadratic(const MEDFileMeshes *oldLin, const MEDFileMeshes *newQuad) const;
+   public:
+     MEDLOADER_EXPORT MEDFileFields *extractPart(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const;
+   public:
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileFieldInternal.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileFieldInternal.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileFieldInternal.cxx     1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileFieldInternal.cxx     2018-04-19 17:25:17.805798701 +0200
+@@ -0,0 +1,3189 @@
++// Copyright (C) 2017  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++#include "MEDFileFieldInternal.hxx"
++#include "MEDFileField.hxx"
++#include "MEDFileFieldVisitor.hxx"
++#include "MEDFileStructureElement.hxx"
++#include "MEDLoaderBase.hxx"
++#include "MEDFileSafeCaller.txx"
++#include "MEDFileEntities.hxx"
++
++#include "MEDCouplingGaussLocalization.hxx"
++#include "MEDCouplingFieldTemplate.hxx"
++#include "MEDCouplingFieldDouble.hxx"
++
++#include "CellModel.hxx"
++
++extern med_geometry_type typmai[MED_N_CELL_FIXED_GEO];
++extern INTERP_KERNEL::NormalizedCellType typmai2[MED_N_CELL_FIXED_GEO];
++extern med_geometry_type typmai3[34];
++
++using namespace MEDCoupling;
++
++MEDFileGTKeeper::~MEDFileGTKeeper()
++{
++}
++
++MEDFileGTKeeper *MEDFileGTKeeperSta::deepCopy() const
++{
++  return new MEDFileGTKeeperSta(_geo_type);
++}
++
++INTERP_KERNEL::NormalizedCellType MEDFileGTKeeperSta::getGeoType() const
++{
++  return _geo_type;
++}
++
++std::string MEDFileGTKeeperSta::getRepr() const
++{
++  return INTERP_KERNEL::CellModel::GetCellModel(_geo_type).getRepr();
++}
++
++bool MEDFileGTKeeperSta::isEqual(const MEDFileGTKeeper *other) const
++{
++  const MEDFileGTKeeperSta *otherC(dynamic_cast<const MEDFileGTKeeperSta *>(other));
++  if(!otherC)
++    return false;
++  return _geo_type==otherC->_geo_type;
++}
++
++MEDFileGTKeeperDyn::MEDFileGTKeeperDyn(const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileStructureElement *se):_mesh(mesh),_section(section),_se(se)
++{
++  if(mesh)
++    mesh->incrRef();
++  if(section)
++    section->incrRef();
++  if(se)
++    se->incrRef();
++  if(_mesh.isNull() || _section.isNull() || _se.isNull())
++    throw INTERP_KERNEL::Exception("MEDFileGTKeeperDyn constructor : null pointer not allowed !");
++}
++
++MEDFileGTKeeper *MEDFileGTKeeperDyn::deepCopy() const
++{
++  return new MEDFileGTKeeperDyn(_mesh,_section,_se);
++}
++
++INTERP_KERNEL::NormalizedCellType MEDFileGTKeeperDyn::getGeoType() const
++{
++  throw INTERP_KERNEL::Exception("MEDFileGTKeeperDyn::getGeoType : not valid !");
++}
++
++std::string MEDFileGTKeeperDyn::getRepr() const
++{
++  std::ostringstream oss;
++  oss << _se->getDynGT();
++  return oss.str();
++}
++
++bool MEDFileGTKeeperDyn::isEqual(const MEDFileGTKeeper *other) const
++{
++  const MEDFileGTKeeperDyn *otherC(dynamic_cast<const MEDFileGTKeeperDyn *>(other));
++  if(!otherC)
++    return false;
++  return this==otherC;
++}
++
++MEDFileFieldLoc *MEDFileFieldLoc::New(med_idt fid, const std::string& locName)
++{
++  return new MEDFileFieldLoc(fid,locName);
++}
++
++MEDFileFieldLoc *MEDFileFieldLoc::New(med_idt fid, int id, const MEDFileEntities *entities)
++{
++  return new MEDFileFieldLoc(fid,id,entities);
++}
++
++MEDFileFieldLoc *MEDFileFieldLoc::New(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w)
++{
++  return new MEDFileFieldLoc(locName,geoType,refCoo,gsCoo,w);
++}
++
++MEDFileFieldLoc::MEDFileFieldLoc(med_idt fid, const std::string& locName):_name(locName)
++{
++  med_geometry_type geotype;
++  med_geometry_type sectiongeotype;
++  int nsectionmeshcell;
++  INTERP_KERNEL::AutoPtr<char> geointerpname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  INTERP_KERNEL::AutoPtr<char> sectionmeshname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  MEDlocalizationInfoByName(fid,locName.c_str(),&geotype,&_dim,&_nb_gauss_pt,geointerpname,sectionmeshname,&nsectionmeshcell,&sectiongeotype);
++  _gt=new MEDFileGTKeeperSta((INTERP_KERNEL::NormalizedCellType)(std::distance(typmai3,std::find(typmai3,typmai3+34,geotype))));
++  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(getGeoType()));
++  _nb_node_per_cell=cm.getNumberOfNodes();
++  _ref_coo.resize(_dim*_nb_node_per_cell);
++  _gs_coo.resize(_dim*_nb_gauss_pt);
++  _w.resize(_nb_gauss_pt);
++  MEDFILESAFECALLERRD0(MEDlocalizationRd,(fid,locName.c_str(),MED_FULL_INTERLACE,&_ref_coo[0],&_gs_coo[0],&_w[0]));
++}
++
++MEDFileFieldLoc::MEDFileFieldLoc(med_idt fid, int id, const MEDFileEntities *entities)
++{
++  med_geometry_type geotype;
++  med_geometry_type sectiongeotype;
++  int nsectionmeshcell;
++  INTERP_KERNEL::AutoPtr<char> locName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  INTERP_KERNEL::AutoPtr<char> geointerpname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  INTERP_KERNEL::AutoPtr<char> sectionmeshname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  MEDFILESAFECALLERRD0(MEDlocalizationInfo,(fid,id+1,locName,&geotype,&_dim,&_nb_gauss_pt,geointerpname,sectionmeshname,&nsectionmeshcell,&sectiongeotype));
++  _name=locName;
++  std::string sectionName(MEDLoaderBase::buildStringFromFortran(sectionmeshname,MED_NAME_SIZE));
++  if(sectionName.empty())
++    {
++      _gt=new MEDFileGTKeeperSta((INTERP_KERNEL::NormalizedCellType)(std::distance(typmai3,std::find(typmai3,typmai3+34,geotype))));
++      const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(getGeoType()));
++      _nb_node_per_cell=cm.getNumberOfNodes();
++    }
++  else
++    {
++      const MEDFileAllStaticEntitiesPlusDyn *entities2(dynamic_cast<const MEDFileAllStaticEntitiesPlusDyn *>(entities));
++      if(!entities2)
++        {
++          std::ostringstream oss; oss << "MEDFileFieldLoc cstr : for loc \"" << _name << "\" presence of non static type ! Expect entities !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      const MEDFileStructureElement *se(entities2->getWithGT(geotype));
++      const MEDFileUMesh *um(entities2->getSupMeshWithName(se->getMeshName()));
++      const MEDFileUMesh *section(entities2->getSupMeshWithName(sectionName));
++      _gt=new MEDFileGTKeeperDyn(um,section,se);
++      {
++        int dummy;
++        MEDFILESAFECALLERRD0(MEDmeshGeotypeParameter,(fid,geotype,&dummy,&_nb_node_per_cell));
++      }
++    }
++  _ref_coo.resize(_dim*_nb_node_per_cell);
++  _gs_coo.resize(_dim*_nb_gauss_pt);
++  _w.resize(_nb_gauss_pt);
++  MEDFILESAFECALLERRD0(MEDlocalizationRd,(fid,locName,MED_FULL_INTERLACE,&_ref_coo[0],&_gs_coo[0],&_w[0]));
++}
++
++MEDFileFieldLoc::MEDFileFieldLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType,
++                                 const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w):_name(locName),_gt(new MEDFileGTKeeperSta(geoType)),_ref_coo(refCoo),_gs_coo(gsCoo),_w(w)
++{
++  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(getGeoType()));
++  _dim=cm.getDimension();
++  _nb_node_per_cell=cm.getNumberOfNodes();
++  _nb_gauss_pt=_w.size();
++}
++
++
++MEDFileFieldLoc::MEDFileFieldLoc(const MEDFileFieldLoc& other):_dim(other._dim),_nb_gauss_pt(other._nb_gauss_pt),_gt(other._gt->deepCopy()),_nb_node_per_cell(other._nb_node_per_cell),_name(other._name),_ref_coo(other._ref_coo),_gs_coo(other._gs_coo),_w(other._w)
++{
++}
++
++MEDFileFieldLoc *MEDFileFieldLoc::deepCopy() const
++{
++  return new MEDFileFieldLoc(*this);
++}
++
++bool MEDFileFieldLoc::isOnStructureElement() const
++{
++  const MEDFileGTKeeper *gt(_gt);
++  if(!gt)
++    throw INTERP_KERNEL::Exception("MEDFileFieldLoc::isOnStructureElement : null pointer !");
++  const MEDFileGTKeeperDyn *gt2(dynamic_cast<const MEDFileGTKeeperDyn *>(gt));
++  return gt2!=NULL;
++}
++
++std::size_t MEDFileFieldLoc::getHeapMemorySizeWithoutChildren() const
++{
++  return (_ref_coo.capacity()+_gs_coo.capacity()+_w.capacity())*sizeof(double)+_name.capacity();
++}
++
++std::vector<const BigMemoryObject *> MEDFileFieldLoc::getDirectChildrenWithNull() const
++{
++  return std::vector<const BigMemoryObject *>();
++}
++
++void MEDFileFieldLoc::simpleRepr(std::ostream& oss) const
++{
++  static const char OFF7[]="\n    ";
++  oss << "\"" << _name << "\"" << OFF7;
++  oss << "GeoType=" << _gt->getRepr() << OFF7;
++  oss << "Dimension=" << _dim << OFF7;
++  oss << "Number of Gauss points=" << _nb_gauss_pt << OFF7;
++  oss << "Number of nodes per cell=" << _nb_node_per_cell << OFF7;
++  oss << "RefCoords="; std::copy(_ref_coo.begin(),_ref_coo.end(),std::ostream_iterator<double>(oss," ")); oss << OFF7;
++  oss << "Weights="; std::copy(_w.begin(),_w.end(),std::ostream_iterator<double>(oss," ")); oss << OFF7;
++  oss << "GaussPtsCoords="; std::copy(_gs_coo.begin(),_gs_coo.end(),std::ostream_iterator<double>(oss," ")); oss << std::endl;
++}
++
++void MEDFileFieldLoc::setName(const std::string& name)
++{
++  _name=name;
++}
++
++bool MEDFileFieldLoc::isEqual(const MEDFileFieldLoc& other, double eps) const
++{
++  if(_name!=other._name)
++    return false;
++  if(_dim!=other._dim)
++    return false;
++  if(_nb_gauss_pt!=other._nb_gauss_pt)
++    return false;
++  if(_nb_node_per_cell!=other._nb_node_per_cell)
++    return false;
++  if(!_gt->isEqual(other._gt))
++    return false;
++  if(!MEDCouplingGaussLocalization::AreAlmostEqual(_ref_coo,other._ref_coo,eps))
++    return false;
++  if(!MEDCouplingGaussLocalization::AreAlmostEqual(_gs_coo,other._gs_coo,eps))
++    return false;
++  if(!MEDCouplingGaussLocalization::AreAlmostEqual(_w,other._w,eps))
++    return false;
++
++  return true;
++}
++
++void MEDFileFieldLoc::writeLL(med_idt fid) const
++{
++  MEDFILESAFECALLERWR0(MEDlocalizationWr,(fid,_name.c_str(),typmai3[(int)getGeoType()],_dim,&_ref_coo[0],MED_FULL_INTERLACE,_nb_gauss_pt,&_gs_coo[0],&_w[0],MED_NO_INTERPOLATION,MED_NO_MESH_SUPPORT));
++}
++
++std::string MEDFileFieldLoc::repr() const
++{
++  std::ostringstream oss; oss.precision(15);
++  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(getGeoType()));
++  oss << "Localization \"" << _name << "\" :\n" << "  - Geometric Type : " << cm.getRepr();
++  oss << "\n  - Dimension : " << _dim << "\n  - Number of gauss points : ";
++  oss << _nb_gauss_pt << "\n  - Number of nodes in cell : " << _nb_node_per_cell;
++  oss << "\n  - Ref coords are : ";
++  int sz=_ref_coo.size();
++  if(sz%_dim==0)
++    {
++      int nbOfTuples=sz/_dim;
++      for(int i=0;i<nbOfTuples;i++)
++        {
++          oss << "(";
++          for(int j=0;j<_dim;j++)
++            { oss << _ref_coo[i*_dim+j]; if(j!=_dim-1) oss << ", "; }
++          oss << ") ";
++        }
++    }
++  else
++    std::copy(_ref_coo.begin(),_ref_coo.end(),std::ostream_iterator<double>(oss," "));
++  oss << "\n  - Gauss coords in reference element : ";
++  sz=_gs_coo.size();
++  if(sz%_dim==0)
++    {
++      int nbOfTuples=sz/_dim;
++      for(int i=0;i<nbOfTuples;i++)
++        {
++          oss << "(";
++          for(int j=0;j<_dim;j++)
++            { oss << _gs_coo[i*_dim+j]; if(j!=_dim-1) oss << ", "; }
++          oss << ") ";
++        }
++    }
++  else
++    std::copy(_gs_coo.begin(),_gs_coo.end(),std::ostream_iterator<double>(oss," "));
++  oss << "\n  - Weights of Gauss coords are : "; std::copy(_w.begin(),_w.end(),std::ostream_iterator<double>(oss," "));
++  return oss.str();
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::assignFieldNoProfile(int& start, int offset, int nbOfCells, const MEDCouplingFieldTemplate *field, const DataArray *arrr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
++{
++  _type=field->getTypeOfField();
++  _start=start;
++  switch(_type)
++  {
++    case ON_CELLS:
++      {
++        getOrCreateAndGetArray()->setContigPartOfSelectedValuesSlice(_start,arrr,offset,offset+nbOfCells,1);
++        _end=_start+nbOfCells;
++        _nval=nbOfCells;
++        break;
++      }
++    case ON_GAUSS_NE:
++      {
++        MCAuto<DataArrayInt> arr=field->getDiscretization()->getOffsetArr(field->getMesh());
++        const int *arrPtr=arr->getConstPointer();
++        getOrCreateAndGetArray()->setContigPartOfSelectedValuesSlice(_start,arrr,arrPtr[offset],arrPtr[offset+nbOfCells],1);
++        _end=_start+(arrPtr[offset+nbOfCells]-arrPtr[offset]);
++        _nval=nbOfCells;
++        break;
++      }
++    case ON_GAUSS_PT:
++      {
++        const MEDCouplingFieldDiscretization *disc(field->getDiscretization());
++        const MEDCouplingGaussLocalization& gsLoc(field->getGaussLocalization(_loc_id));
++        const MEDCouplingFieldDiscretizationGauss *disc2(dynamic_cast<const MEDCouplingFieldDiscretizationGauss *>(disc));
++        if(!disc2)
++          throw INTERP_KERNEL::Exception("assignFieldNoProfile : invalid call to this method ! Internal Error !");
++        const DataArrayInt *dai(disc2->getArrayOfDiscIds());
++        MCAuto<DataArrayInt> dai2(disc2->getOffsetArr(field->getMesh()));
++        const int *dai2Ptr(dai2->getConstPointer());
++        int nbi(gsLoc.getWeights().size());
++        MCAuto<DataArrayInt> da2(dai->selectByTupleIdSafeSlice(offset,offset+nbOfCells,1));
++        MCAuto<DataArrayInt> da3(da2->findIdsEqual(_loc_id));
++        const int *da3Ptr(da3->getConstPointer());
++        if(da3->getNumberOfTuples()!=nbOfCells)
++          {//profile : for gauss even in NoProfile !!!
++            std::ostringstream oss; oss << "Pfl_" << nasc.getName() << "_" << INTERP_KERNEL::CellModel::GetCellModel(getGeoType()).getRepr() << "_" << _loc_id;
++            _profile=oss.str();
++            da3->setName(_profile.c_str());
++            glob.appendProfile(da3);
++          }
++        MCAuto<DataArrayInt> da4(DataArrayInt::New());
++        _nval=da3->getNbOfElems();
++        da4->alloc(_nval*nbi,1);
++        int *da4Ptr(da4->getPointer());
++        for(int i=0;i<_nval;i++)
++          {
++            int ref=dai2Ptr[offset+da3Ptr[i]];
++            for(int j=0;j<nbi;j++)
++              *da4Ptr++=ref+j;
++          }
++        std::ostringstream oss2; oss2 << "Loc_" << nasc.getName() << "_" << INTERP_KERNEL::CellModel::GetCellModel(getGeoType()).getRepr() << "_" << _loc_id;
++        _localization=oss2.str();
++        getOrCreateAndGetArray()->setContigPartOfSelectedValues(_start,arrr,da4);
++        _end=_start+_nval*nbi;
++        glob.appendLoc(_localization.c_str(),getGeoType(),gsLoc.getRefCoords(),gsLoc.getGaussCoords(),gsLoc.getWeights());
++        break;
++      }
++    default:
++      throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::assignFieldNoProfile : not implemented yet for such discretization type of field !");
++  }
++  start=_end;
++}
++
++/*!
++ * Leaf method of field with profile assignment. This method is the most general one. No optimization is done here.
++ * \param [in] pflName input containing name of profile if any. 0 if no profile (except for GAUSS_PT where a no profile can hide a profile when split by loc_id).
++ * \param [in] multiTypePfl is the end user profile specified in high level API
++ * \param [in] idsInPfl is the selection into the \a multiTypePfl whole profile that corresponds to the current geometric type.
++ * \param [in] locIds is the profile needed to be created for MED file format. It can be null if all cells of current geometric type are fetched in \a multiTypePfl.
++ *             \b WARNING if not null the MED file profile can be subdivided again in case of Gauss points.
++ * \param [in] mesh is the mesh coming from the MEDFileMesh instance in correspondence with the MEDFileField. The mesh inside the \a field is simply ignored.
++ */
++void MEDFileFieldPerMeshPerTypePerDisc::assignFieldProfile(bool isPflAlone, int& start, const DataArrayInt *multiTypePfl, const DataArrayInt *idsInPfl, DataArrayInt *locIds, int nbOfEltsInWholeMesh, const MEDCouplingFieldTemplate *field, const DataArray *arrr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
++{
++  _profile.clear();
++  _type=field->getTypeOfField();
++  std::string pflName(multiTypePfl->getName());
++  std::ostringstream oss; oss << pflName;
++  if(_type!=ON_NODES)
++    {
++      if(!isPflAlone)
++        { const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(getGeoType()); oss << "_" <<  cm.getRepr(); }
++    }
++  else
++    { oss << "_NODE"; }
++  if(locIds)
++    {
++      if(pflName.empty())
++        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::assignFieldProfile : existing profile with empty name !");
++      if(_type!=ON_GAUSS_PT)
++        {
++          locIds->setName(oss.str());
++          glob.appendProfile(locIds);
++          _profile=oss.str();
++        }
++    }
++  _start=start;
++  switch(_type)
++  {
++    case ON_NODES:
++      {
++        _nval=idsInPfl->getNumberOfTuples();
++        getOrCreateAndGetArray()->setContigPartOfSelectedValuesSlice(_start,arrr,0,arrr->getNumberOfTuples(),1);
++        _end=_start+_nval;
++        break;
++      }
++    case ON_CELLS:
++      {
++        _nval=idsInPfl->getNumberOfTuples();
++        getOrCreateAndGetArray()->setContigPartOfSelectedValues(_start,arrr,idsInPfl);
++        _end=_start+_nval;
++        break;
++      }
++    case ON_GAUSS_NE:
++      {
++        MCAuto<DataArrayInt> arr=field->getDiscretization()->getOffsetArr(mesh);
++        MCAuto<DataArrayInt> arr2=arr->deltaShiftIndex();
++        MCAuto<DataArrayInt> arr3=arr2->selectByTupleId(multiTypePfl->begin(),multiTypePfl->end());
++        arr3->computeOffsetsFull();
++        MCAuto<DataArrayInt> tmp=idsInPfl->buildExplicitArrByRanges(arr3);
++        int trueNval=tmp->getNumberOfTuples();
++        _nval=idsInPfl->getNumberOfTuples();
++        getOrCreateAndGetArray()->setContigPartOfSelectedValues(_start,arrr,tmp);
++        _end=_start+trueNval;
++        break;
++      }
++    case ON_GAUSS_PT:
++      {
++        const MEDCouplingFieldDiscretizationGauss *disc2=dynamic_cast<const MEDCouplingFieldDiscretizationGauss *>(field->getDiscretization());
++        if(!disc2)
++          throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : invalid call to this method ! Internal Error !");
++        const DataArrayInt *da1=disc2->getArrayOfDiscIds();
++        const MEDCouplingGaussLocalization& gsLoc=field->getGaussLocalization(_loc_id);
++        MCAuto<DataArrayInt> da2=da1->selectByTupleId(idsInPfl->begin(),idsInPfl->end());
++        MCAuto<DataArrayInt> da3=da2->findIdsEqual(_loc_id);
++        MCAuto<DataArrayInt> da4=idsInPfl->selectByTupleId(da3->begin(),da3->end());
++        //
++        MCAuto<MEDCouplingMesh> mesh2=mesh->buildPart(multiTypePfl->begin(),multiTypePfl->end());
++        MCAuto<DataArrayInt> arr=disc2->getOffsetArr(mesh2);
++        //
++        MCAuto<DataArrayInt> tmp=DataArrayInt::New();
++        int trueNval=0;
++        for(const int *pt=da4->begin();pt!=da4->end();pt++)
++          trueNval+=arr->getIJ(*pt+1,0)-arr->getIJ(*pt,0);
++        tmp->alloc(trueNval,1);
++        int *tmpPtr=tmp->getPointer();
++        for(const int *pt=da4->begin();pt!=da4->end();pt++)
++          for(int j=arr->getIJ(*pt,0);j<arr->getIJ(*pt+1,0);j++)
++            *tmpPtr++=j;
++        //
++        _nval=da4->getNumberOfTuples();
++        getOrCreateAndGetArray()->setContigPartOfSelectedValues(_start,arrr,tmp);
++        _end=_start+trueNval;
++        oss << "_loc_" << _loc_id;
++        if(locIds)
++          {
++            MCAuto<DataArrayInt> da5=locIds->selectByTupleId(da3->begin(),da3->end());
++            da5->setName(oss.str());
++            glob.appendProfile(da5);
++            _profile=oss.str();
++          }
++        else
++          {
++            if(!da3->isIota(nbOfEltsInWholeMesh))
++              {
++                da3->setName(oss.str());
++                glob.appendProfile(da3);
++                _profile=oss.str();
++              }
++          }
++        std::ostringstream oss2; oss2 << "Loc_" << nasc.getName() << "_" << INTERP_KERNEL::CellModel::GetCellModel(getGeoType()).getRepr() << "_" << _loc_id;
++        _localization=oss2.str();
++        glob.appendLoc(_localization.c_str(),getGeoType(),gsLoc.getRefCoords(),gsLoc.getGaussCoords(),gsLoc.getWeights());
++        break;
++      }
++    default:
++      throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::assignFieldProfile : not implemented yet for such discretization type of field !");
++  }
++  start=_end;
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arrr, MEDFileFieldGlobsReal& glob)
++{
++  _start=start;
++  _nval=arrr->getNumberOfTuples();
++  getOrCreateAndGetArray()->setContigPartOfSelectedValuesSlice(_start,arrr,0,_nval,1);
++  _end=_start+_nval;
++  start=_end;
++}
++
++MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypePerDisc::NewOnRead(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int profileIt, const PartDefinition *pd)
++{
++  return new MEDFileFieldPerMeshPerTypePerDisc(fath,type,profileIt,pd);
++}
++
++MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypePerDisc::New(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int locId)
++{
++  return new MEDFileFieldPerMeshPerTypePerDisc(fath,type,locId,std::string());
++}
++
++MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypePerDisc::New(const MEDFileFieldPerMeshPerTypePerDisc& other)
++{
++  return new MEDFileFieldPerMeshPerTypePerDisc(other);
++}
++
++std::size_t MEDFileFieldPerMeshPerTypePerDisc::getHeapMemorySizeWithoutChildren() const
++{
++  return _profile.capacity()+_localization.capacity()+sizeof(MEDFileFieldPerMeshPerTypePerDisc);
++}
++
++std::vector<const BigMemoryObject *> MEDFileFieldPerMeshPerTypePerDisc::getDirectChildrenWithNull() const
++{
++  std::vector<const BigMemoryObject *> ret(1);
++  ret[0]=(const PartDefinition*)_pd;
++  return ret;
++}
++
++MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypePerDisc::deepCopy(MEDFileFieldPerMeshPerTypeCommon *father) const
++{
++  MCAuto<MEDFileFieldPerMeshPerTypePerDisc> ret(new MEDFileFieldPerMeshPerTypePerDisc(*this));
++  ret->_father=father;
++  return ret.retn();
++}
++
++MEDFileFieldPerMeshPerTypePerDisc::MEDFileFieldPerMeshPerTypePerDisc(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField atype, int profileIt, const PartDefinition *pd)
++try:_type(atype),_father(fath),_profile_it(profileIt),_pd(const_cast<PartDefinition *>(pd))
++{
++  if(pd)
++    pd->incrRef();
++}
++catch(INTERP_KERNEL::Exception& e)
++{
++    throw e;
++}
++
++MEDFileFieldPerMeshPerTypePerDisc::MEDFileFieldPerMeshPerTypePerDisc(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int locId, const std::string& dummy):_type(type),_father(fath),_loc_id(locId)
++{
++}
++
++MEDFileFieldPerMeshPerTypePerDisc::MEDFileFieldPerMeshPerTypePerDisc(const MEDFileFieldPerMeshPerTypePerDisc& other):RefCountObject(other),_type(other._type),_father(0),_start(other._start),_end(other._end),_nval(other._nval),_profile(other._profile),_localization(other._localization),_loc_id(other._loc_id),_profile_it(other._profile_it),_pd(other._pd),_tmp_work1(other._tmp_work1)
++{
++}
++
++MEDFileFieldPerMeshPerTypePerDisc::MEDFileFieldPerMeshPerTypePerDisc():_type(ON_CELLS),_father(0),_start(-std::numeric_limits<int>::max()),_end(-std::numeric_limits<int>::max()),
++    _nval(-std::numeric_limits<int>::max()),_loc_id(-std::numeric_limits<int>::max())
++{
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::goReadZeValuesInFile(med_idt fid, const std::string& fieldName, int nbOfCompo, int iteration, int order, med_entity_type menti, med_geometry_type mgeoti, unsigned char *startFeedingPtr)
++{
++  const PartDefinition *pd(_pd);
++  if(!pd)
++    {
++      med_entity_type mentiCpy(menti);
++      INTERP_KERNEL::AutoPtr<char> locname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++      int nbi,tmp1;
++      med_int nbValsInFile(MEDfieldnValueWithProfileByName(fid,fieldName.c_str(),iteration,order,menti,mgeoti,_profile.c_str(),MED_COMPACT_PFLMODE,&tmp1,locname,&nbi));
++      if(nbValsInFile==0 && menti==MED_CELL)
++        {//
++          nbValsInFile=MEDfieldnValueWithProfileByName(fid,fieldName.c_str(),iteration,order,MED_DESCENDING_FACE,mgeoti,_profile.c_str(),MED_COMPACT_PFLMODE,&tmp1,locname,&nbi);
++          if(nbValsInFile==0)
++            {
++              nbValsInFile=MEDfieldnValueWithProfileByName(fid,fieldName.c_str(),iteration,order,MED_DESCENDING_EDGE,mgeoti,_profile.c_str(),MED_COMPACT_PFLMODE,&tmp1,locname,&nbi);
++              if(nbValsInFile!=0)
++                { mentiCpy=MED_DESCENDING_EDGE; }
++            }
++          else
++            { mentiCpy=MED_DESCENDING_FACE; }
++        }
++      if(_end-_start!=nbValsInFile*nbi)
++        {
++          std::ostringstream oss; oss << "MEDFileFieldPerMeshPerTypePerDisc::goReadZeValuesInFile : The number of tuples to read is " << nbValsInFile << "*" << nbi <<  " (nb integration points) ! But in data structure it values " << _end-_start << " is expected !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      MEDFILESAFECALLERRD0(MEDfieldValueWithProfileRd,(fid,fieldName.c_str(),iteration,order,mentiCpy,mgeoti,MED_COMPACT_PFLMODE,_profile.c_str(),MED_FULL_INTERLACE,MED_ALL_CONSTITUENT,startFeedingPtr));
++    }
++  else
++    {
++      if(!_profile.empty())
++        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::goReadZeValuesInFile : not implemented !");
++      INTERP_KERNEL::AutoPtr<char> pflname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE)),locname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++      int profilesize,nbi;
++      int overallNval(MEDfieldnValueWithProfile(fid,fieldName.c_str(),iteration,order,menti,mgeoti,_profile_it+1,MED_COMPACT_PFLMODE,pflname,&profilesize,locname,&nbi));
++      const SlicePartDefinition *spd(dynamic_cast<const SlicePartDefinition *>(pd));
++      if(spd)
++        {
++          int start,stop,step;
++          spd->getSlice(start,stop,step);
++          int nbOfEltsToLoad(DataArray::GetNumberOfItemGivenBES(start,stop,step,"MEDFileFieldPerMeshPerTypePerDisc::goReadZeValuesInFile"));
++          med_filter filter=MED_FILTER_INIT;
++          MEDFILESAFECALLERRD0(MEDfilterBlockOfEntityCr,(fid,/*nentity*/overallNval,/*nvaluesperentity*/nbi,/*nconstituentpervalue*/nbOfCompo,
++                                                         MED_ALL_CONSTITUENT,MED_FULL_INTERLACE,MED_COMPACT_STMODE,MED_NO_PROFILE,
++                                                         /*start*/start+1,/*stride*/step,/*count*/1,/*blocksize*/nbOfEltsToLoad,
++                                                         /*lastblocksize=useless because count=1*/0,&filter));
++          MEDFILESAFECALLERRD0(MEDfieldValueAdvancedRd,(fid,fieldName.c_str(),iteration,order,menti,mgeoti,&filter,startFeedingPtr));
++          MEDfilterClose(&filter);
++          return ;
++        }
++      const DataArrayPartDefinition *dpd(dynamic_cast<const DataArrayPartDefinition *>(pd));
++      if(dpd)
++        {
++          dpd->checkConsistencyLight();
++          MCAuto<DataArrayInt> myIds(dpd->toDAI());
++          int a(myIds->getMinValueInArray()),b(myIds->getMaxValueInArray());
++          myIds=myIds->deepCopy();// WARNING deep copy here because _pd is modified by applyLin !!!
++          myIds->applyLin(1,-a);
++          int nbOfEltsToLoad(b-a+1);
++          med_filter filter=MED_FILTER_INIT;
++          {//TODO : manage int32 !
++            MCAuto<DataArrayDouble> tmp(DataArrayDouble::New());
++            tmp->alloc(nbOfEltsToLoad,nbOfCompo);
++            MEDFILESAFECALLERRD0(MEDfilterBlockOfEntityCr,(fid,/*nentity*/overallNval,/*nvaluesperentity*/nbi,/*nconstituentpervalue*/nbOfCompo,
++                                                           MED_ALL_CONSTITUENT,MED_FULL_INTERLACE,MED_COMPACT_STMODE,MED_NO_PROFILE,
++                                                           /*start*/a+1,/*stride*/1,/*count*/1,/*blocksize*/nbOfEltsToLoad,
++                                                           /*lastblocksize=useless because count=1*/0,&filter));
++            MEDFILESAFECALLERRD0(MEDfieldValueAdvancedRd,(fid,fieldName.c_str(),iteration,order,menti,mgeoti,&filter,reinterpret_cast<unsigned char *>(tmp->getPointer())));
++            MCAuto<DataArrayDouble> feeder(DataArrayDouble::New());
++            feeder->useExternalArrayWithRWAccess(reinterpret_cast<double *>(startFeedingPtr),_nval,nbOfCompo);
++            feeder->setContigPartOfSelectedValues(0,tmp,myIds);
++          }
++          MEDfilterClose(&filter);
++        }
++      else
++        throw INTERP_KERNEL::Exception("Not implemented yet for not slices!");
++    }
++}
++
++const MEDFileFieldPerMeshPerTypeCommon *MEDFileFieldPerMeshPerTypePerDisc::getFather() const
++{
++  return _father;
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::loadOnlyStructureOfDataRecursively(med_idt fid, int& start, const MEDFileFieldNameScope& nasc)
++{
++  INTERP_KERNEL::AutoPtr<char> locname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  INTERP_KERNEL::AutoPtr<char> pflname(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  std::string fieldName(nasc.getName()),meshName(getMeshName());
++  int iteration(getIteration()),order(getOrder()),profilesize,nbi;
++  TypeOfField type(getType());
++  med_geometry_type mgeoti;
++  med_entity_type menti;
++  _father->entriesForMEDfile(type,mgeoti,menti);
++  int zeNVal(MEDfieldnValueWithProfile(fid,fieldName.c_str(),iteration,order,menti,mgeoti,_profile_it+1,MED_COMPACT_PFLMODE,pflname,&profilesize,locname,&nbi));
++  if(zeNVal==0 && type==ON_CELLS)
++    {//eheh maybe there's a surprise :)
++      int zeNVal1(MEDfieldnValueWithProfile(fid,fieldName.c_str(),iteration,order,MED_DESCENDING_FACE,mgeoti,_profile_it+1,MED_COMPACT_PFLMODE,pflname,&profilesize,locname,&nbi));
++      if(zeNVal1==0)
++        {
++          int zeNVal2(MEDfieldnValueWithProfile(fid,fieldName.c_str(),iteration,order,MED_DESCENDING_EDGE,mgeoti,_profile_it+1,MED_COMPACT_PFLMODE,pflname,&profilesize,locname,&nbi));
++          if(zeNVal2!=0)
++            zeNVal=zeNVal2;
++        }
++      else
++        {
++          zeNVal=zeNVal1;
++        }
++    }
++  _profile=MEDLoaderBase::buildStringFromFortran(pflname,MED_NAME_SIZE);
++  _localization=MEDLoaderBase::buildStringFromFortran(locname,MED_NAME_SIZE);
++  const PartDefinition *pd(_pd);
++  if(!pd)
++    {
++      _nval=zeNVal;
++    }
++  else
++    {
++      if(!_profile.empty())
++        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::loadOnlyStructureOfDataRecursively : profiles are not managed yet with part of def !");
++      _nval=pd->getNumberOfElems();
++    }
++  _start=start;
++  _end=start+_nval*nbi;
++  start=_end;
++  if(type==ON_CELLS && !_localization.empty())
++    {
++      if(_localization!="MED_GAUSS_ELNO")//For compatibility with MED2.3
++        setType(ON_GAUSS_PT);
++      else
++        {
++          setType(ON_GAUSS_NE);
++          _localization.clear();
++        }
++    }
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::loadBigArray(med_idt fid, const MEDFileFieldNameScope& nasc)
++{
++  std::string fieldName(nasc.getName()),meshName(getMeshName());
++  int iteration(getIteration()),order(getOrder());
++  TypeOfField type(getType());
++  med_geometry_type mgeoti;
++  med_entity_type menti;
++  _father->entriesForMEDfile(type,mgeoti,menti);
++  if(_start>_end)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::loadBigArray : internal error in range !");
++  if(_start==_end)
++    return ;
++  DataArray *arr(getOrCreateAndGetArray());//arr is not null due to the spec of getOrCreateAndGetArray
++  if(_start<0 || _start>=arr->getNumberOfTuples())
++    {
++      std::ostringstream oss; oss << "MEDFileFieldPerMeshPerTypePerDisc::loadBigArray : Invalid start ("<< _start << ") regarding admissible range of allocated array [0," << arr->getNumberOfTuples() << ") !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  if(_end<0 || _end>arr->getNumberOfTuples())
++    {
++      std::ostringstream oss; oss << "MEDFileFieldPerMeshPerTypePerDisc::loadBigArray : Invalid start ("<< _start << ") regarding admissible range of allocated array [0," << arr->getNumberOfTuples() << "] !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  int nbOfCompo(arr->getNumberOfComponents());
++  DataArrayDouble *arrD(dynamic_cast<DataArrayDouble *>(arr));
++  if(arrD)
++    {
++      double *startFeeding(arrD->getPointer()+_start*nbOfCompo);
++      goReadZeValuesInFile(fid,fieldName,nbOfCompo,iteration,order,menti,mgeoti,reinterpret_cast<unsigned char*>(startFeeding));
++      return ;
++    }
++  DataArrayInt *arrI(dynamic_cast<DataArrayInt *>(arr));
++  if(arrI)
++    {
++      int *startFeeding(arrI->getPointer()+_start*nbOfCompo);
++      goReadZeValuesInFile(fid,fieldName,nbOfCompo,iteration,order,menti,mgeoti,reinterpret_cast<unsigned char*>(startFeeding));
++      return ;
++    }
++  DataArrayFloat *arrF(dynamic_cast<DataArrayFloat *>(arr));
++  if(arrF)
++    {
++      float *startFeeding(arrF->getPointer()+_start*nbOfCompo);
++      goReadZeValuesInFile(fid,fieldName,nbOfCompo,iteration,order,menti,mgeoti,reinterpret_cast<unsigned char*>(startFeeding));
++      return ;
++    }
++  throw INTERP_KERNEL::Exception("Error on array reading ! Unrecognized type of field ! Should be in FLOAT64 FLOAT32 or INT32 !");
++}
++
++/*!
++ * Set a \c this->_start **and** \c this->_end keeping the same delta between the two.
++ */
++void MEDFileFieldPerMeshPerTypePerDisc::setNewStart(int newValueOfStart)
++{
++  int delta=_end-_start;
++  _start=newValueOfStart;
++  _end=_start+delta;
++}
++
++int MEDFileFieldPerMeshPerTypePerDisc::getIteration() const
++{
++  return _father->getIteration();
++}
++
++int MEDFileFieldPerMeshPerTypePerDisc::getOrder() const
++{
++  return _father->getOrder();
++}
++
++double MEDFileFieldPerMeshPerTypePerDisc::getTime() const
++{
++  return _father->getTime();
++}
++
++std::string MEDFileFieldPerMeshPerTypePerDisc::getMeshName() const
++{
++  return _father->getMeshName();
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::simpleRepr(int bkOffset, std::ostream& oss, int id) const
++{
++  const char startLine[]="    ## ";
++  std::string startLine2(bkOffset,' ');
++  startLine2+=startLine;
++  INTERP_KERNEL::AutoCppPtr<MEDCouplingFieldDiscretization> tmp(MEDCouplingFieldDiscretization::New(_type));
++  oss << startLine2 << "Localization #" << id << "." << std::endl;
++  oss << startLine2 << "  Type=" << tmp->getRepr() << "." << std::endl;
++  oss << startLine2 << "  This type discretization lies on profile : \"" << _profile << "\" and on the following localization : \"" << _localization << "\"." << std::endl;
++  oss << startLine2 << "  This type discretization has " << _end-_start << " tuples (start=" << _start << ", end=" << _end << ")." << std::endl;
++  oss << startLine2 << "  This type discretization has " << (_end-_start)/_nval << " integration points." << std::endl;
++}
++
++TypeOfField MEDFileFieldPerMeshPerTypePerDisc::getType() const
++{
++  return _type;
++}
++
++INTERP_KERNEL::NormalizedCellType MEDFileFieldPerMeshPerTypePerDisc::getGeoType() const
++{
++  return _father->getGeoType();
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const
++{
++  types.insert(_type);
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::setType(TypeOfField newType)
++{
++  _type=newType;
++}
++
++int MEDFileFieldPerMeshPerTypePerDisc::getNumberOfComponents() const
++{
++  return _father->getNumberOfComponents();
++}
++
++int MEDFileFieldPerMeshPerTypePerDisc::getNumberOfTuples() const
++{
++  return _end-_start;
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::incrementNbOfVals(int deltaNbVal)
++{
++  int nbi((_end-_start)/_nval);
++  _nval+=deltaNbVal;
++  _end+=nbi*deltaNbVal;
++}
++
++DataArray *MEDFileFieldPerMeshPerTypePerDisc::getOrCreateAndGetArray()
++{
++  return _father->getOrCreateAndGetArray();
++}
++
++const DataArray *MEDFileFieldPerMeshPerTypePerDisc::getOrCreateAndGetArray() const
++{
++  const MEDFileFieldPerMeshPerTypeCommon *fath=_father;
++  return fath->getOrCreateAndGetArray();
++}
++
++const std::vector<std::string>& MEDFileFieldPerMeshPerTypePerDisc::getInfo() const
++{
++  return _father->getInfo();
++}
++
++std::string MEDFileFieldPerMeshPerTypePerDisc::getProfile() const
++{
++  return _profile;
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::setProfile(const std::string& newPflName)
++{
++  _profile=newPflName;
++}
++
++std::string MEDFileFieldPerMeshPerTypePerDisc::getLocalization() const
++{
++  return _localization;
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::setLocalization(const std::string& newLocName)
++{
++  _localization=newLocName;
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< std::pair<std::vector<std::string>, std::string > >::const_iterator it2=mapOfModif.begin();it2!=mapOfModif.end();it2++)
++    {
++      if(std::find((*it2).first.begin(),(*it2).first.end(),_profile)!=(*it2).first.end())
++        {
++          _profile=(*it2).second;
++          return;
++        }
++    }
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< std::pair<std::vector<std::string>, std::string > >::const_iterator it2=mapOfModif.begin();it2!=mapOfModif.end();it2++)
++    {
++      if(std::find((*it2).first.begin(),(*it2).first.end(),_localization)!=(*it2).first.end())
++        {
++          _localization=(*it2).second;
++          return;
++        }
++    }
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::getFieldAtLevel(TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const
++{
++  if(type!=_type)
++    return ;
++  dads.push_back(std::pair<int,int>(_start,_end));
++  geoTypes.push_back(getGeoType());
++  if(_profile.empty())
++    pfls.push_back(0);
++  else
++    {
++      pfls.push_back(glob->getProfile(_profile.c_str()));
++    }
++  if(_localization.empty())
++    locs.push_back(-1);
++  else
++    {
++      locs.push_back(glob->getLocalizationId(_localization.c_str()));
++    }
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::fillValues(int discId, int& startEntryId, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
++{
++  entries[startEntryId]=std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int> ,std::pair<int,int> >(std::pair<INTERP_KERNEL::NormalizedCellType,int>(getGeoType(),discId),std::pair<int,int>(_start,_end));
++  startEntryId++;
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const
++{
++  TypeOfField type=getType();
++  INTERP_KERNEL::NormalizedCellType geoType(getGeoType());
++  med_geometry_type mgeoti;
++  med_entity_type menti;
++  _father->entriesForMEDfile(getType(),mgeoti,menti);
++  const DataArray *arr(getOrCreateAndGetArray());
++  if(!arr)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::writeLL : no array set !");
++  if(!arr->isAllocated())
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::writeLL : the array to be written is not allocated !");
++  const DataArrayDouble *arrD(dynamic_cast<const DataArrayDouble *>(arr));
++  const DataArrayInt *arrI(dynamic_cast<const DataArrayInt *>(arr));
++  const DataArrayFloat *arrF(dynamic_cast<const DataArrayFloat *>(arr));
++  const unsigned char *locToWrite=0;
++  if(arrD)
++    locToWrite=reinterpret_cast<const unsigned char *>(arrD->getConstPointer()+_start*arr->getNumberOfComponents());
++  else if(arrI)
++    locToWrite=reinterpret_cast<const unsigned char *>(arrI->getConstPointer()+_start*arr->getNumberOfComponents());
++  else if(arrF)
++    locToWrite=reinterpret_cast<const unsigned char *>(arrF->getConstPointer()+_start*arr->getNumberOfComponents());
++  else
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::writeLL : not recognized type of values ! Supported are FLOAT64 FLOAT32 and INT32 !");
++  MEDFILESAFECALLERWR0(MEDfieldValueWithProfileWr,(fid,nasc.getName().c_str(),getIteration(),getOrder(),getTime(),menti,mgeoti,
++                                                   MED_COMPACT_PFLMODE,_profile.c_str(),_localization.c_str(),MED_FULL_INTERLACE,MED_ALL_CONSTITUENT,_nval,
++                                                   locToWrite));
++}
++
++void MEDFileFieldPerMeshPerTypePerDisc::getCoarseData(TypeOfField& type, std::pair<int,int>& dad, std::string& pfl, std::string& loc) const
++{
++  type=_type;
++  pfl=_profile;
++  loc=_localization;
++  dad.first=_start; dad.second=_end;
++}
++
++/*!
++ * \param [in] codeOfMesh is of format returned by MEDCouplingUMesh::getDistributionOfTypes. And for each *i* oldCode[3*i+2] gives the position (MEDFileUMesh::PutInThirdComponentOfCodeOffset).
++ *             This code corresponds to the distribution of types in the corresponding mesh.
++ * \param [out] ptToFill memory zone where the output will be stored.
++ * \return the size of data pushed into output param \a ptToFill
++ */
++int MEDFileFieldPerMeshPerTypePerDisc::fillEltIdsFromCode(int offset, const std::vector<int>& codeOfMesh, const MEDFileFieldGlobsReal& glob, int *ptToFill) const
++{
++  _loc_id=offset;
++  std::ostringstream oss;
++  std::size_t nbOfType=codeOfMesh.size()/3;
++  int found=-1;
++  for(std::size_t i=0;i<nbOfType && found==-1;i++)
++    if(getGeoType()==(INTERP_KERNEL::NormalizedCellType)codeOfMesh[3*i])
++      found=(int)i;
++  if(found==-1)
++    {
++      const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(getGeoType());
++      oss << "MEDFileFieldPerMeshPerTypePerDisc::fillEltIdsFromCode : not found geometric type " << cm.getRepr() << " in the referenced mesh of field !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  int *work=ptToFill;
++  if(_profile.empty())
++    {
++      if(_nval!=codeOfMesh[3*found+1])
++        {
++          const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(getGeoType());
++          oss << "MEDFileFieldPerMeshPerTypePerDisc::fillEltIdsFromCode : for geometric type " << cm.getRepr() << " number of elt ids in mesh is equal to " << _nval;
++          oss << " whereas mesh has " << codeOfMesh[3*found+1] << " for this geometric type !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      for(int ii=codeOfMesh[3*found+2];ii<codeOfMesh[3*found+2]+_nval;ii++)
++        *work++=ii;
++    }
++  else
++    {
++      const DataArrayInt *pfl=glob.getProfile(_profile.c_str());
++      if(pfl->getNumberOfTuples()!=_nval)
++        {
++          const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(getGeoType());
++          oss << "MEDFileFieldPerMeshPerTypePerDisc::fillEltIdsFromCode : for geometric type " << cm.getRepr() << ", field is defined on profile \"" << _profile << "\" and size of profile is ";
++          oss << _nval;
++          oss << pfl->getNumberOfTuples() << " whereas the number of ids is set to " << _nval << " for this geometric type !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      int offset2=codeOfMesh[3*found+2];
++      for(const int *pflId=pfl->begin();pflId!=pfl->end();pflId++)
++        {
++          if(*pflId<codeOfMesh[3*found+1])
++            *work++=offset2+*pflId;
++        }
++    }
++  return _nval;
++}
++
++int MEDFileFieldPerMeshPerTypePerDisc::fillTupleIds(int *ptToFill) const
++{
++  for(int i=_start;i<_end;i++)
++    *ptToFill++=i;
++  return _end-_start;
++}
++
++int MEDFileFieldPerMeshPerTypePerDisc::ConvertType(TypeOfField type, int locId)
++{
++  switch(type)
++  {
++    case ON_CELLS:
++      return -2;
++    case ON_GAUSS_NE:
++      return -1;
++    case ON_GAUSS_PT:
++      return locId;
++    default:
++      throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::ConvertType : not managed type of field !");
++  }
++}
++
++std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> > MEDFileFieldPerMeshPerTypePerDisc::SplitPerDiscretization(const std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>& entries)
++{
++  int id=0;
++  std::map<std::pair<std::string,TypeOfField>,int> m;
++  std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> > ret;
++  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=entries.begin();it!=entries.end();it++)
++    if(m.find(std::pair<std::string,TypeOfField>((*it)->getLocalization(),(*it)->getType()))==m.end())
++      m[std::pair<std::string,TypeOfField>((*it)->getLocalization(),(*it)->getType())]=id++;
++  ret.resize(id);
++  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=entries.begin();it!=entries.end();it++)
++    ret[m[std::pair<std::string,TypeOfField>((*it)->getLocalization(),(*it)->getType())]].push_back(*it);
++  return ret;
++}
++
++/*!
++ * - \c this->_loc_id mutable attribute is used for elt id in mesh offsets.
++ * 
++ * \param [in] offset the offset id used to take into account that \a result is not compulsory empty in input
++ * \param [in] entriesOnSameDisc some entries **on same localization** if not the result can be invalid. The _start and _end on them are relative to \a arr parameter.
++ * \param [in] explicitIdsInMesh ids in mesh of the considered chunk.
++ * \param [in] newCode one of the input parameter to explicit the new geo type dispatch (in classical format same than those asked by MEDFileFields::renumberEntitiesLyingOnMesh)
++ * \param [in,out] glob if necessary by the method, new profiles can be added to it
++ * \param [in,out] arr after the call of this method \a arr is renumbered to be compliant with added entries to \a result.
++ * \param [out] result All new entries will be appended on it.
++ * \return false if the configuration of renumbering leads to an unnecessary resplit of input \a entriesOnSameDisc. If not true is returned (the most general case !)
++ */
++bool MEDFileFieldPerMeshPerTypePerDisc::RenumberChunks(int offset, const std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>& entriesOnSameDisc,
++                                                       const DataArrayInt *explicitIdsInMesh,
++                                                       const std::vector<int>& newCode,
++                                                       MEDFileFieldGlobsReal& glob, DataArrayDouble *arr,
++                                                       std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >& result)
++{
++  if(entriesOnSameDisc.empty())
++    return false;
++  TypeOfField type=entriesOnSameDisc[0]->getType();
++  int szEntities=0,szTuples=0;
++  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=entriesOnSameDisc.begin();it!=entriesOnSameDisc.end();it++)
++    { szEntities+=(*it)->_nval; szTuples+=(*it)->_end-(*it)->_start; }
++  int nbi=szTuples/szEntities;
++  if(szTuples%szEntities!=0)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::RenumberChunks : internal error the splitting into same dicretization failed !");
++  MCAuto<DataArrayInt> renumTuples=DataArrayInt::New(); renumTuples->alloc(szTuples,1);
++  MCAuto<DataArrayInt> ranges=MEDCouplingUMesh::ComputeRangesFromTypeDistribution(newCode);
++  std::vector< MCAuto<DataArrayInt> > newGeoTypesPerChunk(entriesOnSameDisc.size());
++  std::vector< const DataArrayInt * > newGeoTypesPerChunk2(entriesOnSameDisc.size());
++  std::vector< MCAuto<DataArrayInt> > newGeoTypesPerChunk_bis(entriesOnSameDisc.size());
++  std::vector< const DataArrayInt * > newGeoTypesPerChunk3(entriesOnSameDisc.size());
++  MCAuto<DataArrayInt> newGeoTypesPerChunk4=DataArrayInt::New(); newGeoTypesPerChunk4->alloc(szEntities,nbi);
++  int id=0;
++  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=entriesOnSameDisc.begin();it!=entriesOnSameDisc.end();it++,id++)
++    {
++      int startOfEltIdOfChunk=(*it)->_start;
++      MCAuto<DataArrayInt> newEltIds=explicitIdsInMesh->subArray(startOfEltIdOfChunk,startOfEltIdOfChunk+(*it)->_nval);
++      MCAuto<DataArrayInt> rangeIdsForChunk=newEltIds->findRangeIdForEachTuple(ranges);
++      MCAuto<DataArrayInt> idsInRrangeForChunk=newEltIds->findIdInRangeForEachTuple(ranges);
++      //
++      MCAuto<DataArrayInt> tmp=rangeIdsForChunk->duplicateEachTupleNTimes(nbi); rangeIdsForChunk->rearrange(nbi);
++      newGeoTypesPerChunk4->setPartOfValues1(tmp,(*it)->_tmp_work1-offset,(*it)->_tmp_work1+(*it)->_nval*nbi-offset,1,0,nbi,1);
++      //
++      newGeoTypesPerChunk[id]=rangeIdsForChunk; newGeoTypesPerChunk2[id]=rangeIdsForChunk;
++      newGeoTypesPerChunk_bis[id]=idsInRrangeForChunk; newGeoTypesPerChunk3[id]=idsInRrangeForChunk;
++    }
++  MCAuto<DataArrayInt> newGeoTypesEltIdsAllGather=DataArrayInt::Aggregate(newGeoTypesPerChunk2); newGeoTypesPerChunk.clear(); newGeoTypesPerChunk2.clear();
++  MCAuto<DataArrayInt> newGeoTypesEltIdsAllGather2=DataArrayInt::Aggregate(newGeoTypesPerChunk3); newGeoTypesPerChunk_bis.clear(); newGeoTypesPerChunk3.clear();
++  MCAuto<DataArrayInt> diffVals=newGeoTypesEltIdsAllGather->getDifferentValues();
++  MCAuto<DataArrayInt> renumEltIds=newGeoTypesEltIdsAllGather->buildPermArrPerLevel();
++  //
++  MCAuto<DataArrayInt> renumTupleIds=newGeoTypesPerChunk4->buildPermArrPerLevel();
++  //
++  MCAuto<DataArrayDouble> arrPart=arr->subArray(offset,offset+szTuples);
++  arrPart->renumberInPlace(renumTupleIds->begin());
++  arr->setPartOfValues1(arrPart,offset,offset+szTuples,1,0,arrPart->getNumberOfComponents(),1);
++  bool ret=false;
++  const int *idIt=diffVals->begin();
++  std::list<const MEDFileFieldPerMeshPerTypePerDisc *> li(entriesOnSameDisc.begin(),entriesOnSameDisc.end());
++  int offset2=0;
++  for(int i=0;i<diffVals->getNumberOfTuples();i++,idIt++)
++    {
++      MCAuto<DataArrayInt> ids=newGeoTypesEltIdsAllGather->findIdsEqual(*idIt);
++      MCAuto<DataArrayInt> subIds=newGeoTypesEltIdsAllGather2->selectByTupleId(ids->begin(),ids->end());
++      int nbEntityElts=subIds->getNumberOfTuples();
++      bool ret2;
++      MCAuto<MEDFileFieldPerMeshPerTypePerDisc> eltToAdd=MEDFileFieldPerMeshPerTypePerDisc::
++          NewObjectOnSameDiscThanPool(type,(INTERP_KERNEL::NormalizedCellType)newCode[3*(*idIt)],subIds,!subIds->isIota(newCode[3*(*idIt)+1]),nbi,
++                                      offset+offset2,
++                                      li,glob,ret2);
++      ret=ret || ret2;
++      result.push_back(eltToAdd);
++      offset2+=nbEntityElts*nbi;
++    }
++  ret=ret || li.empty();
++  return ret;
++}
++
++/*!
++ * \param [in] typeF type of field of new chunk
++ * \param [in] geoType the geometric type of the chunk
++ * \param [in] idsOfMeshElt the entity ids of mesh (cells or nodes) of the new chunk.
++ * \param [in] isPfl specifies if a profile is requested regarding size of \a idsOfMeshElt and the number of such entities regarding underlying mesh.
++ * \param [in] nbi number of integration points
++ * \param [in] offset The offset in the **global array of data**.
++ * \param [in,out] entriesOnSameDisc the pool **on the same discretization** inside which it will be attempted to find an existing entry corresponding exactly
++ *                 to the new chunk to create.
++ * \param [in,out] glob the global shared info that will be requested for existing profiles or to append a new profile if needed.
++ * \param [out] notInExisting If false the return newly allocated entry is not coming from \a entriesOnSameDisc. If true the output comes from copy of \a entriesOnSameDisc
++ *              and corresponding entry erased from \a entriesOnSameDisc.
++ * \return a newly allocated chunk
++ */
++MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypePerDisc::NewObjectOnSameDiscThanPool(TypeOfField typeF, INTERP_KERNEL::NormalizedCellType geoType, DataArrayInt *idsOfMeshElt,
++                                                                                                  bool isPfl, int nbi, int offset,
++                                                                                                  std::list< const MEDFileFieldPerMeshPerTypePerDisc *>& entriesOnSameDisc,
++                                                                                                  MEDFileFieldGlobsReal& glob,
++                                                                                                  bool &notInExisting)
++{
++  int nbMeshEntities=idsOfMeshElt->getNumberOfTuples();
++  std::list< const MEDFileFieldPerMeshPerTypePerDisc *>::iterator it=entriesOnSameDisc.begin();
++  for(;it!=entriesOnSameDisc.end();it++)
++    {
++      if(((INTERP_KERNEL::NormalizedCellType)(*it)->_loc_id)==geoType && (*it)->_nval==nbMeshEntities)
++        {
++          if(!isPfl)
++            {
++              if((*it)->_profile.empty())
++                break;
++              else
++                if(!(*it)->_profile.empty())
++                  {
++                    const DataArrayInt *pfl=glob.getProfile((*it)->_profile.c_str());
++                    if(pfl->isEqualWithoutConsideringStr(*idsOfMeshElt))
++                      break;
++                  }
++            }
++        }
++    }
++  if(it==entriesOnSameDisc.end())
++    {
++      notInExisting=true;
++      MEDFileFieldPerMeshPerTypePerDisc *ret=new MEDFileFieldPerMeshPerTypePerDisc;
++      ret->_type=typeF;
++      ret->_loc_id=(int)geoType;
++      ret->_nval=nbMeshEntities;
++      ret->_start=offset;
++      ret->_end=ret->_start+ret->_nval*nbi;
++      if(isPfl)
++        {
++          idsOfMeshElt->setName(glob.createNewNameOfPfl().c_str());
++          glob.appendProfile(idsOfMeshElt);
++          ret->_profile=idsOfMeshElt->getName();
++        }
++      //tony treatment of localization
++      return ret;
++    }
++  else
++    {
++      notInExisting=false;
++      MEDFileFieldPerMeshPerTypePerDisc *ret=MEDFileFieldPerMeshPerTypePerDisc::New(*(*it));
++      ret->_loc_id=(int)geoType;
++      ret->setNewStart(offset);
++      entriesOnSameDisc.erase(it);
++      return ret;
++    }
++
++}
++
++////////////////////////////////////
++
++MEDFileFieldPerMeshPerTypeCommon::~MEDFileFieldPerMeshPerTypeCommon()
++{
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::setFather(MEDFileFieldPerMesh *father)
++{
++  _father=father;
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::accept(MEDFileFieldVisitor& visitor) const
++{
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
++    if((*it).isNotNull())
++      {
++        visitor.newPerMeshPerTypePerDisc(*it);
++      }
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::deepCopyElements()
++{
++  std::size_t i=0;
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++,i++)
++    {
++      if((const MEDFileFieldPerMeshPerTypePerDisc *)*it)
++        _field_pm_pt_pd[i]=(*it)->deepCopy(this);
++    }
++}
++
++std::size_t MEDFileFieldPerMeshPerTypeCommon::getHeapMemorySizeWithoutChildren() const
++{
++  return _field_pm_pt_pd.capacity()*sizeof(MCAuto<MEDFileFieldPerMeshPerTypePerDisc>);
++}
++
++std::vector<const BigMemoryObject *> MEDFileFieldPerMeshPerTypeCommon::getDirectChildrenWithNull() const
++{
++  std::vector<const BigMemoryObject *> ret;
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
++    ret.push_back((const MEDFileFieldPerMeshPerTypePerDisc *)*it);
++  return ret;
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::assignFieldNoProfile(int& start, int offset, int nbOfCells, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
++{
++  std::vector<int> pos=addNewEntryIfNecessary(field,offset,nbOfCells);
++  for(std::vector<int>::const_iterator it=pos.begin();it!=pos.end();it++)
++    _field_pm_pt_pd[*it]->assignFieldNoProfile(start,offset,nbOfCells,field,arr,glob,nasc);
++}
++
++/*!
++ * This method is the most general one. No optimization is done here.
++ * \param [in] multiTypePfl is the end user profile specified in high level API
++ * \param [in] idsInPfl is the selection into the \a multiTypePfl whole profile that corresponds to the current geometric type.
++ * \param [in] locIds is the profile needed to be created for MED file format. It can be null if all cells of current geometric type are fetched in \a multiTypePfl.
++ *             \b WARNING if not null the MED file profile can be subdivided again in case of Gauss points.
++ * \param [in] nbOfEltsInWholeMesh nb of elts of type \a this->_geo_type in \b WHOLE mesh
++ * \param [in] mesh is the mesh coming from the MEDFileMesh instance in correspondence with the MEDFileField. The mesh inside the \a field is simply ignored.
++ */
++void MEDFileFieldPerMeshPerTypeCommon::assignFieldProfile(bool isPflAlone, int& start, const DataArrayInt *multiTypePfl, const DataArrayInt *idsInPfl, DataArrayInt *locIds, int nbOfEltsInWholeMesh, const MEDCouplingFieldTemplate *field, const DataArray *arr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
++{
++  std::vector<int> pos=addNewEntryIfNecessary(field,idsInPfl);
++  for(std::vector<int>::const_iterator it=pos.begin();it!=pos.end();it++)
++    _field_pm_pt_pd[*it]->assignFieldProfile(isPflAlone,start,multiTypePfl,idsInPfl,locIds,nbOfEltsInWholeMesh,field,arr,mesh,glob,nasc);
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob)
++{
++  _field_pm_pt_pd.resize(1);
++  _field_pm_pt_pd[0]=MEDFileFieldPerMeshPerTypePerDisc::New(this,ON_NODES,-3);
++  _field_pm_pt_pd[0]->assignNodeFieldNoProfile(start,field,arr,glob);
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::assignNodeFieldProfile(int& start, const DataArrayInt *pfl, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
++{
++  MCAuto<DataArrayInt> pfl2=pfl->deepCopy();
++  if(!arr || !arr->isAllocated())
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypeCommon::assignNodeFieldProfile : input array is null, or not allocated !");
++  _field_pm_pt_pd.resize(1);
++  _field_pm_pt_pd[0]=MEDFileFieldPerMeshPerTypePerDisc::New(this,ON_NODES,-3);
++  _field_pm_pt_pd[0]->assignFieldProfile(true,start,pfl,pfl2,pfl2,-1,field,arr,0,glob,nasc);//mesh is not requested so 0 is send.
++}
++
++std::vector<int> MEDFileFieldPerMeshPerTypeCommon::addNewEntryIfNecessary(const MEDCouplingFieldTemplate *field, int offset, int nbOfCells)
++{
++  TypeOfField type=field->getTypeOfField();
++  if(type!=ON_GAUSS_PT)
++    {
++      int locIdToFind=MEDFileFieldPerMeshPerTypePerDisc::ConvertType(type,0);
++      int sz=_field_pm_pt_pd.size();
++      bool found=false;
++      for(int j=0;j<sz && !found;j++)
++        {
++          if(_field_pm_pt_pd[j]->getLocId()==locIdToFind)
++            {
++              _field_pm_pt_pd[j]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
++              found=true;
++            }
++        }
++      if(!found)
++        {
++          _field_pm_pt_pd.resize(sz+1);
++          _field_pm_pt_pd[sz]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
++        }
++      std::vector<int> ret(1,(int)sz);
++      return ret;
++    }
++  else
++    {
++      std::vector<int> ret2=addNewEntryIfNecessaryGauss(field,offset,nbOfCells);
++      int sz2=ret2.size();
++      std::vector<int> ret3(sz2);
++      int k=0;
++      for(int i=0;i<sz2;i++)
++        {
++          int sz=_field_pm_pt_pd.size();
++          int locIdToFind=ret2[i];
++          bool found=false;
++          for(int j=0;j<sz && !found;j++)
++            {
++              if(_field_pm_pt_pd[j]->getLocId()==locIdToFind)
++                {
++                  _field_pm_pt_pd[j]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
++                  ret3[k++]=j;
++                  found=true;
++                }
++            }
++          if(!found)
++            {
++              _field_pm_pt_pd.resize(sz+1);
++              _field_pm_pt_pd[sz]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
++              ret3[k++]=sz;
++            }
++        }
++      return ret3;
++    }
++}
++
++std::vector<int> MEDFileFieldPerMeshPerTypeCommon::addNewEntryIfNecessaryGauss(const MEDCouplingFieldTemplate *field, int offset, int nbOfCells)
++{
++  const MEDCouplingFieldDiscretization *disc=field->getDiscretization();
++  const MEDCouplingFieldDiscretizationGauss *disc2=dynamic_cast<const MEDCouplingFieldDiscretizationGauss *>(disc);
++  if(!disc2)
++    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : invalid call to this method ! Internal Error !");
++  const DataArrayInt *da=disc2->getArrayOfDiscIds();
++  if(!da)
++    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss (no profile) : no localization ids per cell array available ! The input Gauss node field is maybe invalid !");
++  MCAuto<DataArrayInt> da2=da->selectByTupleIdSafeSlice(offset,offset+nbOfCells,1);
++  MCAuto<DataArrayInt> retTmp=da2->getDifferentValues();
++  if(retTmp->presenceOfValue(-1))
++    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : some cells have no dicretization description !");
++  std::vector<int> ret(retTmp->begin(),retTmp->end());
++  return ret;
++}
++
++std::vector<int> MEDFileFieldPerMeshPerTypeCommon::addNewEntryIfNecessary(const MEDCouplingFieldTemplate *field, const DataArrayInt *subCells)
++{
++  TypeOfField type=field->getTypeOfField();
++  if(type!=ON_GAUSS_PT)
++    {
++      int locIdToFind=MEDFileFieldPerMeshPerTypePerDisc::ConvertType(type,0);
++      int sz=_field_pm_pt_pd.size();
++      bool found=false;
++      for(int j=0;j<sz && !found;j++)
++        {
++          if(_field_pm_pt_pd[j]->getLocId()==locIdToFind)
++            {
++              _field_pm_pt_pd[j]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
++              found=true;
++            }
++        }
++      if(!found)
++        {
++          _field_pm_pt_pd.resize(sz+1);
++          _field_pm_pt_pd[sz]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
++        }
++      std::vector<int> ret(1,0);
++      return ret;
++    }
++  else
++    {
++      std::vector<int> ret2=addNewEntryIfNecessaryGauss(field,subCells);
++      int sz2=ret2.size();
++      std::vector<int> ret3(sz2);
++      int k=0;
++      for(int i=0;i<sz2;i++)
++        {
++          int sz=_field_pm_pt_pd.size();
++          int locIdToFind=ret2[i];
++          bool found=false;
++          for(int j=0;j<sz && !found;j++)
++            {
++              if(_field_pm_pt_pd[j]->getLocId()==locIdToFind)
++                {
++                  _field_pm_pt_pd[j]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
++                  ret3[k++]=j;
++                  found=true;
++                }
++            }
++          if(!found)
++            {
++              _field_pm_pt_pd.resize(sz+1);
++              _field_pm_pt_pd[sz]=MEDFileFieldPerMeshPerTypePerDisc::New(this,type,locIdToFind);
++              ret3[k++]=sz;
++            }
++        }
++      return ret3;
++    }
++}
++
++std::vector<int> MEDFileFieldPerMeshPerTypeCommon::addNewEntryIfNecessaryGauss(const MEDCouplingFieldTemplate *field, const DataArrayInt *subCells)
++{
++  const MEDCouplingFieldDiscretization *disc=field->getDiscretization();
++  const MEDCouplingFieldDiscretizationGauss *disc2=dynamic_cast<const MEDCouplingFieldDiscretizationGauss *>(disc);
++  if(!disc2)
++    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : invalid call to this method ! Internal Error !");
++  const DataArrayInt *da=disc2->getArrayOfDiscIds();
++  if(!da)
++    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : no localization ids per cell array available ! The input Gauss node field is maybe invalid !");
++  MCAuto<DataArrayInt> da2=da->selectByTupleIdSafe(subCells->getConstPointer(),subCells->getConstPointer()+subCells->getNumberOfTuples());
++  MCAuto<DataArrayInt> retTmp=da2->getDifferentValues();
++  if(retTmp->presenceOfValue(-1))
++    throw INTERP_KERNEL::Exception("addNewEntryIfNecessaryGauss : some cells have no dicretization description !");
++  std::vector<int> ret(retTmp->begin(),retTmp->end());
++  return ret;
++}
++
++const MEDFileFieldPerMesh *MEDFileFieldPerMeshPerTypeCommon::getFather() const
++{
++  return _father;
++}
++
++bool MEDFileFieldPerMeshPerTypeCommon::isUniqueLevel(int& dim) const
++{
++  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(getGeoType()));
++  int curDim((int)cm.getDimension());
++  if(dim!=std::numeric_limits<int>::max())
++    {
++      if(dim!=curDim)
++        return false;
++    }
++  else
++    dim=curDim;
++  return true;
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const
++{
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
++    {
++      (*it)->fillTypesOfFieldAvailable(types);
++    }
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::fillFieldSplitedByType(std::vector< std::pair<int,int> >& dads, std::vector<TypeOfField>& types, std::vector<std::string>& pfls, std::vector<std::string>& locs) const
++{
++  int sz=_field_pm_pt_pd.size();
++  dads.resize(sz); types.resize(sz); pfls.resize(sz); locs.resize(sz);
++  for(int i=0;i<sz;i++)
++    {
++      _field_pm_pt_pd[i]->getCoarseData(types[i],dads[i],pfls[i],locs[i]);
++    }
++}
++
++int MEDFileFieldPerMeshPerTypeCommon::getIteration() const
++{
++  return _father->getIteration();
++}
++
++int MEDFileFieldPerMeshPerTypeCommon::getOrder() const
++{
++  return _father->getOrder();
++}
++
++double MEDFileFieldPerMeshPerTypeCommon::getTime() const
++{
++  return _father->getTime();
++}
++
++std::string MEDFileFieldPerMeshPerTypeCommon::getMeshName() const
++{
++  return _father->getMeshName();
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::getSizes(int& globalSz, int& nbOfEntries) const
++{
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
++    {
++      globalSz+=(*it)->getNumberOfTuples();
++    }
++  nbOfEntries+=(int)_field_pm_pt_pd.size();
++}
++
++int MEDFileFieldPerMeshPerTypeCommon::getNumberOfComponents() const
++{
++  return _father->getNumberOfComponents();
++}
++
++bool MEDFileFieldPerMeshPerTypeCommon::presenceOfMultiDiscPerGeoType() const
++{
++  std::size_t nb(0);
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
++    {
++      const MEDFileFieldPerMeshPerTypePerDisc *fmtd(*it);
++      if(fmtd)
++        nb++;
++    }
++  return nb>1;
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::pushDiscretization(MEDFileFieldPerMeshPerTypePerDisc *disc)
++{
++  MCAuto<MEDFileFieldPerMeshPerTypePerDisc> elt;
++  elt.takeRef(disc);
++  _field_pm_pt_pd.push_back(elt);
++}
++
++DataArray *MEDFileFieldPerMeshPerTypeCommon::getOrCreateAndGetArray()
++{
++  return _father->getOrCreateAndGetArray();
++}
++
++const DataArray *MEDFileFieldPerMeshPerTypeCommon::getOrCreateAndGetArray() const
++{
++  const MEDFileFieldPerMesh *fath=_father;
++  return fath->getOrCreateAndGetArray();
++}
++
++const std::vector<std::string>& MEDFileFieldPerMeshPerTypeCommon::getInfo() const
++{
++  return _father->getInfo();
++}
++
++std::vector<std::string> MEDFileFieldPerMeshPerTypeCommon::getPflsReallyUsed() const
++{
++  std::vector<std::string> ret;
++  std::set<std::string> ret2;
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
++    {
++      std::string tmp=(*it1)->getProfile();
++      if(!tmp.empty())
++        if(ret2.find(tmp)==ret2.end())
++          {
++            ret.push_back(tmp);
++            ret2.insert(tmp);
++          }
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileFieldPerMeshPerTypeCommon::getLocsReallyUsed() const
++{
++  std::vector<std::string> ret;
++  std::set<std::string> ret2;
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
++    {
++      std::string tmp=(*it1)->getLocalization();
++      if(!tmp.empty() && tmp!=MED_GAUSS_ELNO)
++        if(ret2.find(tmp)==ret2.end())
++          {
++            ret.push_back(tmp);
++            ret2.insert(tmp);
++          }
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileFieldPerMeshPerTypeCommon::getPflsReallyUsedMulti() const
++{
++  std::vector<std::string> ret;
++  std::set<std::string> ret2;
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
++    {
++      std::string tmp=(*it1)->getProfile();
++      if(!tmp.empty())
++        ret.push_back(tmp);
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileFieldPerMeshPerTypeCommon::getLocsReallyUsedMulti() const
++{
++  std::vector<std::string> ret;
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
++    {
++      std::string tmp=(*it1)->getLocalization();
++      if(!tmp.empty() && tmp!=MED_GAUSS_ELNO)
++        ret.push_back(tmp);
++    }
++  return ret;
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
++    (*it1)->changePflsRefsNamesGen(mapOfModif);
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it1=_field_pm_pt_pd.begin();it1!=_field_pm_pt_pd.end();it1++)
++    (*it1)->changeLocsRefsNamesGen(mapOfModif);
++}
++
++MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId(int locId)
++{
++  if(_field_pm_pt_pd.empty())
++    {
++      std::ostringstream oss; oss << "MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId : no localizations for geotype \"" << getGeoTypeRepr() << "\" !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  if(locId>=0 && locId<(int)_field_pm_pt_pd.size())
++    return _field_pm_pt_pd[locId];
++  std::ostringstream oss2; oss2 << "MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId : no such locId available (" << locId;
++  oss2 << ") for geometric type \"" << getGeoTypeRepr() << "\" It should be in [0," << _field_pm_pt_pd.size() << ") !";
++  throw INTERP_KERNEL::Exception(oss2.str().c_str());
++  return static_cast<MEDFileFieldPerMeshPerTypePerDisc*>(0);
++}
++
++const MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId(int locId) const
++{
++  if(_field_pm_pt_pd.empty())
++    {
++      std::ostringstream oss; oss << "MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId : no localizations for geotype \"" << getGeoTypeRepr() << "\" !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  if(locId>=0 && locId<(int)_field_pm_pt_pd.size())
++    return _field_pm_pt_pd[locId];
++  std::ostringstream oss2; oss2 << "MEDFileFieldPerMeshPerTypeCommon::getLeafGivenLocId : no such locId available (" << locId;
++  oss2 << ") for geometric type \"" << getGeoTypeRepr() << "\" It should be in [0," << _field_pm_pt_pd.size() << ") !";
++  throw INTERP_KERNEL::Exception(oss2.str().c_str());
++  return static_cast<const MEDFileFieldPerMeshPerTypePerDisc*>(0);
++}
++
++int MEDFileFieldPerMeshPerTypeCommon::locIdOfLeaf(const MEDFileFieldPerMeshPerTypePerDisc *leaf) const
++{
++  int ret(0);
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++,ret++)
++    {
++      const MEDFileFieldPerMeshPerTypePerDisc *cand(*it);
++      if(cand==leaf)
++        return ret;
++    }
++  throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypeCommon::locIdOfLeaf : not found such a leaf in this !");
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::fillValues(int& startEntryId, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
++{
++  int i=0;
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++,i++)
++    {
++      (*it)->fillValues(i,startEntryId,entries);
++    }
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::setLeaves(const std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc > >& leaves)
++{
++  _field_pm_pt_pd=leaves;
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
++    (*it)->setFather(this);
++}
++
++/*!
++ *  \param [in,out] globalNum a global numbering counter for the renumbering. 
++ *  \param [out] its - list of pair (start,stop) kept
++ *  \return bool - false if the type of field \a tof is not contained in \a this.
++ */
++bool MEDFileFieldPerMeshPerTypeCommon::keepOnlySpatialDiscretization(TypeOfField tof, int &globalNum, std::vector< std::pair<int,int> >& its)
++{
++  bool ret(false);
++  std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> > newPmPtPd;
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
++    if((*it)->getType()==tof)
++      {
++        newPmPtPd.push_back(*it);
++        std::pair<int,int> bgEnd; bgEnd.first=(*it)->getStart(); bgEnd.second=(*it)->getEnd();
++        (*it)->setNewStart(globalNum);
++        globalNum=(*it)->getEnd();
++        its.push_back(bgEnd);
++        ret=true;
++      }
++  if(ret)
++    _field_pm_pt_pd=newPmPtPd;
++  return ret;
++}
++
++/*!
++ *  \param [in,out] globalNum a global numbering counter for the renumbering.
++ *  \param [out] its - list of pair (start,stop) kept
++ *  \return bool - false if the type of field \a tof is not contained in \a this.
++ */
++bool MEDFileFieldPerMeshPerTypeCommon::keepOnlyGaussDiscretization(std::size_t idOfDisc, int &globalNum, std::vector< std::pair<int,int> >& its)
++{
++  if(_field_pm_pt_pd.size()<=idOfDisc)
++    return false;
++  MCAuto<MEDFileFieldPerMeshPerTypePerDisc> elt(_field_pm_pt_pd[idOfDisc]);
++  std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> > newPmPtPd(1,elt);
++  std::pair<int,int> bgEnd; bgEnd.first=_field_pm_pt_pd[idOfDisc]->getStart(); bgEnd.second=_field_pm_pt_pd[idOfDisc]->getEnd();
++  elt->setNewStart(globalNum);
++  globalNum=elt->getEnd();
++  its.push_back(bgEnd);
++  _field_pm_pt_pd=newPmPtPd;
++  return true;
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::loadOnlyStructureOfDataRecursively(med_idt fid, int &start, const MEDFileFieldNameScope& nasc)
++{
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
++    (*it)->loadOnlyStructureOfDataRecursively(fid,start,nasc);
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc)
++{
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
++    (*it)->loadBigArray(fid,nasc);
++}
++
++void MEDFileFieldPerMeshPerTypeCommon::writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const
++{
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
++    {
++      (*it)->copyOptionsFrom(*this);
++      (*it)->writeLL(fid,nasc);
++    }
++}
++
++med_entity_type MEDFileFieldPerMeshPerTypeCommon::ConvertIntoMEDFileType(TypeOfField ikType, INTERP_KERNEL::NormalizedCellType ikGeoType, med_geometry_type& medfGeoType)
++{
++  switch(ikType)
++  {
++    case ON_CELLS:
++      medfGeoType=typmai3[(int)ikGeoType];
++      return MED_CELL;
++    case ON_NODES:
++      medfGeoType=MED_NONE;
++      return MED_NODE;
++    case ON_GAUSS_NE:
++      medfGeoType=typmai3[(int)ikGeoType];
++      return MED_NODE_ELEMENT;
++    case ON_GAUSS_PT:
++      medfGeoType=typmai3[(int)ikGeoType];
++      return MED_CELL;
++    default:
++      throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypeCommon::ConvertIntoMEDFileType : unexpected entity type ! internal error");
++  }
++  return MED_UNDEF_ENTITY_TYPE;
++}
++
++//////////////////////////////////////////////////
++
++MEDFileFieldPerMeshPerType *MEDFileFieldPerMeshPerType::NewOnRead(med_idt fid, MEDFileFieldPerMesh *fath, TypeOfField type, INTERP_KERNEL::NormalizedCellType geoType, const MEDFileFieldNameScope& nasc, const PartDefinition *pd)
++{
++  return new MEDFileFieldPerMeshPerType(fid,fath,type,geoType,nasc,pd);
++}
++
++MEDFileFieldPerMeshPerType *MEDFileFieldPerMeshPerType::New(MEDFileFieldPerMesh *fath, INTERP_KERNEL::NormalizedCellType geoType)
++{
++  return new MEDFileFieldPerMeshPerType(fath,geoType);
++}
++
++MEDFileFieldPerMeshPerType *MEDFileFieldPerMeshPerType::deepCopy(MEDFileFieldPerMesh *father) const
++{
++  MCAuto<MEDFileFieldPerMeshPerType> ret=new MEDFileFieldPerMeshPerType(*this);
++  ret->setFather(father);
++  ret->deepCopyElements();
++  return ret.retn();
++}
++
++void MEDFileFieldPerMeshPerType::getFieldAtLevel(int meshDim, TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const
++{
++  if(_geo_type!=INTERP_KERNEL::NORM_ERROR)
++    {
++      const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(_geo_type);
++      if(meshDim!=(int)cm.getDimension())
++        return ;
++    }
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++)
++    (*it)->getFieldAtLevel(type,glob,dads,pfls,locs,geoTypes);
++}
++
++INTERP_KERNEL::NormalizedCellType MEDFileFieldPerMeshPerType::getGeoType() const
++{
++  return _geo_type;
++}
++
++void MEDFileFieldPerMeshPerType::entriesForMEDfile(TypeOfField mct, med_geometry_type& gt, med_entity_type& ent) const
++{
++  ent=MEDFileFieldPerMeshPerTypeCommon::ConvertIntoMEDFileType(mct,_geo_type,gt);
++}
++
++void MEDFileFieldPerMeshPerType::getDimension(int& dim) const
++{
++  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(_geo_type));
++  int curDim((int)cm.getDimension());
++  dim=std::max(dim,curDim);
++}
++
++void MEDFileFieldPerMeshPerType::simpleRepr(int bkOffset, std::ostream& oss, int id) const
++{
++  const char startLine[]="  ## ";
++  std::string startLine2(bkOffset,' ');
++  std::string startLine3(startLine2);
++  startLine3+=startLine;
++  if(_geo_type!=INTERP_KERNEL::NORM_ERROR)
++    {
++      const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(_geo_type);
++      oss << startLine3 << "Entry geometry type #" << id << " is lying on geometry types " << cm.getRepr() << "." << std::endl;
++    }
++  else
++    oss << startLine3 << "Entry geometry type #" << id << " is lying on NODES." << std::endl;
++  oss << startLine3 << "Entry is defined on " <<  _field_pm_pt_pd.size() << " localizations." << std::endl;
++  int i=0;
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++,i++)
++    {
++      const MEDFileFieldPerMeshPerTypePerDisc *cur=(*it);
++      if(cur)
++        cur->simpleRepr(bkOffset,oss,i);
++      else
++        {
++          oss << startLine2 << "    ## " << "Localization #" << i << " is empty !" << std::endl;
++        }
++    }
++}
++
++std::string MEDFileFieldPerMeshPerType::getGeoTypeRepr() const
++{
++  const INTERP_KERNEL::CellModel& cm(INTERP_KERNEL::CellModel::GetCellModel(_geo_type));
++  return std::string(cm.getRepr());
++}
++
++MEDFileFieldPerMeshPerType::MEDFileFieldPerMeshPerType(MEDFileFieldPerMesh *father, INTERP_KERNEL::NormalizedCellType gt):MEDFileFieldPerMeshPerTypeCommon(father),_geo_type(gt)
++{
++}
++
++MEDFileFieldPerMeshPerType::MEDFileFieldPerMeshPerType(med_idt fid, MEDFileFieldPerMesh *fath, TypeOfField type, INTERP_KERNEL::NormalizedCellType geoType, const MEDFileFieldNameScope& nasc, const PartDefinition *pd):MEDFileFieldPerMeshPerTypeCommon(fath),_geo_type(geoType)
++{
++  INTERP_KERNEL::AutoPtr<char> pflName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
++  INTERP_KERNEL::AutoPtr<char> locName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
++  med_geometry_type mgeoti;
++  med_entity_type menti(ConvertIntoMEDFileType(type,geoType,mgeoti));
++  int nbProfiles(MEDfieldnProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),menti,mgeoti,pflName,locName));
++  _field_pm_pt_pd.resize(nbProfiles);
++  for(int i=0;i<nbProfiles;i++)
++    {
++      _field_pm_pt_pd[i]=MEDFileFieldPerMeshPerTypePerDisc::NewOnRead(this,type,i,pd);
++    }
++  if(type==ON_CELLS)
++    {
++      int nbProfiles2(MEDfieldnProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_NODE_ELEMENT,mgeoti,pflName,locName));
++      for(int i=0;i<nbProfiles2;i++)
++        _field_pm_pt_pd.push_back(MEDFileFieldPerMeshPerTypePerDisc::NewOnRead(this,ON_GAUSS_NE,i,pd));
++    }
++  if(!_field_pm_pt_pd.empty() || type!=ON_CELLS)
++    return ;
++  // dark side of the force.
++  {
++    int nbProfiles1(MEDfieldnProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_DESCENDING_FACE,mgeoti,pflName,locName));
++    int nbProfiles2(MEDfieldnProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_DESCENDING_EDGE,mgeoti,pflName,locName));
++    if(nbProfiles1==0 && nbProfiles2==0)
++      return ;// OK definitely nothing in field
++    menti=nbProfiles1>=nbProfiles2?MED_DESCENDING_FACE:MED_DESCENDING_EDGE;//not enough words to describe the beauty
++    nbProfiles=std::max(nbProfiles1,nbProfiles2);
++    _field_pm_pt_pd.resize(nbProfiles);
++    for(int i=0;i<nbProfiles;i++)
++      _field_pm_pt_pd[i]=MEDFileFieldPerMeshPerTypePerDisc::NewOnRead(this,ON_CELLS,i,pd);
++  }
++}
++
++MCAuto<MEDFileFieldPerMeshPerType> MEDFileFieldPerMeshPerType::Aggregate(int &start, const std::vector<std::pair<int,const MEDFileFieldPerMeshPerType *> >& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, INTERP_KERNEL::NormalizedCellType gt, MEDFileFieldPerMesh *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo)
++{
++  MCAuto<MEDFileFieldPerMeshPerType> ret(MEDFileFieldPerMeshPerType::New(father,gt));
++  std::map<TypeOfField, std::vector< std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc * > > > m;
++  for(std::vector<std::pair<int,const MEDFileFieldPerMeshPerType *> >::const_iterator it=pms.begin();it!=pms.end();it++)
++    {
++      for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it2=(*it).second->_field_pm_pt_pd.begin();it2!=(*it).second->_field_pm_pt_pd.end();it2++)
++        m[(*it2)->getType()].push_back(std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc * >((*it).first,*it2));
++    }
++  for(std::map<TypeOfField, std::vector< std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc * > > >::const_iterator it=m.begin();it!=m.end();it++)
++    {
++      MCAuto<MEDFileFieldPerMeshPerTypePerDisc> agg(MEDFileFieldPerMeshPerTypePerDisc::Aggregate(start,(*it).second,dts,(*it).first,ret,extractInfo));
++      ret->_field_pm_pt_pd.push_back(agg);
++    }
++  return ret;
++}
++
++//////////////////////////////////////////////////
++
++MEDFileFieldPerMeshPerTypeDyn *MEDFileFieldPerMeshPerTypeDyn::NewOnRead(med_idt fid, MEDFileFieldPerMesh *fath, const MEDFileEntities *entities, int idGT, const MEDFileFieldNameScope& nasc)
++{
++  if(!entities)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypeDyn::NewOnRead : null pointer !");
++  const MEDFileAllStaticEntitiesPlusDyn *entities2(dynamic_cast<const MEDFileAllStaticEntitiesPlusDyn *>(entities));
++  if(!entities2)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypeDyn::NewOnRead : invalid type of entities !");
++  const MEDFileStructureElement *se(entities2->getWithGT(idGT));
++  return new MEDFileFieldPerMeshPerTypeDyn(fid,fath,se,nasc);
++}
++
++MEDFileFieldPerMeshPerTypeDyn::MEDFileFieldPerMeshPerTypeDyn(med_idt fid, MEDFileFieldPerMesh *fath, const MEDFileStructureElement *se, const MEDFileFieldNameScope& nasc):MEDFileFieldPerMeshPerTypeCommon(fath)
++{
++  _se.takeRef(se);
++  INTERP_KERNEL::AutoPtr<char> pflName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
++  INTERP_KERNEL::AutoPtr<char> locName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
++  int nbProfiles(MEDfieldnProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_STRUCT_ELEMENT,_se->getDynGT(),pflName,locName));
++  _field_pm_pt_pd.resize(nbProfiles);
++  for(int i=0;i<nbProfiles;i++)
++    {
++      _field_pm_pt_pd[i]=MEDFileFieldPerMeshPerTypePerDisc::NewOnRead(this,_se->getEntity(),i,NULL);
++    }
++}
++
++int MEDFileFieldPerMeshPerTypeDyn::getDynGT() const
++{
++  return _se->getDynGT();
++}
++
++std::string MEDFileFieldPerMeshPerTypeDyn::getModelName() const
++{
++  return _se->getName();
++}
++
++void MEDFileFieldPerMeshPerTypeDyn::getDimension(int& dim) const
++{
++  throw INTERP_KERNEL::Exception("not implemented yet !");
++}
++
++void MEDFileFieldPerMeshPerTypeDyn::entriesForMEDfile(TypeOfField mct, med_geometry_type& gt, med_entity_type& ent) const
++{
++  gt=getDynGT();
++  ent=MED_STRUCT_ELEMENT;
++}
++
++INTERP_KERNEL::NormalizedCellType MEDFileFieldPerMeshPerTypeDyn::getGeoType() const
++{
++  throw INTERP_KERNEL::Exception("not implemented yet !");
++}
++
++void MEDFileFieldPerMeshPerTypeDyn::simpleRepr(int bkOffset, std::ostream& oss, int id) const
++{
++  const char startLine[]="  ## ";
++  std::string startLine2(bkOffset,' ');
++  std::string startLine3(startLine2);
++  startLine3+=startLine;
++  oss << startLine3 << "Entry geometry type #" << id << " is lying on geometry STRUCTURE_ELEMENT type " << getDynGT() << "." << std::endl;
++  oss << startLine3 << "Entry is defined on " <<  _field_pm_pt_pd.size() << " localizations." << std::endl;
++  int i=0;
++  for(std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >::const_iterator it=_field_pm_pt_pd.begin();it!=_field_pm_pt_pd.end();it++,i++)
++    {
++      if((*it).isNotNull())
++        (*it)->simpleRepr(bkOffset,oss,i);
++      else
++        {
++          oss << startLine2 << "    ## " << "Localization #" << i << " is empty !" << std::endl;
++        }
++    }
++}
++
++std::string MEDFileFieldPerMeshPerTypeDyn::getGeoTypeRepr() const
++{
++  throw INTERP_KERNEL::Exception("not implemented yet !");
++}
++
++MEDFileFieldPerMeshPerTypeDyn *MEDFileFieldPerMeshPerTypeDyn::deepCopy(MEDFileFieldPerMesh *father) const
++{
++  MCAuto<MEDFileFieldPerMeshPerTypeDyn> ret(new MEDFileFieldPerMeshPerTypeDyn(*this));
++  ret->setFather(father);
++  ret->deepCopyElements();
++  return ret.retn();
++}
++
++void MEDFileFieldPerMeshPerTypeDyn::getFieldAtLevel(int meshDim, TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const
++{
++  throw INTERP_KERNEL::Exception("not implemented yet !");
++}
++
++//////////////////////////////////////////////////
++
++MEDFileFieldPerMesh *MEDFileFieldPerMesh::NewOnRead(med_idt fid, MEDFileAnyTypeField1TSWithoutSDA *fath, int meshCsit, int meshIteration, int meshOrder, const MEDFileFieldNameScope& nasc, const MEDFileMesh *mm, const MEDFileEntities *entities)
++{
++  return new MEDFileFieldPerMesh(fid,fath,meshCsit,meshIteration,meshOrder,nasc,mm,entities);
++}
++
++MEDFileFieldPerMesh *MEDFileFieldPerMesh::New(MEDFileAnyTypeField1TSWithoutSDA *fath, const MEDCouplingMesh *mesh)
++{
++  return new MEDFileFieldPerMesh(fath,mesh);
++}
++
++std::size_t MEDFileFieldPerMesh::getHeapMemorySizeWithoutChildren() const
++{
++  return _field_pm_pt.capacity()*sizeof(MCAuto< MEDFileFieldPerMeshPerType >);
++}
++
++std::vector<const BigMemoryObject *> MEDFileFieldPerMesh::getDirectChildrenWithNull() const
++{
++  std::vector<const BigMemoryObject *> ret;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    ret.push_back(*it);
++  return ret;
++}
++
++MEDFileFieldPerMesh *MEDFileFieldPerMesh::deepCopy(MEDFileAnyTypeField1TSWithoutSDA *father) const
++{
++  MCAuto< MEDFileFieldPerMesh > ret=new MEDFileFieldPerMesh(*this);
++  ret->_father=father;
++  std::size_t i=0;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++,i++)
++    {
++      if((*it).isNotNull())
++        ret->_field_pm_pt[i]=(*it)->deepCopy((MEDFileFieldPerMesh *)(ret));
++    }
++  return ret.retn();
++}
++
++void MEDFileFieldPerMesh::simpleRepr(int bkOffset, std::ostream& oss, int id) const
++{
++  std::string startLine(bkOffset,' ');
++  oss << startLine << "## Field part (" << id << ") lying on mesh \"" << getMeshName() << "\", Mesh iteration=" << _mesh_iteration << ". Mesh order=" << _mesh_order << "." << std::endl;
++  oss << startLine << "## Field is defined on " << _field_pm_pt.size() << " types." << std::endl;
++  int i=0;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++,i++)
++    {
++      if((*it).isNotNull())
++        (*it)->simpleRepr(bkOffset,oss,i);
++      else
++        {
++          oss << startLine << "  ## Entry geometry type #" << i << " is empty !" << std::endl;
++        }
++    }
++}
++
++void MEDFileFieldPerMesh::copyTinyInfoFrom(const MEDCouplingMesh *mesh)
++{
++  mesh->getTime(_mesh_iteration,_mesh_order);
++}
++
++void MEDFileFieldPerMesh::assignFieldNoProfileNoRenum(int& start, const std::vector<int>& code, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
++{
++  int nbOfTypes=code.size()/3;
++  int offset=0;
++  for(int i=0;i<nbOfTypes;i++)
++    {
++      INTERP_KERNEL::NormalizedCellType type=(INTERP_KERNEL::NormalizedCellType)code[3*i];
++      int nbOfCells=code[3*i+1];
++      int pos=addNewEntryIfNecessary(type);
++      _field_pm_pt[pos]->assignFieldNoProfile(start,offset,nbOfCells,field,arr,glob,nasc);
++      offset+=nbOfCells;
++    }
++}
++
++/*!
++ * This method is the most general one. No optimization is done here.
++ * \param [in] multiTypePfl is the end user profile specified in high level API
++ * \param [in] code is the code of \a mesh[multiTypePfl] mesh. It is of size of number of different geometric types into \a mesh[multiTypePfl].
++ * \param [in] code2 is the code of the \b WHOLE mesh on the same level. So all types in \a code are in \a code2.
++ * \param [in] idsInPflPerType is the selection into the \a multiTypePfl whole profile that corresponds to the given geometric type. This vector is always 3 times smaller than \a code.
++ * \param [in] idsPerType is a vector containing the profiles needed to be created for MED file format. \b WARNING these processed MED file profiles can be subdivided again in case of Gauss points.
++ * \param [in] mesh is the mesh coming from the MEDFileMesh instance in correspondence with the MEDFileField. The mesh inside the \a field is simply ignored.
++ */
++void MEDFileFieldPerMesh::assignFieldProfile(int& start, const DataArrayInt *multiTypePfl, const std::vector<int>& code, const std::vector<int>& code2, const std::vector<DataArrayInt *>& idsInPflPerType, const std::vector<DataArrayInt *>& idsPerType, const MEDCouplingFieldTemplate *field, const DataArray *arr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
++{
++  int nbOfTypes(code.size()/3);
++  for(int i=0;i<nbOfTypes;i++)
++    {
++      INTERP_KERNEL::NormalizedCellType type=(INTERP_KERNEL::NormalizedCellType)code[3*i];
++      int pos=addNewEntryIfNecessary(type);
++      DataArrayInt *pfl=0;
++      if(code[3*i+2]!=-1)
++        pfl=idsPerType[code[3*i+2]];
++      int nbOfTupes2=code2.size()/3;
++      int found=0;
++      for(;found<nbOfTupes2;found++)
++        if(code[3*i]==code2[3*found])
++          break;
++      if(found==nbOfTupes2)
++        throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::assignFieldProfile : internal problem ! Should never happen ! Please report bug to anthony.geay@cea.fr !");
++      _field_pm_pt[pos]->assignFieldProfile(nbOfTypes==1,start,multiTypePfl,idsInPflPerType[i],pfl,code2[3*found+1],field,arr,mesh,glob,nasc);
++    }
++}
++
++void MEDFileFieldPerMesh::assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob)
++{
++  int pos=addNewEntryIfNecessary(INTERP_KERNEL::NORM_ERROR);
++  _field_pm_pt[pos]->assignNodeFieldNoProfile(start,field,arr,glob);
++}
++
++void MEDFileFieldPerMesh::assignNodeFieldProfile(int& start, const DataArrayInt *pfl, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc)
++{
++  int pos=addNewEntryIfNecessary(INTERP_KERNEL::NORM_ERROR);
++  _field_pm_pt[pos]->assignNodeFieldProfile(start,pfl,field,arr,glob,nasc);
++}
++
++void MEDFileFieldPerMesh::loadOnlyStructureOfDataRecursively(med_idt fid, int& start, const MEDFileFieldNameScope& nasc)
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    (*it)->loadOnlyStructureOfDataRecursively(fid,start,nasc);
++}
++
++void MEDFileFieldPerMesh::loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc)
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    (*it)->loadBigArraysRecursively(fid,nasc);
++}
++
++void MEDFileFieldPerMesh::writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const
++{
++  int nbOfTypes=_field_pm_pt.size();
++  for(int i=0;i<nbOfTypes;i++)
++    {
++      _field_pm_pt[i]->copyOptionsFrom(*this);
++      _field_pm_pt[i]->writeLL(fid,nasc);
++    }
++}
++
++void MEDFileFieldPerMesh::getDimension(int& dim) const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    (*it)->getDimension(dim);
++}
++
++bool MEDFileFieldPerMesh::isUniqueLevel(int& dim) const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    if(!(*it)->isUniqueLevel(dim))
++      return false;
++  return true;
++}
++
++void MEDFileFieldPerMesh::fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    (*it)->fillTypesOfFieldAvailable(types);
++}
++
++std::vector< std::vector< std::pair<int,int> > > MEDFileFieldPerMesh::getFieldSplitedByType(std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> > & locs) const
++{
++  int sz=_field_pm_pt.size();
++  std::vector< std::vector<std::pair<int,int> > > ret(sz);
++  types.resize(sz); typesF.resize(sz); pfls.resize(sz); locs.resize(sz);
++  for(int i=0;i<sz;i++)
++    {
++      types[i]=_field_pm_pt[i]->getGeoType();
++      _field_pm_pt[i]->fillFieldSplitedByType(ret[i],typesF[i],pfls[i],locs[i]);
++    }
++  return ret;
++}
++
++double MEDFileFieldPerMesh::getTime() const
++{
++  int tmp1,tmp2;
++  return _father->getTime(tmp1,tmp2);
++}
++
++int MEDFileFieldPerMesh::getIteration() const
++{
++  return _father->getIteration();
++}
++
++int MEDFileFieldPerMesh::getOrder() const
++{
++  return _father->getOrder();
++}
++
++int MEDFileFieldPerMesh::getNumberOfComponents() const
++{
++  return _father->getNumberOfComponents();
++}
++
++std::string MEDFileFieldPerMesh::getMeshName() const
++{
++  return _father->getMeshName();
++}
++
++void MEDFileFieldPerMesh::setMeshName(const std::string& meshName)
++{
++  _father->setMeshName(meshName);
++}
++
++bool MEDFileFieldPerMesh::presenceOfMultiDiscPerGeoType() const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      if((*it).isNull())
++        continue;
++      if((*it)->presenceOfMultiDiscPerGeoType())
++        return true;
++    }
++  return false;
++}
++
++bool MEDFileFieldPerMesh::presenceOfStructureElements() const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    if((*it).isNotNull())
++      {
++        const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
++        if(pt)
++          return true;
++      }
++  return false;
++}
++
++bool MEDFileFieldPerMesh::onlyStructureElements() const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    if((*it).isNotNull())
++      {
++        const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
++        if(!pt)
++          return false;
++      }
++  return true;
++}
++
++void MEDFileFieldPerMesh::killStructureElements()
++{
++  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > res;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      if((*it).isNotNull())
++        {
++          const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
++          if(!pt)
++            res.push_back(*it);
++        }
++    }
++  _field_pm_pt=res;
++}
++
++void MEDFileFieldPerMesh::keepOnlyStructureElements()
++{
++  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > res;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      if((*it).isNotNull())
++        {
++          const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
++          if(pt)
++            res.push_back(*it);
++        }
++    }
++  _field_pm_pt=res;
++}
++
++void MEDFileFieldPerMesh::keepOnlyOnSE(const std::string& seName)
++{
++  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > res;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      if((*it).isNotNull())
++        {
++          const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
++          if(!pt)
++            throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::keepOnlyOnSE : presence of non SE !");
++          if(pt->getModelName()==seName)
++            res.push_back(*it);
++        }
++    }
++  _field_pm_pt=res;
++}
++
++void MEDFileFieldPerMesh::getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      if((*it).isNotNull())
++        {
++          const MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<const MEDFileFieldPerMeshPerTypeDyn *>((const MEDFileFieldPerMeshPerTypeCommon *)*it));
++          if(pt)
++            {
++              ps.push_back(std::pair<std::string,std::string>(getMeshName(),pt->getModelName()));
++            }
++          else
++            throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getMeshSENames : presence of a non structure element part !");
++        }
++    }
++}
++
++DataArray *MEDFileFieldPerMesh::getOrCreateAndGetArray()
++{
++  if(!_father)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getOrCreateAndGetArray : no father ! internal error !");
++  return _father->getOrCreateAndGetArray();
++}
++
++const DataArray *MEDFileFieldPerMesh::getOrCreateAndGetArray() const
++{
++  if(!_father)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getOrCreateAndGetArray : no father ! internal error !");
++  return _father->getOrCreateAndGetArray();
++}
++
++const std::vector<std::string>& MEDFileFieldPerMesh::getInfo() const
++{
++  return _father->getInfo();
++}
++
++/*!
++ * type,geoTypes,dads,pfls,locs are input parameters. They should have the same size.
++ * Before the call of this method 'geoTypes','dads','pfls','locs' must be reorganized so that types in geoTypes are contiguous and ordered following typmai2 array.
++ * It returns 2 output vectors :
++ * - 'code' of size 3*sz where sz is the number of different values into 'geoTypes'
++ * - 'notNullPfls' contains sz2 values that are extracted from 'pfls' in which null profiles have been removed.
++ * 'code' and 'notNullPfls' are in MEDCouplingUMesh::checkTypeConsistencyAndContig format.
++ */
++void MEDFileFieldPerMesh::SortArraysPerType(const MEDFileFieldGlobsReal *glob, TypeOfField type, const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes, const std::vector< std::pair<int,int> >& dads, const std::vector<const DataArrayInt *>& pfls, const std::vector<int>& locs, std::vector<int>& code, std::vector<DataArrayInt *>& notNullPfls)
++{
++  int notNullPflsSz=0;
++  int nbOfArrs=geoTypes.size();
++  for(int i=0;i<nbOfArrs;i++)
++    if(pfls[i])
++      notNullPflsSz++;
++  std::set<INTERP_KERNEL::NormalizedCellType> geoTypes3(geoTypes.begin(),geoTypes.end());
++  int nbOfDiffGeoTypes=geoTypes3.size();
++  code.resize(3*nbOfDiffGeoTypes);
++  notNullPfls.resize(notNullPflsSz);
++  notNullPflsSz=0;
++  int j=0;
++  for(int i=0;i<nbOfDiffGeoTypes;i++)
++    {
++      int startZone=j;
++      INTERP_KERNEL::NormalizedCellType refType=geoTypes[j];
++      std::vector<const DataArrayInt *> notNullTmp;
++      if(pfls[j])
++        notNullTmp.push_back(pfls[j]);
++      j++;
++      for(;j<nbOfArrs;j++)
++        if(geoTypes[j]==refType)
++          {
++            if(pfls[j])
++              notNullTmp.push_back(pfls[j]);
++          }
++        else
++          break;
++      std::vector< std::pair<int,int> > tmpDads(dads.begin()+startZone,dads.begin()+j);
++      std::vector<const DataArrayInt *> tmpPfls(pfls.begin()+startZone,pfls.begin()+j);
++      std::vector<int> tmpLocs(locs.begin()+startZone,locs.begin()+j);
++      code[3*i]=(int)refType;
++      std::vector<INTERP_KERNEL::NormalizedCellType> refType2(1,refType);
++      code[3*i+1]=ComputeNbOfElems(glob,type,refType2,tmpDads,tmpLocs);
++      if(notNullTmp.empty())
++        code[3*i+2]=-1;
++      else
++        {
++          notNullPfls[notNullPflsSz]=DataArrayInt::Aggregate(notNullTmp);
++          code[3*i+2]=notNullPflsSz++;
++        }
++    }
++}
++
++/*!
++ * 'dads' 'geoTypes' and 'locs' are input parameters that should have same size sz. sz should be >=1.
++ */
++int MEDFileFieldPerMesh::ComputeNbOfElems(const MEDFileFieldGlobsReal *glob, TypeOfField type, const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes, const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs)
++{
++  int sz=dads.size();
++  int ret=0;
++  for(int i=0;i<sz;i++)
++    {
++      if(locs[i]==-1)
++        {
++          if(type!=ON_GAUSS_NE)
++            ret+=dads[i].second-dads[i].first;
++          else
++            {
++              const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(geoTypes[i]);
++              ret+=(dads[i].second-dads[i].first)/cm.getNumberOfNodes();
++            }
++        }
++      else
++        {
++          int nbOfGaussPtPerCell=glob->getNbOfGaussPtPerCell(locs[i]);
++          ret+=(dads[i].second-dads[i].first)/nbOfGaussPtPerCell;
++        }
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileFieldPerMesh::getPflsReallyUsed() const
++{
++  std::vector<std::string> ret;
++  std::set<std::string> ret2;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getPflsReallyUsed();
++      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
++        if(ret2.find(*it2)==ret2.end())
++          {
++            ret.push_back(*it2);
++            ret2.insert(*it2);
++          }
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileFieldPerMesh::getPflsReallyUsedMulti() const
++{
++  std::vector<std::string> ret;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getPflsReallyUsedMulti();
++      ret.insert(ret.end(),tmp.begin(),tmp.end());
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileFieldPerMesh::getLocsReallyUsed() const
++{
++  std::vector<std::string> ret;
++  std::set<std::string> ret2;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getLocsReallyUsed();
++      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
++        if(ret2.find(*it2)==ret2.end())
++          {
++            ret.push_back(*it2);
++            ret2.insert(*it2);
++          }
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileFieldPerMesh::getLocsReallyUsedMulti() const
++{
++  std::vector<std::string> ret;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getLocsReallyUsedMulti();
++      ret.insert(ret.end(),tmp.begin(),tmp.end());
++    }
++  return ret;
++}
++
++bool MEDFileFieldPerMesh::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab)
++{
++  for(std::vector< std::pair<std::string,std::string> >::const_iterator it=modifTab.begin();it!=modifTab.end();it++)
++    {
++      if((*it).first==getMeshName())
++        {
++          setMeshName((*it).second);
++          return true;
++        }
++    }
++  return false;
++}
++
++void MEDFileFieldPerMesh::convertMedBallIntoClassic()
++{
++  if(_field_pm_pt.size()!=1)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::convertMedBallIntoClassic : Only managed for single mesh !");
++  if(_field_pm_pt[0].isNull())
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::convertMedBallIntoClassic : null pointer !");
++  MEDFileFieldPerMeshPerTypeDyn *pt(dynamic_cast<MEDFileFieldPerMeshPerTypeDyn *>((MEDFileFieldPerMeshPerTypeCommon *)_field_pm_pt[0]));
++  if(!pt)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::convertMedBallIntoClassic : this is expected to be marked as structure element !");
++  if(pt->getNumberOfLoc()!=1)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::convertMedBallIntoClassic : only one loc managed !");
++  const MEDFileFieldPerMeshPerTypePerDisc *disc(pt->getLeafGivenLocId(0));
++  if(!disc)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::convertMedBallIntoClassic : internal error !");
++  MCAuto<MEDFileFieldPerMeshPerTypePerDisc> disc2(MEDFileFieldPerMeshPerTypePerDisc::New(*disc));
++  disc2->setType(ON_NODES);
++  MCAuto<MEDFileFieldPerMeshPerType> pt2(MEDFileFieldPerMeshPerType::New(this,INTERP_KERNEL::NORM_ERROR));
++  disc2->setFather(pt2);
++  pt2->setFather(this);
++  pt2->pushDiscretization(disc2);
++  _field_pm_pt[0]=DynamicCast<MEDFileFieldPerMeshPerType,MEDFileFieldPerMeshPerTypeCommon>(pt2);
++}
++
++bool MEDFileFieldPerMesh::renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N,
++                                                      MEDFileFieldGlobsReal& glob)
++{
++  if(getMeshName()!=meshName)
++    return false;
++  std::set<INTERP_KERNEL::NormalizedCellType> typesToKeep;
++  for(std::size_t i=0;i<oldCode.size()/3;i++) typesToKeep.insert((INTERP_KERNEL::NormalizedCellType)oldCode[3*i]);
++  std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > > entries;
++  std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> entriesKept;
++  std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> otherEntries;
++  getUndergroundDataArrayExt(entries);
++  DataArray *arr0(getOrCreateAndGetArray());//tony
++  if(!arr0)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::renumberEntitiesLyingOnMesh : DataArray storing values of field is null !");
++  DataArrayDouble *arr(dynamic_cast<DataArrayDouble *>(arr0));//tony
++  if(!arr0)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::renumberEntitiesLyingOnMesh : DataArray storing values is double ! Not managed for the moment !");
++  int sz=0;
++  if(!arr)
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::renumberEntitiesLyingOnMesh : DataArrayDouble storing values of field is null !");
++  for(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >::const_iterator it=entries.begin();it!=entries.end();it++)
++    {
++      if(typesToKeep.find((*it).first.first)!=typesToKeep.end())
++        {
++          entriesKept.push_back(getLeafGivenTypeAndLocId((*it).first.first,(*it).first.second));
++          sz+=(*it).second.second-(*it).second.first;
++        }
++      else
++        otherEntries.push_back(getLeafGivenTypeAndLocId((*it).first.first,(*it).first.second));
++    }
++  MCAuto<DataArrayInt> renumDefrag=DataArrayInt::New(); renumDefrag->alloc(arr->getNumberOfTuples(),1); renumDefrag->fillWithZero();
++  ////////////////////
++  MCAuto<DataArrayInt> explicitIdsOldInMesh=DataArrayInt::New(); explicitIdsOldInMesh->alloc(sz,1);//sz is a majorant of the real size. A realloc will be done after
++  int *workI2=explicitIdsOldInMesh->getPointer();
++  int sz1=0,sz2=0,sid=1;
++  std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> > entriesKeptML=MEDFileFieldPerMeshPerTypePerDisc::SplitPerDiscretization(entriesKept);
++  // std::vector<int> tupleIdOfStartOfNewChuncksV(entriesKeptML.size());
++  for(std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> >::const_iterator itL1=entriesKeptML.begin();itL1!=entriesKeptML.end();itL1++,sid++)
++    {
++      //  tupleIdOfStartOfNewChuncksV[sid-1]=sz2;
++      MCAuto<DataArrayInt> explicitIdsOldInArr=DataArrayInt::New(); explicitIdsOldInArr->alloc(sz,1);
++      int *workI=explicitIdsOldInArr->getPointer();
++      for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator itL2=(*itL1).begin();itL2!=(*itL1).end();itL2++)
++        {
++          int delta1=(*itL2)->fillTupleIds(workI); workI+=delta1; sz1+=delta1;
++          (*itL2)->setLocId(sz2);
++          (*itL2)->_tmp_work1=(*itL2)->getStart();
++          int delta2=(*itL2)->fillEltIdsFromCode(sz2,oldCode,glob,workI2); workI2+=delta2; sz2+=delta2;
++        }
++      renumDefrag->setPartOfValuesSimple3(sid,explicitIdsOldInArr->begin(),explicitIdsOldInArr->end(),0,1,1);
++    }
++  explicitIdsOldInMesh->reAlloc(sz2);
++  int tupleIdOfStartOfNewChuncks=arr->getNumberOfTuples()-sz2;
++  ////////////////////
++  MCAuto<DataArrayInt> permArrDefrag=renumDefrag->buildPermArrPerLevel(); renumDefrag=0;
++  // perform redispatching of non concerned MEDFileFieldPerMeshPerTypePerDisc
++  std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> > otherEntriesNew;
++  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=otherEntries.begin();it!=otherEntries.end();it++)
++    {
++      otherEntriesNew.push_back(MEDFileFieldPerMeshPerTypePerDisc::New(*(*it)));
++      otherEntriesNew.back()->setNewStart(permArrDefrag->getIJ((*it)->getStart(),0));
++      otherEntriesNew.back()->setLocId((*it)->getGeoType());
++    }
++  std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> > entriesKeptNew;
++  std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> entriesKeptNew2;
++  for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator it=entriesKept.begin();it!=entriesKept.end();it++)
++    {
++      MCAuto<MEDFileFieldPerMeshPerTypePerDisc> elt=MEDFileFieldPerMeshPerTypePerDisc::New(*(*it));
++      int newStart=elt->getLocId();
++      elt->setLocId((*it)->getGeoType());
++      elt->setNewStart(newStart);
++      elt->_tmp_work1=permArrDefrag->getIJ(elt->_tmp_work1,0);
++      entriesKeptNew.push_back(elt);
++      entriesKeptNew2.push_back(elt);
++    }
++  MCAuto<DataArrayDouble> arr2=arr->renumber(permArrDefrag->getConstPointer());
++  // perform redispatching of concerned MEDFileFieldPerMeshPerTypePerDisc -> values are in arr2
++  MCAuto<DataArrayInt> explicitIdsNewInMesh=renumO2N->selectByTupleId(explicitIdsOldInMesh->begin(),explicitIdsOldInMesh->end());
++  std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> > entriesKeptPerDisc=MEDFileFieldPerMeshPerTypePerDisc::SplitPerDiscretization(entriesKeptNew2);
++  bool ret=false;
++  for(std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> >::const_iterator it4=entriesKeptPerDisc.begin();it4!=entriesKeptPerDisc.end();it4++)
++    {
++      sid=0;
++      /*for(std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>::const_iterator itL2=(*it4).begin();itL2!=(*it4).end();itL2++)
++        {
++          MEDFileFieldPerMeshPerTypePerDisc *curNC=const_cast<MEDFileFieldPerMeshPerTypePerDisc *>(*itL2);
++          curNC->setNewStart(permArrDefrag->getIJ((*itL2)->getStart(),0)-tupleIdOfStartOfNewChuncks+tupleIdOfStartOfNewChuncksV[sid]);
++          }*/
++      ret=MEDFileFieldPerMeshPerTypePerDisc::RenumberChunks(tupleIdOfStartOfNewChuncks,*it4,explicitIdsNewInMesh,newCode,
++                                                            glob,arr2,otherEntriesNew) || ret;
++    }
++  if(!ret)
++    return false;
++  // Assign new dispatching
++  assignNewLeaves(otherEntriesNew);
++  arr->deepCopyFrom(*arr2);
++  return true;
++}
++
++/*!
++ * \param [in,out] globalNum a global numbering counter for the renumbering.
++ * \param [out] its - list of pair (start,stop) kept
++ */
++void MEDFileFieldPerMesh::keepOnlySpatialDiscretization(TypeOfField tof, int &globalNum, std::vector< std::pair<int,int> >& its)
++{
++  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > ret;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      std::vector< std::pair<int,int> > its2;
++      if((*it)->keepOnlySpatialDiscretization(tof,globalNum,its2))
++        {
++          ret.push_back(*it);
++          its.insert(its.end(),its2.begin(),its2.end());
++        }
++    }
++  _field_pm_pt=ret;
++}
++
++/*!
++ * \param [in,out] globalNum a global numbering counter for the renumbering.
++ * \param [out] its - list of pair (start,stop) kept
++ */
++void MEDFileFieldPerMesh::keepOnlyGaussDiscretization(std::size_t idOfDisc, int &globalNum, std::vector< std::pair<int,int> >& its)
++{
++  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > ret;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      std::vector< std::pair<int,int> > its2;
++      if((*it)->keepOnlyGaussDiscretization(idOfDisc,globalNum,its2))
++        {
++          ret.push_back(*it);
++          its.insert(its.end(),its2.begin(),its2.end());
++        }
++    }
++  _field_pm_pt=ret;
++}
++
++void MEDFileFieldPerMesh::assignNewLeaves(const std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc > >& leaves)
++{
++  std::map<INTERP_KERNEL::NormalizedCellType,std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc> > > types;
++  for( std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc > >::const_iterator it=leaves.begin();it!=leaves.end();it++)
++    types[(INTERP_KERNEL::NormalizedCellType)(*it)->getLocId()].push_back(*it);
++  //
++  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > fieldPmPt(types.size());
++  std::map<INTERP_KERNEL::NormalizedCellType,std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc> > >::const_iterator it1=types.begin();
++  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it2=fieldPmPt.begin();
++  for(;it1!=types.end();it1++,it2++)
++    {
++      MCAuto<MEDFileFieldPerMeshPerType> elt=MEDFileFieldPerMeshPerType::New(this,(INTERP_KERNEL::NormalizedCellType)((*it1).second[0]->getLocId()));
++      elt->setLeaves((*it1).second);
++      MCAuto<MEDFileFieldPerMeshPerTypeCommon> elt2(DynamicCast<MEDFileFieldPerMeshPerType,MEDFileFieldPerMeshPerTypeCommon>(elt));
++      *it2=elt2;
++    }
++  _field_pm_pt=fieldPmPt;
++}
++
++void MEDFileFieldPerMesh::changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    (*it)->changePflsRefsNamesGen(mapOfModif);
++}
++
++void MEDFileFieldPerMesh::changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    (*it)->changeLocsRefsNamesGen(mapOfModif);
++}
++
++/*!
++ * \param [in] mesh is the whole mesh
++ */
++MEDCouplingFieldDouble *MEDFileFieldPerMesh::getFieldOnMeshAtLevel(TypeOfField type, const MEDFileFieldGlobsReal *glob, const MEDCouplingMesh *mesh, bool& isPfl, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
++{
++  if(_field_pm_pt.empty())
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getFieldOnMeshAtLevel : no types field set !");
++  //
++  std::vector< std::pair<int,int> > dads;
++  std::vector<const DataArrayInt *> pfls;
++  std::vector<DataArrayInt *> notNullPflsPerGeoType;
++  std::vector<int> locs,code;
++  std::vector<INTERP_KERNEL::NormalizedCellType> geoTypes;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    (*it)->getFieldAtLevel(mesh->getMeshDimension(),type,glob,dads,pfls,locs,geoTypes);
++  // Sort by types
++  SortArraysPerType(glob,type,geoTypes,dads,pfls,locs,code,notNullPflsPerGeoType);
++  if(code.empty())
++    {
++      std::ostringstream oss; oss << "MEDFileFieldPerMesh::getFieldOnMeshAtLevel : " << "The field \"" << nasc.getName() << "\" exists but not with such spatial discretization or such dimension specified !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  //
++  std::vector< MCAuto<DataArrayInt> > notNullPflsPerGeoType2(notNullPflsPerGeoType.begin(),notNullPflsPerGeoType.end());
++  std::vector< const DataArrayInt *> notNullPflsPerGeoType3(notNullPflsPerGeoType.begin(),notNullPflsPerGeoType.end());
++  if(type!=ON_NODES)
++    {
++      DataArrayInt *arr=mesh->checkTypeConsistencyAndContig(code,notNullPflsPerGeoType3);
++      if(!arr)
++        return finishField(type,glob,dads,locs,mesh,isPfl,arrOut,nasc);
++      else
++        {
++          MCAuto<DataArrayInt> arr2(arr);
++          return finishField2(type,glob,dads,locs,geoTypes,mesh,arr,isPfl,arrOut,nasc);
++        }
++    }
++  else
++    {
++      if(code.size()!=3)
++        throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getFieldOnMeshAtLevel : internal error #1 !");
++      int nb=code[1];
++      if(code[2]==-1)
++        {
++          if(nb!=mesh->getNumberOfNodes())
++            {
++              std::ostringstream oss; oss << "MEDFileFieldPerMesh::getFieldOnMeshAtLevel : There is a problem there is " << nb << " nodes in field whereas there is " << mesh->getNumberOfNodes();
++              oss << " nodes in mesh !";
++              throw INTERP_KERNEL::Exception(oss.str());
++            }
++          return finishField(type,glob,dads,locs,mesh,isPfl,arrOut,nasc);
++        }
++      else
++        return finishFieldNode2(glob,dads,locs,mesh,notNullPflsPerGeoType3[0],isPfl,arrOut,nasc);
++    }
++}
++
++DataArray *MEDFileFieldPerMesh::getFieldOnMeshAtLevelWithPfl(TypeOfField type, const MEDCouplingMesh *mesh, DataArrayInt *&pfl, const MEDFileFieldGlobsReal *glob, const MEDFileFieldNameScope& nasc) const
++{
++  if(_field_pm_pt.empty())
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getFieldOnMeshAtLevel : no types field set !");
++  //
++  std::vector<std::pair<int,int> > dads;
++  std::vector<const DataArrayInt *> pfls;
++  std::vector<DataArrayInt *> notNullPflsPerGeoType;
++  std::vector<int> locs,code;
++  std::vector<INTERP_KERNEL::NormalizedCellType> geoTypes;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    (*it)->getFieldAtLevel(mesh->getMeshDimension(),type,glob,dads,pfls,locs,geoTypes);
++  // Sort by types
++  SortArraysPerType(glob,type,geoTypes,dads,pfls,locs,code,notNullPflsPerGeoType);
++  if(code.empty())
++    {
++      std::ostringstream oss; oss << "MEDFileFieldPerMesh::getFieldOnMeshAtLevelWithPfl : " << "The field \"" << nasc.getName() << "\" exists but not with such spatial discretization or such dimension specified !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  std::vector< MCAuto<DataArrayInt> > notNullPflsPerGeoType2(notNullPflsPerGeoType.begin(),notNullPflsPerGeoType.end());
++  std::vector< const DataArrayInt *> notNullPflsPerGeoType3(notNullPflsPerGeoType.begin(),notNullPflsPerGeoType.end());
++  if(type!=ON_NODES)
++    {
++      MCAuto<DataArrayInt> arr=mesh->checkTypeConsistencyAndContig(code,notNullPflsPerGeoType3);
++      return finishField4(dads,arr,mesh->getNumberOfCells(),pfl);
++    }
++  else
++    {
++      if(code.size()!=3)
++        throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::getFieldOnMeshAtLevel : internal error #1 !");
++      int nb=code[1];
++      if(code[2]==-1)
++        {
++          if(nb!=mesh->getNumberOfNodes())
++            {
++              std::ostringstream oss; oss << "MEDFileFieldPerMesh::getFieldOnMeshAtLevel : There is a problem there is " << nb << " nodes in field whereas there is " << mesh->getNumberOfNodes();
++              oss << " nodes in mesh !";
++              throw INTERP_KERNEL::Exception(oss.str());
++            }
++        }
++      return finishField4(dads,code[2]==-1?0:notNullPflsPerGeoType3[0],mesh->getNumberOfNodes(),pfl);
++    }
++  //
++  return 0;
++}
++
++void MEDFileFieldPerMesh::accept(MEDFileFieldVisitor& visitor) const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    if((*it).isNotNull())
++      {
++        visitor.newPerMeshPerTypeEntry(*it);
++        (*it)->accept(visitor);
++        visitor.endPerMeshPerTypeEntry(*it);
++      }
++}
++
++void MEDFileFieldPerMesh::getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
++{
++  int globalSz=0;
++  int nbOfEntries=0;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      (*it)->getSizes(globalSz,nbOfEntries);
++    }
++  entries.resize(nbOfEntries);
++  nbOfEntries=0;
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      (*it)->fillValues(nbOfEntries,entries);
++    }
++}
++
++MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMesh::getLeafGivenTypeAndLocId(INTERP_KERNEL::NormalizedCellType typ, int locId)
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      if((*it)->getGeoType()==typ)
++        return (*it)->getLeafGivenLocId(locId);
++    }
++  const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(typ);
++  std::ostringstream oss; oss << "MEDFileFieldPerMesh::getLeafGivenTypeAndLocId : no such geometric type \"" << cm.getRepr() << "\" in this !" << std::endl;
++  oss << "Possibilities are : ";
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      const INTERP_KERNEL::CellModel& cm2=INTERP_KERNEL::CellModel::GetCellModel((*it)->getGeoType());
++      oss << "\"" << cm2.getRepr() << "\", ";
++    }
++  throw INTERP_KERNEL::Exception(oss.str());
++}
++
++const MEDFileFieldPerMeshPerTypePerDisc *MEDFileFieldPerMesh::getLeafGivenTypeAndLocId(INTERP_KERNEL::NormalizedCellType typ, int locId) const
++{
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      if((*it)->getGeoType()==typ)
++        return (*it)->getLeafGivenLocId(locId);
++    }
++  const INTERP_KERNEL::CellModel& cm=INTERP_KERNEL::CellModel::GetCellModel(typ);
++  std::ostringstream oss; oss << "MEDFileFieldPerMesh::getLeafGivenTypeAndLocId : no such geometric type \"" << cm.getRepr() << "\" in this !" << std::endl;
++  oss << "Possibilities are : ";
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++)
++    {
++      const INTERP_KERNEL::CellModel& cm2=INTERP_KERNEL::CellModel::GetCellModel((*it)->getGeoType());
++      oss << "\"" << cm2.getRepr() << "\", ";
++    }
++  throw INTERP_KERNEL::Exception(oss.str());
++}
++
++/*!
++ * \param [in,out] start - Integer that gives the current position in the final aggregated array
++ * \param [in] pms - list of elements to aggregate. integer gives the mesh id 
++ * \param [in] dts - (Distribution of types) = level 1 : meshes to aggregate. Level 2 : all geo type. Level 3 pair specifying geo type and number of elem in geotype.
++ * \param [out] extractInfo - Gives information about the where the data comes from. It is a vector of triplet. First element in the triplet the mesh pos. The 2nd one the start pos. The 3rd the end pos.
++ */
++MCAuto<MEDFileFieldPerMeshPerTypePerDisc> MEDFileFieldPerMeshPerTypePerDisc::Aggregate(int &start, const std::vector< std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc *> >& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, TypeOfField tof, MEDFileFieldPerMeshPerType *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo)
++{
++  MCAuto<MEDFileFieldPerMeshPerTypePerDisc> ret(new MEDFileFieldPerMeshPerTypePerDisc(father,tof));
++  if(pms.empty())
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : empty input vector !");
++  for(std::vector<std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc *> >::const_iterator it=pms.begin();it!=pms.end();it++)
++    {
++      if(!(*it).second)
++        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : presence of null pointer !");
++      if(!(*it).second->getProfile().empty())
++        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : not implemented yet for profiles !");
++      if(!(*it).second->getLocalization().empty())
++        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : not implemented yet for gauss pts !");
++    }
++  INTERP_KERNEL::NormalizedCellType gt(pms[0].second->getGeoType());
++  std::size_t i(0);
++  std::vector< std::pair<int,int> > filteredDTS;
++  for(std::vector< std::vector< std::pair<int,int> > >::const_iterator it=dts.begin();it!=dts.end();it++,i++)
++    for(std::vector< std::pair<int,int> >::const_iterator it2=(*it).begin();it2!=(*it).end();it2++)
++      if((*it2).first==gt)
++        filteredDTS.push_back(std::pair<int,int>(i,(*it2).second));
++  if(pms.size()!=filteredDTS.size())
++    throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : not implemented yet for generated profiles !");
++  std::vector<std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc *> >::const_iterator it1(pms.begin());
++  std::vector< std::pair<int,int> >::const_iterator it2(filteredDTS.begin());
++  int zeStart(start),nval(0);
++  for(;it1!=pms.end();it1++,it2++)
++    {
++      if((*it1).first!=(*it2).first)
++        throw INTERP_KERNEL::Exception("MEDFileFieldPerMeshPerTypePerDisc::Aggregate : not implemented yet for generated profiles 2 !");
++      int s1((*it1).second->getStart()),e1((*it1).second->getEnd());
++      extractInfo.push_back(std::pair<int, std::pair<int,int> >((*it1).first,std::pair<int,int>(s1,e1)));
++      start+=e1-s1;
++      nval+=((*it1).second)->getNumberOfVals();
++    }
++  ret->_start=zeStart; ret->_end=start; ret->_nval=nval;
++  return ret;
++}
++
++MCAuto<MEDFileFieldPerMesh> MEDFileFieldPerMesh::Aggregate(int &start, const std::vector<const MEDFileFieldPerMesh *>& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, MEDFileAnyTypeField1TSWithoutSDA *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo)
++{
++  MCAuto<MEDFileFieldPerMesh> ret(new MEDFileFieldPerMesh(father,pms[0]->getMeshName(),pms[0]->getMeshIteration(),pms[0]->getMeshOrder()));
++  std::map<INTERP_KERNEL::NormalizedCellType, std::vector< std::pair<int,const MEDFileFieldPerMeshPerType *> > > m;
++  std::size_t i(0);
++  for(std::vector<const MEDFileFieldPerMesh *>::const_iterator it=pms.begin();it!=pms.end();it++,i++)
++    {
++      const std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >& v((*it)->_field_pm_pt);
++      for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::const_iterator it2=v.begin();it2!=v.end();it2++)
++        {
++          INTERP_KERNEL::NormalizedCellType gt((*it2)->getGeoType());
++          const MEDFileFieldPerMeshPerType *elt(dynamic_cast<const MEDFileFieldPerMeshPerType *>((const MEDFileFieldPerMeshPerTypeCommon *)(*it2)));
++          if(!elt)
++            throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::Aggregate : not managed for structelement !");
++          m[gt].push_back(std::pair<int,const MEDFileFieldPerMeshPerType *>(i,elt));
++        }
++    }
++  for(std::map<INTERP_KERNEL::NormalizedCellType, std::vector< std::pair<int,const MEDFileFieldPerMeshPerType *> > >::const_iterator it=m.begin();it!=m.end();it++)
++    {
++      MCAuto<MEDFileFieldPerMeshPerType> agg(MEDFileFieldPerMeshPerType::Aggregate(start,(*it).second,dts,(*it).first,ret,extractInfo));
++      MCAuto<MEDFileFieldPerMeshPerTypeCommon> agg2(DynamicCast<MEDFileFieldPerMeshPerType,MEDFileFieldPerMeshPerTypeCommon>(agg));
++      ret->_field_pm_pt.push_back(agg2);
++    }
++  return ret;
++}
++
++int MEDFileFieldPerMesh::addNewEntryIfNecessary(INTERP_KERNEL::NormalizedCellType type)
++{
++  int i=0;
++  int pos=std::distance(typmai2,std::find(typmai2,typmai2+MED_N_CELL_FIXED_GEO,type));
++  std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it2=_field_pm_pt.begin();
++  for(std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > >::iterator it=_field_pm_pt.begin();it!=_field_pm_pt.end();it++,i++)
++    {
++      INTERP_KERNEL::NormalizedCellType curType=(*it)->getGeoType();
++      if(type==curType)
++        return i;
++      else
++        {
++          int pos2=std::distance(typmai2,std::find(typmai2,typmai2+MED_N_CELL_FIXED_GEO,curType));
++          if(pos>pos2)
++            it2=it+1;
++        }
++    }
++  int ret=std::distance(_field_pm_pt.begin(),it2);
++  _field_pm_pt.insert(it2,MEDFileFieldPerMeshPerType::New(this,type));
++  return ret;
++}
++
++/*!
++ * 'dads' and 'locs' input parameters have the same number of elements
++ * \param [in] mesh is \b NOT the global mesh, but the possibly reduced mesh. \a mesh parameter will be directly aggregated in the returned field
++ */
++MEDCouplingFieldDouble *MEDFileFieldPerMesh::finishField(TypeOfField type, const MEDFileFieldGlobsReal *glob,
++                                                         const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs,
++                                                         const MEDCouplingMesh *mesh, bool& isPfl, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
++{
++  isPfl=false;
++  MCAuto<MEDCouplingFieldDouble> ret=MEDCouplingFieldDouble::New(type,ONE_TIME);
++  ret->setMesh(mesh); ret->setName(nasc.getName().c_str()); ret->setTime(getTime(),getIteration(),getOrder()); ret->setTimeUnit(nasc.getDtUnit().c_str());
++  MCAuto<DataArray> da=getOrCreateAndGetArray()->selectByTupleRanges(dads);
++  const std::vector<std::string>& infos=getInfo();
++  da->setInfoOnComponents(infos);
++  da->setName("");
++  if(type==ON_GAUSS_PT)
++    {
++      int offset=0;
++      int nbOfArrs=dads.size();
++      for(int i=0;i<nbOfArrs;i++)
++        {
++          std::vector<std::pair<int,int> > dads2(1,dads[i]); const std::vector<int> locs2(1,locs[i]);
++          const std::vector<INTERP_KERNEL::NormalizedCellType> geoTypes2(1,INTERP_KERNEL::NORM_ERROR);
++          int nbOfElems=ComputeNbOfElems(glob,type,geoTypes2,dads2,locs2);
++          MCAuto<DataArrayInt> di=DataArrayInt::New();
++          di->alloc(nbOfElems,1);
++          di->iota(offset);
++          const MEDFileFieldLoc& fl=glob->getLocalizationFromId(locs[i]);
++          ret->setGaussLocalizationOnCells(di->getConstPointer(),di->getConstPointer()+nbOfElems,fl.getRefCoords(),fl.getGaussCoords(),fl.getGaussWeights());
++          offset+=nbOfElems;
++        }
++    }
++  arrOut=da;
++  return ret.retn();
++}
++
++/*!
++ * This method is an extension of MEDFileFieldPerMesh::finishField method. It deals with profiles. This method should be called when type is different from ON_NODES.
++ * 'dads', 'locs' and 'geoTypes' input parameters have the same number of elements.
++ * No check of this is performed. 'da' array contains an array in old2New style to be applyied to mesh to obtain the right support.
++ * The order of cells in the returned field is those imposed by the profile.
++ * \param [in] mesh is the global mesh.
++ */
++MEDCouplingFieldDouble *MEDFileFieldPerMesh::finishField2(TypeOfField type, const MEDFileFieldGlobsReal *glob,
++                                                          const std::vector<std::pair<int,int> >& dads, const std::vector<int>& locs,
++                                                          const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes,
++                                                          const MEDCouplingMesh *mesh, const DataArrayInt *da, bool& isPfl, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
++{
++  if(da->isIota(mesh->getNumberOfCells()))
++    return finishField(type,glob,dads,locs,mesh,isPfl,arrOut,nasc);
++  MCAuto<MEDCouplingMesh> m2=mesh->buildPart(da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
++  m2->setName(mesh->getName().c_str());
++  MCAuto<MEDCouplingFieldDouble> ret=finishField(type,glob,dads,locs,m2,isPfl,arrOut,nasc);
++  isPfl=true;
++  return ret.retn();
++}
++
++/*!
++ * This method is the complement of MEDFileFieldPerMesh::finishField2 method except that this method works for node profiles.
++ */
++MEDCouplingFieldDouble *MEDFileFieldPerMesh::finishFieldNode2(const MEDFileFieldGlobsReal *glob,
++                                                              const std::vector<std::pair<int,int> >& dads, const std::vector<int>& locs,
++                                                              const MEDCouplingMesh *mesh, const DataArrayInt *da, bool& isPfl, MCAuto<DataArray>& arrOut, const MEDFileFieldNameScope& nasc) const
++{
++  if(da->isIota(mesh->getNumberOfNodes()))
++    return finishField(ON_NODES,glob,dads,locs,mesh,isPfl,arrOut,nasc);
++  // Treatment of particular case where nodal field on pfl is requested with a meshDimRelToMax=1.
++  const MEDCouplingUMesh *meshu=dynamic_cast<const MEDCouplingUMesh *>(mesh);
++  if(meshu)
++    {
++      if(meshu->getNodalConnectivity()==0)
++        {
++          MCAuto<MEDCouplingFieldDouble> ret=finishField(ON_CELLS,glob,dads,locs,mesh,isPfl,arrOut,nasc);
++          int nb=da->getNbOfElems();
++          const int *ptr=da->getConstPointer();
++          MEDCouplingUMesh *meshuc=const_cast<MEDCouplingUMesh *>(meshu);
++          meshuc->allocateCells(nb);
++          for(int i=0;i<nb;i++)
++            meshuc->insertNextCell(INTERP_KERNEL::NORM_POINT1,1,ptr+i);
++          meshuc->finishInsertingCells();
++          ret->setMesh(meshuc);
++          const MEDCouplingFieldDiscretization *disc=ret->getDiscretization();
++          if(!disc) throw INTERP_KERNEL::Exception("MEDFileFieldPerMesh::finishFieldNode2 : internal error, no discretization on field !");
++          disc->checkCoherencyBetween(meshuc,arrOut);
++          return ret.retn();
++        }
++    }
++  //
++  MCAuto<MEDCouplingFieldDouble> ret=finishField(ON_NODES,glob,dads,locs,mesh,isPfl,arrOut,nasc);
++  isPfl=true;
++  DataArrayInt *arr2=0;
++  MCAuto<DataArrayInt> cellIds=mesh->getCellIdsFullyIncludedInNodeIds(da->getConstPointer(),da->getConstPointer()+da->getNbOfElems());
++  MCAuto<MEDCouplingMesh> mesh2=mesh->buildPartAndReduceNodes(cellIds->getConstPointer(),cellIds->getConstPointer()+cellIds->getNbOfElems(),arr2);
++  MCAuto<DataArrayInt> arr3(arr2);
++  int nnodes=mesh2->getNumberOfNodes();
++  if(nnodes==(int)da->getNbOfElems())
++    {
++      MCAuto<DataArrayInt> da3=da->transformWithIndArrR(arr2->begin(),arr2->end());
++      arrOut->renumberInPlace(da3->getConstPointer());
++      mesh2->setName(mesh->getName().c_str());
++      ret->setMesh(mesh2);
++      return ret.retn();
++    }
++  else
++    {
++      std::ostringstream oss; oss << "MEDFileFieldPerMesh::finishFieldNode2 : The field on nodes lies on a node profile so that it is impossible to find a submesh having exactly the same nodes of that profile !!!";
++      oss << "So it is impossible to return a well definied MEDCouplingFieldDouble instance on specified mesh on a specified meshDim !" << std::endl;
++      oss << "To retrieve correctly such a field you have 3 possibilities :" << std::endl;
++      oss << " - use an another meshDim compatible with the field on nodes (MED file does not have such information)" << std::endl;
++      oss << " - use an another a meshDimRelToMax equal to 1 -> it will return a mesh with artificial cell POINT1 containing the profile !" << std::endl;
++      oss << " - if definitely the node profile has no link with mesh connectivity use MEDFileField1TS::getFieldWithProfile or MEDFileFieldMultiTS::getFieldWithProfile methods instead !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  return 0;
++}
++
++/*!
++ * This method is the most light method of field retrieving.
++ */
++DataArray *MEDFileFieldPerMesh::finishField4(const std::vector<std::pair<int,int> >& dads, const DataArrayInt *pflIn, int nbOfElems, DataArrayInt *&pflOut) const
++{
++  if(!pflIn)
++    {
++      pflOut=DataArrayInt::New();
++      pflOut->alloc(nbOfElems,1);
++      pflOut->iota(0);
++    }
++  else
++    {
++      pflOut=const_cast<DataArrayInt*>(pflIn);
++      pflOut->incrRef();
++    }
++  MCAuto<DataArrayInt> safePfl(pflOut);
++  MCAuto<DataArray> da=getOrCreateAndGetArray()->selectByTupleRanges(dads);
++  const std::vector<std::string>& infos=getInfo();
++  int nbOfComp=infos.size();
++  for(int i=0;i<nbOfComp;i++)
++    da->setInfoOnComponent(i,infos[i].c_str());
++  safePfl->incrRef();
++  return da.retn();
++}
++
++
++/// @cond INTERNAL
++
++class MFFPMIter
++{
++public:
++  static MFFPMIter *NewCell(const MEDFileEntities *entities);
++  static bool IsPresenceOfNode(const MEDFileEntities *entities);
++  virtual ~MFFPMIter() { }
++  virtual void begin() = 0;
++  virtual bool finished() const = 0;
++  virtual void next() = 0;
++  virtual int current() const = 0;
++};
++
++class MFFPMIterSimple : public MFFPMIter
++{
++public:
++  MFFPMIterSimple():_pos(0) { }
++  void begin() { _pos=0; }
++  bool finished() const { return _pos>=MED_N_CELL_FIXED_GEO; }
++  void next() { _pos++; }
++  int current() const { return _pos; }
++private:
++  int _pos;
++};
++
++class MFFPMIter2 : public MFFPMIter
++{
++public:
++  MFFPMIter2(const std::vector<INTERP_KERNEL::NormalizedCellType>& cts);
++  void begin() { _it=_ids.begin(); }
++  bool finished() const { return _it==_ids.end(); }
++  void next() { _it++; }
++  int current() const { return *_it; }
++private:
++  std::vector<int> _ids;
++  std::vector<int>::const_iterator _it;
++};
++
++MFFPMIter *MFFPMIter::NewCell(const MEDFileEntities *entities)
++{
++  if(!entities)
++    return new MFFPMIterSimple;
++  else
++    {
++      const MEDFileStaticEntities *entities2(dynamic_cast<const MEDFileStaticEntities *>(entities));
++      if(entities2)
++        {
++          std::vector<INTERP_KERNEL::NormalizedCellType> tmp;
++          const std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> >& myEnt(entities2->getEntries());
++          for(std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> >::const_iterator it=myEnt.begin();it!=myEnt.end();it++)
++            {
++              if((*it).first==ON_CELLS || (*it).first==ON_GAUSS_NE || (*it).first==ON_GAUSS_PT)
++                tmp.push_back((*it).second);
++            }
++          return new MFFPMIter2(tmp);
++        }
++      return new MFFPMIterSimple;// for MEDFileAllStaticEntites and MEDFileAllStaticEntitiesPlusDyn cells are in
++    }
++}
++
++bool MFFPMIter::IsPresenceOfNode(const MEDFileEntities *entities)
++{
++  if(!entities)
++    return true;
++  else
++    {
++      const MEDFileStaticEntities *entities2(dynamic_cast<const MEDFileStaticEntities *>(entities));
++      if(entities2)
++        {
++          const std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> >& myEnt(entities2->getEntries());
++          for(std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> >::const_iterator it=myEnt.begin();it!=myEnt.end();it++)
++            if((*it).first==ON_NODES)
++              return true;
++          return false;
++        }
++      return true;// for MEDFileAllStaticEntites and MEDFileAllStaticEntitiesPlusDyn nodes are in
++    }
++}
++
++MFFPMIter2::MFFPMIter2(const std::vector<INTERP_KERNEL::NormalizedCellType>& cts)
++{
++  std::size_t sz(cts.size());
++  _ids.resize(sz);
++  for(std::size_t i=0;i<sz;i++)
++    {
++      INTERP_KERNEL::NormalizedCellType *loc(std::find(typmai2,typmai2+MED_N_CELL_FIXED_GEO,cts[i]));
++      if(loc!=typmai2+MED_N_CELL_FIXED_GEO)
++        _ids[i]=(int)std::distance(typmai2,loc);
++      else
++        throw INTERP_KERNEL::Exception("MFFPMIter2 : The specified geo type does not exists !");
++    }
++}
++
++/// @endcond
++
++MEDFileFieldPerMesh::MEDFileFieldPerMesh(med_idt fid, MEDFileAnyTypeField1TSWithoutSDA *fath, int meshCsit, int meshIteration, int meshOrder, const MEDFileFieldNameScope& nasc, const MEDFileMesh *mm, const MEDFileEntities *entities):_mesh_iteration(meshIteration),_mesh_order(meshOrder),
++    _father(fath)
++{
++  INTERP_KERNEL::AutoPtr<char> meshName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  INTERP_KERNEL::AutoPtr<char> pflName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  INTERP_KERNEL::AutoPtr<char> locName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE));
++  const MEDFileUMesh *mmu(dynamic_cast<const MEDFileUMesh *>(mm));
++  INTERP_KERNEL::AutoCppPtr<MFFPMIter> iter0(MFFPMIter::NewCell(entities));
++  for(iter0->begin();!iter0->finished();iter0->next())
++    {
++      int nbProfile (MEDfield23nProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_CELL        ,typmai[iter0->current()],meshCsit+1,meshName,pflName,locName));
++      std::string name0(MEDLoaderBase::buildStringFromFortran(meshName,MED_NAME_SIZE+1));
++      int nbProfile2(MEDfield23nProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_NODE_ELEMENT,typmai[iter0->current()],meshCsit+1,meshName,pflName,locName));
++      std::string name1(MEDLoaderBase::buildStringFromFortran(meshName,MED_NAME_SIZE+1));
++      if(nbProfile>0 || nbProfile2>0)
++        {
++          const PartDefinition *pd(0);
++          if(mmu)
++            pd=mmu->getPartDefAtLevel(mmu->getRelativeLevOnGeoType(typmai2[iter0->current()]),typmai2[iter0->current()]);
++          _field_pm_pt.push_back(MEDFileFieldPerMeshPerType::NewOnRead(fid,this,ON_CELLS,typmai2[iter0->current()],nasc,pd));
++          if(nbProfile>0)
++            setMeshName(name0);
++          else
++            setMeshName(name1);
++        }
++    }
++  if(MFFPMIter::IsPresenceOfNode(entities))
++    {
++      int nbProfile(MEDfield23nProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_NODE,MED_NONE,meshCsit+1,meshName,pflName,locName));
++      if(nbProfile>0)
++        {
++          const PartDefinition *pd(0);
++          if(mmu)
++            pd=mmu->getPartDefAtLevel(1,INTERP_KERNEL::NORM_ERROR);
++          _field_pm_pt.push_back(MEDFileFieldPerMeshPerType::NewOnRead(fid,this,ON_NODES,INTERP_KERNEL::NORM_ERROR,nasc,pd));
++          setMeshName(MEDLoaderBase::buildStringFromFortran(meshName,MED_NAME_SIZE));
++        }
++    }
++  if(!entities)
++    return ;
++  std::vector<int> dynGT(entities->getDynGTAvail());
++  for(std::vector<int>::const_iterator it=dynGT.begin();it!=dynGT.end();it++)
++    {
++      int nbPfl(MEDfieldnProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_STRUCT_ELEMENT,*it,pflName,locName));
++      if(nbPfl>0)
++        {
++          _field_pm_pt.push_back(MEDFileFieldPerMeshPerTypeDyn::NewOnRead(fid,this,entities,*it,nasc));
++          setMeshName(MEDLoaderBase::buildStringFromFortran(meshName,MED_NAME_SIZE));
++        }
++    }
++  if(!_field_pm_pt.empty())
++    return;
++  //for vicious users using MED_ARETE MED_FACE in fields. the last try. For Others not overhead to pay.
++  iter0=MFFPMIter::NewCell(entities);
++  for(iter0->begin();!iter0->finished();iter0->next())
++    {
++      int nbProfile (MEDfield23nProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_DESCENDING_FACE,typmai[iter0->current()],meshCsit+1,meshName,pflName,locName));
++      std::string name0(MEDLoaderBase::buildStringFromFortran(meshName,MED_NAME_SIZE+1));
++      int nbProfile2(MEDfield23nProfile(fid,nasc.getName().c_str(),getIteration(),getOrder(),MED_DESCENDING_EDGE,typmai[iter0->current()],meshCsit+1,meshName,pflName,locName));
++      std::string name1(MEDLoaderBase::buildStringFromFortran(meshName,MED_NAME_SIZE+1));
++      if(nbProfile>0 || nbProfile2>0)
++        {
++          _field_pm_pt.push_back(MEDFileFieldPerMeshPerType::NewOnRead(fid,this,ON_CELLS,typmai2[iter0->current()],nasc,NULL));
++          if(nbProfile>0)
++            setMeshName(name0);
++          else
++            setMeshName(name1);
++        }
++    }
++}
++
++MEDFileFieldPerMesh::MEDFileFieldPerMesh(MEDFileAnyTypeField1TSWithoutSDA *fath, const MEDCouplingMesh *mesh):_father(fath)
++{
++  copyTinyInfoFrom(mesh);
++}
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileFieldInternal.hxx MEDCOUPLING_new/src/MEDLoader/MEDFileFieldInternal.hxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileFieldInternal.hxx     1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileFieldInternal.hxx     2018-04-19 17:25:17.859799768 +0200
+@@ -0,0 +1,416 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++#ifndef __MEDFILEFIELDINTERNAL_HXX__
++#define __MEDFILEFIELDINTERNAL_HXX__
++
++#include "MEDLoaderDefines.hxx"
++#include "MEDFileUtilities.hxx"
++#include "NormalizedGeometricTypes"
++#include "InterpKernelAutoPtr.hxx"
++#include "MCAuto.hxx"
++
++#include "med.h"
++
++#include <string>
++#include <list>
++
++namespace MEDCoupling
++{
++  class MEDFileGTKeeper
++  {
++  public:
++    virtual MEDFileGTKeeper *deepCopy() const = 0;
++    virtual INTERP_KERNEL::NormalizedCellType getGeoType() const = 0;
++    virtual std::string getRepr() const = 0;
++    virtual bool isEqual(const MEDFileGTKeeper *other) const = 0;
++    virtual ~MEDFileGTKeeper();
++  };
++
++  class MEDFileGTKeeperSta : public MEDFileGTKeeper
++  {
++  public:
++    MEDFileGTKeeperSta(INTERP_KERNEL::NormalizedCellType gt):_geo_type(gt) { }
++    MEDFileGTKeeper *deepCopy() const;
++    INTERP_KERNEL::NormalizedCellType getGeoType() const;
++    std::string getRepr() const;
++    bool isEqual(const MEDFileGTKeeper *other) const;
++  private:
++    INTERP_KERNEL::NormalizedCellType _geo_type;
++  };
++
++  
++  class MEDFileStructureElement;
++  class MEDFileUMesh;
++  
++  class MEDFileGTKeeperDyn : public MEDFileGTKeeper
++  {
++  public:
++    MEDFileGTKeeperDyn(const MEDFileUMesh *mesh, const MEDFileUMesh *section, const MEDFileStructureElement *se);
++    MEDFileGTKeeper *deepCopy() const;
++    INTERP_KERNEL::NormalizedCellType getGeoType() const;
++    std::string getRepr() const;
++    bool isEqual(const MEDFileGTKeeper *other) const;
++    const MEDFileUMesh *getMesh() const { return _mesh; }
++    const MEDFileUMesh *getSection() const { return _section; }
++    const MEDFileStructureElement *getSE() const { return _se; }
++  private:
++    MCConstAuto<MEDFileUMesh> _mesh;
++    MCConstAuto<MEDFileUMesh> _section;
++    MCConstAuto<MEDFileStructureElement> _se;
++  };
++
++  class MEDFileEntities;
++  
++  class MEDFileFieldLoc : public RefCountObject
++  {
++  public:
++    MEDLOADER_EXPORT void simpleRepr(std::ostream& oss) const;
++    MEDLOADER_EXPORT std::string getName() const { return _name; }
++    MEDLOADER_EXPORT void setName(const std::string& name);
++    static MEDFileFieldLoc *New(med_idt fid, const std::string& locName);
++    static MEDFileFieldLoc *New(med_idt fid, int i, const MEDFileEntities *entities);
++    static MEDFileFieldLoc *New(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w);
++    std::size_t getHeapMemorySizeWithoutChildren() const;
++    std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
++    MEDFileFieldLoc *deepCopy() const;
++    bool isOnStructureElement() const;
++    const MEDFileGTKeeper *getUndergroundGTKeeper() const { return _gt; }
++    MEDLOADER_EXPORT int getNbOfGaussPtPerCell() const { return _nb_gauss_pt; }
++    MEDLOADER_EXPORT void writeLL(med_idt fid) const;
++    MEDLOADER_EXPORT std::string repr() const;
++    MEDLOADER_EXPORT bool isName(const std::string& name) const { return _name==name; }
++    MEDLOADER_EXPORT int getDimension() const { return _dim; }
++    MEDLOADER_EXPORT int getNumberOfGaussPoints() const { return _nb_gauss_pt; }
++    MEDLOADER_EXPORT int getNumberOfPointsInCells() const { return _nb_node_per_cell; }
++    MEDLOADER_EXPORT const std::vector<double>& getRefCoords() const { return _ref_coo; }
++    MEDLOADER_EXPORT const std::vector<double>& getGaussCoords() const { return _gs_coo; }
++    MEDLOADER_EXPORT const std::vector<double>& getGaussWeights() const { return _w; }
++    MEDLOADER_EXPORT INTERP_KERNEL::NormalizedCellType getGeoType() const { return _gt->getGeoType(); }
++    MEDLOADER_EXPORT bool isEqual(const MEDFileFieldLoc& other, double eps) const;
++  private:
++    MEDFileFieldLoc(const MEDFileFieldLoc& other);
++    MEDFileFieldLoc(med_idt fid, const std::string& locName);
++    MEDFileFieldLoc(med_idt fid, int id, const MEDFileEntities *entities);
++    MEDFileFieldLoc(const std::string& locName, INTERP_KERNEL::NormalizedCellType geoType, const std::vector<double>& refCoo, const std::vector<double>& gsCoo, const std::vector<double>& w);
++  private:
++    int _dim;
++    int _nb_gauss_pt;
++    INTERP_KERNEL::AutoCppPtr<MEDFileGTKeeper> _gt;
++    int _nb_node_per_cell;
++    std::string _name;
++    std::vector<double> _ref_coo;
++    std::vector<double> _gs_coo;
++    std::vector<double> _w;
++  };
++
++  /// @cond INTERNAL
++  class MEDFileFieldPerMeshPerTypeCommon;
++  class MEDFileFieldPerMeshPerType;
++  class MEDCouplingFieldTemplate;
++  class MEDFileFieldNameScope;
++  class MEDFileFieldGlobsReal;
++  class MEDCouplingMesh;
++  
++  class MEDFileFieldPerMeshPerTypePerDisc : public RefCountObject, public MEDFileWritable
++  {
++  public:
++    static MEDFileFieldPerMeshPerTypePerDisc *NewOnRead(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int profileIt, const PartDefinition *pd);
++    static MEDFileFieldPerMeshPerTypePerDisc *New(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int locId);
++    static MEDFileFieldPerMeshPerTypePerDisc *New(const MEDFileFieldPerMeshPerTypePerDisc& other);
++    std::size_t getHeapMemorySizeWithoutChildren() const;
++    std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
++    MEDFileFieldPerMeshPerTypePerDisc *deepCopy(MEDFileFieldPerMeshPerTypeCommon *father) const;
++    void assignFieldNoProfile(int& start, int offset, int nbOfCells, const MEDCouplingFieldTemplate *field, const DataArray *arrr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
++    void assignFieldProfile(bool isPflAlone, int& start, const DataArrayInt *multiTypePfl, const DataArrayInt *idsInPfl, DataArrayInt *locIds, int nbOfEltsInWholeMesh, const MEDCouplingFieldTemplate *field, const DataArray *arrr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
++    void assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arrr, MEDFileFieldGlobsReal& glob);
++    void getCoarseData(TypeOfField& type, std::pair<int,int>& dad, std::string& pfl, std::string& loc) const;
++    void writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const;
++    const MEDFileFieldPerMeshPerTypeCommon *getFather() const;
++    void loadOnlyStructureOfDataRecursively(med_idt fid, int& start, const MEDFileFieldNameScope& nasc);
++    void loadBigArray(med_idt fid, const MEDFileFieldNameScope& nasc);
++    void setNewStart(int newValueOfStart);
++    int getIteration() const;
++    int getOrder() const;
++    double getTime() const;
++    std::string getMeshName() const;
++    TypeOfField getType() const;
++    void simpleRepr(int bkOffset, std::ostream& oss, int id) const;
++    void fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const;
++    void setType(TypeOfField newType);
++    INTERP_KERNEL::NormalizedCellType getGeoType() const;
++    int getNumberOfComponents() const;
++    int getNumberOfTuples() const;
++    int getStart() const { return _start; }
++    int getEnd() const { return _end; }
++    void setEnd(int endd) { _end=endd; }
++    int getNumberOfVals() const { return _nval; }
++    void incrementNbOfVals(int deltaNbVal);
++    DataArray *getOrCreateAndGetArray();
++    const DataArray *getOrCreateAndGetArray() const;
++    const std::vector<std::string>& getInfo() const;
++    std::string getProfile() const;
++    void setProfile(const std::string& newPflName);
++    std::string getLocalization() const;
++    void setLocalization(const std::string& newLocName);
++    int getLocId() const { return _loc_id; }
++    void setLocId(int newId) const { _loc_id=newId; }
++    void setFather(MEDFileFieldPerMeshPerTypeCommon *newFather) { _father=newFather; }
++    void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    void getFieldAtLevel(TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs,
++                         std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const;
++    void fillValues(int discId, int& startEntryId, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++    int fillEltIdsFromCode(int offset, const std::vector<int>& codeOfMesh, const MEDFileFieldGlobsReal& glob, int *ptToFill) const;
++    int fillTupleIds(int *ptToFill) const;
++    static int ConvertType(TypeOfField type, int locId);
++    static std::vector< std::vector< const MEDFileFieldPerMeshPerTypePerDisc *> > SplitPerDiscretization(const std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>& entries);
++    static bool RenumberChunks(int offset, const std::vector< const MEDFileFieldPerMeshPerTypePerDisc *>& entriesOnSameDisc,
++                               const DataArrayInt *explicitIdsInMesh, const std::vector<int>& newCode,
++                               MEDFileFieldGlobsReal& glob, DataArrayDouble *arr, std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> >& result);
++    static MEDFileFieldPerMeshPerTypePerDisc *NewObjectOnSameDiscThanPool(TypeOfField typeF, INTERP_KERNEL::NormalizedCellType geoType, DataArrayInt *idsOfMeshElt,
++                                                                          bool isPfl, int nbi, int offset, std::list< const MEDFileFieldPerMeshPerTypePerDisc *>& entriesOnSameDisc,
++                                                                          MEDFileFieldGlobsReal& glob, bool &notInExisting);
++    static MCAuto<MEDFileFieldPerMeshPerTypePerDisc> Aggregate(int &start, const std::vector<std::pair<int,const MEDFileFieldPerMeshPerTypePerDisc *> >& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, TypeOfField tof, MEDFileFieldPerMeshPerType *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo);
++    MEDFileFieldPerMeshPerTypePerDisc(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type):_type(type),_father(fath),_start(-1),_end(-1),_nval(-1),_loc_id(-5),_profile_it(-1) { }
++  private:
++    MEDFileFieldPerMeshPerTypePerDisc(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int profileIt, const PartDefinition *pd);
++    MEDFileFieldPerMeshPerTypePerDisc(MEDFileFieldPerMeshPerTypeCommon *fath, TypeOfField type, int profileIt, const std::string& dummy);
++    MEDFileFieldPerMeshPerTypePerDisc(const MEDFileFieldPerMeshPerTypePerDisc& other);
++    MEDFileFieldPerMeshPerTypePerDisc();
++  private:
++    void goReadZeValuesInFile(med_idt fid, const std::string& fieldName, int nbOfCompo, int iteration, int order, med_entity_type menti, med_geometry_type mgeoti, unsigned char *startFeedingPtr);
++  private:
++    TypeOfField _type;
++    MEDFileFieldPerMeshPerTypeCommon *_father;
++    int _start;
++    int _end;
++    //! _nval is different than end-start in case of ON_GAUSS_PT and ON_GAUSS_NE ! (_nval=(_end-_start)/nbi)
++    int _nval;
++    std::string _profile;
++    std::string _localization;
++    //! only on assignment -3 : ON_NODES, -2 : ON_CELLS, -1 : ON_GAUSS_NE, 0..* : ON_GAUSS_PT
++    mutable int _loc_id;
++    mutable int _profile_it;
++    MCAuto<PartDefinition> _pd;
++  public:
++    mutable int _tmp_work1;
++  };
++
++  class MEDFileFieldVisitor;
++  class MEDFileFieldPerMesh;
++  
++  class MEDFileFieldPerMeshPerTypeCommon : public RefCountObject, public MEDFileWritable
++  {
++  public:
++    std::size_t getHeapMemorySizeWithoutChildren() const;
++    std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
++    void assignFieldNoProfile(int& start, int offset, int nbOfCells, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
++    void assignFieldProfile(bool isPflAlone, int& start, const DataArrayInt *multiTypePfl, const DataArrayInt *idsInPfl, DataArrayInt *locIds, int nbOfEltsInWholeMesh, const MEDCouplingFieldTemplate *field, const DataArray *arr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
++    void assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob);
++    void assignNodeFieldProfile(int& start, const DataArrayInt *pfl, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
++    const MEDFileFieldPerMesh *getFather() const;
++    void loadOnlyStructureOfDataRecursively(med_idt fid, int &start, const MEDFileFieldNameScope& nasc);
++    void loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc);
++    void writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const;
++    bool isUniqueLevel(int& dim) const;
++    void fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const;
++    void fillFieldSplitedByType(std::vector< std::pair<int,int> >& dads, std::vector<TypeOfField>& types, std::vector<std::string>& pfls, std::vector<std::string>& locs) const;
++    int getIteration() const;
++    int getOrder() const;
++    double getTime() const;
++    std::string getMeshName() const;
++    void getSizes(int& globalSz, int& nbOfEntries) const;
++    int getNumberOfComponents() const;
++    bool presenceOfMultiDiscPerGeoType() const;
++    void pushDiscretization(MEDFileFieldPerMeshPerTypePerDisc *disc);
++    DataArray *getOrCreateAndGetArray();
++    const DataArray *getOrCreateAndGetArray() const;
++    const std::vector<std::string>& getInfo() const;
++    std::vector<std::string> getPflsReallyUsed() const;
++    std::vector<std::string> getLocsReallyUsed() const;
++    std::vector<std::string> getPflsReallyUsedMulti() const;
++    std::vector<std::string> getLocsReallyUsedMulti() const;
++    void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenLocId(int locId);
++    const MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenLocId(int locId) const;
++    int getNumberOfLoc() const { return _field_pm_pt_pd.size(); }
++    int locIdOfLeaf(const MEDFileFieldPerMeshPerTypePerDisc *leaf) const;
++    void fillValues(int& startEntryId, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++    void setLeaves(const std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc > >& leaves);
++    bool keepOnlySpatialDiscretization(TypeOfField tof, int &globalNum, std::vector< std::pair<int,int> >& its);
++    bool keepOnlyGaussDiscretization(std::size_t idOfDisc, int &globalNum, std::vector< std::pair<int,int> >& its);
++    static med_entity_type ConvertIntoMEDFileType(TypeOfField ikType, INTERP_KERNEL::NormalizedCellType ikGeoType, med_geometry_type& medfGeoType);
++    MEDFileFieldPerMeshPerTypeCommon(MEDFileFieldPerMesh *father):_father(father) { }
++    void setFather(MEDFileFieldPerMesh *father);
++    void accept(MEDFileFieldVisitor& visitor) const;
++  public:
++    virtual ~MEDFileFieldPerMeshPerTypeCommon();
++    virtual void getDimension(int& dim) const = 0;
++    virtual INTERP_KERNEL::NormalizedCellType getGeoType() const = 0;
++    virtual void entriesForMEDfile(TypeOfField mct, med_geometry_type& gt, med_entity_type& ent) const = 0;
++    virtual void simpleRepr(int bkOffset, std::ostream& oss, int id) const = 0;
++    virtual std::string getGeoTypeRepr() const = 0;
++    virtual MEDFileFieldPerMeshPerTypeCommon *deepCopy(MEDFileFieldPerMesh *father) const = 0;
++    virtual void getFieldAtLevel(int meshDim, TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const = 0;
++  protected:
++    void deepCopyElements();
++    std::vector<int> addNewEntryIfNecessary(const MEDCouplingFieldTemplate *field, int offset, int nbOfCells);
++    std::vector<int> addNewEntryIfNecessaryGauss(const MEDCouplingFieldTemplate *field, int offset, int nbOfCells);
++    std::vector<int> addNewEntryIfNecessary(const MEDCouplingFieldTemplate *field, const DataArrayInt *subCells);
++    std::vector<int> addNewEntryIfNecessaryGauss(const MEDCouplingFieldTemplate *field, const DataArrayInt *subCells);
++  private:
++    MEDFileFieldPerMesh *_father;
++  protected:
++    std::vector< MCAuto<MEDFileFieldPerMeshPerTypePerDisc> > _field_pm_pt_pd;
++  };
++
++  class MEDFileFieldPerMeshPerType : public MEDFileFieldPerMeshPerTypeCommon
++  {
++  public:
++    static MEDFileFieldPerMeshPerType *New(MEDFileFieldPerMesh *fath, INTERP_KERNEL::NormalizedCellType geoType);
++    static MEDFileFieldPerMeshPerType *NewOnRead(med_idt fid, MEDFileFieldPerMesh *fath, TypeOfField type, INTERP_KERNEL::NormalizedCellType geoType, const MEDFileFieldNameScope& nasc, const PartDefinition *pd);
++    static MCAuto<MEDFileFieldPerMeshPerType> Aggregate(int &start, const std::vector< std::pair<int,const MEDFileFieldPerMeshPerType *> >& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, INTERP_KERNEL::NormalizedCellType gt, MEDFileFieldPerMesh *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo);
++  public:// overload of abstract methods
++    void getDimension(int& dim) const;
++    INTERP_KERNEL::NormalizedCellType getGeoType() const;
++    void entriesForMEDfile(TypeOfField mct, med_geometry_type& gt, med_entity_type& ent) const;
++    void simpleRepr(int bkOffset, std::ostream& oss, int id) const;
++    std::string getGeoTypeRepr() const;
++    MEDFileFieldPerMeshPerType *deepCopy(MEDFileFieldPerMesh *father) const;
++    void getFieldAtLevel(int meshDim, TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const;
++  private:
++    MEDFileFieldPerMeshPerType(med_idt fid, MEDFileFieldPerMesh *fath, TypeOfField type, INTERP_KERNEL::NormalizedCellType geoType, const MEDFileFieldNameScope& nasc, const PartDefinition *pd);
++    MEDFileFieldPerMeshPerType(MEDFileFieldPerMesh *father, INTERP_KERNEL::NormalizedCellType gt);
++  private:
++    INTERP_KERNEL::NormalizedCellType _geo_type;
++  };
++
++  class MEDFileFieldPerMeshPerTypeDyn : public MEDFileFieldPerMeshPerTypeCommon
++  {
++  public:
++    static MEDFileFieldPerMeshPerTypeDyn *NewOnRead(med_idt fid, MEDFileFieldPerMesh *fath, const MEDFileEntities *entities, int idGT, const MEDFileFieldNameScope& nasc);
++    int getDynGT() const;
++    std::string getModelName() const;
++  public:
++    void getDimension(int& dim) const;
++    INTERP_KERNEL::NormalizedCellType getGeoType() const;
++    void entriesForMEDfile(TypeOfField mct, med_geometry_type& gt, med_entity_type& ent) const;
++    void simpleRepr(int bkOffset, std::ostream& oss, int id) const;
++    std::string getGeoTypeRepr() const;
++    MEDFileFieldPerMeshPerTypeDyn *deepCopy(MEDFileFieldPerMesh *father) const;
++    void getFieldAtLevel(int meshDim, TypeOfField type, const MEDFileFieldGlobsReal *glob, std::vector< std::pair<int,int> >& dads, std::vector<const DataArrayInt *>& pfls, std::vector<int>& locs, std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes) const;
++  private:
++    MEDFileFieldPerMeshPerTypeDyn(med_idt fid, MEDFileFieldPerMesh *fath, const MEDFileStructureElement *se, const MEDFileFieldNameScope& nasc);
++  private:
++    MCConstAuto<MEDFileStructureElement> _se;
++  };
++  
++  class MEDFileMesh;
++  class MEDFileAnyTypeField1TSWithoutSDA;
++  class MEDFileField1TSWithoutSDA;
++  
++  class MEDFileFieldPerMesh : public RefCountObject, public MEDFileWritable
++  {
++  public:
++    static MEDFileFieldPerMesh *New(MEDFileAnyTypeField1TSWithoutSDA *fath, const MEDCouplingMesh *mesh);
++    static MEDFileFieldPerMesh *NewOnRead(med_idt fid, MEDFileAnyTypeField1TSWithoutSDA *fath, int meshCsit, int meshIteration, int meshOrder, const MEDFileFieldNameScope& nasc, const MEDFileMesh *mm, const MEDFileEntities *entities);
++    std::size_t getHeapMemorySizeWithoutChildren() const;
++    std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
++    MEDFileFieldPerMesh *deepCopy(MEDFileAnyTypeField1TSWithoutSDA *father) const;
++    void simpleRepr(int bkOffset,std::ostream& oss, int id) const;
++    void copyTinyInfoFrom(const MEDCouplingMesh *mesh);
++    void assignFieldProfile(int& start, const DataArrayInt *multiTypePfl, const std::vector<int>& code, const std::vector<int>& code2, const std::vector<DataArrayInt *>& idsInPflPerType, const std::vector<DataArrayInt *>& idsPerType, const MEDCouplingFieldTemplate *field, const DataArray *arr, const MEDCouplingMesh *mesh, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
++    void assignFieldNoProfileNoRenum(int& start, const std::vector<int>& code, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
++    void assignNodeFieldNoProfile(int& start, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob);
++    void assignNodeFieldProfile(int& start, const DataArrayInt *pfl, const MEDCouplingFieldTemplate *field, const DataArray *arr, MEDFileFieldGlobsReal& glob, const MEDFileFieldNameScope& nasc);
++    void loadOnlyStructureOfDataRecursively(med_idt fid, int &start, const MEDFileFieldNameScope& nasc);
++    void loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc);
++    void writeLL(med_idt fid, const MEDFileFieldNameScope& nasc) const;
++    void fillTypesOfFieldAvailable(std::set<TypeOfField>& types) const;
++    std::vector< std::vector< std::pair<int,int> > > getFieldSplitedByType(std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
++    void accept(MEDFileFieldVisitor& visitor) const;
++    void getDimension(int& dim) const;
++    bool isUniqueLevel(int& dim) const;
++    double getTime() const;
++    int getIteration() const;
++    int getOrder() const;
++    int getMeshIteration() const { return _mesh_iteration; }
++    int getMeshOrder() const { return _mesh_order; }
++    std::string getMeshName() const;
++    void setMeshName(const std::string& meshName);
++    int getNumberOfComponents() const;
++    bool presenceOfMultiDiscPerGeoType() const;
++    bool presenceOfStructureElements() const;
++    bool onlyStructureElements() const;
++    void killStructureElements();
++    void keepOnlyStructureElements();
++    void keepOnlyOnSE(const std::string& seName);
++    void getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const;
++    DataArray *getOrCreateAndGetArray();
++    const DataArray *getOrCreateAndGetArray() const;
++    const std::vector<std::string>& getInfo() const;
++    std::vector<std::string> getPflsReallyUsed() const;
++    std::vector<std::string> getLocsReallyUsed() const;
++    std::vector<std::string> getPflsReallyUsedMulti() const;
++    std::vector<std::string> getLocsReallyUsedMulti() const;
++    void convertMedBallIntoClassic();
++    bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
++    bool renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N, MEDFileFieldGlobsReal& glob);
++    void keepOnlySpatialDiscretization(TypeOfField tof, int &globalNum, std::vector< std::pair<int,int> >& its);
++    void keepOnlyGaussDiscretization(std::size_t idOfDisc, int &globalNum, std::vector< std::pair<int,int> >& its);
++    void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    MEDCouplingFieldDouble *getFieldOnMeshAtLevel(TypeOfField type, const MEDFileFieldGlobsReal *glob, const MEDCouplingMesh *mesh, bool& isPfl, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
++    DataArray *getFieldOnMeshAtLevelWithPfl(TypeOfField type, const MEDCouplingMesh *mesh, DataArrayInt *&pfl, const MEDFileFieldGlobsReal *glob, const MEDFileFieldNameScope& nasc) const;
++    void getUndergroundDataArrayExt(std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++    MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenTypeAndLocId(INTERP_KERNEL::NormalizedCellType typ, int locId);
++    const MEDFileFieldPerMeshPerTypePerDisc *getLeafGivenTypeAndLocId(INTERP_KERNEL::NormalizedCellType typ, int locId) const;
++    static MCAuto<MEDFileFieldPerMesh> Aggregate(int &start, const std::vector<const MEDFileFieldPerMesh *>& pms, const std::vector< std::vector< std::pair<int,int> > >& dts, MEDFileAnyTypeField1TSWithoutSDA *father, std::vector<std::pair< int, std::pair<int,int> > >& extractInfo);
++  private:
++    int addNewEntryIfNecessary(INTERP_KERNEL::NormalizedCellType type);
++    MEDCouplingFieldDouble *finishField(TypeOfField type, const MEDFileFieldGlobsReal *glob,
++                                        const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs, const MEDCouplingMesh *mesh, bool& isPfl, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
++    MEDCouplingFieldDouble *finishField2(TypeOfField type, const MEDFileFieldGlobsReal *glob,
++                                         const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs,
++                                         const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes,
++                                         const MEDCouplingMesh *mesh, const DataArrayInt *da, bool& isPfl, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
++    MEDCouplingFieldDouble *finishFieldNode2(const MEDFileFieldGlobsReal *glob,
++                                             const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs,
++                                             const MEDCouplingMesh *mesh, const DataArrayInt *da, bool& isPfl, MCAuto<DataArray> &arrOut, const MEDFileFieldNameScope& nasc) const;
++    DataArray *finishField4(const std::vector< std::pair<int,int> >& dads, const DataArrayInt *pflIn, int nbOfElems, DataArrayInt *&pflOut) const;
++    void assignNewLeaves(const std::vector< MCAuto< MEDFileFieldPerMeshPerTypePerDisc > >& leaves);
++    static void SortArraysPerType(const MEDFileFieldGlobsReal *glob, TypeOfField type, 
++                                  const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes, const std::vector< std::pair<int,int> >& dads, const std::vector<const DataArrayInt *>& pfls, const std::vector<int>& locs,
++                                  std::vector<int>& code, std::vector<DataArrayInt *>& notNullPfls);
++    static int ComputeNbOfElems(const MEDFileFieldGlobsReal *glob, TypeOfField type, const std::vector<INTERP_KERNEL::NormalizedCellType>& geoTypes, const std::vector< std::pair<int,int> >& dads, const std::vector<int>& locs);
++    MEDFileFieldPerMesh(med_idt fid, MEDFileAnyTypeField1TSWithoutSDA *fath, int meshCsit, int meshIteration, int meshOrder, const MEDFileFieldNameScope& nasc, const MEDFileMesh *mm, const MEDFileEntities *entities);
++    MEDFileFieldPerMesh(MEDFileAnyTypeField1TSWithoutSDA *fath, const MEDCouplingMesh *mesh);
++    MEDFileFieldPerMesh(MEDFileAnyTypeField1TSWithoutSDA *fath, const std::string& meshName, int meshIt, int meshOrd):_father(fath),_mesh_iteration(meshIt),_mesh_order(meshOrd) { }
++  private:
++    int _mesh_iteration;
++    int _mesh_order;
++    MEDFileAnyTypeField1TSWithoutSDA *_father;
++    std::vector< MCAuto< MEDFileFieldPerMeshPerTypeCommon > > _field_pm_pt;
++  };
++}
++
++#endif
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileFieldMultiTS.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileFieldMultiTS.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileFieldMultiTS.cxx      1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileFieldMultiTS.cxx      2018-04-19 17:25:17.727797159 +0200
+@@ -0,0 +1,2137 @@
++// Copyright (C) 2017  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++#include "MEDFileFieldMultiTS.hxx"
++#include "MEDFileFieldVisitor.hxx"
++#include "MEDFileSafeCaller.txx"
++#include "MEDLoaderBase.hxx"
++#include "MEDFileField.txx"
++
++#include "MEDCouplingFieldDouble.hxx"
++#include "MEDCouplingFieldTemplate.hxx"
++
++#include <sstream>
++
++using namespace MEDCoupling;
++
++template class MEDCoupling::MEDFileTemplateFieldMultiTSWithoutSDA<int>;
++template class MEDCoupling::MEDFileTemplateFieldMultiTSWithoutSDA<float>;
++template class MEDCoupling::MEDFileTemplateFieldMultiTSWithoutSDA<double>;
++template class MEDCoupling::MEDFileNDTemplateFieldMultiTSWithoutSDA<int>;
++template class MEDCoupling::MEDFileNDTemplateFieldMultiTSWithoutSDA<float>;
++template class MEDCoupling::MEDFileTemplateFieldMultiTS<int>;
++template class MEDCoupling::MEDFileTemplateFieldMultiTS<float>;
++template class MEDCoupling::MEDFileTemplateFieldMultiTS<double>;
++template class MEDCoupling::MEDFileNDTemplateFieldMultiTS<int>;
++template class MEDCoupling::MEDFileNDTemplateFieldMultiTS<float>;
++
++//= MEDFileAnyTypeFieldMultiTSWithoutSDA
++
++MEDFileAnyTypeFieldMultiTSWithoutSDA::MEDFileAnyTypeFieldMultiTSWithoutSDA()
++{
++}
++
++MEDFileAnyTypeFieldMultiTSWithoutSDA::MEDFileAnyTypeFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileFieldNameScope(fieldName,meshName)
++{
++}
++
++/*!
++ * \param [in] fieldId field id in C mode
++ */
++MEDFileAnyTypeFieldMultiTSWithoutSDA::MEDFileAnyTypeFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++{
++  med_field_type typcha;
++  std::string dtunitOut,meshName;
++  int nbOfStep(MEDFileAnyTypeField1TS::LocateField2(fid,fieldId,false,_name,typcha,_infos,dtunitOut,meshName));
++  setMeshName(meshName);
++  setDtUnit(dtunitOut.c_str());
++  loadStructureOrStructureAndBigArraysRecursively(fid,nbOfStep,typcha,loadAll,ms,entities);
++}
++
++MEDFileAnyTypeFieldMultiTSWithoutSDA::MEDFileAnyTypeFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++try:MEDFileFieldNameScope(fieldName,meshName),_infos(infos)
++{
++  setDtUnit(dtunit.c_str());
++  loadStructureOrStructureAndBigArraysRecursively(fid,nbOfStep,fieldTyp,loadAll,ms,entities);
++}
++catch(INTERP_KERNEL::Exception& e)
++{
++    throw e;
++}
++
++std::size_t MEDFileAnyTypeFieldMultiTSWithoutSDA::getHeapMemorySizeWithoutChildren() const
++{
++  std::size_t ret(_mesh_name.capacity()+_name.capacity()+_infos.capacity()*sizeof(std::string)+_time_steps.capacity()*sizeof(MCAuto<MEDFileField1TSWithoutSDA>));
++  for(std::vector<std::string>::const_iterator it=_infos.begin();it!=_infos.end();it++)
++    ret+=(*it).capacity();
++  return ret;
++}
++
++std::vector<const BigMemoryObject *> MEDFileAnyTypeFieldMultiTSWithoutSDA::getDirectChildrenWithNull() const
++{
++  std::vector<const BigMemoryObject *> ret;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    ret.push_back((const MEDFileAnyTypeField1TSWithoutSDA *)*it);
++  return ret;
++}
++
++/*!
++ * If one of the id in [ \a startIds , \a endIds ) points to a null element, there is not throw. Simply, this empty element is added as if it were not
++ * NULL.
++ */
++MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::buildFromTimeStepIds(const int *startIds, const int *endIds) const
++{
++  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> ret=createNew();
++  ret->setInfo(_infos);
++  int sz=(int)_time_steps.size();
++  for(const int *id=startIds;id!=endIds;id++)
++    {
++      if(*id>=0 && *id<sz)
++        {
++          const MEDFileAnyTypeField1TSWithoutSDA *tse=_time_steps[*id];
++          MCAuto<MEDFileAnyTypeField1TSWithoutSDA> tse2;
++          if(tse)
++            {
++              tse->incrRef();
++              tse2=(const_cast<MEDFileAnyTypeField1TSWithoutSDA *>(tse));
++            }
++          ret->pushBackTimeStep(tse2);
++        }
++      else
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::buildFromTimeStepIds : At pos #" << std::distance(startIds,id) << " value is " << *id;
++          oss << " ! Should be in [0," << sz << ") !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++    }
++  if(ret->getNumberOfTS()>0)
++    ret->synchronizeNameScope();
++  ret->copyNameScope(*this);
++  return ret.retn();
++}
++
++/*!
++ * If one of the id in the input range points to a null element, there is not throw. Simply, this empty element is added as if it were not
++ * NULL.
++ */
++MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::buildFromTimeStepIds2(int bg, int end, int step) const
++{
++  static const char msg[]="MEDFileAnyTypeFieldMultiTSWithoutSDA::buildFromTimeStepIds2";
++  int nbOfEntriesToKeep=DataArrayInt::GetNumberOfItemGivenBESRelative(bg,end,step,msg);
++  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> ret=createNew();
++  ret->setInfo(_infos);
++  int sz=(int)_time_steps.size();
++  int j=bg;
++  for(int i=0;i<nbOfEntriesToKeep;i++,j+=step)
++    {
++      if(j>=0 && j<sz)
++        {
++          const MEDFileAnyTypeField1TSWithoutSDA *tse=_time_steps[j];
++          MCAuto<MEDFileAnyTypeField1TSWithoutSDA> tse2;
++          if(tse)
++            {
++              tse->incrRef();
++              tse2=(const_cast<MEDFileAnyTypeField1TSWithoutSDA *>(tse));
++            }
++          ret->pushBackTimeStep(tse2);
++        }
++      else
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::buildFromTimeStepIds : At pos #" << i << " value is " << j;
++          oss << " ! Should be in [0," << sz << ") !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++    }
++  if(ret->getNumberOfTS()>0)
++    ret->synchronizeNameScope();
++  ret->copyNameScope(*this);
++  return ret.retn();
++}
++
++MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::partOfThisLyingOnSpecifiedTimeSteps(const std::vector< std::pair<int,int> >& timeSteps) const
++{
++  int id=0;
++  MCAuto<DataArrayInt> ids=DataArrayInt::New(); ids->alloc(0,1);
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,id++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *cur(*it);
++      if(!cur)
++        continue;
++      std::pair<int,int> p(cur->getIteration(),cur->getOrder());
++      if(std::find(timeSteps.begin(),timeSteps.end(),p)!=timeSteps.end())
++        ids->pushBackSilent(id);
++    }
++  return buildFromTimeStepIds(ids->begin(),ids->end());
++}
++
++MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::partOfThisNotLyingOnSpecifiedTimeSteps(const std::vector< std::pair<int,int> >& timeSteps) const
++{
++  int id=0;
++  MCAuto<DataArrayInt> ids=DataArrayInt::New(); ids->alloc(0,1);
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,id++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *cur(*it);
++      if(!cur)
++        continue;
++      std::pair<int,int> p(cur->getIteration(),cur->getOrder());
++      if(std::find(timeSteps.begin(),timeSteps.end(),p)==timeSteps.end())
++        ids->pushBackSilent(id);
++    }
++  return buildFromTimeStepIds(ids->begin(),ids->end());
++}
++
++bool MEDFileAnyTypeFieldMultiTSWithoutSDA::presenceOfStructureElements() const
++{
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    if((*it).isNotNull())
++      if((*it)->presenceOfStructureElements())
++        return true;
++  return false;
++}
++
++bool MEDFileAnyTypeFieldMultiTSWithoutSDA::onlyStructureElements() const
++{
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    if((*it).isNotNull())
++      if(!(*it)->onlyStructureElements())
++        return false;
++  return true;
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::killStructureElements()
++{
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    if((*it).isNotNull())
++      {
++        if((*it)->presenceOfStructureElements())
++          {
++            if(!(*it)->onlyStructureElements())
++              {
++                (*it)->killStructureElements();
++                ret.push_back(*it);
++              }
++          }
++        else
++          {
++            ret.push_back(*it);
++          }
++      }
++  _time_steps=ret;
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::keepOnlyStructureElements()
++{
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    if((*it).isNotNull())
++      {
++        if((*it)->presenceOfStructureElements())
++          {
++            if(!(*it)->onlyStructureElements())
++              (*it)->keepOnlyStructureElements();
++            ret.push_back(*it);
++          }
++      }
++  _time_steps=ret;
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::keepOnlyOnSE(const std::string& seName)
++{
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    if((*it).isNotNull())
++      (*it)->keepOnlyOnSE(seName);
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const
++{
++  std::vector< std::pair<std::string,std::string> > ps2;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    if((*it).isNotNull())
++      {
++        (*it)->getMeshSENames(ps2);
++        break;
++      }
++  if(ps2.empty())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::getMeshSENames : this appears to not contain SE only !");
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    if((*it).isNotNull())
++      {
++        std::vector< std::pair<std::string,std::string> > ps3;
++        (*it)->getMeshSENames(ps3);
++        if(ps2!=ps3)
++          throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::getMeshSENames : For the moment only homogeneous SE def through time managed !");
++      }
++  for(std::vector< std::pair<std::string,std::string> >::const_iterator it=ps2.begin();it!=ps2.end();it++)
++    {
++      std::vector< std::pair<std::string,std::string> >::iterator it2(std::find(ps.begin(),ps.end(),*it));
++      if(it2==ps.end())
++        ps.push_back(*it);
++    }
++}
++
++bool MEDFileAnyTypeFieldMultiTSWithoutSDA::presenceOfMultiDiscPerGeoType() const
++{
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *cur(*it);
++      if(!cur)
++        continue;
++      if(cur->presenceOfMultiDiscPerGeoType())
++        return true;
++    }
++  return false;
++}
++
++const std::vector<std::string>& MEDFileAnyTypeFieldMultiTSWithoutSDA::getInfo() const
++{
++  return _infos;
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::setInfo(const std::vector<std::string>& info)
++{
++  _infos=info;
++}
++
++int MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepPos(int iteration, int order) const
++{
++  int ret=0;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA>  >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,ret++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *pt(*it);
++      if(pt->isDealingTS(iteration,order))
++        return ret;
++    }
++  std::ostringstream oss; oss << "MEDFileFieldMultiTS::getTimeStepPos : Muli timestep field on time (" << iteration << "," << order << ") does not exist ! Available (iteration,order) are :\n";
++  std::vector< std::pair<int,int> > vp=getIterations();
++  for(std::vector< std::pair<int,int> >::const_iterator it2=vp.begin();it2!=vp.end();it2++)
++    oss << "(" << (*it2).first << "," << (*it2).second << ") ";
++  throw INTERP_KERNEL::Exception(oss.str());
++}
++
++const MEDFileAnyTypeField1TSWithoutSDA& MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepEntry(int iteration, int order) const
++{
++  return *_time_steps[getTimeStepPos(iteration,order)];
++}
++
++MEDFileAnyTypeField1TSWithoutSDA& MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepEntry(int iteration, int order)
++{
++  return *_time_steps[getTimeStepPos(iteration,order)];
++}
++
++bool MEDFileAnyTypeFieldMultiTSWithoutSDA::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab)
++{
++  bool ret(false);
++  for(std::vector< std::pair<std::string,std::string> >::const_iterator it=modifTab.begin();it!=modifTab.end();it++)
++    {
++      if((*it).first==getMeshName())
++        {
++          setMeshName((*it).second);
++          ret=true;
++        }
++    }
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      MEDFileAnyTypeField1TSWithoutSDA *cur(*it);
++      if(cur)
++        ret=cur->changeMeshNames(modifTab) || ret;
++    }
++  return ret;
++}
++
++/*!
++ * See doc at MEDFileField1TSWithoutSDA::getUndergroundDataArray
++ */
++DataArray *MEDFileAnyTypeFieldMultiTSWithoutSDA::getUndergroundDataArray(int iteration, int order) const
++{
++  return getTimeStepEntry(iteration,order).getUndergroundDataArray();
++}
++
++/*!
++ * See doc at MEDFileField1TSWithoutSDA::getUndergroundDataArrayExt
++ */
++DataArray *MEDFileAnyTypeFieldMultiTSWithoutSDA::getUndergroundDataArrayExt(int iteration, int order, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const
++{
++  return getTimeStepEntry(iteration,order).getUndergroundDataArrayExt(entries);
++}
++
++bool MEDFileAnyTypeFieldMultiTSWithoutSDA::renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N,
++                                                                       MEDFileFieldGlobsReal& glob)
++{
++  bool ret=false;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      MEDFileAnyTypeField1TSWithoutSDA *f1ts(*it);
++      if(f1ts)
++        ret=f1ts->renumberEntitiesLyingOnMesh(meshName,oldCode,newCode,renumO2N,glob) || ret;
++    }
++  return ret;
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::accept(MEDFileFieldVisitor& visitor) const
++{
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    if((*it).isNotNull())
++      {
++        visitor.newTimeStepEntry(*it);
++        (*it)->accept(visitor);
++        visitor.endTimeStepEntry(*it);
++      }
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::simpleRepr(int bkOffset, std::ostream& oss, int fmtsId) const
++{
++  std::string startLine(bkOffset,' ');
++  oss << startLine << "Field multi time steps [Type=" << getTypeStr() << "]";
++  if(fmtsId>=0)
++    oss << " (" << fmtsId << ")";
++  oss << " has the following name: \"" << _name << "\"." << std::endl;
++  oss << startLine << "Field multi time steps has " << _infos.size() << " components with the following infos :" << std::endl;
++  for(std::vector<std::string>::const_iterator it=_infos.begin();it!=_infos.end();it++)
++    {
++      oss << startLine << "  -  \"" << *it << "\"" << std::endl;
++    }
++  int i=0;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,i++)
++    {
++      std::string chapter(17,'0'+i);
++      oss << startLine << chapter << std::endl;
++      const MEDFileAnyTypeField1TSWithoutSDA *cur=(*it);
++      if(cur)
++        cur->simpleRepr(bkOffset+2,oss,i);
++      else
++        oss << startLine << "  Field on one time step #" << i << " is not defined !" << std::endl;
++      oss << startLine << chapter << std::endl;
++    }
++}
++
++std::vector< std::pair<int,int> > MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeSteps(std::vector<double>& ret1) const
++{
++  std::size_t sz=_time_steps.size();
++  std::vector< std::pair<int,int> > ret(sz);
++  ret1.resize(sz);
++  for(std::size_t i=0;i<sz;i++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *f1ts=_time_steps[i];
++      if(f1ts)
++        {
++          ret1[i]=f1ts->getTime(ret[i].first,ret[i].second);
++        }
++      else
++        {
++          std::ostringstream oss; oss << "MEDFileFieldMultiTSWithoutSDA::getTimeSteps : At rank #" << i << " time step is not defined. Invoke eraseEmptyTS method !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++    }
++  return ret;
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::pushBackTimeStep(MCAuto<MEDFileAnyTypeField1TSWithoutSDA>& tse)
++{
++  MEDFileAnyTypeField1TSWithoutSDA *tse2(tse);
++  if(!tse2)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::pushBackTimeStep : input content object is null !");
++  checkCoherencyOfType(tse2);
++  if(_time_steps.empty())
++    {
++      setName(tse2->getName());
++      setMeshName(tse2->getMeshName());
++      setInfo(tse2->getInfo());
++    }
++  checkThatComponentsMatch(tse2->getInfo());
++  if(getDtUnit().empty() && !tse->getDtUnit().empty())
++    setDtUnit(tse->getDtUnit());
++  _time_steps.push_back(tse);
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::synchronizeNameScope()
++{
++  std::size_t nbOfCompo=_infos.size();
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      MEDFileAnyTypeField1TSWithoutSDA *cur=(*it);
++      if(cur)
++        {
++          if((cur->getInfo()).size()!=nbOfCompo)
++            {
++              std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::synchronizeNameScope : Mismatch in the number of components of parts ! Should be " << nbOfCompo;
++              oss << " ! but the field at iteration=" << cur->getIteration() << " order=" << cur->getOrder() << " has " << (cur->getInfo()).size() << " components !";
++              throw INTERP_KERNEL::Exception(oss.str());
++            }
++          cur->copyNameScope(*this);
++        }
++    }
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::loadStructureOrStructureAndBigArraysRecursively(med_idt fid, int nbPdt, med_field_type fieldTyp, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++{
++  _time_steps.resize(nbPdt);
++  for(int i=0;i<nbPdt;i++)
++    {
++      std::vector< std::pair<int,int> > ts;
++      med_int numdt=0,numo=0;
++      med_float dt=0.0;
++      MEDFILESAFECALLERRD0(MEDfieldComputingStepInfo,(fid,_name.c_str(),i+1,&numdt,&numo,&dt));
++      switch(fieldTyp)
++      {
++        case MED_FLOAT64:
++          {
++            _time_steps[i]=MEDFileField1TSWithoutSDA::New(getName(),getMeshName(),i+1,numdt,numo,_infos);
++            break;
++          }
++        case MED_INT32:
++          {
++            _time_steps[i]=MEDFileIntField1TSWithoutSDA::New(getName(),getMeshName(),i+1,numdt,numo,_infos);
++            break;
++          }
++        case MED_FLOAT32:
++          {
++            _time_steps[i]=MEDFileFloatField1TSWithoutSDA::New(getName(),getMeshName(),i+1,numdt,numo,_infos);
++            break;
++          }
++        case MED_INT:
++          {
++            if(sizeof(med_int)==sizeof(int))
++              {
++                _time_steps[i]=MEDFileIntField1TSWithoutSDA::New(getName(),getMeshName(),i+1,numdt,numo,_infos);
++                break;
++              }
++          }
++        default:
++          throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::loadStructureOrStructureAndBigArraysRecursively : managed field type are : FLOAT64, INT32, FLOAT32 !");
++      }
++      if(loadAll)
++        _time_steps[i]->loadStructureAndBigArraysRecursively(fid,*this,ms,entities);
++      else
++        _time_steps[i]->loadOnlyStructureOfDataRecursively(fid,*this,ms,entities);
++      synchronizeNameScope();
++    }
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::writeLL(med_idt fid, const MEDFileWritable& opts) const
++{
++  if(_time_steps.empty())
++    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::writeLL : no time steps set !");
++  checkThatNbOfCompoOfTSMatchThis();
++  std::vector<std::string> infos(getInfo());
++  int nbComp=infos.size();
++  INTERP_KERNEL::AutoPtr<char> comp=MEDLoaderBase::buildEmptyString(nbComp*MED_SNAME_SIZE);
++  INTERP_KERNEL::AutoPtr<char> unit=MEDLoaderBase::buildEmptyString(nbComp*MED_SNAME_SIZE);
++  for(int i=0;i<nbComp;i++)
++    {
++      std::string info=infos[i];
++      std::string c,u;
++      MEDLoaderBase::splitIntoNameAndUnit(info,c,u);
++      MEDLoaderBase::safeStrCpy2(c.c_str(),MED_SNAME_SIZE,comp+i*MED_SNAME_SIZE,opts.getTooLongStrPolicy());
++      MEDLoaderBase::safeStrCpy2(u.c_str(),MED_SNAME_SIZE,unit+i*MED_SNAME_SIZE,opts.getTooLongStrPolicy());
++    }
++  if(_name.empty())
++    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::write : MED file does not accept field with empty name !");
++  MEDFILESAFECALLERWR0(MEDfieldCr,(fid,_name.c_str(),getMEDFileFieldType(),nbComp,comp,unit,getDtUnit().c_str(),getMeshName().c_str()));
++  int nbOfTS=_time_steps.size();
++  for(int i=0;i<nbOfTS;i++)
++    _time_steps[i]->writeLL(fid,opts,*this);
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc)
++{
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      MEDFileAnyTypeField1TSWithoutSDA *elt(*it);
++      if(elt)
++        elt->loadBigArraysRecursively(fid,nasc);
++    }
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::loadBigArraysRecursivelyIfNecessary(med_idt fid, const MEDFileFieldNameScope& nasc)
++{
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      MEDFileAnyTypeField1TSWithoutSDA *elt(*it);
++      if(elt)
++        elt->loadBigArraysRecursivelyIfNecessary(fid,nasc);
++    }
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::unloadArrays()
++{
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      MEDFileAnyTypeField1TSWithoutSDA *elt(*it);
++      if(elt)
++        elt->unloadArrays();
++    }
++}
++
++int MEDFileAnyTypeFieldMultiTSWithoutSDA::getNumberOfTS() const
++{
++  return _time_steps.size();
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::eraseEmptyTS()
++{
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA>  > newTS;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA>  >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *tmp=(*it);
++      if(tmp)
++        newTS.push_back(*it);
++    }
++  _time_steps=newTS;
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::eraseTimeStepIds(const int *startIds, const int *endIds)
++{
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > newTS;
++  int maxId=(int)_time_steps.size();
++  int ii=0;
++  std::set<int> idsToDel;
++  for(const int *id=startIds;id!=endIds;id++,ii++)
++    {
++      if(*id>=0 && *id<maxId)
++        {
++          idsToDel.insert(*id);
++        }
++      else
++        {
++          std::ostringstream oss; oss << "MEDFileFieldMultiTSWithoutSDA::eraseTimeStepIds : At pos #" << ii << " request for id=" << *id << " not in [0," << maxId << ") !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++    }
++  for(int iii=0;iii<maxId;iii++)
++    if(idsToDel.find(iii)==idsToDel.end())
++      newTS.push_back(_time_steps[iii]);
++  _time_steps=newTS;
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::eraseTimeStepIds2(int bg, int end, int step)
++{
++  static const char msg[]="MEDFileAnyTypeFieldMultiTSWithoutSDA::eraseTimeStepIds2";
++  int nbOfEntriesToKill=DataArrayInt::GetNumberOfItemGivenBESRelative(bg,end,step,msg);
++  if(nbOfEntriesToKill==0)
++    return ;
++  std::size_t sz=_time_steps.size();
++  std::vector<bool> b(sz,true);
++  int j=bg;
++  for(int i=0;i<nbOfEntriesToKill;i++,j+=step)
++    b[j]=false;
++  std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > newTS;
++  for(std::size_t i=0;i<sz;i++)
++    if(b[i])
++      newTS.push_back(_time_steps[i]);
++  _time_steps=newTS;
++}
++
++int MEDFileAnyTypeFieldMultiTSWithoutSDA::getPosOfTimeStep(int iteration, int order) const
++{
++  int ret=0;
++  std::ostringstream oss; oss << "MEDFileFieldMultiTSWithoutSDA::getPosOfTimeStep : No such time step (" << iteration << "," << order << ") !\nPossibilities are : "; 
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA>  >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,ret++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *tmp(*it);
++      if(tmp)
++        {
++          int it2,ord;
++          tmp->getTime(it2,ord);
++          if(it2==iteration && order==ord)
++            return ret;
++          else
++            oss << "(" << it2 << ","  << ord << "), ";
++        }
++    }
++  throw INTERP_KERNEL::Exception(oss.str());
++}
++
++int MEDFileAnyTypeFieldMultiTSWithoutSDA::getPosGivenTime(double time, double eps) const
++{
++  int ret=0;
++  std::ostringstream oss; oss << "MEDFileFieldMultiTSWithoutSDA::getPosGivenTime : No such time step " << time << "! \nPossibilities are : ";
++  oss.precision(15);
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA>  >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,ret++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *tmp(*it);
++      if(tmp)
++        {
++          int it2,ord;
++          double ti=tmp->getTime(it2,ord);
++          if(fabs(time-ti)<eps)
++            return ret;
++          else
++            oss << ti << ", ";
++        }
++    }
++  throw INTERP_KERNEL::Exception(oss.str());
++}
++
++std::vector< std::pair<int,int> > MEDFileAnyTypeFieldMultiTSWithoutSDA::getIterations() const
++{
++  int lgth=_time_steps.size();
++  std::vector< std::pair<int,int> > ret(lgth);
++  for(int i=0;i<lgth;i++)
++    _time_steps[i]->fillIteration(ret[i]);
++  return ret;
++}
++
++/*!
++ * This method has 3 inputs 'iteration' 'order' 'mname'. 'mname' can be null if the user is the general case where there is only one meshName lying on 'this'
++ * This method returns two things.
++ * - The absolute dimension of 'this' in first parameter. 
++ * - The available ext levels relative to the absolute dimension returned in first parameter. These relative levels are relative
++ *   to the first output parameter. The values in 'levs' will be returned in decreasing order.
++ *
++ * This method is designed for MEDFileFieldMultiTS instances that have a discritization ON_CELLS, ON_GAUSS_NE and ON_GAUSS.
++ * Only these 3 discretizations will be taken into account here.
++ *
++ * If 'this' is empty this method will throw an INTERP_KERNEL::Exception.
++ * If there is \b only node fields defined in 'this' -1 is returned and 'levs' output parameter will be empty. In this
++ * case the caller has to know the underlying mesh it refers to. By default it is the level 0 of the corresponding mesh.
++ *
++ * This method is useful to make the link between meshDimension of the underlying mesh in 'this' and the levels on 'this'.
++ * It is possible (even if it is not common) that the highest level in 'this' were not equal to the meshDimension of the underlying mesh in 'this'.
++ * 
++ * Let's consider the typical following case :
++ * - a mesh 'm1' has a meshDimension 3 and has the following non empty levels
++ * [0,-1,-2] for example 'm1' lies on TETRA4, HEXA8 TRI3 and SEG2
++ * - 'f1' lies on 'm1' and is defined on 3D and 1D cells for example
++ *   TETRA4 and SEG2
++ * - 'f2' lies on 'm1' too and is defined on 2D and 1D cells for example TRI3 and SEG2
++ *
++ * In this case f1->getNonEmptyLevelsExt will return (3,[0,-2]) and f2->getNonEmptyLevelsExt will return (2,[0,-1])
++ * 
++ * To retrieve the highest level of f1 it should be done, f1->getFieldAtLevel(ON_CELLS,3-3+0);//absDim-meshDim+relativeLev
++ * To retrieve the lowest level of f1 it should be done, f1->getFieldAtLevel(ON_CELLS,3-3+(-2));//absDim-meshDim+relativeLev
++ * To retrieve the highest level of f2 it should be done, f1->getFieldAtLevel(ON_CELLS,2-3+0);//absDim-meshDim+relativeLev
++ * To retrieve the lowest level of f2 it should be done, f1->getFieldAtLevel(ON_CELLS,2-3+(-1));//absDim-meshDim+relativeLev
++ */
++int MEDFileAnyTypeFieldMultiTSWithoutSDA::getNonEmptyLevels(int iteration, int order, const std::string& mname, std::vector<int>& levs) const
++{
++  return getTimeStepEntry(iteration,order).getNonEmptyLevels(mname,levs);
++}
++
++const MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2(int pos) const
++{
++  if(pos<0 || pos>=(int)_time_steps.size())
++    {
++      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2 : request for pos #" << pos << " whereas should be in [0," << _time_steps.size() << ") !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  const MEDFileAnyTypeField1TSWithoutSDA *item=_time_steps[pos];
++  if(item==0)
++    {
++      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2 : request for pos #" << pos << ", this pos id exists but the underlying Field1TS is null !";
++      oss << "\nTry to use following method eraseEmptyTS !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  return item;
++}
++
++MEDFileAnyTypeField1TSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2(int pos)
++{
++  if(pos<0 || pos>=(int)_time_steps.size())
++    {
++      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2 : request for pos #" << pos << " whereas should be in [0," << _time_steps.size() << ") !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  MEDFileAnyTypeField1TSWithoutSDA *item=_time_steps[pos];
++  if(item==0)
++    {
++      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::getTimeStepAtPos2 : request for pos #" << pos << ", this pos id exists but the underlying Field1TS is null !";
++      oss << "\nTry to use following method eraseEmptyTS !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  return item;
++}
++
++std::vector<std::string> MEDFileAnyTypeFieldMultiTSWithoutSDA::getPflsReallyUsed2() const
++{
++  std::vector<std::string> ret;
++  std::set<std::string> ret2;
++  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getPflsReallyUsed2();
++      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
++        if(ret2.find(*it2)==ret2.end())
++          {
++            ret.push_back(*it2);
++            ret2.insert(*it2);
++          }
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileAnyTypeFieldMultiTSWithoutSDA::getLocsReallyUsed2() const
++{
++  std::vector<std::string> ret;
++  std::set<std::string> ret2;
++  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getLocsReallyUsed2();
++      for(std::vector<std::string>::const_iterator it2=tmp.begin();it2!=tmp.end();it2++)
++        if(ret2.find(*it2)==ret2.end())
++          {
++            ret.push_back(*it2);
++            ret2.insert(*it2);
++          }
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileAnyTypeFieldMultiTSWithoutSDA::getPflsReallyUsedMulti2() const
++{
++  std::vector<std::string> ret;
++  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getPflsReallyUsedMulti2();
++      ret.insert(ret.end(),tmp.begin(),tmp.end());
++    }
++  return ret;
++}
++
++std::vector<std::string> MEDFileAnyTypeFieldMultiTSWithoutSDA::getLocsReallyUsedMulti2() const
++{
++  std::vector<std::string> ret;
++  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    {
++      std::vector<std::string> tmp=(*it)->getLocsReallyUsedMulti2();
++      ret.insert(ret.end(),tmp.begin(),tmp.end());
++    }
++  return ret;
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::changePflsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    (*it)->changePflsRefsNamesGen2(mapOfModif);
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::changeLocsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  for(std::vector< MCAuto< MEDFileAnyTypeField1TSWithoutSDA > >::iterator it=_time_steps.begin();it!=_time_steps.end();it++)
++    (*it)->changeLocsRefsNamesGen2(mapOfModif);
++}
++
++std::vector< std::vector<TypeOfField> > MEDFileAnyTypeFieldMultiTSWithoutSDA::getTypesOfFieldAvailable() const
++{
++  int lgth=_time_steps.size();
++  std::vector< std::vector<TypeOfField> > ret(lgth);
++  for(int i=0;i<lgth;i++)
++    _time_steps[i]->fillTypesOfFieldAvailable(ret[i]);
++  return ret;
++}
++
++/*!
++ * entry point for users that want to iterate into MEDFile DataStructure without any overhead.
++ */
++std::vector< std::vector< std::pair<int,int> > > MEDFileAnyTypeFieldMultiTSWithoutSDA::getFieldSplitedByType(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
++{
++  return getTimeStepEntry(iteration,order).getFieldSplitedByType(mname,types,typesF,pfls,locs);
++}
++
++MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTSWithoutSDA::deepCopy() const
++{
++  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> ret=shallowCpy();
++  std::size_t i=0;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,i++)
++    {
++      if((const MEDFileAnyTypeField1TSWithoutSDA *)*it)
++        ret->_time_steps[i]=(*it)->deepCopy();
++    }
++  return ret.retn();
++}
++
++std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > MEDFileAnyTypeFieldMultiTSWithoutSDA::splitComponents() const
++{
++  std::size_t sz(_infos.size()),sz2(_time_steps.size());
++  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > ret(sz);
++  std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > > ts(sz2);
++  for(std::size_t i=0;i<sz;i++)
++    {
++      ret[i]=shallowCpy();
++      ret[i]->_infos.resize(1); ret[i]->_infos[0]=_infos[i];
++    }
++  for(std::size_t i=0;i<sz2;i++)
++    {
++      std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > ret1=_time_steps[i]->splitComponents();
++      if(ret1.size()!=sz)
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::splitComponents : At rank #" << i << " number of components is " << ret1.size() << " whereas it should be for all time steps " << sz << " !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      ts[i]=ret1;
++    }
++  for(std::size_t i=0;i<sz;i++)
++    for(std::size_t j=0;j<sz2;j++)
++      ret[i]->_time_steps[j]=ts[j][i];
++  return ret;
++}
++
++/*!
++ * This method splits into discretization each time steps in \a this.
++ * ** WARNING ** the returned instances are not compulsory defined on the same time steps series !
++ */
++std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > MEDFileAnyTypeFieldMultiTSWithoutSDA::splitDiscretizations() const
++{
++  std::size_t sz(_time_steps.size());
++  std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > > items(sz);
++  for(std::size_t i=0;i<sz;i++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *timeStep(_time_steps[i]);
++      if(!timeStep)
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::splitDiscretizations : time step #" << i << " is null !"; 
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      items[i]=timeStep->splitDiscretizations();  
++    }
++  //
++  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > ret;
++  std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > > ret2;
++  std::vector< TypeOfField > types;
++  for(std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > >::const_iterator it0=items.begin();it0!=items.end();it0++)
++    for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it1=(*it0).begin();it1!=(*it0).end();it1++)
++      {
++        std::vector<TypeOfField> ts=(*it1)->getTypesOfFieldAvailable();
++        if(ts.size()!=1)
++          throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::splitDiscretizations : it appears that the splitting of MEDFileAnyTypeField1TSWithoutSDA::splitDiscretizations has returned invalid result !");
++        std::vector< TypeOfField >::iterator it2=std::find(types.begin(),types.end(),ts[0]);
++        if(it2==types.end())
++          types.push_back(ts[0]);
++      }
++  ret.resize(types.size()); ret2.resize(types.size());
++  for(std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > >::const_iterator it0=items.begin();it0!=items.end();it0++)
++    for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it1=(*it0).begin();it1!=(*it0).end();it1++)
++      {
++        TypeOfField typ=(*it1)->getTypesOfFieldAvailable()[0];
++        std::size_t pos=std::distance(types.begin(),std::find(types.begin(),types.end(),typ));
++        ret2[pos].push_back(*it1);
++      }
++  for(std::size_t i=0;i<types.size();i++)
++    {
++      MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> elt(createNew());
++      for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::iterator it1=ret2[i].begin();it1!=ret2[i].end();it1++)
++        elt->pushBackTimeStep(*it1);//also updates infos in elt
++      ret[i]=elt;
++      elt->MEDFileFieldNameScope::operator=(*this);
++    }
++  return ret;
++}
++
++/*!
++ * Contrary to splitDiscretizations method this method makes the hypothesis that the times series are **NOT** impacted by the splitting of multi discretization.
++ */
++std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > MEDFileAnyTypeFieldMultiTSWithoutSDA::splitMultiDiscrPerGeoTypes() const
++{
++  std::size_t sz(_time_steps.size());
++  std::vector< std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > > items(sz);
++  std::size_t szOut(std::numeric_limits<std::size_t>::max());
++  for(std::size_t i=0;i<sz;i++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *timeStep(_time_steps[i]);
++      if(!timeStep)
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::splitMultiDiscrPerGeoTypes : time step #" << i << " is null !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      items[i]=timeStep->splitMultiDiscrPerGeoTypes();
++      if(szOut==std::numeric_limits<std::size_t>::max())
++        szOut=items[i].size();
++      else
++        if(items[i].size()!=szOut)
++          throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::splitMultiDiscrPerGeoTypes : The splitting per discretization is expected to be same among time steps !");
++    }
++  if(szOut==std::numeric_limits<std::size_t>::max())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::splitMultiDiscrPerGeoTypes : empty field !");
++  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > ret(szOut);
++  for(std::size_t i=0;i<szOut;i++)
++    {
++      MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> elt(createNew());
++      for(std::size_t j=0;j<sz;j++)
++        elt->pushBackTimeStep(items[j][i]);
++      ret[i]=elt;
++      elt->MEDFileFieldNameScope::operator=(*this);
++    }
++  return ret;
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::copyTinyInfoFrom(const MEDCouplingFieldDouble *field, const DataArray *arr)
++{
++  setName(field->getName());
++  if(field->getMesh())
++    setMeshName(field->getMesh()->getName());
++  if(_name.empty())
++    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::copyTinyInfoFrom : unsupported fields with no name in MED file !");
++  if(!arr)
++    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::copyTinyInfoFrom : no array set !");
++  _infos=arr->getInfoOnComponents();
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::checkCoherencyOfTinyInfo(const MEDCouplingFieldDouble *field, const DataArray *arr) const
++{
++  static const char MSG[]="MEDFileFieldMultiTSWithoutSDA::checkCoherencyOfTinyInfo : invalid ";
++  if(_name!=field->getName())
++    {
++      std::ostringstream oss; oss << MSG << "name ! should be \"" << _name;
++      oss << "\" and it is set in input field to \"" << field->getName() << "\" !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  if(!arr)
++    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::checkCoherencyOfTinyInfo : no array set !");
++  checkThatComponentsMatch(arr->getInfoOnComponents());
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::checkThatComponentsMatch(const std::vector<std::string>& compos) const
++{
++  static const char MSG[]="MEDFileFieldMultiTSWithoutSDA::checkThatComponentsMatch : ";
++  if(getInfo().size()!=compos.size())
++    {
++      std::ostringstream oss; oss << MSG << "mismatch of number of components between this (" << getInfo().size() << ") and ";
++      oss << " number of components of element to append (" << compos.size() << ") !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  if(_infos!=compos)
++    {
++      std::ostringstream oss; oss << MSG << "components have same size but are different ! should be \"";
++      std::copy(_infos.begin(),_infos.end(),std::ostream_iterator<std::string>(oss,", "));
++      oss << " But compo in input fields are : ";
++      std::copy(compos.begin(),compos.end(),std::ostream_iterator<std::string>(oss,", "));
++      oss << " !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::checkThatNbOfCompoOfTSMatchThis() const
++{
++  std::size_t sz=_infos.size();
++  int j=0;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,j++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *elt(*it);
++      if(elt)
++        if(elt->getInfo().size()!=sz)
++          {
++            std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::checkThatNbOfCompoOfTSMatchThis : At pos #" << j << " the number of components is equal to ";
++            oss << elt->getInfo().size() << " whereas it is expected to be equal to " << sz << " !";
++            throw INTERP_KERNEL::Exception(oss.str());
++          }
++    }
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::appendFieldNoProfileSBT(const MEDCouplingFieldDouble *field, const DataArray *arr, MEDFileFieldGlobsReal& glob)
++{
++  if(!field)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::appendFieldNoProfileSBT : input field is NULL !");
++  if(!_time_steps.empty())
++    checkCoherencyOfTinyInfo(field,arr);
++  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> obj(createNew1TSWithoutSDAEmptyInstance());
++  {
++    MCAuto<MEDCouplingFieldTemplate> ft(MEDCouplingFieldTemplate::New(*field));
++    obj->setFieldNoProfileSBT(field->timeDiscrSafe(),ft,arr,glob,*this);
++  }
++  copyTinyInfoFrom(field,arr);
++  _time_steps.push_back(obj);
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::appendFieldProfile(const MEDCouplingFieldDouble *field, const DataArray *arr, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, MEDFileFieldGlobsReal& glob, bool smartPflKiller)
++{
++  if(!field)
++    throw INTERP_KERNEL::Exception("MEDFileIntFieldMultiTSWithoutSDA::appendFieldNoProfileSBT : input field is NULL !");
++  if(!_time_steps.empty())
++    checkCoherencyOfTinyInfo(field,arr);
++  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> obj(createNew1TSWithoutSDAEmptyInstance());
++  {
++    MCAuto<MEDCouplingFieldTemplate> ft(MEDCouplingFieldTemplate::NewWithoutCheck(*field));
++    obj->setFieldProfile(field->timeDiscrSafe(),ft,arr,mesh,meshDimRelToMax,profile,glob,*this,smartPflKiller);
++  }
++  copyTinyInfoFrom(field,arr);
++  setMeshName(obj->getMeshName());
++  _time_steps.push_back(obj);
++}
++
++void MEDFileAnyTypeFieldMultiTSWithoutSDA::setIteration(int i, MCAuto<MEDFileAnyTypeField1TSWithoutSDA> ts)
++{
++  int sz=(int)_time_steps.size();
++  if(i<0 || i>=sz)
++    {
++      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::setIteration : trying to set element at place #" << i << " should be in [0," << sz << ") !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  const MEDFileAnyTypeField1TSWithoutSDA *tsPtr(ts);
++  if(tsPtr)
++    {
++      if(tsPtr->getNumberOfComponents()!=(int)_infos.size())
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTSWithoutSDA::setIteration : trying to set element with " << tsPtr->getNumberOfComponents() << " components ! Should be " << _infos.size() <<  " !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++    }
++  _time_steps[i]=ts;
++}
++
++//= MEDFileFieldMultiTSWithoutSDA
++
++/*!
++ * entry point for users that want to iterate into MEDFile DataStructure with a reduced overhead because output arrays are extracted (created) specially
++ * for the call of this method. That's why the DataArrayDouble instance in returned vector of vector should be dealed by the caller.
++ */
++std::vector< std::vector<DataArrayDouble *> > MEDFileFieldMultiTSWithoutSDA::getFieldSplitedByType2(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
++{
++  const MEDFileAnyTypeField1TSWithoutSDA& myF1TS=getTimeStepEntry(iteration,order);
++  const MEDFileField1TSWithoutSDA *myF1TSC=dynamic_cast<const MEDFileField1TSWithoutSDA *>(&myF1TS);
++  if(!myF1TSC)
++    throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::getFieldSplitedByType2 : mismatch of type of field expecting FLOAT64 !");
++  return myF1TSC->getFieldSplitedByType2(mname,types,typesF,pfls,locs);
++}
++
++MEDFileIntFieldMultiTSWithoutSDA *MEDFileFieldMultiTSWithoutSDA::convertToInt() const
++{
++  MCAuto<MEDFileIntFieldMultiTSWithoutSDA> ret(new MEDFileIntFieldMultiTSWithoutSDA);
++  ret->MEDFileAnyTypeFieldMultiTSWithoutSDA::operator =(*this);
++  int i=0;
++  for(std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> >::const_iterator it=_time_steps.begin();it!=_time_steps.end();it++,i++)
++    {
++      const MEDFileAnyTypeField1TSWithoutSDA *eltToConv(*it);
++      if(eltToConv)
++        {
++          const MEDFileField1TSWithoutSDA *eltToConvC=dynamic_cast<const MEDFileField1TSWithoutSDA *>(eltToConv);
++          if(!eltToConvC)
++            throw INTERP_KERNEL::Exception("MEDFileFieldMultiTSWithoutSDA::convertToInt : presence of an invalid 1TS type ! Should be of type FLOAT64 !");
++          MCAuto<MEDFileAnyTypeField1TSWithoutSDA> elt=eltToConvC->convertToInt();
++          ret->setIteration(i,elt);
++        }
++    }
++  return ret.retn();
++}
++
++//= MEDFileAnyTypeFieldMultiTS
++
++MEDFileAnyTypeFieldMultiTS::MEDFileAnyTypeFieldMultiTS()
++{
++}
++
++MEDFileAnyTypeFieldMultiTS::MEDFileAnyTypeFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms)
++try:MEDFileFieldGlobsReal(fid)
++{
++  _content=BuildContentFrom(fid,loadAll,ms);
++  loadGlobals(fid);
++}
++catch(INTERP_KERNEL::Exception& e)
++{
++    throw e;
++}
++
++MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTS::BuildContentFrom(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++{
++  med_field_type typcha;
++  std::vector<std::string> infos;
++  std::string dtunit;
++  std::string meshName;
++  int i(-1);
++  MEDFileAnyTypeField1TS::LocateField(fid,fieldName,i,typcha,infos,dtunit,meshName);
++  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> ret;
++  switch(typcha)
++  {
++    case MED_FLOAT64:
++      {
++        ret=new MEDFileFieldMultiTSWithoutSDA(fid,i,loadAll,ms,entities);
++        break;
++      }
++    case MED_INT32:
++      {
++        ret=new MEDFileIntFieldMultiTSWithoutSDA(fid,i,loadAll,ms,entities);
++        break;
++      }
++    case MED_FLOAT32:
++      {
++        ret=new MEDFileFloatFieldMultiTSWithoutSDA(fid,i,loadAll,ms,entities);
++        break;
++      }
++    case MED_INT:
++      {
++        if(sizeof(med_int)==sizeof(int))
++          {
++            ret=new MEDFileIntFieldMultiTSWithoutSDA(fid,i,loadAll,ms,entities);
++            break;
++          }
++      }
++    default:
++      {
++        std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::BuildContentFrom(fid,fieldName) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but the type of field is not in [MED_FLOAT64, MED_INT32, MED_FLOAT32] !";
++        throw INTERP_KERNEL::Exception(oss.str());
++      }
++  }
++  ret->setMeshName(meshName);
++  ret->setDtUnit(dtunit.c_str());
++  return ret.retn();
++}
++
++MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTS::BuildContentFrom(med_idt fid, bool loadAll, const MEDFileMeshes *ms)
++{
++  med_field_type typcha;
++  //
++  std::vector<std::string> infos;
++  std::string dtunit,fieldName,meshName;
++  MEDFileAnyTypeField1TS::LocateField2(fid,0,true,fieldName,typcha,infos,dtunit,meshName);
++  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> ret;
++  switch(typcha)
++  {
++    case MED_FLOAT64:
++      {
++        ret=new MEDFileFieldMultiTSWithoutSDA(fid,0,loadAll,ms,0);
++        break;
++      }
++    case MED_INT32:
++      {
++        ret=new MEDFileIntFieldMultiTSWithoutSDA(fid,0,loadAll,ms,0);
++        break;
++      }
++    case MED_FLOAT32:
++      {
++        ret=new MEDFileFloatFieldMultiTSWithoutSDA(fid,0,loadAll,ms,0);
++        break;
++      }
++    case MED_INT:
++      {
++        if(sizeof(med_int)==sizeof(int))
++          {
++            ret=new MEDFileIntFieldMultiTSWithoutSDA(fid,0,loadAll,ms,0);
++            break;
++          }
++      }
++    default:
++      {
++        std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::BuildContentFrom(fid) : file \'" << FileNameFromFID(fid) << "\' contains field with name \'" << fieldName << "\' but the type of the first field is not in [MED_FLOAT64, MED_INT32, MED_FLOAT32] !";
++        throw INTERP_KERNEL::Exception(oss.str());
++      }
++  }
++  ret->setMeshName(meshName);
++  ret->setDtUnit(dtunit.c_str());
++  return ret.retn();
++}
++
++MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::BuildNewInstanceFromContent(MEDFileAnyTypeFieldMultiTSWithoutSDA *c)
++{
++  if(!c)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::BuildNewInstanceFromContent : empty content in input : unable to build a new instance !");
++  if(dynamic_cast<const MEDFileFieldMultiTSWithoutSDA *>(c))
++    {
++      MCAuto<MEDFileFieldMultiTS> ret(MEDFileFieldMultiTS::New());
++      ret->_content=c;  c->incrRef();
++      return ret.retn();
++    }
++  if(dynamic_cast<const MEDFileIntFieldMultiTSWithoutSDA *>(c))
++    {
++      MCAuto<MEDFileIntFieldMultiTS> ret(MEDFileIntFieldMultiTS::New());
++      ret->_content=c;  c->incrRef();
++      return ret.retn();
++    }
++  if(dynamic_cast<const MEDFileFloatFieldMultiTSWithoutSDA *>(c))
++    {
++      MCAuto<MEDFileFloatFieldMultiTS> ret(MEDFileFloatFieldMultiTS::New());
++      ret->_content=c;  c->incrRef();
++      return ret.retn();
++    }
++  throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::BuildNewInstanceFromContent : internal error ! a content of type different from FLOAT64 FLOAT32 and INT32 has been built but not intercepted !");
++}
++
++MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::BuildNewInstanceFromContent(MEDFileAnyTypeFieldMultiTSWithoutSDA *c, med_idt fid)
++{
++  MEDFileAnyTypeFieldMultiTS *ret(BuildNewInstanceFromContent(c));
++  std::string fileName(FileNameFromFID(fid));
++  ret->setFileName(fileName);
++  return ret;
++}
++
++MEDFileAnyTypeFieldMultiTS::MEDFileAnyTypeFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++try:MEDFileFieldGlobsReal(fid)
++{
++  _content=BuildContentFrom(fid,fieldName,loadAll,ms,entities);
++  loadGlobals(fid);
++}
++catch(INTERP_KERNEL::Exception& e)
++{
++    throw e;
++}
++
++//= MEDFileAnyTypeFieldMultiTS
++
++/*!
++ * Returns a new instance of MEDFileFieldMultiTS or MEDFileIntFieldMultiTS holding data of the first field
++ * that has been read from a specified MED file.
++ *  \param [in] fileName - the name of the MED file to read.
++ *  \return MEDFileFieldMultiTS * - a new instance of MEDFileFieldMultiTS or MEDFileIntFieldMultiTS. The caller
++ *          is to delete this field using decrRef() as it is no more needed.
++ *  \throw If reading the file fails.
++ */
++MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::New(const std::string& fileName, bool loadAll)
++{
++  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
++  return New(fid,loadAll);
++}
++
++MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::New(med_idt fid, bool loadAll)
++{
++  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> c(BuildContentFrom(fid,loadAll,0));
++  MCAuto<MEDFileAnyTypeFieldMultiTS> ret(BuildNewInstanceFromContent(c,fid));
++  ret->loadGlobals(fid);
++  return ret.retn();
++}
++
++/*!
++ * Returns a new instance of MEDFileFieldMultiTS or MEDFileIntFieldMultiTS holding data of a given field
++ * that has been read from a specified MED file.
++ *  \param [in] fileName - the name of the MED file to read.
++ *  \param [in] fieldName - the name of the field to read.
++ *  \return MEDFileFieldMultiTS * - a new instance of MEDFileFieldMultiTS or MEDFileIntFieldMultiTS. The caller
++ *          is to delete this field using decrRef() as it is no more needed.
++ *  \throw If reading the file fails.
++ *  \throw If there is no field named \a fieldName in the file.
++ */
++MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::New(const std::string& fileName, const std::string& fieldName, bool loadAll)
++{
++  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName));
++  return New(fid,fieldName,loadAll);
++}
++
++MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::New(med_idt fid, const std::string& fieldName, bool loadAll)
++{
++  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> c(BuildContentFrom(fid,fieldName,loadAll,0,0));
++  MCAuto<MEDFileAnyTypeFieldMultiTS> ret(BuildNewInstanceFromContent(c,fid));
++  ret->loadGlobals(fid);
++  return ret.retn();
++}
++
++/*!
++ * This constructor is a shallow copy constructor. If \a shallowCopyOfContent is true the content of \a other is shallow copied.
++ * If \a shallowCopyOfContent is false, \a other is taken to be the content of \a this.
++ *
++ * \warning this is a shallow copy constructor
++ */
++MEDFileAnyTypeFieldMultiTS::MEDFileAnyTypeFieldMultiTS(const MEDFileAnyTypeFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent)
++{
++  if(!shallowCopyOfContent)
++    {
++      const MEDFileAnyTypeFieldMultiTSWithoutSDA *otherPtr(&other);
++      otherPtr->incrRef();
++      _content=const_cast<MEDFileAnyTypeFieldMultiTSWithoutSDA *>(otherPtr);
++    }
++  else
++    {
++      _content=other.shallowCpy();
++    }
++}
++
++MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTS::contentNotNullBase()
++{
++  MEDFileAnyTypeFieldMultiTSWithoutSDA *ret=_content;
++  if(!ret)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS : content is expected to be not null !");
++  return ret;
++}
++
++const MEDFileAnyTypeFieldMultiTSWithoutSDA *MEDFileAnyTypeFieldMultiTS::contentNotNullBase() const
++{
++  const MEDFileAnyTypeFieldMultiTSWithoutSDA *ret=_content;
++  if(!ret)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS : const content is expected to be not null !");
++  return ret;
++}
++
++std::vector<std::string> MEDFileAnyTypeFieldMultiTS::getPflsReallyUsed() const
++{
++  return contentNotNullBase()->getPflsReallyUsed2();
++}
++
++std::vector<std::string> MEDFileAnyTypeFieldMultiTS::getLocsReallyUsed() const
++{
++  return contentNotNullBase()->getLocsReallyUsed2();
++}
++
++std::vector<std::string> MEDFileAnyTypeFieldMultiTS::getPflsReallyUsedMulti() const
++{
++  return contentNotNullBase()->getPflsReallyUsedMulti2();
++}
++
++std::vector<std::string> MEDFileAnyTypeFieldMultiTS::getLocsReallyUsedMulti() const
++{
++  return contentNotNullBase()->getLocsReallyUsedMulti2();
++}
++
++void MEDFileAnyTypeFieldMultiTS::changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  contentNotNullBase()->changePflsRefsNamesGen2(mapOfModif);
++}
++
++void MEDFileAnyTypeFieldMultiTS::changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif)
++{
++  contentNotNullBase()->changeLocsRefsNamesGen2(mapOfModif);
++}
++
++int MEDFileAnyTypeFieldMultiTS::getNumberOfTS() const
++{
++  return contentNotNullBase()->getNumberOfTS();
++}
++
++void MEDFileAnyTypeFieldMultiTS::eraseEmptyTS()
++{
++  contentNotNullBase()->eraseEmptyTS();
++}
++
++void MEDFileAnyTypeFieldMultiTS::eraseTimeStepIds(const int *startIds, const int *endIds)
++{
++  contentNotNullBase()->eraseTimeStepIds(startIds,endIds);
++}
++
++void MEDFileAnyTypeFieldMultiTS::eraseTimeStepIds2(int bg, int end, int step)
++{
++  contentNotNullBase()->eraseTimeStepIds2(bg,end,step);
++}
++
++MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::buildSubPart(const int *startIds, const int *endIds) const
++{
++  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> c=contentNotNullBase()->buildFromTimeStepIds(startIds,endIds);
++  MCAuto<MEDFileAnyTypeFieldMultiTS> ret=shallowCpy();
++  ret->_content=c;
++  return ret.retn();
++}
++
++MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::buildSubPartSlice(int bg, int end, int step) const
++{
++  MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> c=contentNotNullBase()->buildFromTimeStepIds2(bg,end,step);
++  MCAuto<MEDFileAnyTypeFieldMultiTS> ret=shallowCpy();
++  ret->_content=c;
++  return ret.retn();
++}
++
++std::vector< std::pair<int,int> > MEDFileAnyTypeFieldMultiTS::getIterations() const
++{
++  return contentNotNullBase()->getIterations();
++}
++
++void MEDFileAnyTypeFieldMultiTS::pushBackTimeSteps(const std::vector<MEDFileAnyTypeField1TS *>& f1ts)
++{
++  for(std::vector<MEDFileAnyTypeField1TS *>::const_iterator it=f1ts.begin();it!=f1ts.end();it++)
++    pushBackTimeStep(*it);
++}
++
++void MEDFileAnyTypeFieldMultiTS::pushBackTimeSteps(MEDFileAnyTypeFieldMultiTS *fmts)
++{
++  if(!fmts)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::pushBackTimeSteps : Input fmts is NULL !");
++  int nbOfTS(fmts->getNumberOfTS());
++  for(int i=0;i<nbOfTS;i++)
++    {
++      MCAuto<MEDFileAnyTypeField1TS> elt(fmts->getTimeStepAtPos(i));
++      pushBackTimeStep(elt);
++    }
++}
++
++void MEDFileAnyTypeFieldMultiTS::pushBackTimeStep(MEDFileAnyTypeField1TS *f1ts)
++{
++  if(!f1ts)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::pushBackTimeStep : input pointer is NULL !");
++  checkCoherencyOfType(f1ts);
++  f1ts->incrRef();
++  MCAuto<MEDFileAnyTypeField1TS> f1tsSafe(f1ts);
++  MEDFileAnyTypeField1TSWithoutSDA *c=f1ts->contentNotNullBase();
++  c->incrRef();
++  MCAuto<MEDFileAnyTypeField1TSWithoutSDA> cSafe(c);
++  if(!((MEDFileAnyTypeFieldMultiTSWithoutSDA *)_content))
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTSWithoutSDA::pushBackTimeStep : no content in this !");
++  _content->pushBackTimeStep(cSafe);
++  appendGlobs(*f1ts,1e-12);
++}
++
++void MEDFileAnyTypeFieldMultiTS::synchronizeNameScope()
++{
++  contentNotNullBase()->synchronizeNameScope();
++}
++
++int MEDFileAnyTypeFieldMultiTS::getPosOfTimeStep(int iteration, int order) const
++{
++  return contentNotNullBase()->getPosOfTimeStep(iteration,order);
++}
++
++int MEDFileAnyTypeFieldMultiTS::getPosGivenTime(double time, double eps) const
++{
++  return contentNotNullBase()->getPosGivenTime(time,eps);
++}
++
++int MEDFileAnyTypeFieldMultiTS::getNonEmptyLevels(int iteration, int order, const std::string& mname, std::vector<int>& levs) const
++{
++  return contentNotNullBase()->getNonEmptyLevels(iteration,order,mname,levs);
++}
++
++std::vector< std::vector<TypeOfField> > MEDFileAnyTypeFieldMultiTS::getTypesOfFieldAvailable() const
++{
++  return contentNotNullBase()->getTypesOfFieldAvailable();
++}
++
++std::vector< std::vector< std::pair<int,int> > > MEDFileAnyTypeFieldMultiTS::getFieldSplitedByType(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
++{
++  return contentNotNullBase()->getFieldSplitedByType(iteration,order,mname,types,typesF,pfls,locs);
++}
++
++std::string MEDFileAnyTypeFieldMultiTS::getName() const
++{
++  return contentNotNullBase()->getName();
++}
++
++void MEDFileAnyTypeFieldMultiTS::setName(const std::string& name)
++{
++  contentNotNullBase()->setName(name);
++}
++
++std::string MEDFileAnyTypeFieldMultiTS::getDtUnit() const
++{
++  return contentNotNullBase()->getDtUnit();
++}
++
++void MEDFileAnyTypeFieldMultiTS::setDtUnit(const std::string& dtUnit)
++{
++  contentNotNullBase()->setDtUnit(dtUnit);
++}
++
++void MEDFileAnyTypeFieldMultiTS::simpleRepr(int bkOffset, std::ostream& oss, int fmtsId) const
++{
++  contentNotNullBase()->simpleRepr(bkOffset,oss,fmtsId);
++}
++
++std::vector< std::pair<int,int> > MEDFileAnyTypeFieldMultiTS::getTimeSteps(std::vector<double>& ret1) const
++{
++  return contentNotNullBase()->getTimeSteps(ret1);
++}
++
++std::string MEDFileAnyTypeFieldMultiTS::getMeshName() const
++{
++  return contentNotNullBase()->getMeshName();
++}
++
++void MEDFileAnyTypeFieldMultiTS::setMeshName(const std::string& newMeshName)
++{
++  contentNotNullBase()->setMeshName(newMeshName);
++}
++
++bool MEDFileAnyTypeFieldMultiTS::changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab)
++{
++  return contentNotNullBase()->changeMeshNames(modifTab);
++}
++
++const std::vector<std::string>& MEDFileAnyTypeFieldMultiTS::getInfo() const
++{
++  return contentNotNullBase()->getInfo();
++}
++
++bool MEDFileAnyTypeFieldMultiTS::presenceOfMultiDiscPerGeoType() const
++{
++  return contentNotNullBase()->presenceOfMultiDiscPerGeoType();
++}
++
++void MEDFileAnyTypeFieldMultiTS::setInfo(const std::vector<std::string>& info)
++{
++  return contentNotNullBase()->setInfo(info);
++}
++
++int MEDFileAnyTypeFieldMultiTS::getNumberOfComponents() const
++{
++  const std::vector<std::string> ret=getInfo();
++  return (int)ret.size();
++}
++
++void MEDFileAnyTypeFieldMultiTS::writeLL(med_idt fid) const
++{
++  writeGlobals(fid,*this);
++  contentNotNullBase()->writeLL(fid,*this);
++}
++
++/*!
++ * This method alloc the arrays and load potentially huge arrays contained in this field.
++ * This method should be called when a MEDFileAnyTypeFieldMultiTS::New constructor has been with false as the last parameter.
++ * This method can be also called to refresh or reinit values from a file.
++ * 
++ * \throw If the fileName is not set or points to a non readable MED file.
++ */
++void MEDFileAnyTypeFieldMultiTS::loadArrays()
++{
++  if(getFileName().empty())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::loadArrays : the structure does not come from a file !");
++  MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(getFileName()));
++  contentNotNullBase()->loadBigArraysRecursively(fid,*contentNotNullBase());
++}
++
++/*!
++ * This method behaves as MEDFileAnyTypeFieldMultiTS::loadArrays does, the first call, if \a this was built using a file without loading big arrays.
++ * But once data loaded once, this method does nothing.
++ * 
++ * \throw If the fileName is not set or points to a non readable MED file.
++ * \sa MEDFileAnyTypeFieldMultiTS::loadArrays, MEDFileAnyTypeFieldMultiTS::unloadArrays
++ */
++void MEDFileAnyTypeFieldMultiTS::loadArraysIfNecessary()
++{
++  if(!getFileName().empty())
++    {
++      MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(getFileName()));
++      contentNotNullBase()->loadBigArraysRecursivelyIfNecessary(fid,*contentNotNullBase());
++    }
++}
++
++/*!
++ * This method releases potentially big data arrays and so returns to the same heap memory than status loaded with 'loadAll' parameter set to false.
++ * \b WARNING, this method does release arrays even if \a this does not come from a load of a MED file.
++ * So this method can lead to a loss of data. If you want to unload arrays safely call MEDFileAnyTypeFieldMultiTS::unloadArraysWithoutDataLoss instead.
++ * 
++ * \sa MEDFileAnyTypeFieldMultiTS::loadArrays, MEDFileAnyTypeFieldMultiTS::loadArraysIfNecessary, MEDFileAnyTypeFieldMultiTS::unloadArraysWithoutDataLoss
++ */
++void MEDFileAnyTypeFieldMultiTS::unloadArrays()
++{
++  contentNotNullBase()->unloadArrays();
++}
++
++/*!
++ * This method potentially releases big data arrays if \a this is coming from a file. If \a this has been built from scratch this method will have no effect.
++ * This method is the symmetrical method of MEDFileAnyTypeFieldMultiTS::loadArraysIfNecessary.
++ * This method is useful to reduce \b safely amount of heap memory necessary for \a this by using MED file as database.
++ * 
++ * \sa MEDFileAnyTypeFieldMultiTS::loadArraysIfNecessary
++ */
++void MEDFileAnyTypeFieldMultiTS::unloadArraysWithoutDataLoss()
++{
++  if(!getFileName().empty())
++    contentNotNullBase()->unloadArrays();
++}
++
++std::string MEDFileAnyTypeFieldMultiTS::simpleRepr() const
++{
++  std::ostringstream oss;
++  contentNotNullBase()->simpleRepr(0,oss,-1);
++  simpleReprGlobs(oss);
++  return oss.str();
++}
++
++std::size_t MEDFileAnyTypeFieldMultiTS::getHeapMemorySizeWithoutChildren() const
++{
++  return MEDFileFieldGlobsReal::getHeapMemorySizeWithoutChildren();
++}
++
++std::vector<const BigMemoryObject *> MEDFileAnyTypeFieldMultiTS::getDirectChildrenWithNull() const
++{
++  std::vector<const BigMemoryObject *> ret(MEDFileFieldGlobsReal::getDirectChildrenWithNull());
++  ret.push_back((const MEDFileAnyTypeFieldMultiTSWithoutSDA *)_content);
++  return ret;
++}
++
++/*!
++ * This method returns as MEDFileAnyTypeFieldMultiTS new instances as number of components in \a this.
++ * The returned instances are deep copy of \a this except that for globals that are shared with those contained in \a this.
++ * ** WARNING ** do no forget to rename the output instances to avoid to write n-times in the same MED file field !
++ */
++std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > MEDFileAnyTypeFieldMultiTS::splitComponents() const
++{
++  const MEDFileAnyTypeFieldMultiTSWithoutSDA *content(_content);
++  if(!content)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::splitComponents : no content in this ! Unable to split components !");
++  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > contentsSplit=content->splitComponents();
++  std::size_t sz(contentsSplit.size());
++  std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > ret(sz);
++  for(std::size_t i=0;i<sz;i++)
++    {
++      ret[i]=shallowCpy();
++      ret[i]->_content=contentsSplit[i];
++    }
++  return ret;
++}
++
++/*!
++ * This method returns as MEDFileAnyTypeFieldMultiTS new instances as number of discretizations over time steps in \a this.
++ * The returned instances are shallow copied of \a this included globals that are shared with those contained in \a this.
++ */
++std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > MEDFileAnyTypeFieldMultiTS::splitDiscretizations() const
++{
++  const MEDFileAnyTypeFieldMultiTSWithoutSDA *content(_content);
++  if(!content)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::splitDiscretizations : no content in this ! Unable to split discretizations !");
++  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > contentsSplit(content->splitDiscretizations());
++  std::size_t sz(contentsSplit.size());
++  std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > ret(sz);
++  for(std::size_t i=0;i<sz;i++)
++    {
++      ret[i]=shallowCpy();
++      ret[i]->_content=contentsSplit[i];
++    }
++  return ret;
++}
++
++/*!
++ * This method returns as MEDFileAnyTypeFieldMultiTS new instances as number of sub-discretizations over time steps in \a this.
++ * The returned instances are shallow copied of \a this included globals that are shared with those contained in \a this.
++ */
++std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > MEDFileAnyTypeFieldMultiTS::splitMultiDiscrPerGeoTypes() const
++{
++  const MEDFileAnyTypeFieldMultiTSWithoutSDA *content(_content);
++  if(!content)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::splitMultiDiscrPerGeoTypes : no content in this ! Unable to split discretizations !");
++  std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > contentsSplit(content->splitMultiDiscrPerGeoTypes());
++  std::size_t sz(contentsSplit.size());
++  std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > ret(sz);
++  for(std::size_t i=0;i<sz;i++)
++    {
++      ret[i]=shallowCpy();
++      ret[i]->_content=contentsSplit[i];
++    }
++  return ret;
++}
++
++MEDFileAnyTypeFieldMultiTS *MEDFileAnyTypeFieldMultiTS::deepCopy() const
++{
++  MCAuto<MEDFileAnyTypeFieldMultiTS> ret=shallowCpy();
++  if((const MEDFileAnyTypeFieldMultiTSWithoutSDA *)_content)
++    ret->_content=_content->deepCopy();
++  ret->deepCpyGlobs(*this);
++  return ret.retn();
++}
++
++MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> MEDFileAnyTypeFieldMultiTS::getContent()
++{
++  return _content;
++}
++
++/*!
++ * Returns a new MEDFileField1TS or MEDFileIntField1TS holding data of a given time step of \a this field.
++ *  \param [in] iteration - the iteration number of a required time step.
++ *  \param [in] order - the iteration order number of required time step.
++ *  \return MEDFileField1TS * or MEDFileIntField1TS *- a new instance of MEDFileField1TS or MEDFileIntField1TS. The caller is to
++ *          delete this field using decrRef() as it is no more needed.
++ *  \throw If there is no required time step in \a this field.
++ */
++MEDFileAnyTypeField1TS *MEDFileAnyTypeFieldMultiTS::getTimeStep(int iteration, int order) const
++{
++  int pos=getPosOfTimeStep(iteration,order);
++  return getTimeStepAtPos(pos);
++}
++
++/*!
++ * Returns a new MEDFileField1TS or MEDFileIntField1TS holding data of a given time step of \a this field.
++ *  \param [in] time - the time of the time step of interest.
++ *  \param [in] eps - a precision used to compare time values.
++ *  \return MEDFileField1TS * - a new instance of MEDFileField1TS. The caller is to
++ *          delete this field using decrRef() as it is no more needed.
++ *  \throw If there is no required time step in \a this field.
++ */
++MEDFileAnyTypeField1TS *MEDFileAnyTypeFieldMultiTS::getTimeStepGivenTime(double time, double eps) const
++{
++  int pos=getPosGivenTime(time,eps);
++  return getTimeStepAtPos(pos);
++}
++
++/*!
++ * This method groups not null items in \a vectFMTS per time step series. Two time series are considered equal if the list of their pair of integers iteration,order are equal.
++ * The float64 value of time attached to the pair of integers are not considered here.
++ * WARNING the returned pointers are not incremented. The caller is \b not responsible to deallocate them ! This method only reorganizes entries in \a vectFMTS.
++ *
++ * \param [in] vectFMTS - vector of not null fields defined on a same global data pointer.
++ * \throw If there is a null pointer in \a vectFMTS.
++ */
++std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > MEDFileAnyTypeFieldMultiTS::SplitIntoCommonTimeSeries(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS)
++{
++  static const char msg[]="MEDFileAnyTypeFieldMultiTS::SplitIntoCommonTimeSeries : presence of null instance in input vector !";
++  std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > ret;
++  std::list<MEDFileAnyTypeFieldMultiTS *> lstFMTS(vectFMTS.begin(),vectFMTS.end());
++  while(!lstFMTS.empty())
++    {
++      std::list<MEDFileAnyTypeFieldMultiTS *>::iterator it(lstFMTS.begin());
++      MEDFileAnyTypeFieldMultiTS *curIt(*it);
++      if(!curIt)
++        throw INTERP_KERNEL::Exception(msg);
++      std::vector< std::pair<int,int> > refIts=curIt->getIterations();
++      std::vector<MEDFileAnyTypeFieldMultiTS *> elt;
++      elt.push_back(curIt); it=lstFMTS.erase(it);
++      while(it!=lstFMTS.end())
++        {
++          curIt=*it;
++          if(!curIt)
++            throw INTERP_KERNEL::Exception(msg);
++          std::vector< std::pair<int,int> > curIts=curIt->getIterations();
++          if(refIts==curIts)
++            { elt.push_back(curIt); it=lstFMTS.erase(it); }
++          else
++            it++;
++        }
++      ret.push_back(elt);
++    }
++  return ret;
++}
++
++/*!
++ * This method splits the input list \a vectFMTS considering the aspect of the geometrical support over time.
++ * All returned instances in a subvector can be safely loaded, rendered along time
++ * All items must be defined on the same time step ids ( see MEDFileAnyTypeFieldMultiTS::SplitIntoCommonTimeSeries method ).
++ * Each item in \a vectFMTS is expected to have one and exactly one spatial discretization along time.
++ * All items in \a vectFMTS must lie on the mesh (located by meshname and time step) and compatible with the input mesh \a mesh (having the same name than those in items).
++ * All items in \a vectFMTS whose spatial discretization is not ON_NODES will appear once.
++ * For items in \a vectFMTS that are ON_NODES it is possible to appear several times (more than once or once) in the returned vector.
++ *
++ * \param [in] vectFMTS - list of multi times step part all defined each on a same spatial discretization along time and pointing to a mesh whose name is equal to \c mesh->getName().
++ * \param [in] mesh - the mesh shared by all items in \a vectFMTS across time.
++ * \param [out] fsc - A vector having same size than returned vector. It specifies the support comporator of the corresponding vector of MEDFileAnyTypeFieldMultiTS in returned vector of vector.
++ * \return - A vector of vector of objects that contains the same pointers (objects) than thoose in \a vectFMTS except that there are organized differently. So pointers included in returned vector of vector should \b not been dealt by the caller.
++ *
++ * \throw If an element in \a vectFMTS has not only one spatial discretization set.
++ * \throw If an element in \a vectFMTS change of spatial discretization along time.
++ * \throw If an element in \a vectFMTS lies on a mesh with meshname different from those in \a mesh.
++ * \thorw If some elements in \a vectFMTS do not have the same times steps.
++ * \throw If mesh is null.
++ * \throw If an element in \a vectFMTS is null.
++ * \sa MEDFileAnyTypeFieldMultiTS::AreOnSameSupportAcrossTime
++ */
++std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS, const MEDFileMesh *mesh, std::vector< MCAuto<MEDFileFastCellSupportComparator> >& fsc)
++{
++  static const char msg[]="MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport : presence of a null instance in the input vector !";
++  if(!mesh)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport : input mesh is null !");
++  std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > ret;
++  if(vectFMTS.empty())
++    return ret;
++  std::vector<MEDFileAnyTypeFieldMultiTS *>::const_iterator it(vectFMTS.begin());
++  MEDFileAnyTypeFieldMultiTS *frstElt(*it);
++  if(!frstElt)
++    throw INTERP_KERNEL::Exception(msg);
++  std::size_t i=0;
++  std::vector<MEDFileAnyTypeFieldMultiTS *> vectFMTSNotNodes;
++  std::vector<MEDFileAnyTypeFieldMultiTS *> vectFMTSNodes;
++  for(;it!=vectFMTS.end();it++,i++)
++    {
++      if(!(*it))
++        throw INTERP_KERNEL::Exception(msg);
++      TypeOfField tof0,tof1;
++      if(CheckSupportAcrossTime(frstElt,*it,mesh,tof0,tof1)>0)
++        {
++          if(tof1!=ON_NODES)
++            vectFMTSNotNodes.push_back(*it);
++          else
++            vectFMTSNodes.push_back(*it);
++        }
++      else
++        vectFMTSNotNodes.push_back(*it);
++    }
++  std::vector< MCAuto<MEDFileFastCellSupportComparator> > cmps;
++  std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > retCell=SplitPerCommonSupportNotNodesAlg(vectFMTSNotNodes,mesh,cmps);
++  ret=retCell;
++  for(std::vector<MEDFileAnyTypeFieldMultiTS *>::const_iterator it2=vectFMTSNodes.begin();it2!=vectFMTSNodes.end();it2++)
++    {
++      i=0;
++      bool isFetched(false);
++      for(std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> >::const_iterator it0=retCell.begin();it0!=retCell.end();it0++,i++)
++        {
++          if((*it0).empty())
++            throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport : internal error !");
++          if(cmps[i]->isCompatibleWithNodesDiscr(*it2))
++            { ret[i].push_back(*it2); isFetched=true; }
++        }
++      if(!isFetched)
++        {
++          std::vector<MEDFileAnyTypeFieldMultiTS *> tmp(1,*it2);
++          MCAuto<MEDFileMeshStruct> tmp2(MEDFileMeshStruct::New(mesh));
++          ret.push_back(tmp); retCell.push_back(tmp); cmps.push_back(MEDFileFastCellSupportComparator::New(tmp2,*it2));
++        }
++    }
++  fsc=cmps;
++  return ret;
++}
++
++/*!
++ * WARNING no check here. The caller must be sure that all items in vectFMTS are coherent each other in time steps, only one same spatial discretization and not ON_NODES.
++ * \param [out] cmps - same size than the returned vector.
++ */
++std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupportNotNodesAlg(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS, const MEDFileMesh *mesh, std::vector< MCAuto<MEDFileFastCellSupportComparator> >& cmps)
++{
++  std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > ret;
++  std::list<MEDFileAnyTypeFieldMultiTS *> lstFMTS(vectFMTS.begin(),vectFMTS.end());
++  while(!lstFMTS.empty())
++    {
++      std::list<MEDFileAnyTypeFieldMultiTS *>::iterator it(lstFMTS.begin());
++      MEDFileAnyTypeFieldMultiTS *ref(*it);
++      std::vector<MEDFileAnyTypeFieldMultiTS *> elt;
++      elt.push_back(ref); it=lstFMTS.erase(it);
++      MCAuto<MEDFileMeshStruct> mst(MEDFileMeshStruct::New(mesh));
++      MCAuto<MEDFileFastCellSupportComparator> cmp(MEDFileFastCellSupportComparator::New(mst,ref));
++      while(it!=lstFMTS.end())
++        {
++          MEDFileAnyTypeFieldMultiTS *curIt(*it);
++          if(cmp->isEqual(curIt))
++            { elt.push_back(curIt); it=lstFMTS.erase(it); }
++          else
++            it++;
++        }
++      ret.push_back(elt); cmps.push_back(cmp);
++    }
++  return ret;
++}
++
++/*!
++ * This method scan the two main structs along time of \a f0 and \a f1 to see if there are all lying on the same mesh along time than those in \a mesh.
++ * \a f0 and \a f1 must be defined each only on a same spatial discretization even if this can be different each other.
++ *
++ * \throw If \a f0 or \a f1 has not only one spatial discretization set.
++ * \throw If \a f0 or \a f1 change of spatial discretization along time.
++ * \throw If \a f0 or \a f1 on a mesh with meshname different from those in \a mesh.
++ * \thorw If \a f0 and \a f1 do not have the same times steps.
++ * \throw If mesh is null.
++ * \throw If \a f0 or \a f1 is null.
++ * \sa MEDFileAnyTypeFieldMultiTS::SplitPerCommonSupport
++ */
++int MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime(MEDFileAnyTypeFieldMultiTS *f0, MEDFileAnyTypeFieldMultiTS *f1, const MEDFileMesh *mesh, TypeOfField& tof0, TypeOfField& tof1)
++{
++  if(!mesh)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : input mesh is null !");
++  if(!f0 || !f1)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : presence of null instance in fields over time !");
++  if(f0->getMeshName()!=mesh->getName())
++    {
++      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : first field points to mesh \""<< f0->getMeshName() << "\" and input mesh to compare has name \"" << mesh->getName() << "\" !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  if(f1->getMeshName()!=mesh->getName())
++    {
++      std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : second field points to mesh \""<< f1->getMeshName() << "\" and input mesh to compare has name \"" << mesh->getName() << "\" !";
++      throw INTERP_KERNEL::Exception(oss.str());
++    }
++  int nts=f0->getNumberOfTS();
++  if(nts!=f1->getNumberOfTS())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : number of time steps are not the same !");
++  if(nts==0)
++    return nts;
++  for(int i=0;i<nts;i++)
++    {
++      MCAuto<MEDFileAnyTypeField1TS> f0cur=f0->getTimeStepAtPos(i);
++      MCAuto<MEDFileAnyTypeField1TS> f1cur=f1->getTimeStepAtPos(i);
++      std::vector<TypeOfField> tofs0(f0cur->getTypesOfFieldAvailable()),tofs1(f1cur->getTypesOfFieldAvailable());
++      if(tofs0.size()!=1 || tofs1.size()!=1)
++        throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : All time steps must be defined on only one spatial discretization !");
++      if(i!=0)
++        {
++          if(tof0!=tofs0[0] || tof1!=tofs1[0])
++            throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : Across times steps MEDFileAnyTypeFieldMultiTS instances have to keep the same unique spatial discretization !");
++        }
++      else
++        { tof0=tofs0[0]; tof1=tofs1[0]; }
++      if(f0cur->getMeshIteration()!=mesh->getIteration() || f0cur->getMeshOrder()!=mesh->getOrder())
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : first field points to mesh time step (" << f0cur->getMeshIteration() << ","<< f0cur->getMeshOrder() << ") whereas input mesh points to time step (" << mesh->getIteration() << "," << mesh->getOrder() << ") !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      if(f1cur->getMeshIteration()!=mesh->getIteration() || f1cur->getMeshOrder()!=mesh->getOrder())
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : second field points to mesh time step (" << f1cur->getMeshIteration() << ","<< f1cur->getMeshOrder() << ") whereas input mesh points to time step (" << mesh->getIteration() << "," << mesh->getOrder() << ") !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++      if(f0cur->getIteration()!=f1cur->getIteration() || f0cur->getOrder()!=f1cur->getOrder())
++        {
++          std::ostringstream oss; oss << "MEDFileAnyTypeFieldMultiTS::CheckSupportAcrossTime : all the time steps must be the same ! it is not the case (" << f0cur->getIteration() << "," << f0cur->getOrder() << ")!=(" << f1cur->getIteration() << "," << f1cur->getOrder() << ") !";
++          throw INTERP_KERNEL::Exception(oss.str());
++        }
++    }
++  return nts;
++}
++
++template<class T>
++MCAuto<MEDFileAnyTypeField1TS> AggregateHelperF1TS(const std::vector< typename MLFieldTraits<T>::F1TSType const *>& f1tss, const std::vector< std::vector< std::pair<int,int> > >& dts)
++{
++  MCAuto< typename MLFieldTraits<T>::F1TSType > ret(MLFieldTraits<T>::F1TSType::New());
++  if(f1tss.empty())
++    throw INTERP_KERNEL::Exception("AggregateHelperF1TS : empty vector !");
++  std::size_t sz(f1tss.size()),i(0);
++  std::vector< typename MLFieldTraits<T>::F1TSWSDAType const *> f1tsw(sz);
++  for(typename std::vector< typename MLFieldTraits<T>::F1TSType const *>::const_iterator it=f1tss.begin();it!=f1tss.end();it++,i++)
++    {
++      typename MLFieldTraits<T>::F1TSType const *elt(*it);
++      if(!elt)
++        throw INTERP_KERNEL::Exception("AggregateHelperF1TS : presence of a null pointer !");
++      f1tsw[i]=dynamic_cast<typename MLFieldTraits<T>::F1TSWSDAType const *>(elt->contentNotNullBase());
++    }
++  typename MLFieldTraits<T>::F1TSWSDAType *retc(dynamic_cast<typename MLFieldTraits<T>::F1TSWSDAType *>(ret->contentNotNullBase()));
++  if(!retc)
++    throw INTERP_KERNEL::Exception("AggregateHelperF1TS : internal error 1 !");
++  retc->aggregate(f1tsw,dts);
++  ret->setDtUnit(f1tss[0]->getDtUnit());
++  return DynamicCast<typename MLFieldTraits<T>::F1TSType , MEDFileAnyTypeField1TS>(ret);
++}
++
++template<class T>
++MCAuto< MEDFileAnyTypeFieldMultiTS > AggregateHelperFMTS(const std::vector< typename MLFieldTraits<T>::FMTSType const *>& fmtss, const std::vector< std::vector< std::pair<int,int> > >& dts)
++{
++  MCAuto< typename MLFieldTraits<T>::FMTSType > ret(MLFieldTraits<T>::FMTSType::New());
++  if(fmtss.empty())
++    throw INTERP_KERNEL::Exception("AggregateHelperFMTS : empty vector !");
++  std::size_t sz(fmtss.size());
++  for(typename std::vector< typename MLFieldTraits<T>::FMTSType const *>::const_iterator it=fmtss.begin();it!=fmtss.end();it++)
++    {
++      typename MLFieldTraits<T>::FMTSType const *elt(*it);
++      if(!elt)
++        throw INTERP_KERNEL::Exception("AggregateHelperFMTS : presence of null pointer !");
++    }
++  int nbTS(fmtss[0]->getNumberOfTS());
++  for(typename std::vector< typename MLFieldTraits<T>::FMTSType const *>::const_iterator it=fmtss.begin();it!=fmtss.end();it++)
++    if((*it)->getNumberOfTS()!=nbTS)
++      throw INTERP_KERNEL::Exception("AggregateHelperFMTS : all fields must have the same number of TS !");
++  for(int iterTS=0;iterTS<nbTS;iterTS++)
++    {
++      std::size_t i(0);
++      std::vector< typename MLFieldTraits<T>::F1TSType const *> f1tss(sz);
++      std::vector< MCAuto<typename MLFieldTraits<T>::F1TSType> > f1tss2(sz);
++      for(typename std::vector< typename MLFieldTraits<T>::FMTSType const *>::const_iterator it=fmtss.begin();it!=fmtss.end();it++,i++)
++        { f1tss2[i]=(*it)->getTimeStepAtPos(iterTS); f1tss[i]=f1tss2[i]; }
++      MCAuto<MEDFileAnyTypeField1TS> f1ts(AggregateHelperF1TS<T>(f1tss,dts));
++      ret->pushBackTimeStep(f1ts);
++      ret->setDtUnit(f1ts->getDtUnit());
++    }
++  return DynamicCast<typename MLFieldTraits<T>::FMTSType , MEDFileAnyTypeFieldMultiTS>(ret);
++}
++
++/*!
++ * \a dts and \a ftmss are expected to have same size.
++ */
++MCAuto<MEDFileAnyTypeFieldMultiTS> MEDFileAnyTypeFieldMultiTS::Aggregate(const std::vector<const MEDFileAnyTypeFieldMultiTS *>& fmtss, const std::vector< std::vector< std::pair<int,int> > >& dts)
++{
++  if(fmtss.empty())
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::Aggregate : input vector is empty !");
++  std::size_t sz(fmtss.size());
++  std::vector<const MEDFileFieldMultiTS *> fmtss1;
++  std::vector<const MEDFileIntFieldMultiTS *> fmtss2;
++  for(std::vector<const MEDFileAnyTypeFieldMultiTS *>::const_iterator it=fmtss.begin();it!=fmtss.end();it++)
++    {
++      if(!(*it))
++        throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::Aggregate : presence of null instance in input vector !");
++      const MEDFileFieldMultiTS *elt1(dynamic_cast<const MEDFileFieldMultiTS *>(*it));
++      if(elt1)
++        {
++          fmtss1.push_back(elt1);
++          continue;
++        }
++      const MEDFileIntFieldMultiTS *elt2(dynamic_cast<const MEDFileIntFieldMultiTS *>(*it));
++      if(elt2)
++        {
++          fmtss2.push_back(elt2);
++          continue;
++        }
++      throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::Aggregate : not recognized type !");
++    }
++  if(fmtss1.size()!=sz && fmtss2.size()!=sz)
++    throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::Aggregate : type of data is not homogeneous !");
++  if(fmtss1.size()==sz)
++    return AggregateHelperFMTS<double>(fmtss1,dts);
++  if(fmtss2.size()!=sz)
++    return AggregateHelperFMTS<int>(fmtss2,dts);
++  throw INTERP_KERNEL::Exception("MEDFileAnyTypeFieldMultiTS::Aggregate : not implemented yet !");
++}
++
++MEDFileAnyTypeFieldMultiTSIterator *MEDFileAnyTypeFieldMultiTS::iterator()
++{
++  return new MEDFileAnyTypeFieldMultiTSIterator(this);
++}
++
++//= MEDFileFieldMultiTS
++
++MEDFileAnyTypeFieldMultiTS *MEDFileFieldMultiTS::shallowCpy() const
++{
++  return new MEDFileFieldMultiTS(*this);
++}
++
++/*!
++ * This method performs a copy with datatype modification ( float64->int32 ) of \a this. The globals information are copied
++ * following the given input policy.
++ *
++ * \param [in] isDeepCpyGlobs - a boolean that indicates the behaviour concerning globals (profiles and localizations)
++ *                            By default (true) the globals are deeply copied.
++ * \return MEDFileIntFieldMultiTS * - a new object that is the result of the conversion of \a this to int32 field.
++ */
++MEDFileIntFieldMultiTS *MEDFileFieldMultiTS::convertToInt(bool isDeepCpyGlobs) const
++{
++  MCAuto<MEDFileIntFieldMultiTS> ret;
++  const MEDFileAnyTypeFieldMultiTSWithoutSDA *content(_content);
++  if(content)
++    {
++      const MEDFileFieldMultiTSWithoutSDA *contc=dynamic_cast<const MEDFileFieldMultiTSWithoutSDA *>(content);
++      if(!contc)
++        throw INTERP_KERNEL::Exception("MEDFileFieldMultiTS::convertToInt : the content inside this is not FLOAT64 ! This is incoherent !");
++      MCAuto<MEDFileIntFieldMultiTSWithoutSDA> newc(contc->convertToInt());
++      ret=static_cast<MEDFileIntFieldMultiTS *>(MEDFileAnyTypeFieldMultiTS::BuildNewInstanceFromContent((MEDFileIntFieldMultiTSWithoutSDA *)newc));
++    }
++  else
++    ret=MEDFileIntFieldMultiTS::New();
++  if(isDeepCpyGlobs)
++    ret->deepCpyGlobs(*this);
++  else
++    ret->shallowCpyGlobs(*this);
++  return ret.retn();
++}
++
++MEDFileFieldMultiTS::MEDFileFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms)
++try:MEDFileTemplateFieldMultiTS<double>(fid,loadAll,ms)
++{
++}
++catch(INTERP_KERNEL::Exception& e)
++{ throw e; }
++
++MEDFileFieldMultiTS::MEDFileFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities)
++try:MEDFileTemplateFieldMultiTS<double>(fid,fieldName,loadAll,ms,entities)
++{
++}
++catch(INTERP_KERNEL::Exception& e)
++{ throw e; }
++
++MEDFileFieldMultiTS::MEDFileFieldMultiTS(const MEDFileFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent):MEDFileTemplateFieldMultiTS<double>(other,shallowCopyOfContent)
++{
++}
++
++std::vector< std::vector<DataArrayDouble *> > MEDFileFieldMultiTS::getFieldSplitedByType2(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const
++{
++  return contentNotNull()->getFieldSplitedByType2(iteration,order,mname,types,typesF,pfls,locs);
++}
++
++//= MEDFileAnyTypeFieldMultiTSIterator
++
++MEDFileAnyTypeFieldMultiTSIterator::MEDFileAnyTypeFieldMultiTSIterator(MEDFileAnyTypeFieldMultiTS *fmts):_fmts(fmts),_iter_id(0),_nb_iter(0)
++{
++  if(fmts)
++    {
++      fmts->incrRef();
++      _nb_iter=fmts->getNumberOfTS();
++    }
++}
++
++MEDFileAnyTypeFieldMultiTSIterator::~MEDFileAnyTypeFieldMultiTSIterator() 
++{
++}
++
++MEDFileAnyTypeField1TS *MEDFileAnyTypeFieldMultiTSIterator::nextt()
++{
++  if(_iter_id<_nb_iter)
++    {
++      MEDFileAnyTypeFieldMultiTS *fmts(_fmts);
++      if(fmts)
++        return fmts->getTimeStepAtPos(_iter_id++);
++      else
++        return 0;
++    }
++  else
++    return 0;
++}
++
++//= MEDFileIntFieldMultiTS
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileFieldMultiTS.hxx MEDCOUPLING_new/src/MEDLoader/MEDFileFieldMultiTS.hxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileFieldMultiTS.hxx      1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileFieldMultiTS.hxx      2018-04-19 17:25:17.739797396 +0200
+@@ -0,0 +1,417 @@
++// Copyright (C) 2007-2016  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++#ifndef __MEDFILEFIELDMULTITS_HXX__
++#define __MEDFILEFIELDMULTITS_HXX__
++
++#include "MEDLoaderDefines.hxx"
++#include "MEDFileField1TS.hxx"
++#include "MEDFileFieldGlobs.hxx"
++#include "MEDLoaderTraits.hxx"
++#include "MEDFileUtilities.hxx"
++
++namespace MEDCoupling
++{
++  class MEDFileMesh;
++  class MEDFileMeshes;
++  class MEDCouplingMesh;
++  class MEDFileFieldVisitor;
++  class MEDFileAnyTypeField1TS;
++  class MEDFileAnyTypeField1TSWithoutSDA;
++  
++  class MEDFileAnyTypeFieldMultiTSWithoutSDA : public RefCountObject, public MEDFileFieldNameScope
++  {
++  protected:
++    MEDFileAnyTypeFieldMultiTSWithoutSDA();
++    MEDFileAnyTypeFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName);
++    MEDFileAnyTypeFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
++    MEDFileAnyTypeFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
++  public:
++    MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
++    MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTSWithoutSDA *deepCopy() const;
++    MEDLOADER_EXPORT virtual std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > splitComponents() const;
++    MEDLOADER_EXPORT virtual std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > splitDiscretizations() const;
++    MEDLOADER_EXPORT virtual std::vector< MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> > splitMultiDiscrPerGeoTypes() const;
++    MEDLOADER_EXPORT virtual const char *getTypeStr() const = 0;
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTSWithoutSDA *shallowCpy() const = 0;
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTSWithoutSDA *createNew() const = 0;
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TSWithoutSDA *createNew1TSWithoutSDAEmptyInstance() const = 0;
++    MEDLOADER_EXPORT virtual void checkCoherencyOfType(const MEDFileAnyTypeField1TSWithoutSDA *f1ts) const = 0;
++    MEDLOADER_EXPORT const std::vector<std::string>& getInfo() const;
++    MEDLOADER_EXPORT bool presenceOfMultiDiscPerGeoType() const;
++    MEDLOADER_EXPORT void setInfo(const std::vector<std::string>& info);
++    MEDLOADER_EXPORT int getTimeStepPos(int iteration, int order) const;
++    MEDLOADER_EXPORT const MEDFileAnyTypeField1TSWithoutSDA& getTimeStepEntry(int iteration, int order) const;
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA& getTimeStepEntry(int iteration, int order);
++    MEDLOADER_EXPORT bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
++    MEDLOADER_EXPORT int getNumberOfTS() const;
++    MEDLOADER_EXPORT void eraseEmptyTS();
++    MEDLOADER_EXPORT void eraseTimeStepIds(const int *startIds, const int *endIds);
++    MEDLOADER_EXPORT void eraseTimeStepIds2(int bg, int end, int step);
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *buildFromTimeStepIds(const int *startIds, const int *endIds) const;
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *buildFromTimeStepIds2(int bg, int end, int step) const;
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *partOfThisLyingOnSpecifiedTimeSteps(const std::vector< std::pair<int,int> >& timeSteps) const;
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *partOfThisNotLyingOnSpecifiedTimeSteps(const std::vector< std::pair<int,int> >& timeSteps) const;
++    MEDLOADER_EXPORT bool presenceOfStructureElements() const;
++    MEDLOADER_EXPORT bool onlyStructureElements() const;
++    MEDLOADER_EXPORT void killStructureElements();
++    MEDLOADER_EXPORT void keepOnlyStructureElements();
++    MEDLOADER_EXPORT void keepOnlyOnSE(const std::string& seName);
++    MEDLOADER_EXPORT void getMeshSENames(std::vector< std::pair<std::string,std::string> >& ps) const;
++    MEDLOADER_EXPORT int getPosOfTimeStep(int iteration, int order) const;
++    MEDLOADER_EXPORT int getPosGivenTime(double time, double eps=1e-8) const;
++    MEDLOADER_EXPORT std::vector< std::pair<int,int> > getIterations() const;
++    MEDLOADER_EXPORT std::vector< std::pair<int,int> > getTimeSteps(std::vector<double>& ret1) const;
++    MEDLOADER_EXPORT void pushBackTimeStep(MCAuto<MEDFileAnyTypeField1TSWithoutSDA>& tse);
++    MEDLOADER_EXPORT void synchronizeNameScope();
++    MEDLOADER_EXPORT void simpleRepr(int bkOffset, std::ostream& oss, int fmtsId) const;
++    MEDLOADER_EXPORT int getNonEmptyLevels(int iteration, int order, const std::string& mname, std::vector<int>& levs) const;
++    MEDLOADER_EXPORT void appendFieldNoProfileSBT(const MEDCouplingFieldDouble *field, const DataArray *arr, MEDFileFieldGlobsReal& glob);
++    MEDLOADER_EXPORT void appendFieldProfile(const MEDCouplingFieldDouble *field, const DataArray *arr, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, MEDFileFieldGlobsReal& glob, bool smartPflKiller);
++    MEDLOADER_EXPORT std::vector< std::vector< std::pair<int,int> > > getFieldSplitedByType(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
++    MEDLOADER_EXPORT std::vector< std::vector<TypeOfField> > getTypesOfFieldAvailable() const;
++    MEDLOADER_EXPORT DataArray *getUndergroundDataArray(int iteration, int order) const;
++    MEDLOADER_EXPORT DataArray *getUndergroundDataArrayExt(int iteration, int order, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++    MEDLOADER_EXPORT bool renumberEntitiesLyingOnMesh(const std::string& meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N, MEDFileFieldGlobsReal& glob);
++    MEDLOADER_EXPORT void accept(MEDFileFieldVisitor& visitor) const;
++    MEDLOADER_EXPORT void loadStructureOrStructureAndBigArraysRecursively(med_idt fid, int nbPdt, med_field_type fieldTyp, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
++    MEDLOADER_EXPORT void writeLL(med_idt fid, const MEDFileWritable& opts) const;
++    MEDLOADER_EXPORT void loadBigArraysRecursively(med_idt fid, const MEDFileFieldNameScope& nasc);
++    MEDLOADER_EXPORT void loadBigArraysRecursivelyIfNecessary(med_idt fid, const MEDFileFieldNameScope& nasc);
++    MEDLOADER_EXPORT void unloadArrays();
++  public:
++    MEDLOADER_EXPORT const MEDFileAnyTypeField1TSWithoutSDA *getTimeStepAtPos2(int pos) const;
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA *getTimeStepAtPos2(int pos);
++    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsed2() const;
++    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsed2() const;
++    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsedMulti2() const;
++    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsedMulti2() const;
++    MEDLOADER_EXPORT void changePflsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    MEDLOADER_EXPORT void changeLocsRefsNamesGen2(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    MEDLOADER_EXPORT void setIteration(int i, MCAuto<MEDFileAnyTypeField1TSWithoutSDA> ts);
++  protected:
++    virtual med_field_type getMEDFileFieldType() const = 0;
++    void copyTinyInfoFrom(const MEDCouplingFieldDouble *field, const DataArray *arr);
++    void checkCoherencyOfTinyInfo(const MEDCouplingFieldDouble *field, const DataArray *arr) const;
++    void checkThatComponentsMatch(const std::vector<std::string>& compos) const;
++    void checkThatNbOfCompoOfTSMatchThis() const;
++  protected:
++    std::vector<std::string> _infos;
++    std::vector< MCAuto<MEDFileAnyTypeField1TSWithoutSDA> > _time_steps;
++  };
++
++  class MEDFileIntFieldMultiTSWithoutSDA;
++
++  template<class T>
++  class MEDFileTemplateFieldMultiTSWithoutSDA : public MEDFileAnyTypeFieldMultiTSWithoutSDA
++  {
++  public:
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSWSDAType *New(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
++    MEDLOADER_EXPORT const char *getTypeStr() const;
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *createNew() const;
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TSWithoutSDA *createNew1TSWithoutSDAEmptyInstance() const;
++  protected:
++    MEDFileTemplateFieldMultiTSWithoutSDA() { }
++    MEDFileTemplateFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileAnyTypeFieldMultiTSWithoutSDA(fieldName,meshName) { }
++    /** \param [in] fieldId field id in C mode */
++    MEDFileTemplateFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileAnyTypeFieldMultiTSWithoutSDA(fid,fieldId,loadAll,ms,entities) { }
++    MEDFileTemplateFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileAnyTypeFieldMultiTSWithoutSDA(fid,fieldName,meshName,fieldTyp,infos,nbOfStep,dtunit,loadAll,ms,entities) { }
++    void checkCoherencyOfType(const MEDFileAnyTypeField1TSWithoutSDA *f1ts) const;
++  };
++  
++  class MEDFileFieldMultiTSWithoutSDA : public MEDFileTemplateFieldMultiTSWithoutSDA<double>
++  {
++    friend class MEDFileTemplateFieldMultiTSWithoutSDA<double>;
++  public:
++    MEDLOADER_EXPORT MEDFileFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileTemplateFieldMultiTSWithoutSDA<double>(fid,fieldId,loadAll,ms,entities) { }
++    MEDLOADER_EXPORT std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
++    MEDLOADER_EXPORT MEDFileIntFieldMultiTSWithoutSDA *convertToInt() const;
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *shallowCpy() const { return new MEDFileFieldMultiTSWithoutSDA(*this); }
++  protected:
++    MEDFileFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileTemplateFieldMultiTSWithoutSDA<double>(fieldName,meshName) { }
++    MEDFileFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileTemplateFieldMultiTSWithoutSDA<double>(fid,fieldName,meshName,fieldTyp,infos,nbOfStep,dtunit,loadAll,ms,entities) { }
++    med_field_type getMEDFileFieldType() const { return MED_FLOAT64; }
++  public:
++    MEDLOADER_EXPORT MEDFileFieldMultiTSWithoutSDA() { }
++  };
++
++  template<class T>
++  class MEDFileNDTemplateFieldMultiTSWithoutSDA : public MEDFileTemplateFieldMultiTSWithoutSDA<T>
++  {
++  public:
++    MEDLOADER_EXPORT MEDFileFieldMultiTSWithoutSDA *convertToDouble() const;
++  protected:
++    MEDFileNDTemplateFieldMultiTSWithoutSDA() { }
++    MEDFileNDTemplateFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileTemplateFieldMultiTSWithoutSDA<T>(fid,fieldId,loadAll,ms,entities) { }
++    MEDFileNDTemplateFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileTemplateFieldMultiTSWithoutSDA<T>(fieldName,meshName) { }
++    MEDFileNDTemplateFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileTemplateFieldMultiTSWithoutSDA<T>(fid,fieldName,meshName,fieldTyp,infos,nbOfStep,dtunit,loadAll,ms,entities) { }
++  };
++
++  class MEDFileIntFieldMultiTSWithoutSDA : public MEDFileNDTemplateFieldMultiTSWithoutSDA<int>
++  {
++    friend class MEDFileTemplateFieldMultiTSWithoutSDA<int>;
++  public:
++    MEDLOADER_EXPORT MEDFileIntFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileNDTemplateFieldMultiTSWithoutSDA<int>(fid,fieldId,loadAll,ms,entities) { }
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *shallowCpy() const { return new MEDFileIntFieldMultiTSWithoutSDA(*this); }
++  protected:
++    MEDFileIntFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileNDTemplateFieldMultiTSWithoutSDA<int>(fieldName,meshName) { }
++    MEDFileIntFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileNDTemplateFieldMultiTSWithoutSDA<int>(fid,fieldName,meshName,fieldTyp,infos,nbOfStep,dtunit,loadAll,ms,entities) { }
++    med_field_type getMEDFileFieldType() const { return MED_INT32; }
++  public:
++    MEDLOADER_EXPORT MEDFileIntFieldMultiTSWithoutSDA() { }
++  };
++
++  class MEDFileFloatFieldMultiTSWithoutSDA : public MEDFileNDTemplateFieldMultiTSWithoutSDA<float>
++  {
++    friend class MEDFileTemplateFieldMultiTSWithoutSDA<float>;
++  public:
++    MEDLOADER_EXPORT MEDFileFloatFieldMultiTSWithoutSDA(med_idt fid, int fieldId, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileNDTemplateFieldMultiTSWithoutSDA<float>(fid,fieldId,loadAll,ms,entities) { }
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSWithoutSDA *shallowCpy() const { return new MEDFileFloatFieldMultiTSWithoutSDA(*this); }
++  protected:
++    MEDFileFloatFieldMultiTSWithoutSDA(const std::string& fieldName, const std::string& meshName):MEDFileNDTemplateFieldMultiTSWithoutSDA<float>(fieldName,meshName) { }
++    MEDFileFloatFieldMultiTSWithoutSDA(med_idt fid, const std::string& fieldName, const std::string& meshName, med_field_type fieldTyp, const std::vector<std::string>& infos, int nbOfStep, const std::string& dtunit, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileNDTemplateFieldMultiTSWithoutSDA<float>(fid,fieldName,meshName,fieldTyp,infos,nbOfStep,dtunit,loadAll,ms,entities) { }
++    med_field_type getMEDFileFieldType() const { return MED_FLOAT32; }
++  public:
++    MEDLOADER_EXPORT MEDFileFloatFieldMultiTSWithoutSDA() { }
++  };
++
++  class MEDFileAnyTypeFieldMultiTSIterator;
++  class MEDFileFastCellSupportComparator;
++  /*!
++   * User class.
++   */
++  class MEDFileAnyTypeFieldMultiTS : public RefCountObject, public MEDFileWritableStandAlone, public MEDFileFieldGlobsReal
++  {
++  protected:
++    MEDFileAnyTypeFieldMultiTS();
++    MEDFileAnyTypeFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms);
++    MEDFileAnyTypeFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
++    MEDFileAnyTypeFieldMultiTS(const MEDFileAnyTypeFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent);
++    static MEDFileAnyTypeFieldMultiTS *BuildNewInstanceFromContent(MEDFileAnyTypeFieldMultiTSWithoutSDA *c, med_idt fid);
++    static MEDFileAnyTypeFieldMultiTSWithoutSDA *BuildContentFrom(med_idt fid, bool loadAll, const MEDFileMeshes *ms);
++    static MEDFileAnyTypeFieldMultiTSWithoutSDA *BuildContentFrom(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities);
++  public:
++    MEDLOADER_EXPORT static MEDFileAnyTypeFieldMultiTS *New(const std::string& fileName, bool loadAll=true);
++    MEDLOADER_EXPORT static MEDFileAnyTypeFieldMultiTS *New(med_idt fid, bool loadAll=true);
++    MEDLOADER_EXPORT static MEDFileAnyTypeFieldMultiTS *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
++    MEDLOADER_EXPORT static MEDFileAnyTypeFieldMultiTS *New(med_idt fid, const std::string& fieldName, bool loadAll=true);
++    MEDLOADER_EXPORT static MEDFileAnyTypeFieldMultiTS *BuildNewInstanceFromContent(MEDFileAnyTypeFieldMultiTSWithoutSDA *c);
++    MEDLOADER_EXPORT void loadArrays();
++    MEDLOADER_EXPORT void loadArraysIfNecessary();
++    MEDLOADER_EXPORT void unloadArrays();
++    MEDLOADER_EXPORT void unloadArraysWithoutDataLoss();
++    MEDLOADER_EXPORT void writeLL(med_idt fid) const;
++    MEDLOADER_EXPORT std::size_t getHeapMemorySizeWithoutChildren() const;
++    MEDLOADER_EXPORT std::vector<const BigMemoryObject *> getDirectChildrenWithNull() const;
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTS *deepCopy() const;
++    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > splitComponents() const;
++    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > splitDiscretizations() const;
++    MEDLOADER_EXPORT std::vector< MCAuto< MEDFileAnyTypeFieldMultiTS > > splitMultiDiscrPerGeoTypes() const;
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTS *shallowCpy() const = 0;
++    MEDLOADER_EXPORT virtual void checkCoherencyOfType(const MEDFileAnyTypeField1TS *f1ts) const = 0;
++    //
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeField1TS *getTimeStepAtPos(int pos) const = 0;
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TS *getTimeStep(int iteration, int order) const;
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TS *getTimeStepGivenTime(double time, double eps=1e-8) const;
++    MEDLOADER_EXPORT static std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > SplitIntoCommonTimeSeries(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS);
++    MEDLOADER_EXPORT static std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > SplitPerCommonSupport(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS, const MEDFileMesh *mesh, std::vector< MCAuto<MEDFileFastCellSupportComparator> >& fsc);
++    MEDLOADER_EXPORT static int CheckSupportAcrossTime(MEDFileAnyTypeFieldMultiTS *f0, MEDFileAnyTypeFieldMultiTS *f1, const MEDFileMesh *mesh, TypeOfField& tof0, TypeOfField& tof1);
++  public:// direct forwarding to MEDFileField1TSWithoutSDA instance _content
++    MEDLOADER_EXPORT std::string getName() const;
++    MEDLOADER_EXPORT void setName(const std::string& name);
++    MEDLOADER_EXPORT std::string getDtUnit() const;
++    MEDLOADER_EXPORT void setDtUnit(const std::string& dtUnit);
++    MEDLOADER_EXPORT std::string getMeshName() const;
++    MEDLOADER_EXPORT void setMeshName(const std::string& newMeshName);
++    MEDLOADER_EXPORT std::string simpleRepr() const;
++    MEDLOADER_EXPORT void simpleRepr(int bkOffset, std::ostream& oss, int fmtsId) const;
++    MEDLOADER_EXPORT int getNumberOfTS() const;
++    MEDLOADER_EXPORT void eraseEmptyTS();
++    MEDLOADER_EXPORT void eraseTimeStepIds(const int *startIds, const int *endIds);
++    MEDLOADER_EXPORT void eraseTimeStepIds2(int bg, int end, int step);
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *buildSubPart(const int *startIds, const int *endIds) const;
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *buildSubPartSlice(int bg, int end, int step) const;
++    MEDLOADER_EXPORT std::vector< std::pair<int,int> > getTimeSteps(std::vector<double>& ret1) const;
++    MEDLOADER_EXPORT std::vector< std::pair<int,int> > getIterations() const;
++    MEDLOADER_EXPORT void pushBackTimeSteps(const std::vector<MEDFileAnyTypeField1TS *>& f1ts);
++    MEDLOADER_EXPORT void pushBackTimeSteps(MEDFileAnyTypeFieldMultiTS *fmts);
++    MEDLOADER_EXPORT void pushBackTimeStep(MEDFileAnyTypeField1TS *f1ts);
++    MEDLOADER_EXPORT void synchronizeNameScope();
++    MEDLOADER_EXPORT int getPosOfTimeStep(int iteration, int order) const;
++    MEDLOADER_EXPORT int getPosGivenTime(double time, double eps=1e-8) const;
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSIterator *iterator();
++    MEDLOADER_EXPORT bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab);
++    MEDLOADER_EXPORT const std::vector<std::string>& getInfo() const;
++    MEDLOADER_EXPORT bool presenceOfMultiDiscPerGeoType() const;
++    MEDLOADER_EXPORT void setInfo(const std::vector<std::string>& info);
++    MEDLOADER_EXPORT int getNumberOfComponents() const;
++    MEDLOADER_EXPORT int getNonEmptyLevels(int iteration, int order, const std::string& mname, std::vector<int>& levs) const;
++    MEDLOADER_EXPORT std::vector< std::vector<TypeOfField> > getTypesOfFieldAvailable() const;
++    MEDLOADER_EXPORT std::vector< std::vector< std::pair<int,int> > > getFieldSplitedByType(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
++    MEDLOADER_EXPORT MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> getContent();
++  public:
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTS *buildNewEmpty() const = 0;
++    MEDLOADER_EXPORT virtual MEDFileAnyTypeFieldMultiTS *extractPart(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const = 0;
++    MEDLOADER_EXPORT static MCAuto<MEDFileAnyTypeFieldMultiTS> Aggregate(const std::vector<const MEDFileAnyTypeFieldMultiTS *>& fmtss, const std::vector< std::vector< std::pair<int,int> > >& dts);
++  public:
++    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsed() const;
++    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsed() const;
++    MEDLOADER_EXPORT std::vector<std::string> getPflsReallyUsedMulti() const;
++    MEDLOADER_EXPORT std::vector<std::string> getLocsReallyUsedMulti() const;
++    MEDLOADER_EXPORT void changePflsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++    MEDLOADER_EXPORT void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif);
++  protected:
++    MEDFileAnyTypeFieldMultiTSWithoutSDA *contentNotNullBase();
++    const MEDFileAnyTypeFieldMultiTSWithoutSDA *contentNotNullBase() const;
++  private:
++    static std::vector< std::vector<MEDFileAnyTypeFieldMultiTS *> > SplitPerCommonSupportNotNodesAlg(const std::vector<MEDFileAnyTypeFieldMultiTS *>& vectFMTS, const MEDFileMesh *mesh, std::vector< MCAuto<MEDFileFastCellSupportComparator> >& cmps);
++  protected:
++    MCAuto<MEDFileAnyTypeFieldMultiTSWithoutSDA> _content;
++  };
++
++  template<class T>
++  class MEDFileTemplateFieldMultiTS : public MEDFileAnyTypeFieldMultiTS
++  {
++  public:
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New();
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(const std::string& fileName, bool loadAll=true);
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(med_idt fid, bool loadAll=true);
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(DataArrayByte *db) { return BuildFromMemoryChunk<typename MLFieldTraits<T>::FMTSType>(db); }
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(const std::string& fileName, const std::string& fieldName, bool loadAll=true);
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(med_idt fid, const std::string& fieldName, bool loadAll=true);
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *New(const typename MLFieldTraits<T>::FMTSWSDAType& other, bool shallowCopyOfContent);
++    MEDLOADER_EXPORT static typename MLFieldTraits<T>::FMTSType *LoadSpecificEntities(const std::string& fileName, const std::string& fieldName, const std::vector< std::pair<TypeOfField,INTERP_KERNEL::NormalizedCellType> >& entities, bool loadAll=true);
++    MEDLOADER_EXPORT typename MLFieldTraits<T>::FMTSType *extractPartImpl(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const;
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *extractPart(const std::map<int, MCAuto<DataArrayInt> >& extractDef, MEDFileMesh *mm) const { return this->extractPartImpl(extractDef,mm); }
++    //
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *field(int iteration, int order, const MEDFileMesh *mesh) const;
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, int renumPol=0) const;
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtTopLevel(TypeOfField type, int iteration, int order, int renumPol=0) const;
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh, int renumPol=0) const;
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldOnMeshAtLevel(TypeOfField type, int iteration, int order, const MEDCouplingMesh *mesh, int renumPol=0) const;
++    MEDLOADER_EXPORT typename Traits<T>::FieldType *getFieldAtLevelOld(TypeOfField type, int iteration, int order, const std::string& mname, int meshDimRelToMax, int renumPol=0) const;
++    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getFieldWithProfile(TypeOfField type, int iteration, int order, int meshDimRelToMax, const MEDFileMesh *mesh, DataArrayInt *&pfl) const;
++    //
++    MEDLOADER_EXPORT void appendFieldNoProfileSBT(const typename Traits<T>::FieldType *field);
++    MEDLOADER_EXPORT void appendFieldProfile(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
++    MEDLOADER_EXPORT void appendFieldProfileFlatly(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile);
++    //
++    MEDLOADER_EXPORT typename MLFieldTraits<T>::F1TSType *getTimeStepAtPos(int pos) const;
++    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArray(int iteration, int order) const;
++    MEDLOADER_EXPORT typename Traits<T>::ArrayType *getUndergroundDataArrayExt(int iteration, int order, std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > >& entries) const;
++    MEDLOADER_EXPORT typename MLFieldTraits<T>::FMTSType *buildNewEmptyImpl() const;
++    MEDLOADER_EXPORT void checkCoherencyOfType(const MEDFileAnyTypeField1TS *f1ts) const;
++  protected:
++    const typename MLFieldTraits<T>::FMTSWSDAType *contentNotNull() const;
++    typename MLFieldTraits<T>::FMTSWSDAType *contentNotNull();
++    void appendFieldProfileGeneral(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, bool smartPflKiller);
++  protected:
++    ~MEDFileTemplateFieldMultiTS() { }
++    MEDFileTemplateFieldMultiTS();
++    MEDFileTemplateFieldMultiTS(const typename MLFieldTraits<T>::FMTSWSDAType& other, bool shallowCopyOfContent);
++    MEDFileTemplateFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms);
++    MEDFileTemplateFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
++  };
++  
++  class MEDFileIntFieldMultiTS;
++
++  /*!
++   * User class.
++   */
++  class MEDFileFieldMultiTS : public MEDFileTemplateFieldMultiTS<double>
++  {
++    friend class MEDFileTemplateFieldMultiTS<double>;
++  public:
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *shallowCpy() const;
++    MEDLOADER_EXPORT MEDFileIntFieldMultiTS *convertToInt(bool isDeepCpyGlobs=true) const;
++    //
++    MEDLOADER_EXPORT std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(int iteration, int order, const std::string& mname, std::vector<INTERP_KERNEL::NormalizedCellType>& types, std::vector< std::vector<TypeOfField> >& typesF, std::vector< std::vector<std::string> >& pfls, std::vector< std::vector<std::string> >& locs) const;
++    MEDLOADER_EXPORT MEDFileFieldMultiTS *buildNewEmpty() const { return buildNewEmptyImpl(); }
++  public:
++  private:
++    ~MEDFileFieldMultiTS() { }
++    MEDFileFieldMultiTS() { }
++    MEDFileFieldMultiTS(const MEDFileFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent);
++    MEDFileFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms);
++    MEDFileFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0);
++  };
++
++  template<class T>
++  class MEDFileNDTemplateFieldMultiTS : public MEDFileTemplateFieldMultiTS<T>
++  {
++  public:
++    MEDLOADER_EXPORT MEDFileFieldMultiTS *convertToDouble(bool isDeepCpyGlobs=true) const;
++  protected:
++    ~MEDFileNDTemplateFieldMultiTS() { }
++    MEDFileNDTemplateFieldMultiTS() { }
++    MEDFileNDTemplateFieldMultiTS(const typename MLFieldTraits<T>::FMTSWSDAType& other, bool shallowCopyOfContent):MEDFileTemplateFieldMultiTS<T>(other,shallowCopyOfContent) { }
++    MEDFileNDTemplateFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileTemplateFieldMultiTS<T>(fid,loadAll,ms) { }
++    MEDFileNDTemplateFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities):MEDFileTemplateFieldMultiTS<T>(fid,fieldName,loadAll,ms,entities) { }
++  };
++
++  /*!
++   * User class.
++   */
++  class MEDFileIntFieldMultiTS : public MEDFileNDTemplateFieldMultiTS<int>
++  {
++    friend class MEDFileTemplateFieldMultiTS<int>;
++  public:
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *shallowCpy() const { return new MEDFileIntFieldMultiTS(*this); }
++    MEDLOADER_EXPORT MEDFileIntFieldMultiTS *buildNewEmpty() const { return buildNewEmptyImpl(); }
++  private:
++    ~MEDFileIntFieldMultiTS() { }
++    MEDFileIntFieldMultiTS() { }
++    MEDFileIntFieldMultiTS(const MEDFileIntFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent):MEDFileNDTemplateFieldMultiTS<int>(other,shallowCopyOfContent) { }
++    MEDFileIntFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateFieldMultiTS<int>(fid,loadAll,ms) { }
++    MEDFileIntFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0):MEDFileNDTemplateFieldMultiTS<int>(fid,fieldName,loadAll,ms,entities) { }
++  };
++
++  /*!
++   * User class.
++   */
++  class MEDFileFloatFieldMultiTS : public MEDFileNDTemplateFieldMultiTS<float>
++  {
++    friend class MEDFileTemplateFieldMultiTS<float>;
++  public:
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTS *shallowCpy() const { return new MEDFileFloatFieldMultiTS(*this); }
++    MEDLOADER_EXPORT MEDFileFloatFieldMultiTS *buildNewEmpty() const { return buildNewEmptyImpl(); }
++  private:
++    ~MEDFileFloatFieldMultiTS() { }
++    MEDFileFloatFieldMultiTS() { }
++    MEDFileFloatFieldMultiTS(const MEDFileFloatFieldMultiTSWithoutSDA& other, bool shallowCopyOfContent):MEDFileNDTemplateFieldMultiTS<float>(other,shallowCopyOfContent) { }
++    MEDFileFloatFieldMultiTS(med_idt fid, bool loadAll, const MEDFileMeshes *ms):MEDFileNDTemplateFieldMultiTS<float>(fid,loadAll,ms) { }
++    MEDFileFloatFieldMultiTS(med_idt fid, const std::string& fieldName, bool loadAll, const MEDFileMeshes *ms, const MEDFileEntities *entities=0):MEDFileNDTemplateFieldMultiTS<float>(fid,fieldName,loadAll,ms,entities) { }
++  };
++
++  class MEDFileAnyTypeFieldMultiTSIterator
++  {
++  public:
++    MEDLOADER_EXPORT MEDFileAnyTypeFieldMultiTSIterator(MEDFileAnyTypeFieldMultiTS *fmts);
++    MEDLOADER_EXPORT ~MEDFileAnyTypeFieldMultiTSIterator();
++    MEDLOADER_EXPORT MEDFileAnyTypeField1TS *nextt();
++  private:
++    MCAuto<MEDFileAnyTypeFieldMultiTS> _fmts;
++    int _iter_id;
++    int _nb_iter;
++  };
++}
++
++#endif
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileFieldOverView.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileFieldOverView.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileFieldOverView.cxx     2018-04-19 17:04:36.758223141 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileFieldOverView.cxx     2018-04-19 17:25:17.828799155 +0200
+@@ -28,7 +28,7 @@
+ using namespace MEDCoupling;
+ const unsigned char MEDMeshMultiLev::PARAMEDMEM_2_VTKTYPE[MEDMeshMultiLev::PARAMEDMEM_2_VTKTYPE_LGTH]=
+-{1,3,21,5,9,7,22,34,23,28,255,255,255,255,10,14,13,255,12,255,24,255,16,27,255,26,255,29,255,255,25,42,36,4};
++{1,3,21,5,9,7,22,34,23,28,35,255,255,255,10,14,13,255,12,255,24,255,16,27,255,26,255,29,32,255,25,42,36,4};
+ const unsigned char MEDMeshMultiLev::HEXA27_PERM_ARRAY[27]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,24,22,21,23,20,25,26};
+@@ -1360,7 +1360,7 @@
+   if(!m)
+     throw INTERP_KERNEL::Exception("MEDCMeshMultiLev constructor 2 : null input pointer !");
+   if(gts.size()!=1 || pfls.size()!=1)
+-    throw INTERP_KERNEL::Exception("MEDCMeshMultiLev constructor 2 : lengthes of gts and pfls must be equal to one !");
++    throw INTERP_KERNEL::Exception("MEDCMeshMultiLev constructor 2 : lengths of gts and pfls must be equal to one !");
+   int mdim(m->getMeshDimension());
+   INTERP_KERNEL::NormalizedCellType gt(MEDCouplingStructuredMesh::GetGeoTypeGivenMeshDimension(mdim));
+   if(gt==gts[0])
+@@ -1456,7 +1456,7 @@
+ }
+ /*!
+- * \a param [out] isInternal if true the returned pointers are those in main data structure. If false those pointers have been built espacially for that method.
++ * \a param [out] isInternal if true the returned pointers are those in main data structure. If false those pointers have been built especially for that method.
+  */
+ std::vector< DataArrayDouble * > MEDCMeshMultiLev::buildVTUArrays(bool& isInternal) const
+ {
+@@ -1502,7 +1502,7 @@
+   if(!m)
+     throw INTERP_KERNEL::Exception("MEDCurveLinearMeshMultiLev constructor 2 : null input pointer !");
+   if(gts.size()!=1 || pfls.size()!=1)
+-    throw INTERP_KERNEL::Exception("MEDCurveLinearMeshMultiLev constructor 2 : lengthes of gts and pfls must be equal to one !");
++    throw INTERP_KERNEL::Exception("MEDCurveLinearMeshMultiLev constructor 2 : lengths of gts and pfls must be equal to one !");
+   INTERP_KERNEL::NormalizedCellType gt(MEDCouplingStructuredMesh::GetGeoTypeGivenMeshDimension(m->getMeshDimension()));
+   if(gt==gts[0])
+     {
+@@ -1680,7 +1680,7 @@
+ }
+ /*!
+- * \param [in] nbOfEntity - number of entity that can be either cells or nodes. Not other possiblity.
++ * \param [in] nbOfEntity - number of entity that can be either cells or nodes. Not other possibility.
+  * \param [in] nip - number of integration points. 1 for ON_CELLS and NO_NODES
+  */
+ void MEDFileField1TSStructItem2::checkInRange(int nbOfEntity, int nip, const MEDFileFieldGlobsReal *globs)
+@@ -2272,7 +2272,7 @@
+ /*!
+  * Returns true if presence in \a this of discretization ON_CELLS, ON_GAUSS_PT, ON_GAUSS_NE.
+- * If true is returned the pos of the easiest is returned. The easiest is the first element in \a this having the less splitted subparts.
++ * If true is returned the pos of the easiest is returned. The easiest is the first element in \a this having the less split subparts.
+  */
+ bool MEDFileField1TSStruct::presenceOfCellDiscr(int& pos) const
+ {
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileField.txx MEDCOUPLING_new/src/MEDLoader/MEDFileField.txx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileField.txx     2018-04-19 17:04:36.757223122 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileField.txx     2018-04-19 17:25:17.824799076 +0200
+@@ -199,6 +199,16 @@
+       }
+   }
++  template<class T>
++  void MEDFileField1TSTemplateWithoutSDA<T>::copyTimeInfoFrom(const typename Traits<T>::FieldType *mcf)
++  {
++    if(!mcf)
++      throw INTERP_KERNEL::Exception("MEDFileField1TSTemplateWithoutSDA<T>::copyTimeInfoFrom : input field is nullptr !");
++    int b(0),c(0);
++    double a(mcf->getTime(b,c));
++    setTime(b,c,a);
++  }
++
+   ///////////////////////////////////////////////////////
+   template<class T>
+@@ -398,6 +408,12 @@
+   }
+   template<class T>
++  void MEDFileTemplateField1TS<T>::setArray(DataArray *arr)
++  {
++    return contentNotNull()->setArray(arr);
++  }
++
++  template<class T>
+   typename Traits<T>::ArrayType *MEDFileTemplateField1TS<T>::getUndergroundDataArray() const
+   {
+     return contentNotNull()->getUndergroundDataArrayTemplate();
+@@ -438,6 +454,12 @@
+     return ret.retn();
+   }
++  template<class T>
++  void MEDFileTemplateField1TS<T>::copyTimeInfoFrom(const typename Traits<T>::FieldType *mcf)
++  {
++    contentNotNull()->copyTimeInfoFrom(mcf);
++  }
++
+   /*!
+    * This is the simplest version to fetch a field for MED structure. One drawback : if \a this is a complex field (multi spatial discretization inside a same field) this method will throw exception and more advance
+    * method should be called (getFieldOnMeshAtLevel for example).
+@@ -660,16 +682,32 @@
+    *  \throw If the data array of \a this is already allocated but has different number of
+    *         components than \a field.
+    *  \throw If elements in \a mesh are not in the order suitable for writing to the MED file.
+-   *  \sa setFieldNoProfileSBT()
++   *  \sa setFieldNoProfileSBT, setFieldProfileFlatly
+    */
+   template<class T>
+   void MEDFileTemplateField1TS<T>::setFieldProfile(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile)
+   {
++    setFieldProfileGeneral(field,mesh,meshDimRelToMax,profile,true);
++  }
++
++  /*!
++   * Same as setFieldProfile except that here profile will be created unconditionally
++   * \sa setFieldProfile
++   */
++  template<class T>
++  void MEDFileTemplateField1TS<T>::setFieldProfileFlatly(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile)
++  {
++    setFieldProfileGeneral(field,mesh,meshDimRelToMax,profile,false);
++  }
++
++  template<class T>
++  void MEDFileTemplateField1TS<T>::setFieldProfileGeneral(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, bool smartPflKiller)
++  {
+     setFileName("");
+     MCAuto<MEDCouplingFieldTemplate> ft(MEDCouplingFieldTemplate::NewWithoutCheck(*field));
+-    contentNotNull()->setFieldProfile(field->timeDiscrSafe(),ft,field->getArray(),mesh,meshDimRelToMax,profile,*this,*contentNotNull());
++    contentNotNull()->setFieldProfile(field->timeDiscrSafe(),ft,field->getArray(),mesh,meshDimRelToMax,profile,*this,*contentNotNull(),smartPflKiller);
+   }
+-
++  
+   /*!
+    * Return an extraction of \a this using \a extractDef map to specify the extraction.
+    * The keys of \a extractDef is level relative to max ext of \a mm mesh.
+@@ -1200,18 +1238,33 @@
+    *  \throw If the data array of \a this is already allocated but has different number of
+    *         components than \a field.
+    *  \throw If elements in \a mesh are not in the order suitable for writing to the MED file.
+-   *  \sa setFieldNoProfileSBT()
++   *  \sa setFieldNoProfileSBT, appendFieldProfileFlatly
+    */
+   template<class T>
+   void MEDFileTemplateFieldMultiTS<T>::appendFieldProfile(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile)
+   {
++    appendFieldProfileGeneral(field,mesh,meshDimRelToMax,profile,true);
++  }
++
++  /*!
++   * same as appendFieldProfile except that here profile is created unconditionaly
++   */
++  template<class T>
++  void MEDFileTemplateFieldMultiTS<T>::appendFieldProfileFlatly(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile)
++  {
++    appendFieldProfileGeneral(field,mesh,meshDimRelToMax,profile,false);
++  }
++
++  template<class T>
++  void MEDFileTemplateFieldMultiTS<T>::appendFieldProfileGeneral(const typename Traits<T>::FieldType *field, const MEDFileMesh *mesh, int meshDimRelToMax, const DataArrayInt *profile, bool smartPflKiller)
++  {
+     const typename Traits<T>::ArrayType *arr(NULL);
+     if(field)
+       arr=field->getArray();
+     MCAuto<MEDCouplingFieldDouble> field2(MEDFileTemplateField1TS<T>::ToFieldTemplateWithTime(field));
+-    contentNotNull()->appendFieldProfile(field2,arr,mesh,meshDimRelToMax,profile,*this);
++    contentNotNull()->appendFieldProfile(field2,arr,mesh,meshDimRelToMax,profile,*this,smartPflKiller);
+   }
+-
++  
+   template<class T>
+   const typename MLFieldTraits<T>::FMTSWSDAType *MEDFileTemplateFieldMultiTS<T>::contentNotNull() const
+   {
+@@ -1272,7 +1325,7 @@
+     typename Traits<T>::ArrayType *ret2(dynamic_cast<typename Traits<T>::ArrayType *>(ret));
+     if(!ret2)
+       {
+-        std::ostringstream oss; oss << "MEDFileTemplateFieldMultiTS<T>::getUndergroundDataArray : invalid type of data dectected ! Expecting " << MLFieldTraits<T>::F1TSWSDAType::TYPE_STR;
++        std::ostringstream oss; oss << "MEDFileTemplateFieldMultiTS<T>::getUndergroundDataArray : invalid type of data detected ! Expecting " << MLFieldTraits<T>::F1TSWSDAType::TYPE_STR;
+         throw INTERP_KERNEL::Exception(oss.str());
+       }
+     return ret2;
+@@ -1287,7 +1340,7 @@
+     typename Traits<T>::ArrayType *ret2(dynamic_cast<typename Traits<T>::ArrayType *>(ret));
+     if(!ret2)
+       {
+-        std::ostringstream oss; oss << "MEDFileTemplateFieldMultiTS<T>::getUndergroundDataArrayExt : invalid type of data dectected ! Expecting " << MLFieldTraits<T>::F1TSWSDAType::TYPE_STR;
++        std::ostringstream oss; oss << "MEDFileTemplateFieldMultiTS<T>::getUndergroundDataArrayExt : invalid type of data detected ! Expecting " << MLFieldTraits<T>::F1TSWSDAType::TYPE_STR;
+         throw INTERP_KERNEL::Exception(oss.str());
+       }
+     return ret2;
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileFieldVisitor.hxx MEDCOUPLING_new/src/MEDLoader/MEDFileFieldVisitor.hxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileFieldVisitor.hxx      2018-04-19 17:04:36.759223161 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileFieldVisitor.hxx      2018-04-19 17:25:17.860799788 +0200
+@@ -48,6 +48,7 @@
+     virtual void endPerMeshPerTypeEntry(const MEDFileFieldPerMeshPerTypeCommon *pmpt) = 0;
+     //
+     virtual void newPerMeshPerTypePerDisc(const MEDFileFieldPerMeshPerTypePerDisc *pmptpd) = 0;
++    virtual ~MEDFileFieldVisitor() { }
+   };
+ }
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileJoint.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileJoint.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileJoint.cxx     2018-04-19 17:04:36.759223161 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileJoint.cxx     2018-04-19 17:25:17.863799847 +0200
+@@ -357,7 +357,7 @@
+   if ( getNumberOfCorrespondences() != other->getNumberOfCorrespondences() )
+     return false;
+-  std::vector<int> found( getNumberOfCorrespondences(), false );
++  std::vector<bool> found( getNumberOfCorrespondences(), false );
+   for(int i=0; i<getNumberOfCorrespondences(); i++)
+     {
+       int j;
+@@ -410,6 +410,7 @@
+     }
+   return oss.str();
+ }
++
+ INTERP_KERNEL::NormalizedCellType MEDFileJointOneStep::convertGeometryType(med_geometry_type geotype)
+ {
+   INTERP_KERNEL::NormalizedCellType result=INTERP_KERNEL::NORM_ERROR;
+@@ -423,6 +424,7 @@
+     }
+   return result;
+ }
++
+ std::size_t MEDFileJoint::getHeapMemorySizeWithoutChildren() const
+ {
+   return _joint.capacity()*sizeof(MCAuto<MEDFileJointOneStep>);
+@@ -545,20 +547,22 @@
+     return false;
+   if(_domain_number!=other->_domain_number)
+     return false;
+-  std::vector<int> found( getNumberOfSteps(), false );
+-  for(int i=0; i<getNumberOfSteps(); i++)
++  int nbTS(getNumberOfSteps());
++  if(nbTS!=other->getNumberOfSteps())
++    return false;
++  std::vector<bool> found(nbTS,false);
++  for(int i=0;i<nbTS;i++)
+     {
+       int j;
+-      for(j=0; j<getNumberOfSteps(); j++)
++      for(j=0;j<nbTS;j++)
+         {
+-          if ( !found[ j ] &&
+-            getStepAtPos(i)->isEqual(other->getStepAtPos(j)))
++          if(!found[j] && getStepAtPos(i)->isEqual(other->getStepAtPos(j)))
+             {
+-              found[ j ] = true;
++              found[j]=true;
+               break;
+             }
+         }
+-      if ( j == getNumberOfSteps() )
++      if(j==nbTS)
+         return false;
+     }
+   return true;
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileMesh.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileMesh.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileMesh.cxx      2018-04-19 17:04:36.760223181 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileMesh.cxx      2018-04-19 17:25:17.810798800 +0200
+@@ -673,6 +673,35 @@
+   return ret;
+ }
++void MEDFileMesh::removeGroupAtLevel(int meshDimRelToMaxExt, const std::string& name)
++{
++  std::map<std::string, std::vector<std::string> >::iterator it(_groups.find(name));
++  std::vector<std::string> grps(getGroupsNames());
++  if(it==_groups.end())
++    {
++      std::ostringstream oss; oss << "No such groupname \"" << name << "\" !\nAvailable groups are :";
++      std::copy(grps.begin(),grps.end(),std::ostream_iterator<std::string>(oss," "));
++      throw INTERP_KERNEL::Exception(oss.str().c_str());
++    }
++  const std::vector<std::string> &famsOnGrp((*it).second);
++  std::vector<int> famIds(getFamiliesIdsOnGroup(name));
++  const DataArrayInt *famArr(getFamilyFieldAtLevel(meshDimRelToMaxExt));
++  if(!famArr)
++    return ;
++  MCAuto<DataArrayInt> vals(famArr->getDifferentValues());
++  MCAuto<DataArrayInt> famIds2(DataArrayInt::NewFromStdVector(famIds));
++  MCAuto<DataArrayInt> idsToKill(famIds2->buildIntersection(vals));
++  if(idsToKill->empty())
++    return ;
++  std::vector<std::string> newFamsOnGrp;
++  for(std::vector<std::string>::const_iterator it=famsOnGrp.begin();it!=famsOnGrp.end();it++)
++    {
++      if(!idsToKill->presenceOfValue(getFamilyId(*it)))
++         newFamsOnGrp.push_back(*it);
++    }
++  (*it).second=newFamsOnGrp;
++}
++
+ /*!
+  * Removes a group from \a this mesh.
+  *  \param [in] name - the name of the group to remove.
+@@ -680,9 +709,8 @@
+  */
+ void MEDFileMesh::removeGroup(const std::string& name)
+ {
+-  std::string oname(name);
+-  std::map<std::string, std::vector<std::string> >::iterator it=_groups.find(oname);
+-  std::vector<std::string> grps=getGroupsNames();
++  std::map<std::string, std::vector<std::string> >::iterator it=_groups.find(name);
++  std::vector<std::string> grps(getGroupsNames());
+   if(it==_groups.end())
+     {
+       std::ostringstream oss; oss << "No such groupname \"" << name << "\" !\nAvailable groups are :";
+@@ -795,7 +823,7 @@
+ }
+ /*!
+- * This method has no impact on groups. This method only works on families. This method firstly removes families not refered by any groups in \a this, then all unused entities
++ * This method has no impact on groups. This method only works on families. This method firstly removes families not referred by any groups in \a this, then all unused entities
+  * are put as belonging to family 0 ("FAMILLE_ZERO"). Finally, all orphanFamilies are killed.
+  * This method raises an exception if "FAMILLE_ZERO" is already belonging to a group.
+  *
+@@ -1256,6 +1284,19 @@
+     }
+ }
++void MEDFileMesh::checkNoGroupClash(const DataArrayInt *famArr, const std::string& grpName) const
++{
++  std::vector<std::string> grpsNames(getGroupsNames());
++  if(std::find(grpsNames.begin(),grpsNames.end(),grpName)==grpsNames.end())
++    return ;
++  std::vector<int> famIds(getFamiliesIdsOnGroup(grpName));
++  if(famArr->presenceOfValue(famIds))
++    {
++      std::ostringstream oss; oss << "MEDFileUMesh::addGroup : Group with name \"" << grpName << "\" already exists at specified level ! Destroy it before calling this method !";
++      throw INTERP_KERNEL::Exception(oss.str().c_str());
++    }
++}
++
+ /*!
+  * \param [in] ids ids and group name of the new group to add. The ids should be sorted and different each other (MED file norm).
+  * \parma [in,out] famArr family array on level of interest to be renumbered. The input pointer should be not \c NULL (no check of that will be performed)
+@@ -1268,13 +1309,8 @@
+   if(grpName.empty())
+     throw INTERP_KERNEL::Exception("MEDFileUMesh::addGroup : empty group name ! MED file format do not accept empty group name !");
+   ids->checkStrictlyMonotonic(true);
+-  famArr->incrRef(); MCAuto<DataArrayInt> famArrTmp(famArr);
+-  std::vector<std::string> grpsNames=getGroupsNames();
+-  if(std::find(grpsNames.begin(),grpsNames.end(),grpName)!=grpsNames.end())
+-    {
+-      std::ostringstream oss; oss << "MEDFileUMesh::addGroup : Group with name \"" << grpName << "\" already exists ! Destroy it before calling this method !";
+-      throw INTERP_KERNEL::Exception(oss.str().c_str());
+-    }
++  checkNoGroupClash(famArr,grpName);
++  MCAuto<DataArrayInt> famArrTmp; famArrTmp.takeRef(famArr);
+   std::list< MCAuto<DataArrayInt> > allFamIds(getAllNonNullFamilyIds());
+   allFamIds.erase(std::find(allFamIds.begin(),allFamIds.end(),famArrTmp));
+   MCAuto<DataArrayInt> famIds=famArr->selectByTupleIdSafe(ids->begin(),ids->end());
+@@ -1331,8 +1367,15 @@
+       famArr->setPartOfValuesSimple3(familyIds[i],da->begin(),da->end(),0,1,1);
+     }
+   _families=families;
++  std::map<std::string, std::vector<std::string> >::iterator itt(groups.find(grpName));
++  if(itt!=groups.end())
++    {
++      std::vector<std::string>& famsOnGrp((*itt).second);
++      famsOnGrp.insert(famsOnGrp.end(),fams.begin(),fams.end());
++    }
++  else
++    groups[grpName]=fams;
+   _groups=groups;
+-  _groups[grpName]=fams;
+ }
+ void MEDFileMesh::changeAllGroupsContainingFamily(const std::string& familyNameToChange, const std::vector<std::string>& newFamiliesNames)
+@@ -2282,7 +2325,7 @@
+ }
+ /*!
+- * \b WARNING this implementation is dependant from MEDCouplingMappedExtrudedMesh::buildUnstructured !
++ * \b WARNING this implementation is dependent from MEDCouplingMappedExtrudedMesh::buildUnstructured !
+  * \sa MEDCouplingMappedExtrudedMesh::buildUnstructured , MEDCouplingMappedExtrudedMesh::build3DUnstructuredMesh
+  */
+ MEDFileUMesh *MEDFileUMesh::New(const MEDCouplingMappedExtrudedMesh *mem)
+@@ -2776,7 +2819,7 @@
+   if(getAxisType()!=AX_CART)
+     {
+       std::ostringstream oss; oss << "MEDFileMesh::checkCartesian : request for method that is dedicated to a cartesian convention ! But you are not in cartesian convention (" << DataArray::GetAxisTypeRepr(getAxisType()) << ").";
+-      oss << std::endl << "To perform operation you have two possiblities :" << std::endl;
++      oss << std::endl << "To perform operation you have two possibilities :" << std::endl;
+       oss << " - call setAxisType(AX_CART)" << std::endl;
+       oss << " - call cartesianize()";
+       throw INTERP_KERNEL::Exception(oss.str().c_str());
+@@ -3635,7 +3678,7 @@
+ /*!
+  * This method is for advanced users. There is two storing strategy of mesh in \a this.
+  * Either MEDCouplingUMesh, or vector of MEDCoupling1GTUMesh instances.
+- * When assignement is done the first one is done, which is not optimal in write mode for MED file.
++ * When assignment is done the first one is done, which is not optimal in write mode for MED file.
+  * This method allows to switch from MEDCouplingUMesh mode to MEDCoupling1GTUMesh mode.
+  */
+ void MEDFileUMesh::forceComputationOfParts() const
+@@ -4133,12 +4176,12 @@
+ /*! \endcond */
+ /*!
+- * Array returned is the correspondance in \b old \b to \b new format. The returned array is newly created and should be dealt by the caller.
++ * Array returned is the correspondence in \b old \b to \b new format. The returned array is newly created and should be dealt by the caller.
+  * The maximum value stored in returned array is the number of nodes of \a this minus 1 after call of this method.
+  * The size of returned array is the number of nodes of the old (previous to the call of this method) number of nodes.
+  * -1 values in returned array means that the corresponding old node is no more used.
+  *
+- * \return newly allocated array containing correspondance in \b old \b to \b new format. If all nodes in \a this are fetched \c NULL pointer is returned and nothing
++ * \return newly allocated array containing correspondence in \b old \b to \b new format. If all nodes in \a this are fetched \c NULL pointer is returned and nothing
+  *         is modified in \a this.
+  * \throw If no coordinates are set in \a this or if there is in any available mesh in \a this a cell having a nodal connectivity containing a node id not in the range of
+  *  set coordinates.
+@@ -4874,7 +4917,7 @@
+   if(!coords)
+     throw INTERP_KERNEL::Exception("MEDFileUMesh::addNodeGroup : no coords set !");
+   int nbOfNodes(coords->getNumberOfTuples());
+-  if(!((DataArrayInt *)_fam_coords))
++  if(_fam_coords.isNull())
+     { _fam_coords=DataArrayInt::New(); _fam_coords->alloc(nbOfNodes,1); _fam_coords->fillWithZero(); }
+   //
+   addGroupUnderground(true,ids,_fam_coords);
+@@ -5005,7 +5048,7 @@
+  *
+  * \param [in] ms - List of unstructured meshes lying on the same coordinates and having different mesh dimesnion.
+  * \param [in] renum - the parameter (set to false by default) that tells the beheviour if there is a mesh on \a ms that is not geo type sorted.
+- *                     If false, an exception ois thrown. If true the mesh is reordered automatically. It is highly recommanded to let this parameter to false.
++ *                     If false, an exception is thrown. If true the mesh is reordered automatically. It is highly recommended to let this parameter to false.
+  *
+  * \throw If \a there is a null pointer in \a ms.
+  * \sa MEDFileUMesh::setMeshAtLevel
+@@ -6095,7 +6138,7 @@
+ }
+ /*!
+- * Returns a pointer to mesh at the specified level (here 0 is compulsary for cartesian mesh).
++ * Returns a pointer to mesh at the specified level (here 0 is compulsory for cartesian mesh).
+  * 
+  * \return a pointer to cartesian mesh that need to be managed by the caller.
+  * \warning the returned pointer has to be managed by the caller.
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileMeshElt.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileMeshElt.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileMeshElt.cxx   2018-04-19 17:04:36.761223201 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileMeshElt.cxx   2018-04-19 17:25:17.865799887 +0200
+@@ -141,7 +141,7 @@
+           nbOfElt=tmp;
+           whichEntity=entities[i];
+           if(i>0)
+-            std::cerr << "WARNING : MEDFile has been detected to be no compilant with MED 3 : Please change entity in MEDFile for geotype " <<  geoElt << std::endl;
++            std::cerr << "WARNING : MEDFile has been detected to be noncompliant with MED 3 : Please change entity in MEDFile for geotype " <<  geoElt << std::endl;
+         }
+     }
+   return nbOfElt>0;
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileMesh.hxx MEDCOUPLING_new/src/MEDLoader/MEDFileMesh.hxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileMesh.hxx      2018-04-19 17:04:36.761223201 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileMesh.hxx      2018-04-19 17:25:17.831799215 +0200
+@@ -136,6 +136,7 @@
+     MEDLOADER_EXPORT static std::string GetMagicFamilyStr();
+     MEDLOADER_EXPORT void assignFamilyNameWithGroupName();
+     MEDLOADER_EXPORT std::vector<std::string> removeEmptyGroups();
++    MEDLOADER_EXPORT void removeGroupAtLevel(int meshDimRelToMaxExt, const std::string& name);
+     MEDLOADER_EXPORT void removeGroup(const std::string& name);
+     MEDLOADER_EXPORT void removeFamily(const std::string& name);
+     MEDLOADER_EXPORT std::vector<std::string> removeOrphanGroups();
+@@ -227,6 +228,7 @@
+     bool areEquivalencesEqual(const MEDFileMesh *other, std::string& what) const;
+     void getEquivalencesRepr(std::ostream& oss) const;
+     void checkCartesian() const;
++    void checkNoGroupClash(const DataArrayInt *famArr, const std::string& grpName) const;
+   private:
+     virtual void writeMeshLL(med_idt fid) const = 0;
+   protected:
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileMeshLL.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileMeshLL.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileMeshLL.cxx    2018-04-19 17:04:36.761223201 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileMeshLL.cxx    2018-04-19 17:25:17.851799610 +0200
+@@ -331,7 +331,7 @@
+       INTERP_KERNEL::AutoPtr<char> groName=MEDLoaderBase::buildEmptyString(MED_LNAME_SIZE*ngro);
+       int i=0;
+       for(std::vector<std::string>::const_iterator it2=(*it).second.second.begin();it2!=(*it).second.second.end();it2++,i++)
+-        MEDLoaderBase::safeStrCpy2((*it2).c_str(),MED_LNAME_SIZE-1,groName+i*MED_LNAME_SIZE,tooLongStrPol);
++        MEDLoaderBase::safeStrCpy2((*it2).c_str(),MED_LNAME_SIZE,groName+i*MED_LNAME_SIZE,tooLongStrPol);
+       INTERP_KERNEL::AutoPtr<char> famName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE);
+       MEDLoaderBase::safeStrCpy((*it).first.c_str(),MED_NAME_SIZE,famName,tooLongStrPol);
+       int ret=MEDfamilyCr(fid,mname.c_str(),famName,(*it).second.first,ngro,groName);
+@@ -354,7 +354,7 @@
+ /*!
+  * This method is dedicated to the killers that use a same family name to store different family ids. MED file API authorizes it.
+- * So this method renames families (if needed generaly not !) in order to have a discriminant name for families.
++ * So this method renames families (if needed generally not !) in order to have a discriminant name for families.
+  */
+ void MEDFileMeshL2::RenameFamiliesFromFileToMemInternal(std::vector< std::pair<std::string,std::pair<int,std::vector<std::string> > > >& crudeFams)
+ {
+@@ -387,7 +387,7 @@
+ /*!
+  * This method is dedicated to the killers that use a same family name to store different family ids. MED file API authorizes it.
+- * So this method renames families (if needed generaly not !) in order to have a discriminant name for families.
++ * So this method renames families (if needed generally not !) in order to have a discriminant name for families.
+  */
+ void MEDFileMeshL2::RenameFamiliesFromMemToFileInternal(std::vector< std::pair<std::string,std::pair<int,std::vector<std::string> > > >& crudeFams)
+ {
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDFileUtilities.cxx MEDCOUPLING_new/src/MEDLoader/MEDFileUtilities.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDFileUtilities.cxx 2018-04-19 17:04:36.762223221 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDFileUtilities.cxx 2018-04-19 17:25:17.867799926 +0200
+@@ -190,7 +190,7 @@
+ void MEDCoupling::MEDFileWritableStandAlone::write30(const std::string& fileName, int mode) const
+ {
+   med_access_mode medmod(MEDFileUtilities::TraduceWriteMode(mode));
+-#if MED_NUM_MAJEUR>=3 && MED_NUM_MINEUR>=2 && MED_NUM_RELEASE>=1
++#if MED_NUM_MAJEUR>3 || ( MED_NUM_MAJEUR==3 && ( (MED_NUM_MINEUR==2 && MED_NUM_RELEASE>=1) || MED_NUM_MINEUR>=3) )
+   MEDFileUtilities::AutoFid fid(MEDfileVersionOpen(fileName.c_str(),medmod,3,0,0));
+   writeLL(fid);
+ #else
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDLoaderBase.cxx MEDCOUPLING_new/src/MEDLoader/MEDLoaderBase.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDLoaderBase.cxx    2018-04-19 17:04:36.762223221 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDLoaderBase.cxx    2018-04-19 17:25:17.862799828 +0200
+@@ -130,7 +130,7 @@
+ /*!
+  * This method operates a safe copy from 'src' to 'dest' by checking the size of 'src' before trying to copy.
+- * If size of 'src' string is higher than 'maxLgth' the behaviour is dependant from 'behaviour' parameter.
++ * If size of 'src' string is higher than 'maxLgth' the behaviour is dependent from 'behaviour' parameter.
+  * If 'behaviour' equals 0 an exception is thrown. If 'behaviour' equals 1 an attempt of zipping of string will be done
+  * ( see zipString to have more details).
+  */
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDLoader.cxx MEDCOUPLING_new/src/MEDLoader/MEDLoader.cxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDLoader.cxx        2018-04-19 17:04:36.762223221 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDLoader.cxx        2018-04-19 17:25:17.735797317 +0200
+@@ -29,7 +29,10 @@
+ #include "MEDCouplingUMesh.hxx"
+ #include "MEDCouplingMemArray.hxx"
+ #include "MEDCouplingFieldDouble.hxx"
++#include "MEDCouplingFieldFloat.hxx"
++#include "MEDCouplingFieldInt.hxx"
+ #include "MEDCouplingGaussLocalization.hxx"
++#include "MEDCouplingTraits.hxx"
+ #include "MCAuto.hxx"
+ #include "InterpKernelAutoPtr.hxx"
+@@ -64,6 +67,7 @@
+   MED_TETRA10,
+   MED_PYRA13,
+   MED_PENTA15,
++  MED_PENTA18,
+   MED_HEXA20,
+   MED_HEXA27,
+   MED_POLYGON,
+@@ -90,6 +94,7 @@
+   INTERP_KERNEL::NORM_TETRA10,
+   INTERP_KERNEL::NORM_PYRA13,
+   INTERP_KERNEL::NORM_PENTA15,
++  INTERP_KERNEL::NORM_PENTA18,
+   INTERP_KERNEL::NORM_HEXA20,
+   INTERP_KERNEL::NORM_HEXA27,
+   INTERP_KERNEL::NORM_POLYGON,
+@@ -124,7 +129,7 @@
+   MED_PENTA15,//25
+   MED_NONE,//26
+   MED_HEXA27,//27
+-  MED_NONE,//28
++  MED_PENTA18,//28
+   MED_NONE,//29
+   MED_HEXA20,//30
+   MED_POLYHEDRON,//31
+@@ -308,7 +313,7 @@
+ std::string MEDCoupling::MEDFileVersionOfFileStr(const std::string& fileName)
+ {
+-#if MED_NUM_MAJEUR>=3 && MED_NUM_MINEUR>=2 && MED_NUM_RELEASE>=1
++#if MED_NUM_MAJEUR>3 || ( MED_NUM_MAJEUR==3 && ( (MED_NUM_MINEUR==2 && MED_NUM_RELEASE>=1) || MED_NUM_MINEUR>=3) )
+   MEDFileUtilities::AutoFid fid(MEDCoupling::OpenMEDFileForRead(fileName));
+   const int SZ=20;
+   const char START_EXPECTED[]="MED-";
+@@ -341,7 +346,7 @@
+ }
+ /*!
+- * This method sets the epsilon value used for node comparison when trying to buid a profile for a field on node/cell on an already written mesh.
++ * This method sets the epsilon value used for node comparison when trying to build a profile for a field on node/cell on an already written mesh.
+  */
+ void MEDCoupling::SetEpsilonForNodeComp(double val)
+ {
+@@ -1153,7 +1158,7 @@
+   return mmuPtr->getGroups(meshDimRelToMax,grps,true);
+ }
+-MCAuto<MEDCoupling::MEDCouplingFieldDouble> MEDCoupling::ReadField(const std::string& fileName)
++MCAuto<MEDCoupling::MEDCouplingField> MEDCoupling::ReadField(const std::string& fileName)
+ {
+   std::vector<std::string> fieldNames(GetAllFieldNames(fileName));
+   std::size_t sz(fieldNames.size());
+@@ -1176,7 +1181,7 @@
+   return ReadField(fileName,fieldNames[0]);
+ }
+-MCAuto<MEDCoupling::MEDCouplingFieldDouble> MEDCoupling::ReadField(const std::string& fileName, const std::string& fieldName)
++MCAuto<MEDCoupling::MEDCouplingField> MEDCoupling::ReadField(const std::string& fileName, const std::string& fieldName)
+ {
+   std::vector< std::pair< std::pair<int,int>, double> > iterations(GetAllFieldIterations(fileName,fieldName));
+   std::size_t sz(iterations.size());
+@@ -1199,12 +1204,38 @@
+   return ReadField(fileName,fieldName,iterations[0].first.first,iterations[0].first.second);
+ }
+-MCAuto<MEDCoupling::MEDCouplingFieldDouble> MEDCoupling::ReadField(const std::string& fileName, const std::string& fieldName, int iteration, int order)
++MCAuto<MEDCoupling::MEDCouplingField> MEDCoupling::ReadField(const std::string& fileName, const std::string& fieldName, int iteration, int order)
+ {
+-  MCAuto<MEDFileField1TS> f(MEDFileField1TS::New(fileName,fieldName,iteration,order));
++  MCAuto<MEDFileAnyTypeField1TS> f(MEDFileAnyTypeField1TS::New(fileName,fieldName,iteration,order));
+   MCAuto<MEDFileMesh> mesh(MEDFileMesh::New(fileName,f->getMeshName()));
+-  MCAuto<MEDCoupling::MEDCouplingFieldDouble> ret(f->field(mesh));
+-  return ret;
++  {
++    MCAuto<MEDFileField1TS> f1(MEDCoupling::DynamicCast<MEDFileAnyTypeField1TS,MEDFileField1TS>(f));
++    if(f1.isNotNull())
++      {
++        MCAuto<MEDCoupling::MEDCouplingFieldDouble> ret(f1->field(mesh));
++        return MEDCoupling::DynamicCast<MEDCouplingFieldDouble,MEDCouplingField>(ret);
++      }
++  }
++  {
++    MCAuto<MEDFileIntField1TS> f1(MEDCoupling::DynamicCast<MEDFileAnyTypeField1TS,MEDFileIntField1TS>(f));
++    if(f1.isNotNull())
++      {
++        MCAuto<MEDCoupling::MEDCouplingFieldInt> ret(f1->field(mesh));
++        return MEDCoupling::DynamicCast<MEDCouplingFieldInt,MEDCouplingField>(ret);
++      }
++  }
++  {
++    MCAuto<MEDFileFloatField1TS> f1(MEDCoupling::DynamicCast<MEDFileAnyTypeField1TS,MEDFileFloatField1TS>(f));
++    if(f1.isNotNull())
++      {
++        MCAuto<MEDCoupling::MEDCouplingFieldFloat> ret(f1->field(mesh));
++        return MEDCoupling::DynamicCast<MEDCouplingFieldFloat,MEDCouplingField>(ret);
++      }
++  }
++  throw INTERP_KERNEL::Exception("MEDCoupling::ReadField : only FLOAT32, FLOAT64 and INT32 supported for the moment !");
++  //MCAuto<MEDFileMesh> mesh(MEDFileMesh::New(fileName,f->getMeshName()));
++  //MCAuto<MEDCoupling::MEDCouplingFieldDouble> ret(f->field(mesh));
++  //return ret;
+ }
+ MCAuto<MEDCoupling::MEDCouplingFieldDouble> MEDCoupling::ReadField(MEDCoupling::TypeOfField type, const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order)
+@@ -1463,25 +1494,26 @@
+ void MEDCoupling::WriteUMeshes(const std::string& fileName, const std::vector<const MEDCoupling::MEDCouplingUMesh *>& meshes, bool writeFromScratch)
+ {
+-  int mod=writeFromScratch?2:0;
++  int mod(writeFromScratch?2:0);
+   MCAuto<MEDFileUMesh> m(MEDFileUMesh::New());
+   AssignStaticWritePropertiesTo(*m);
+   m->setMeshes(meshes,true);
+   m->write(fileName,mod);
+ }
+-void MEDLoaderNS::writeFieldWithoutReadingAndMappingOfMeshInFile(const std::string& fileName, const MEDCoupling::MEDCouplingFieldDouble *f, bool writeFromScratch)
++template<class T>
++void MEDLoaderNS::writeFieldWithoutReadingAndMappingOfMeshInFile(const std::string& fileName, const typename MEDCoupling::Traits<T>::FieldType *f, bool writeFromScratch)
+ {
+-  MCAuto<MEDFileField1TS> ff(MEDFileField1TS::New());
++  MCAuto< typename MLFieldTraits<T>::F1TSType > ff(MLFieldTraits<T>::F1TSType::New());
+   AssignStaticWritePropertiesTo(*ff);
+-  MCAuto<MEDCouplingFieldDouble> f2(f->deepCopy());
++  MCAuto<typename MEDCoupling::Traits<T>::FieldType> f2(f->deepCopy());
+   const MEDCouplingMesh *m(f2->getMesh());
+   const MEDCouplingUMesh *um(dynamic_cast<const MEDCouplingUMesh *>(m));
+   const MEDCoupling1GTUMesh *um2(dynamic_cast<const MEDCoupling1GTUMesh *>(m));
+   const MEDCouplingCMesh *um3(dynamic_cast<const MEDCouplingCMesh *>(m));
+   const MEDCouplingCurveLinearMesh *um4(dynamic_cast<const MEDCouplingCurveLinearMesh *>(m));
+   MCAuto<MEDFileMesh> mm;
+-  int mod=writeFromScratch?2:0;
++  int mod(writeFromScratch?2:0);
+   if(um)
+     {
+       MCAuto<MEDFileUMesh> mmu(MEDFileUMesh::New());
+@@ -1523,12 +1555,13 @@
+   ff->write(fileName,0);
+ }
+-void MEDCoupling::WriteField(const std::string& fileName, const MEDCoupling::MEDCouplingFieldDouble *f, bool writeFromScratch)
++template<class T>
++void WriteFieldT(const std::string& fileName, const typename MEDCoupling::Traits<T>::FieldType *f, bool writeFromScratch)
+ {
+   if(!f)
+     throw INTERP_KERNEL::Exception("WriteField : input field is NULL !");
+   f->checkConsistencyLight();
+-  int status=MEDLoaderBase::getStatusOfFile(fileName);
++  int status(MEDLoaderBase::getStatusOfFile(fileName));
+   if(status!=MEDLoaderBase::EXIST_RW && status!=MEDLoaderBase::NOT_EXIST)
+     {
+       std::ostringstream oss; oss << "File with name \'" << fileName << "\' has not valid permissions !";
+@@ -1536,44 +1569,44 @@
+     }
+   if(writeFromScratch || (!writeFromScratch && status==MEDLoaderBase::NOT_EXIST))
+     {
+-      MEDLoaderNS::writeFieldWithoutReadingAndMappingOfMeshInFile(fileName,f,true);
++      MEDLoaderNS::writeFieldWithoutReadingAndMappingOfMeshInFile<T>(fileName,f,true);
+     }
+   else
+     {
+-      std::vector<std::string> meshNames=GetMeshNames(fileName);
++      std::vector<std::string> meshNames(GetMeshNames(fileName));
+       if(!f->getMesh())
+         throw INTERP_KERNEL::Exception("WriteField : trying to write a field with no mesh !");
+       std::string fileNameCpp(f->getMesh()->getName());
+       if(std::find(meshNames.begin(),meshNames.end(),fileNameCpp)==meshNames.end())
+-        MEDLoaderNS::writeFieldWithoutReadingAndMappingOfMeshInFile(fileName,f,false);
++        MEDLoaderNS::writeFieldWithoutReadingAndMappingOfMeshInFile<T>(fileName,f,false);
+       else
+         {
+           MCAuto<MEDFileMesh> mm(MEDFileMesh::New(fileName,f->getMesh()->getName().c_str()));
+           AssignStaticWritePropertiesTo(*mm);
+           const MEDFileMesh *mmPtr(mm);
+-          const MEDFileUMesh *mmuPtr=dynamic_cast<const MEDFileUMesh *>(mmPtr);
++          const MEDFileUMesh *mmuPtr(dynamic_cast<const MEDFileUMesh *>(mmPtr));
+           if(!mmuPtr)
+             throw INTERP_KERNEL::Exception("WriteField : only umeshes are supported now !");
+-          MCAuto<MEDCouplingFieldDouble> f2(f->deepCopy());
+-          MEDCouplingUMesh *m=dynamic_cast<MEDCouplingUMesh *>(const_cast<MEDCouplingMesh *>(f2->getMesh()));
++          MCAuto< typename MEDCoupling::Traits<T>::FieldType > f2(f->deepCopy());
++          MEDCouplingUMesh *m(dynamic_cast<MEDCouplingUMesh *>(const_cast<MEDCouplingMesh *>(f2->getMesh())));
+           if(!m)
+             throw INTERP_KERNEL::Exception("WriteField : only umesh in input field supported !");
+-          MCAuto<DataArrayInt> o2n=m->getRenumArrForMEDFileFrmt();
++          MCAuto<DataArrayInt> o2n(m->getRenumArrForMEDFileFrmt());
+           f2->renumberCells(o2n->begin(),false);
+           m=static_cast<MEDCouplingUMesh *>(const_cast<MEDCouplingMesh *>(f2->getMesh()));
+-          MCAuto<MEDCouplingUMesh> mread=mmuPtr->getMeshAtLevel(m->getMeshDimension()-mm->getMeshDimension());
++          MCAuto<MEDCouplingUMesh> mread(mmuPtr->getMeshAtLevel(m->getMeshDimension()-mm->getMeshDimension()));
+           if(f2->getTypeOfField()!=ON_NODES)
+             {
+               m->tryToShareSameCoordsPermute(*mread,_EPS_FOR_NODE_COMP);
+-              DataArrayInt *part=0;
+-              bool b=mread->areCellsIncludedIn(m,_COMP_FOR_CELL,part);
++              DataArrayInt *part(NULL);
++              bool b(mread->areCellsIncludedIn(m,_COMP_FOR_CELL,part));
+               MCAuto<DataArrayInt> partSafe(part);
+               if(!b)
+                 {
+                   std::ostringstream oss; oss << "WriteField : The file \""<< fileName << "\" already contains a mesh named \""<< f->getMesh()->getName() << "\" and this mesh in the file is not compatible (a subpart) with the mesh you intend to write ! This is maybe due to a too strict policy ! Try with to lease it by calling SetCompPolicyForCell !";
+                   throw INTERP_KERNEL::Exception(oss.str().c_str());
+                 }
+-              MCAuto<MEDFileField1TS> f1ts(MEDFileField1TS::New());
++              MCAuto< typename MLFieldTraits<T>::F1TSType > f1ts(MLFieldTraits<T>::F1TSType::New());
+               AssignStaticWritePropertiesTo(*f1ts);
+               if(part->isIota(mread->getNumberOfCells()))
+                 f1ts->setFieldNoProfileSBT(f2);
+@@ -1587,15 +1620,15 @@
+             }
+           else
+             {
+-              DataArrayInt *part=0;
+-              bool b=mread->getCoords()->areIncludedInMe(m->getCoords(),_EPS_FOR_NODE_COMP,part);
++              DataArrayInt *part(NULL);
++              bool b(mread->getCoords()->areIncludedInMe(m->getCoords(),_EPS_FOR_NODE_COMP,part));
+               MCAuto<DataArrayInt> partSafe(part);
+               if(!b)
+                 {
+                   std::ostringstream oss; oss << "WriteField : The file \""<< fileName << "\" already contains a mesh named \""<< f->getMesh()->getName() << "\" and this mesh in the file is not compatible (a subpart regarding nodes) with the mesh you intend to write ! This is maybe due to a too strict epsilon ! Try with to lease it by calling SetEpsilonForNodeComp !";
+                   throw INTERP_KERNEL::Exception(oss.str().c_str());
+                 }
+-              MCAuto<MEDFileField1TS> f1ts(MEDFileField1TS::New());
++              MCAuto< typename MLFieldTraits<T>::F1TSType > f1ts(MLFieldTraits<T>::F1TSType::New());
+               AssignStaticWritePropertiesTo(*f1ts);
+               if(part->isIota(mread->getNumberOfNodes()))
+                 f1ts->setFieldNoProfileSBT(f2);
+@@ -1610,29 +1643,61 @@
+     }
+ }
+-void MEDCoupling::WriteFieldDep(const std::string& fileName, const MEDCoupling::MEDCouplingFieldDouble *f, bool writeFromScratch)
++void MEDCoupling::WriteField(const std::string& fileName, const MEDCoupling::MEDCouplingField *f, bool writeFromScratch)
++{
++  if(!f)
++    throw INTERP_KERNEL::Exception("WriteField : input field is null !");
++  {
++    const MEDCoupling::MEDCouplingFieldDouble *f1(dynamic_cast<const MEDCoupling::MEDCouplingFieldDouble *>(f));
++    if(f1)
++      {
++        WriteFieldT<double>(fileName,f1,writeFromScratch);
++        return ;
++      }
++  }
++  {
++    const MEDCoupling::MEDCouplingFieldInt *f1(dynamic_cast<const MEDCoupling::MEDCouplingFieldInt *>(f));
++    if(f1)
++      {
++        WriteFieldT<int>(fileName,f1,writeFromScratch);
++        return ;
++      }
++  }
++  {
++    const MEDCoupling::MEDCouplingFieldFloat *f1(dynamic_cast<const MEDCoupling::MEDCouplingFieldFloat *>(f));
++    if(f1)
++      {
++        WriteFieldT<float>(fileName,f1,writeFromScratch);
++        return ;
++      }
++  }
++  throw INTERP_KERNEL::Exception("WriteField : input field is not in FLOAT32, FLOAT64, INT32 !");
++}
++
++void MEDCoupling::WriteFieldDep(const std::string& fileName, const MEDCoupling::MEDCouplingField *f, bool writeFromScratch)
+ {
+   WriteField(fileName,f,writeFromScratch);
+ }
+-void MEDCoupling::WriteFieldUsingAlreadyWrittenMesh(const std::string& fileName, const MEDCoupling::MEDCouplingFieldDouble *f)
++template<class T>
++void WriteFieldUsingAlreadyWrittenMeshT(const std::string& fileName, const typename MEDCoupling::Traits<T>::FieldType *f)
+ {
+   if(!f)
+-    throw INTERP_KERNEL::Exception("WriteFieldUsingAlreadyWrittenMesh : input field is null !");
++    throw INTERP_KERNEL::Exception("WriteFieldUsingAlreadyWrittenMeshT : input field is null !");
+   f->checkConsistencyLight();
+-  int status=MEDLoaderBase::getStatusOfFile(fileName);
++  int status(MEDLoaderBase::getStatusOfFile(fileName));
+   if(status!=MEDLoaderBase::EXIST_RW)
+     {
+       std::ostringstream oss; oss << "File with name \'" << fileName << "\' has not valid permissions or not exists !";
+       throw INTERP_KERNEL::Exception(oss.str().c_str());
+     }
+-  MCAuto<MEDFileField1TS> f1ts(MEDFileField1TS::New());
++  MCAuto< typename MLFieldTraits<T>::F1TSType > f1ts(MLFieldTraits<T>::F1TSType::New());
+   AssignStaticWritePropertiesTo(*f1ts);
+   MEDCouplingUMesh *m(dynamic_cast<MEDCouplingUMesh *>(const_cast<MEDCouplingMesh *>(f->getMesh())));
+   if(m)
+     {
+       MCAuto<DataArrayInt> o2n(m->getRenumArrForMEDFileFrmt());
+-      MCAuto<MEDCouplingFieldDouble> f2(f->deepCopy());
++      MCAuto< typename MEDCoupling::Traits<T>::FieldType > f2(f->deepCopy());
+       f2->renumberCells(o2n->begin(),false);
+       f1ts->setFieldNoProfileSBT(f2);
+     }
+@@ -1640,3 +1705,28 @@
+     f1ts->setFieldNoProfileSBT(f);
+   f1ts->write(fileName,0);
+ }
++
++void MEDCoupling::WriteFieldUsingAlreadyWrittenMesh(const std::string& fileName, const MEDCoupling::MEDCouplingField *f)
++{
++  if(!f)
++    throw INTERP_KERNEL::Exception("WriteFieldUsingAlreadyWrittenMesh : input field is null !");
++  {
++    const MEDCoupling::MEDCouplingFieldDouble *f1(dynamic_cast<const MEDCoupling::MEDCouplingFieldDouble *>(f));
++    if(f1)
++      WriteFieldUsingAlreadyWrittenMeshT<double>(fileName,f1);
++    return ;
++  }
++  {
++    const MEDCoupling::MEDCouplingFieldInt *f1(dynamic_cast<const MEDCoupling::MEDCouplingFieldInt *>(f));
++    if(f1)
++      WriteFieldUsingAlreadyWrittenMeshT<int>(fileName,f1);
++    return ;
++  }
++  {
++    const MEDCoupling::MEDCouplingFieldFloat *f1(dynamic_cast<const MEDCoupling::MEDCouplingFieldFloat *>(f));
++    if(f1)
++      WriteFieldUsingAlreadyWrittenMeshT<float>(fileName,f1);
++    return ;
++  }
++  throw INTERP_KERNEL::Exception("WriteFieldUsingAlreadyWrittenMesh : input field is not in FLOAT32, FLOAT64, INT32 !");
++}
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDLoader.hxx MEDCOUPLING_new/src/MEDLoader/MEDLoader.hxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDLoader.hxx        2018-04-19 17:04:36.762223221 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDLoader.hxx        2018-04-19 17:25:17.802798642 +0200
+@@ -35,6 +35,7 @@
+   class DataArrayInt;
+   class MEDCouplingMesh;
+   class MEDCouplingUMesh;
++  class MEDCouplingField;
+   class MEDCouplingFieldDouble;
+   class MEDFileWritable;
+@@ -72,9 +73,9 @@
+   MEDLOADER_EXPORT MEDCoupling::MEDCouplingUMesh *ReadUMeshFromFile(const std::string& fileName, const std::string& meshName, int meshDimRelToMax=0);
+   MEDLOADER_EXPORT MEDCoupling::MEDCouplingUMesh *ReadUMeshFromFile(const std::string& fileName, int meshDimRelToMax=0);
+   MEDLOADER_EXPORT int ReadUMeshDimFromFile(const std::string& fileName, const std::string& meshName);
+-  MEDLOADER_EXPORT MCAuto<MEDCoupling::MEDCouplingFieldDouble> ReadField(const std::string& fileName);
+-  MEDLOADER_EXPORT MCAuto<MEDCoupling::MEDCouplingFieldDouble> ReadField(const std::string& fileName, const std::string& fieldName);
+-  MEDLOADER_EXPORT MCAuto<MEDCoupling::MEDCouplingFieldDouble> ReadField(const std::string& fileName, const std::string& fieldName, int iteration, int order);
++  MEDLOADER_EXPORT MCAuto<MEDCoupling::MEDCouplingField> ReadField(const std::string& fileName);
++  MEDLOADER_EXPORT MCAuto<MEDCoupling::MEDCouplingField> ReadField(const std::string& fileName, const std::string& fieldName);
++  MEDLOADER_EXPORT MCAuto<MEDCoupling::MEDCouplingField> ReadField(const std::string& fileName, const std::string& fieldName, int iteration, int order);
+   MEDLOADER_EXPORT MCAuto<MEDCoupling::MEDCouplingFieldDouble> ReadField(MEDCoupling::TypeOfField type, const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName, int iteration, int order);
+   MEDLOADER_EXPORT std::vector<MEDCoupling::MEDCouplingFieldDouble *> ReadFieldsOnSameMesh(MEDCoupling::TypeOfField type, const std::string& fileName, const std::string& meshName, int meshDimRelToMax, const std::string& fieldName,
+                                                                                            const std::vector<std::pair<int,int> >& its);
+@@ -96,9 +97,9 @@
+   MEDLOADER_EXPORT void WriteUMeshesPartition(const std::string& fileName, const std::string& meshName, const std::vector<const MEDCoupling::MEDCouplingUMesh *>& meshes, bool writeFromScratch);
+   MEDLOADER_EXPORT void WriteUMeshesPartitionDep(const std::string& fileName, const std::string& meshName, const std::vector<const MEDCoupling::MEDCouplingUMesh *>& meshes, bool writeFromScratch);
+   MEDLOADER_EXPORT void WriteUMeshes(const std::string& fileName, const std::vector<const MEDCoupling::MEDCouplingUMesh *>& meshes, bool writeFromScratch);
+-  MEDLOADER_EXPORT void WriteField(const std::string& fileName, const MEDCoupling::MEDCouplingFieldDouble *f, bool writeFromScratch);
+-  MEDLOADER_EXPORT void WriteFieldDep(const std::string& fileName, const MEDCoupling::MEDCouplingFieldDouble *f, bool writeFromScratch);
+-  MEDLOADER_EXPORT void WriteFieldUsingAlreadyWrittenMesh(const std::string& fileName, const MEDCoupling::MEDCouplingFieldDouble *f);
++  MEDLOADER_EXPORT void WriteField(const std::string& fileName, const MEDCoupling::MEDCouplingField *f, bool writeFromScratch);
++  MEDLOADER_EXPORT void WriteFieldDep(const std::string& fileName, const MEDCoupling::MEDCouplingField *f, bool writeFromScratch);
++  MEDLOADER_EXPORT void WriteFieldUsingAlreadyWrittenMesh(const std::string& fileName, const MEDCoupling::MEDCouplingField *f);
+   MEDLOADER_EXPORT void AssignStaticWritePropertiesTo(MEDCoupling::MEDFileWritable& obj);
+ }
+diff -Naur MEDCOUPLING_old/src/MEDLoader/MEDLoaderNS.hxx MEDCOUPLING_new/src/MEDLoader/MEDLoaderNS.hxx
+--- MEDCOUPLING_old/src/MEDLoader/MEDLoaderNS.hxx      2018-04-19 17:04:36.763223241 +0200
++++ MEDCOUPLING_new/src/MEDLoader/MEDLoaderNS.hxx      2018-04-19 17:25:17.736797337 +0200
+@@ -35,7 +35,8 @@
+ {
+   int readUMeshDimFromFile(const std::string& fileName, const std::string& meshName, std::vector<int>& possibilities);
+   void dispatchElems(int nbOfElemCell, int nbOfElemFace, int& nbOfElem, med_entity_type& whichEntity);
+-  void writeFieldWithoutReadingAndMappingOfMeshInFile(const std::string& fileName, const MEDCoupling::MEDCouplingFieldDouble *f, bool writeFromScratch);
++  template<class T>
++  void writeFieldWithoutReadingAndMappingOfMeshInFile(const std::string& fileName, const typename MEDCoupling::Traits<T>::FieldType *f, bool writeFromScratch);
+   med_int getIdFromMeshName(med_idt fid, const std::string& meshName, std::string& trueMeshName);
+   std::vector<std::string> getMeshNamesFid(med_idt fid);
+ }
+diff -Naur MEDCOUPLING_old/src/MEDLoader/SauvMedConvertor.cxx MEDCOUPLING_new/src/MEDLoader/SauvMedConvertor.cxx
+--- MEDCOUPLING_old/src/MEDLoader/SauvMedConvertor.cxx 2018-04-19 17:04:36.764223261 +0200
++++ MEDCOUPLING_new/src/MEDLoader/SauvMedConvertor.cxx 2018-04-19 17:25:17.733797278 +0200
+@@ -1925,7 +1925,7 @@
+   // 53619905   |       1       2       6       8
+   // 53619906   |                                                                SCALAIRE
+   // 53619907   |    -63312600499       1       0       0       0      -2       0       2
+-  //   where -63312600499 is actualy -633 and 12600499
++  //   where -63312600499 is actually -633 and 12600499
+   char hold=_curPos[_width];
+   _curPos[_width] = '\0';
+   int result = atoi( _curPos );
+@@ -2311,7 +2311,7 @@
+ Group* IntermediateMED::addNewGroup(std::vector<SauvUtilities::Group*>* groupsToFix)
+ {
+-  if ( _groups.size() == _groups.capacity() ) // re-allocation would occure
++  if ( _groups.size() == _groups.capacity() ) // re-allocation would occur
+     {
+       std::vector<Group> newGroups( _groups.size() );
+       newGroups.push_back( Group() );
+@@ -2741,7 +2741,7 @@
+       //       if (( x = nodeCoords( elemIt->_nodes[ iNode ])[ 0 ]) < minX )
+       //         minX = x, iLeft = iNode;
+-      //     // indeces of the nodes neighboring the most left one
++      //     // indices of the nodes neighboring the most left one
+       //     int iPrev = ( iLeft - 1 < 0 ) ? nbNodes - 1 : iLeft - 1;
+       //     int iNext = ( iLeft + 1 == nbNodes ) ? 0 : iLeft + 1;
+       //     // find components of prev-left and left-next vectors
+@@ -3843,7 +3843,7 @@
+   init( dimm );
+ }
+ /*!
+- * \brief Initialize iteration on cells of given dimention
++ * \brief Initialize iteration on cells of given dimension
+  */
+ void CellsByDimIterator::init(const int  dimm)
+ {
+diff -Naur MEDCOUPLING_old/src/MEDLoader/SauvMedConvertor.hxx MEDCOUPLING_new/src/MEDLoader/SauvMedConvertor.hxx
+--- MEDCOUPLING_old/src/MEDLoader/SauvMedConvertor.hxx 2018-04-19 17:04:36.764223261 +0200
++++ MEDCOUPLING_new/src/MEDLoader/SauvMedConvertor.hxx 2018-04-19 17:25:17.741797436 +0200
+@@ -170,7 +170,7 @@
+   };
+   // ==============================================================================
+   /*!
+-   * \if developper
++   * \if developer
+    * Iterator on set of Cell's of given dimension
+    * \endif
+    */
+@@ -195,7 +195,7 @@
+   // ==============================================================================
+   /*!
+-   * \if developper
++   * \if developer
+    * Container of Node's. Prevents re-allocation at addition of Node's
+    * \endif
+    */
+@@ -226,7 +226,7 @@
+   // ==============================================================================
+   /*!
+-   * \if developper
++   * \if developer
+    * Intermediate structure used to store data read from the Sauve format file.
+    * The structure provides functions that transform the stored data to the MED format
+    *
+diff -Naur MEDCOUPLING_old/src/MEDLoader/SauvReader.cxx MEDCOUPLING_new/src/MEDLoader/SauvReader.cxx
+--- MEDCOUPLING_old/src/MEDLoader/SauvReader.cxx       2018-04-19 17:04:36.764223261 +0200
++++ MEDCOUPLING_new/src/MEDLoader/SauvReader.cxx       2018-04-19 17:25:17.801798622 +0200
+@@ -220,7 +220,7 @@
+ int SauvReader::readPileNumber(int& nbNamedObjects, int& nbObjects)
+ {
+-  // FORMAT(' PILE NUMERO',I4,'NBRE ObjectS NOMMES',I8,'NBRE ObjectS',I8)
++  // FORMAT(' PILE NUMERO',I4,'NBRE OBJETS NOMMES',I8,'NBRE OBJETS',I8)
+   int pileNumber;
+   if ( !isASCII() )
+     {
+@@ -233,7 +233,7 @@
+     {
+       char* line;
+       getNextLine(line);
+-      const char *s1 = " PILE NUMERO", *s2 = "NBRE ObjectS NOMMES", *s3 = "NBRE ObjectS";
++      const char *s1 = " PILE NUMERO", *s2 = "NBRE OBJETS NOMMES", *s3 = "NBRE OBJETS";
+       if ( ! GIBI_EQUAL( line, s1 ) )
+         THROW_IK_EXCEPTION("Could not read the pile number " << lineNb() );
+       line           = line + strlen(s1);
+diff -Naur MEDCOUPLING_old/src/MEDLoader/SauvWriter.cxx MEDCOUPLING_new/src/MEDLoader/SauvWriter.cxx
+--- MEDCOUPLING_old/src/MEDLoader/SauvWriter.cxx       2018-04-19 17:04:36.764223261 +0200
++++ MEDCOUPLING_new/src/MEDLoader/SauvWriter.cxx       2018-04-19 17:25:17.853799650 +0200
+@@ -106,7 +106,7 @@
+   //================================================================================
+   /*!
+-   * \brief Converts MED long names into SAUVE short ones, returnes a healed long name
++   * \brief Converts MED long names into SAUVE short ones, returns a healed long name
+    */
+   //================================================================================
+@@ -559,7 +559,7 @@
+ //================================================================================
+ /*!
+- * \brief Transorm a profile into ids of mesh elements
++ * \brief Transform a profile into ids of mesh elements
+  */
+ //================================================================================
+@@ -725,7 +725,7 @@
+   writeNames( nameNbMap );
+-  TFieldCounter fcount( *_sauvFile, 10 ); // 10 intergers per line
++  TFieldCounter fcount( *_sauvFile, 10 ); // 10 integers per line
+   for ( size_t iSub = 0; iSub < _subs.size(); ++iSub )
+     {
+@@ -832,7 +832,7 @@
+              << zeroI8
+              << zeroI8 << endl;
+-  TFieldCounter fcount( *_sauvFile, 10 ); // 10 intergers per line
++  TFieldCounter fcount( *_sauvFile, 10 ); // 10 integers per line
+   for ( size_t i = 0; i < subIDs.size(); ++i, fcount++ )
+     *_sauvFile << setw(8) << subIDs[i];
+ }
+@@ -1170,7 +1170,7 @@
+               fcount.stop();
+             }
+         }
+-    } // loop on fiels
++    } // loop on files
+ }
+ //================================================================================
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/case2med MEDCOUPLING_new/src/MEDLoader/Swig/case2med
+--- MEDCOUPLING_old/src/MEDLoader/Swig/case2med        2018-04-19 17:04:36.768223341 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/case2med        2018-04-19 17:25:17.796798523 +0200
+@@ -46,7 +46,7 @@
+ try:
+     medfd=cr.loadInMEDFileDS()
+ except:
+-    print "An error occured during the conversion!"
++    print "An error occurred during the conversion!"
+     print "#######################################"
+     raise
+ medfd.write(fOut,2)
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/CaseReader.py MEDCOUPLING_new/src/MEDLoader/Swig/CaseReader.py
+--- MEDCOUPLING_old/src/MEDLoader/Swig/CaseReader.py   2018-04-19 17:04:36.765223281 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/CaseReader.py   2018-04-19 17:25:17.749797594 +0200
+@@ -23,7 +23,7 @@
+ import numpy as np
+ from MEDLoader import *
+ from CaseIO import CaseIO
+-import sys,re
++import sys,re,os
+ class CaseReader(CaseIO):
+     """ Converting a file in the Case format (Ensight) to the MED format.
+@@ -77,7 +77,7 @@
+         arr0mc2=DataArrayInt(len(arr0),2) ; arr0mc2[:,0]=DataArrayInt(arr0)-1 ; arr0mc2[:,1]=1 ; arr0mc2.rearrange(1) ; arr0mc2.computeOffsetsFull()
+         arr0mc3=DataArrayInt.Range(0,2*len(arr0),2).buildExplicitArrByRanges(arr0mc2)
+         arr1mc0=DataArrayInt(arr1) ; arr1mc0.computeOffsetsFull()
+-        arr1mc1=arr1mc0[arr0mc0] ; arr1mc1[1:]+=arr0mc0[1:] 
++        arr1mc1=arr1mc0[arr0mc0] ; arr1mc1[1:]+=arr0mc0[1:]
+         arr1mc2=DataArrayInt(arr1).deepCopy() ; arr1mc2+=1 ; arr1mc2.computeOffsetsFull()
+         arr2mc0=(arr1mc2[1:])[arr0mc3]
+         #
+@@ -109,7 +109,7 @@
+         return m
+     def __convertGeo2MED(self,geoFileName):
+-        """ Convert all the geometry (all the meshes) contained in teh CASE file into MEDCouplingUMesh'es. """
++        """ Convert all the geometry (all the meshes) contained in the CASE file into MEDCouplingUMesh'es. """
+         fd=open(os.path.join(self._dirName,geoFileName),"r+b") ; fd.seek(0,2) ; end=fd.tell() ; fd.seek(0) ; title=fd.read(80)
+         title=title.strip().lower()
+         if "binary" not in title:
+@@ -182,7 +182,7 @@
+             mcmeshes2.append(self.__traduceMesh(meshName,zeK,coo,nodalConn))
+             pos+=nbNodesPerCell*nbCellsOfType*4
+             if abs(pos-end)>8:
+-                fd.seek(pos) ;elt=fd.read(80) ; typ=elt[:] ; pos+=80 
++                fd.seek(pos) ;elt=fd.read(80) ; typ=elt[:] ; pos+=80
+                 pass
+             nbOfTurn+=1
+             pass
+@@ -193,8 +193,10 @@
+         return mcmeshes2
+     def __convertGeo2MEDC(self,fd,end):
+-        fd.readline()
+-        name=fd.readline().strip() ; fd.readline() ; fd.readline()
++        #fd.readline()
++        #name=fd.readline().strip() ; fd.readline() ; fd.readline()
++        name=fd.read(80)
++        descrip=fd.read(80).strip() ; fd.read(80) ; fd.read(80)
+         pos=fd.tell()
+         mcmeshes=[]
+         elt=fd.read(80) ; elt=elt.strip() ; pos+=80
+@@ -254,15 +256,15 @@
+                 mcmeshes.append(m)
+             pass
+         return mcmeshes
+-        
+-    
++
++
+     def __convertField(self,mlfields, mcmeshes, fileName, fieldName, discr, nbCompo, locId, it):
+         """ Convert the fields. """
+         stars=re.search("[\*]+",fileName).group()
+         st="%0"+str(len(stars))+"i"
+         trueFileName=fileName.replace(stars,st%(it))
+         fd=open(os.path.join(self._dirName,trueFileName),"r+b") ; fd.seek(0,2) ; end=fd.tell() ; fd.seek(0)
+-        name=fd.readline().strip().split(" ")[0]
++        name=fd.read(80).strip().split(" ")[0]
+         if name!=fieldName:
+             raise Exception("ConvertField : mismatch")
+         pos=fd.tell()
+@@ -351,7 +353,7 @@
+             nbTurn+=1
+             pass
+         pass
+-    
++
+     def loadInMEDFileDS(self):
+         """ Load a CASE file into a MEDFileData object. """
+         f=file(self._fileName)
+@@ -368,16 +370,17 @@
+             if "TIME\n" in lines:
+                 end=lines.index("TIME\n")
+                 pass
+-            for i in range(ind + 1, end):
+-                m=re.match("^([\w]+)[\s]+\per[\s]+([\w]+)[\s]*\:[\s]*([\w]+)[\s]+([\S]+)$",lines[i])
++            for i in range(ind + 1,end):
++                m=re.match("^([\w]+)[\s]+\per[\s]+([\w]+)[\s]*\:[\s]*[0-9]*[\s]*([\w]+)[\s]+([\S]+)$",lines[i])
+                 if m:
+                     if m.groups()[0]=="constant":
+                         continue
+                     spatialDisc=m.groups()[1] ; fieldName=m.groups()[2] ; nbOfCompo=self.dictCompo2[m.groups()[0]] ; fieldFileName=m.groups()[3]
+-                    fieldsInfo.append((fieldName,spatialDisc,nbOfCompo,fieldFileName))
++                    if fieldFileName.endswith("*"):
++                      fieldsInfo.append((fieldName,spatialDisc,nbOfCompo,fieldFileName))
+                     pass
+                 pass
+-            
++
+             expr=re.compile("number[\s]+of[\s]+steps[\s]*\:[\s]*([\d]+)")
+             tmp = [line for line in lines if expr.search(line)]
+             if tmp:
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/CaseWriter.py MEDCOUPLING_new/src/MEDLoader/Swig/CaseWriter.py
+--- MEDCOUPLING_old/src/MEDLoader/Swig/CaseWriter.py   2018-04-19 17:04:36.765223281 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/CaseWriter.py   2018-04-19 17:25:17.751797633 +0200
+@@ -28,7 +28,7 @@
+ class CaseWriter(CaseIO):
+     """ Converting MED file format in memory to a the Case file format (Ensight).
+-    A new file with the same base name and the .case extension is created with its depencies (.geo ...).
++    A new file with the same base name and the .case extension is created with its dependencies (.geo ...).
+     """
+     header="""FORMAT
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/CMakeLists.txt MEDCOUPLING_new/src/MEDLoader/Swig/CMakeLists.txt
+--- MEDCOUPLING_old/src/MEDLoader/Swig/CMakeLists.txt  2018-04-19 17:04:36.764223261 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/CMakeLists.txt  2018-04-19 17:25:17.760797811 +0200
+@@ -69,21 +69,22 @@
+ ENDIF()
+ SWIG_ADD_MODULE(MEDLoader python MEDLoader.i)
+-SWIG_LINK_LIBRARIES(MEDLoader ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} medloader medcoupling)
++SWIG_LINK_LIBRARIES(MEDLoader ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} medloader medcouplingcpp )
+ SWIG_CHECK_GENERATION(MEDLoader)
+ IF(WIN32)
+   SET_TARGET_PROPERTIES(_MEDLoader PROPERTIES DEBUG_OUTPUT_NAME _MEDLoader_d)
+ ENDIF(WIN32)
+ INSTALL(TARGETS _MEDLoader DESTINATION ${MEDCOUPLING_INSTALL_PYTHON})
+-INSTALL(FILES MEDLoader.i MEDLoaderTypemaps.i MEDLoaderCommon.i DESTINATION ${MEDCOUPLING_INSTALL_HEADERS})
++INSTALL(FILES MEDLoader.i MEDLoaderTypemaps.i MEDLoaderCommon.i MEDLoaderFinalize.i DESTINATION ${MEDCOUPLING_INSTALL_HEADERS})
+ SALOME_INSTALL_SCRIPTS(${CMAKE_CURRENT_BINARY_DIR}/MEDLoader.py ${MEDCOUPLING_INSTALL_PYTHON})
+ INSTALL(FILES MEDLoaderSplitter.py DESTINATION ${MEDCOUPLING_INSTALL_PYTHON})
+-INSTALL(FILES ${ALL_TESTS} MEDLoaderDataForTest.py MEDLoaderTest1.py MEDLoaderTest2.py MEDLoaderTest3.py CaseIO.py CaseReader.py CaseWriter.py VTKReader.py medutilities.py DESTINATION ${MEDCOUPLING_INSTALL_SCRIPT_SCRIPTS})
++INSTALL(FILES ${ALL_TESTS} MEDLoaderDataForTest.py MEDLoaderTest1.py MEDLoaderTest2.py MEDLoaderTest3.py CaseIO.py CaseReader.py CaseWriter.py VTKReader.py DESTINATION ${MEDCOUPLING_INSTALL_SCRIPT_SCRIPTS})
++INSTALL(FILES medutilities.py DESTINATION ${MEDCOUPLING_INSTALL_PYTHON})
+ INSTALL(FILES med2sauv PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ DESTINATION ${MEDCOUPLING_INSTALL_BINS} )
+ INSTALL(FILES sauv2med PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ DESTINATION ${MEDCOUPLING_INSTALL_BINS} )
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/ConvertMEDFileTo30.py MEDCOUPLING_new/src/MEDLoader/Swig/ConvertMEDFileTo30.py
+--- MEDCOUPLING_old/src/MEDLoader/Swig/ConvertMEDFileTo30.py   2018-04-19 17:04:36.765223281 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/ConvertMEDFileTo30.py   2018-04-19 17:25:17.780798207 +0200
+@@ -35,7 +35,7 @@
+     #
+     finalVersion=ml.MEDFileVersionOfFileStr(realFnOut)
+     #
+-    print(("File \"%s\" has been converted to 3.0 successfuly ( %s -> %s ) !\nOutput file is here : \"%s\" !"%(fn,initalVersion,finalVersion,realFnOut)))
++    print(("File \"%s\" has been converted to 3.0 successfully ( %s -> %s ) !\nOutput file is here : \"%s\" !"%(fn,initalVersion,finalVersion,realFnOut)))
+     pass
+ if __name__=="__main__":
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderCommon.i MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderCommon.i
+--- MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderCommon.i       2018-04-19 17:04:36.765223281 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderCommon.i       2018-04-19 17:25:17.755797713 +0200
+@@ -1,4 +1,4 @@
+-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D
++// Copyright (C) 2017  CEA/DEN, EDF R&D
+ //
+ // This library is free software; you can redistribute it and/or
+ // modify it under the terms of the GNU Lesser General Public
+@@ -18,8 +18,6 @@
+ //
+ // Author : Anthony Geay (EDF R&D)
+-%module MEDLoader
+-
+ #define MEDCOUPLING_EXPORT
+ #define MEDLOADER_EXPORT
+@@ -162,6 +160,7 @@
+ %newobject MEDCoupling::MEDFileFields::partOfThisOnStructureElements;
+ %newobject MEDCoupling::MEDFileFields::__iter__;
+ %newobject MEDCoupling::MEDFileFields::extractPart;
++%newobject MEDCoupling::MEDFileFields::linearToQuadratic;
+ %newobject MEDCoupling::MEDFileWritableStandAlone::serialize;
+ %newobject MEDCoupling::MEDFileAnyTypeFieldMultiTS::New;
+@@ -372,9 +371,9 @@
+   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::MEDCouplingFieldDouble *f, bool writeFromScratch) throw(INTERP_KERNEL::Exception);
+-  void WriteFieldDep(const std::string& fileName, const MEDCoupling::MEDCouplingFieldDouble *f, bool writeFromScratch) throw(INTERP_KERNEL::Exception);
+-  void WriteFieldUsingAlreadyWrittenMesh(const std::string& fileName, const MEDCoupling::MEDCouplingFieldDouble *f) 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);
+ }
+ %rename (MEDFileVersion) MEDFileVersionSwig;
+@@ -406,21 +405,21 @@
+     return ret;
+   }
+-  MEDCoupling::MEDCouplingFieldDouble *ReadFieldSwig(const std::string& fileName) throw(INTERP_KERNEL::Exception)
++  MEDCoupling::MEDCouplingField *ReadFieldSwig(const std::string& fileName) throw(INTERP_KERNEL::Exception)
+   {
+-    MCAuto<MEDCoupling::MEDCouplingFieldDouble> ret(MEDCoupling::ReadField(fileName));
++    MCAuto<MEDCoupling::MEDCouplingField> ret(MEDCoupling::ReadField(fileName));
+     return ret.retn();
+   }
+-  MEDCoupling::MEDCouplingFieldDouble *ReadFieldSwig(const std::string& fileName, const std::string& fieldName) throw(INTERP_KERNEL::Exception)
++  MEDCoupling::MEDCouplingField *ReadFieldSwig(const std::string& fileName, const std::string& fieldName) throw(INTERP_KERNEL::Exception)
+   {
+-    MCAuto<MEDCoupling::MEDCouplingFieldDouble> ret(MEDCoupling::ReadField(fileName,fieldName));
++    MCAuto<MEDCoupling::MEDCouplingField> ret(MEDCoupling::ReadField(fileName,fieldName));
+     return ret.retn();
+   }
+   
+-  MEDCoupling::MEDCouplingFieldDouble *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) throw(INTERP_KERNEL::Exception)
+   {
+-    MCAuto<MEDCoupling::MEDCouplingFieldDouble> ret(MEDCoupling::ReadField(fileName,fieldName,iteration,order));
++    MCAuto<MEDCoupling::MEDCouplingField> ret(MEDCoupling::ReadField(fileName,fieldName,iteration,order));
+     return ret.retn();
+   }
+   
+@@ -622,24 +621,6 @@
+          void __setstate__(PyObject *inp) throw(INTERP_KERNEL::Exception)
+          {
+          }
+-
+-         PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception)
+-         {
+-#ifdef WITH_NUMPY
+-           PyObject *ret(PyTuple_New(1));
+-           PyObject *ret0(PyDict_New());
+-           DataArrayByte *retCpp(MEDCoupling_MEDFileWritableStandAlone_serialize(self));
+-           PyObject *numpyArryObj=SWIG_NewPointerObj(SWIG_as_voidptr(retCpp),SWIGTYPE_p_MEDCoupling__DataArrayByte, SWIG_POINTER_OWN | 0 );
+-           {// create a dict to discriminite in __new__ if __init__ should be called. Not beautiful but not idea ...
+-             PyObject *tmp1(PyInt_FromLong(0));
+-             PyDict_SetItem(ret0,tmp1,numpyArryObj); Py_DECREF(tmp1); Py_DECREF(numpyArryObj);
+-             PyTuple_SetItem(ret,0,ret0);
+-           }
+-           return ret;
+-#else
+-           throw INTERP_KERNEL::Exception("PyWrap of MEDFileData.__getnewargs__ : not implemented because numpy is not active in your configuration ! No serialization/unserialization available without numpy !");
+-#endif
+-         }
+        }
+   };
+   
+@@ -1130,6 +1111,7 @@
+     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);
+@@ -1440,12 +1422,6 @@
+            return MEDFileUMesh::New();
+          }
+-         // serialization
+-         static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-         {
+-           return NewMethWrapCallInitOnlyIfEmptyDictInInput(cls,args,"MEDFileUMesh");
+-         }
+-
+          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)
+          {
+            std::vector<int> typesCpp1;
+@@ -1457,14 +1433,6 @@
+            return MEDFileUMesh::LoadPartOf(fileName,mName,typesCpp2,slicPerTyp,dt,it,mrs);
+          }
+-         PyObject *__getnewargs__() throw(INTERP_KERNEL::Exception)
+-         {// put an empty dict in input to say to __new__ to call __init__...
+-           PyObject *ret(PyTuple_New(1));
+-           PyObject *ret0(PyDict_New());
+-           PyTuple_SetItem(ret,0,ret0);
+-           return ret;
+-         }
+-
+          PyObject *__getstate__() throw(INTERP_KERNEL::Exception)
+          {
+            std::vector<double> a0;
+@@ -1724,12 +1692,6 @@
+          {
+            return MEDFileCMesh::New(db);
+          }
+-
+-         // serialization
+-         static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-         {
+-           return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileCMesh");
+-         }
+          
+          PyObject *getMesh() const throw(INTERP_KERNEL::Exception)
+          {
+@@ -1770,12 +1732,6 @@
+          {
+            return MEDFileCurveLinearMesh::New(db);
+          }
+-
+-         // serialization
+-         static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-         {
+-           return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileCurveLinearMesh");
+-         }
+          
+          PyObject *getMesh() const throw(INTERP_KERNEL::Exception)
+          {
+@@ -1879,12 +1835,6 @@
+            return MEDFileMeshes::New(db);
+          }
+-         // serialization
+-         static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-         {
+-           return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileMeshes");
+-         }
+-
+          std::string __str__() const throw(INTERP_KERNEL::Exception)
+            {
+              return self->simpleRepr();
+@@ -1989,6 +1939,7 @@
+     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);
+   %extend
+      {
+@@ -2273,6 +2224,7 @@
+     static MEDFileField1TS *New(DataArrayByte *db) throw(INTERP_KERNEL::Exception);
+     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);
+@@ -2282,6 +2234,7 @@
+     //
+     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);
+     %extend
+@@ -2310,12 +2263,6 @@
+          {
+            return MEDFileField1TS::New();
+          }
+-
+-         // serialization
+-         static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-         {
+-           return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileField1TS");
+-         }
+          
+          void copyTinyInfoFrom(const MEDCouplingFieldDouble *field) throw(INTERP_KERNEL::Exception)
+          {
+@@ -2332,12 +2279,7 @@
+          
+          PyObject *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception)
+          {
+-           DataArrayInt *ret1=0;
+-           DataArrayDouble *ret0=self->getFieldWithProfile(type,meshDimRelToMax,mesh,ret1);
+-           PyObject *ret=PyTuple_New(2);
+-           PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_MEDCoupling__DataArrayDouble, SWIG_POINTER_OWN | 0 ));
+-           PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+-           return ret;
++           return MEDFileField1TS_getFieldWithProfile<double>(self,type,meshDimRelToMax,mesh);
+          }
+          PyObject *getFieldSplitedByType2(const std::string& mname=std::string()) const throw(INTERP_KERNEL::Exception)
+@@ -2384,29 +2326,7 @@
+          PyObject *getUndergroundDataArrayExt() const throw(INTERP_KERNEL::Exception)
+          {
+-           std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > > elt1Cpp;
+-           DataArrayDouble *elt0=self->getUndergroundDataArrayExt(elt1Cpp);
+-           if(elt0)
+-             elt0->incrRef();
+-           PyObject *ret=PyTuple_New(2);
+-           PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(elt0),SWIGTYPE_p_MEDCoupling__DataArrayDouble, SWIG_POINTER_OWN | 0 ));
+-           std::size_t sz=elt1Cpp.size();
+-           PyObject *elt=PyList_New(sz);
+-           for(std::size_t i=0;i<sz;i++)
+-             {
+-               PyObject *elt1=PyTuple_New(2);
+-               PyObject *elt2=PyTuple_New(2);
+-               PyTuple_SetItem(elt2,0,SWIG_From_int((int)elt1Cpp[i].first.first));
+-               PyTuple_SetItem(elt2,1,SWIG_From_int(elt1Cpp[i].first.second));
+-               PyObject *elt3=PyTuple_New(2);
+-               PyTuple_SetItem(elt3,0,SWIG_From_int(elt1Cpp[i].second.first));
+-               PyTuple_SetItem(elt3,1,SWIG_From_int(elt1Cpp[i].second.second));
+-               PyTuple_SetItem(elt1,0,elt2);
+-               PyTuple_SetItem(elt1,1,elt3);
+-               PyList_SetItem(elt,i,elt1);
+-             }
+-           PyTuple_SetItem(ret,1,elt);
+-           return ret;
++           return MEDFileField1TS_getUndergroundDataArrayExt<double>(self);
+          }
+        }
+   };
+@@ -2423,6 +2343,8 @@
+     //
+     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);
+@@ -2456,12 +2378,6 @@
+         return MEDFileIntField1TS::New(db);
+       }
+-      // serialization
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileIntField1TS");
+-      }
+-
+       std::string __str__() const throw(INTERP_KERNEL::Exception)
+       {
+         return self->simpleRepr();
+@@ -2469,12 +2385,7 @@
+       PyObject *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception)
+       {
+-         DataArrayInt *ret1=0;
+-         DataArrayInt *ret0=self->getFieldWithProfile(type,meshDimRelToMax,mesh,ret1);
+-         PyObject *ret=PyTuple_New(2);
+-         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+-         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+-         return ret;
++         return MEDFileField1TS_getFieldWithProfile<int>(self,type,meshDimRelToMax,mesh);
+       }
+       
+       DataArrayInt *getUndergroundDataArray() const throw(INTERP_KERNEL::Exception)
+@@ -2484,6 +2395,11 @@
+           ret->incrRef();
+         return ret;
+       }
++
++      PyObject *getUndergroundDataArrayExt() const throw(INTERP_KERNEL::Exception)
++      {
++        return MEDFileField1TS_getUndergroundDataArrayExt<int>(self);
++      }
+     }
+   };
+@@ -2499,6 +2415,8 @@
+     //
+     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);
+@@ -2532,12 +2450,6 @@
+         return MEDFileFloatField1TS::New(db);
+       }
+-      // serialization
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileFloatField1TS");
+-      }
+-
+       std::string __str__() const throw(INTERP_KERNEL::Exception)
+       {
+         return self->simpleRepr();
+@@ -2545,12 +2457,7 @@
+       PyObject *getFieldWithProfile(TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh) const throw(INTERP_KERNEL::Exception)
+       {
+-         DataArrayInt *ret1=0;
+-         DataArrayFloat *ret0=self->getFieldWithProfile(type,meshDimRelToMax,mesh,ret1);
+-         PyObject *ret=PyTuple_New(2);
+-         PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+-         PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_MEDCoupling__DataArrayFloat, SWIG_POINTER_OWN | 0 ));
+-         return ret;
++         return MEDFileField1TS_getFieldWithProfile<float>(self,type,meshDimRelToMax,mesh);
+       }
+       
+       DataArrayFloat *getUndergroundDataArray() const throw(INTERP_KERNEL::Exception)
+@@ -2560,6 +2467,11 @@
+           ret->incrRef();
+         return ret;
+       }
++      
++      PyObject *getUndergroundDataArrayExt() const throw(INTERP_KERNEL::Exception)
++      {
++        return MEDFileField1TS_getUndergroundDataArrayExt<float>(self);
++      }
+     }
+   };
+@@ -2992,12 +2904,6 @@
+          {
+            return MEDFileFieldMultiTS::New(db);
+          }
+-         
+-         // serialization
+-         static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-         {
+-           return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileFieldMultiTS");
+-         }
+          static MEDFileFieldMultiTS *LoadSpecificEntities(const std::string& fileName, const std::string& fieldName, PyObject *entities, bool loadAll=true)
+          {
+@@ -3127,7 +3033,7 @@
+     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);
+-    MEDCouplingFieldDouble *field(int iteration, int order, const MEDFileMesh *mesh) 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);
+@@ -3155,12 +3061,6 @@
+         return MEDFileIntFieldMultiTS::New(db);
+       }
+       
+-      // serialization
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileIntFieldMultiTS");
+-      }
+-      
+       static MEDFileIntFieldMultiTS *LoadSpecificEntities(const std::string& fileName, const std::string& fieldName, PyObject *entities, bool loadAll=true)
+       {
+         std::vector<std::pair<int,int> > tmp(convertTimePairIdsFromPy(entities));
+@@ -3204,7 +3104,7 @@
+     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);
+-    MEDCouplingFieldDouble *field(int iteration, int order, const MEDFileMesh *mesh) 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);
+@@ -3232,12 +3132,6 @@
+         return MEDFileFloatFieldMultiTS::New(db);
+       }
+       
+-      // serialization
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileFloatFieldMultiTS");
+-      }
+-      
+       static MEDFileFloatFieldMultiTS *LoadSpecificEntities(const std::string& fileName, const std::string& fieldName, PyObject *entities, bool loadAll=true)
+       {
+         std::vector<std::pair<int,int> > tmp(convertTimePairIdsFromPy(entities));
+@@ -3352,12 +3246,6 @@
+            return MEDFileFields::NewAdv(fileName,loadAll,entities);
+          }
+          
+-         // serialization
+-         static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-         {
+-           return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileFields");
+-         }
+-         
+          std::string __str__() const throw(INTERP_KERNEL::Exception)
+          {
+            return self->simpleRepr();
+@@ -3529,6 +3417,12 @@
+            convertToMapIntDataArrayInt(extractDef,extractDefCpp);
+            return self->extractPart(extractDefCpp,mm);
+          }
++
++         MEDFileFields *linearToQuadratic(const MEDFileMeshes *oldLin, const MEDFileMeshes *newQuad) const throw(INTERP_KERNEL::Exception)
++         {
++           MCAuto<MEDFileFields> ret(self->linearToQuadratic(oldLin,newQuad));
++           return ret.retn();
++         }
+        }
+   };
+@@ -3847,12 +3741,6 @@
+       {
+         return MEDFileParameters::New(db);
+       }
+-
+-      // serialization
+-      static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-      {
+-        return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileParameters");
+-      }
+       
+       std::string __str__() const throw(INTERP_KERNEL::Exception)
+       {
+@@ -3989,12 +3877,6 @@
+            MCAuto<MEDFileData> ret(MEDFileData::Aggregate(mfdsCpp));
+            return ret.retn();
+          }
+-
+-         // serialization
+-         static PyObject *___new___(PyObject *cls, PyObject *args) throw(INTERP_KERNEL::Exception)
+-         {
+-           return NewMethWrapCallInitOnlyIfDictWithSingleEltInInput(cls,args,"MEDFileData");
+-         }
+        }
+   };
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderDataForTest.pyc MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderDataForTest.pyc
+--- MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderDataForTest.pyc        1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderDataForTest.pyc        2018-04-19 17:25:17.759797792 +0200
+@@ -0,0 +1,211 @@
++\ 3ó\r
++\18;ÕZc\0\0\0\0\0\0\0\0\ 3\0\0\0@\0\0\0s=\0\0\0d\0\0d\ 1\0l\0\0Td\0\0d\ 2\0l\ 1\0m\ 2\0Z\ 2\0m\ 3\0Z\ 3\0m\ 4\0Z\ 4\0\ 1d\ 3\0d\ 6\0d\ 4\0\84\0\0\83\0\0YZ\ 5\0d\ 5\0S(\a\0\0\0iÿÿÿÿ(\ 1\0\0\0t\ 1\0\0\0*(\ 3\0\0\0t\ 2\0\0\0pit\ 1\0\0\0et\ 4\0\0\0sqrtt\14\0\0\0MEDLoaderDataForTestc\0\0\0\0\0\0\0\0\ 2\0\0\0B\0\0\0s\82\ 1\0\0e\0\0Z\ 1\0d\0\0\84\0\0Z\ 2\0d\ 1\0\84\0\0Z\ 3\0d\ 2\0\84\0\0Z\ 4\0d\ 3\0\84\0\0Z\ 5\0d\ 4\0\84\0\0Z\ 6\0d\ 5\0\84\0\0Z\a\0d\ 6\0\84\0\0Z\b\0d\a\0\84\0\0Z    \0d\b\0\84\0\0Z
++\0d    \0\84\0\0Z\v\0d
++\0\84\0\0Z\f\0d\v\0\84\0\0Z\r\0d\f\0\84\0\0Z\ e\0d\r\0\84\0\0Z\ f\0d\ e\0\84\0\0Z\10\0d\ f\0\84\0\0Z\11\0d\10\0\84\0\0Z\12\0d\11\0\84\0\0Z\13\0e\14\0e\ 2\0\83\ 1\0Z\ 2\0e\14\0e\ 3\0\83\ 1\0Z\ 3\0e\14\0e\ 4\0\83\ 1\0Z\ 4\0e\14\0e\ 5\0\83\ 1\0Z\ 5\0e\14\0e\ 6\0\83\ 1\0Z\ 6\0e\14\0e\a\0\83\ 1\0Z\a\0e\14\0e\b\0\83\ 1\0Z\b\0e\14\0e        \0\83\ 1\0Z   \0e\14\0e\v\0\83\ 1\0Z\v\0e\14\0e
++\0\83\ 1\0Z
++\0e\14\0e\f\0\83\ 1\0Z\f\0e\14\0e\r\0\83\ 1\0Z\r\0e\14\0e\ e\0\83\ 1\0Z\ e\0e\14\0e\ f\0\83\ 1\0Z\ f\0e\14\0e\10\0\83\ 1\0Z\10\0e\14\0e\11\0\83\ 1\0Z\11\0e\14\0e\12\0\83\ 1\0Z\12\0e\14\0e\13\0\83\ 1\0Z\13\0RS(\12\0\0\0c\ 1\0\0\0\ 5\0\0\0     \0\0\0C\0\0\0s\1e\ 1\0\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 6\0}\ 1\0d\a\0d\b\0d\b\0d  \0d      \0d
++\0d
++\0d\v\0d\f\0g      \0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d\r\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\b\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\v\0\83\ 1\0\ 1|\ 3\0j\ 5\0t\ 6\0d       \0|\ 2\0d\a\0d        \0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d        \0|\ 2\0d   \0d\v\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d     \0|\ 2\0d\v\0d\ e\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d
++\0|\ 2\0d\ e\0d\ f\0!\83\ 3\0\ 1|\ 3\0j\b\0\83\0\0\ 1t    \0j\ 1\0\83\0\0}\ 4\0|\ 4\0j
++\0|\ 1\0d\ e\0d\b\0\83\ 3\0\ 1|\ 4\0j\v\0d\a\0d\10\0\83\ 2\0\ 1|\ 3\0j\f\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\11\0\0\0Ng\0\0\0\0\0\0\0\0g333333Ó?g\0\0\0\0\0\0è?g\0\0\0\0\0\0ð?gffffffö?gÍÌÌÌÌÌô?i\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 5\0\0\0t\b\0\0\01DMesh_1i\ 6\0\0\0i  \0\0\0s!\0\0\0tototototototot [m*m*m*m*m*m*m*m](\r\0\0\0t\10\0\0\0MEDCouplingUMesht\ 3\0\0\0Newt\a\0\0\0setNamet\10\0\0\0setMeshDimensiont\r\0\0\0allocateCellst\ e\0\0\0insertNextCellt      \0\0\0NORM_SEG2t   \0\0\0NORM_SEG3t\14\0\0\0finishInsertingCellst\ f\0\0\0DataArrayDoublet      \0\0\0setValuest\12\0\0\0setInfoOnComponentt    \0\0\0setCoords(\ 5\0\0\0t\ 3\0\0\0clst\ 6\0\0\0coordst\ 4\0\0\0connt\ 4\0\0\0mesht\b\0\0\0myCoords(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\r\0\0\0build1DMesh_1\1a\0\0\0\0\0\0\0\ 1\18\ 1!\ 1\f\ 1\r\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\10\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0\f\0\0\0C\0\0\0\ 1\0\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 4\0d\ 4\0d\ 5\0d\ 5\0d\ 6\0d\ 6\0g\f\0}\ 1\0d\a\0d\b\0d\b\0d   \0d      \0d
++\0d
++\0d\v\0d\f\0g      \0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d\r\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\b\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\v\0\83\ 1\0\ 1|\ 3\0j\ 5\0t\ 6\0d       \0|\ 2\0d\a\0d        \0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d        \0|\ 2\0d   \0d\v\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d     \0|\ 2\0d\v\0d\ e\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d
++\0|\ 2\0d\ e\0d\ f\0!\83\ 3\0\ 1|\ 3\0j\b\0\83\0\0\ 1t    \0j\ 1\0\83\0\0}\ 4\0|\ 4\0j
++\0|\ 1\0d\ e\0d      \0\83\ 3\0\ 1|\ 3\0j\v\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\10\0\0\0Ng\0\0\0\0\0\0\0\0g333333Ó?g\0\0\0\0\0\0è?g\0\0\0\0\0\0ð?gffffffö?gÍÌÌÌÌÌô?i\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 5\0\0\0t\r\0\0\02DCurveMesh_1i\ 6\0\0\0i        \0\0\0(\f\0\0\0R\ 6\0\0\0R\a\0\0\0R\b\0\0\0R        \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\12\0\0\0(\ 5\0\0\0R\13\0\0\0R\14\0\0\0R\15\0\0\0R\16\0\0\0R\17\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\12\0\0\0build2DCurveMesh_1,\0\0\0s\1e\0\0\0\0\ 1*\ 1!\ 1\f\ 1\r\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0\18\0\0\0C\0\0\0\ 1\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 5\0d\ 2\0d\ 6\0d\a\0d\ 5\0g\18\0}\ 1\0d\b\0d       \0d
++\0d    \0d\v\0d
++\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d    \0d\b\0d\f\0d\11\0d     \0d\13\0d\11\0d\ e\0d\v\0d  \0g\18\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d
++\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\f\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\14\0\83\ 1\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\12\0d\13\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\13\0d\f\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d\f\0|\ 2\0d\f\0d\15\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\b\0d       \0|\ 2\0d\15\0d\16\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\b\0d       \0|\ 2\0d\16\0d\17\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t  \0d      \0|\ 2\0d\17\0d\18\0!\83\ 3\0\ 1|\ 3\0j
++\0\83\0\0\ 1t\v\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\f\0|\ 1\0d\15\0d
++\0\83\ 3\0\ 1|\ 4\0j\r\0d\12\0d\19\0\83\ 2\0\ 1|\ 4\0j\r\0d\b\0d\1a\0\83\ 2\0\ 1|\ 3\0j\ e\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\e\0\0\0Ng333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?g\9a\99\99\99\99\99©¿gffffffî?g333333ó?gÍÌÌÌÌÌÜ?i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i
++\0\0\0i\b\0\0\0i     \0\0\0i\v\0\0\0i\a\0\0\0i\0\0\0\0i\ 3\0\0\0t\b\0\0\02DMesh_1i\f\0\0\0i\10\0\0\0i\14\0\0\0i\18\0\0\0s\13\0\0\0tototototototot [m]s\f\0\0\0energie [kW](\ f\0\0\0R\ 6\0\0\0R\a\0\0\0R       \0\0\0R
++\0\0\0R\b\0\0\0R\v\0\0\0t        \0\0\0NORM_TRI3t   \0\0\0NORM_TRI6t
++\0\0\0NORM_QUAD4t\f\0\0\0NORM_POLYGONR\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\11\0\0\0R\12\0\0\0(\ 5\0\0\0R\13\0\0\0t\f\0\0\0targetCoordst
++\0\0\0targetConnt
++\0\0\0targetMeshR\17\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\r\0\0\0build2DMesh_1=\0\0\0s(\0\0\0\0\ 16\ 1\18\ 1N\ 1\f\ 1\r\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\10\ 1\10\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0\18\0\0\0C\0\0\0\ 1\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 5\0d\ 2\0d\ 6\0d\a\0d\ 5\0g\18\0}\ 1\0d\b\0d   \0d
++\0d    \0d\v\0d
++\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d    \0d\b\0d\f\0d\11\0d     \0d\13\0d\11\0d\ e\0d\v\0d  \0g\18\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d
++\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\v\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\14\0\83\ 1\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\12\0d\13\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\13\0d\f\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0\0|\ 2\0d\15\0d\16\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d       \0|\ 2\0d\16\0d\17\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\b\0d\f\0|\ 2\0d\f\0d\15\0!\83\ 3\0\ 1|\ 3\0j   \0\83\0\0\ 1t
++\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\v\0|\ 1\0d\15\0d
++\0\83\ 3\0\ 1|\ 4\0j\f\0d\12\0d\18\0\83\ 2\0\ 1|\ 4\0j\f\0d\b\0d\19\0\83\ 2\0\ 1|\ 3\0j\r\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\1a\0\0\0Ng333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?g\9a\99\99\99\99\99©¿gffffffî?g333333ó?gÍÌÌÌÌÌÜ?i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i
++\0\0\0i\b\0\0\0i     \0\0\0i\v\0\0\0i\a\0\0\0i\0\0\0\0i\ 3\0\0\0t\b\0\0\02DMesh_2i\f\0\0\0i\10\0\0\0i\14\0\0\0s\b\0\0\0toto [m]s\f\0\0\0energie [kW](\ e\0\0\0R\ 6\0\0\0R\a\0\0\0R       \0\0\0R
++\0\0\0R\b\0\0\0R\v\0\0\0R\1c\0\0\0R\1e\0\0\0R\1d\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\11\0\0\0R\12\0\0\0(\ 5\0\0\0R\13\0\0\0\0\0\0R!\0\0\0R"\0\0\0R\17\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\r\0\0\0build2DMesh_2S\0\0\0s&\0\0\0\0\ 16\ 1\18\ 1N\ 1\f\ 1\r\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\10\ 1\10\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0\18\0\0\0C\0\0\0s{\ 2\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 5\0d\ 2\0d\ 6\0d\a\0d\ 5\0g\18\0}\ 1\0d\b\0d   \0d
++\0d    \0d\v\0d
++\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d    \0d\b\0d\f\0d\11\0d     \0d\13\0d\11\0d\ e\0d\v\0d  \0g\18\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d
++\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\14\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\15\0\83\ 1\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\12\0d\13\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\13\0d\f\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\12\0d\13\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\13\0d\f\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\12\0d\13\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\13\0d\f\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0\0|\ 2\0d\16\0d\17\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d       \0|\ 2\0d\17\0d\18\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d       \0|\ 2\0d\16\0d\17\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d       \0|\ 2\0d\17\0d\18\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\b\0d\f\0|\ 2\0d\f\0d\16\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\b\0d\f\0|\ 2\0d\f\0d\16\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\b\0d\f\0|\ 2\0d\f\0d\16\0!\83\ 3\0\ 1|\ 3\0j       \0\83\0\0\ 1t
++\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\v\0|\ 1\0d\16\0d
++\0\83\ 3\0\ 1|\ 4\0j\f\0d\12\0d\19\0\83\ 2\0\ 1|\ 4\0j\f\0d\b\0d\1a\0\83\ 2\0\ 1|\ 3\0j\r\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\e\0\0\0Ng333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?g\9a\99\99\99\99\99©¿gffffffî?g333333ó?gÍÌÌÌÌÌÜ?i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i
++\0\0\0i\b\0\0\0i     \0\0\0i\v\0\0\0i\a\0\0\0i\0\0\0\0i\ 3\0\0\0i\r\0\0\0t\b\0\0\02DMesh_3i\f\0\0\0i\10\0\0\0i\14\0\0\0s\b\0\0\0toto [m]s\f\0\0\0energie [kW](\ e\0\0\0R\ 6\0\0\0R\a\0\0\0R  \0\0\0R
++\0\0\0R\b\0\0\0R\v\0\0\0R\1c\0\0\0R\1e\0\0\0R\1d\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\11\0\0\0R\12\0\0\0(\ 5\0\0\0R\13\0\0\0\0\0\0R!\0\0\0R"\0\0\0R\17\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\r\0\0\0build2DMesh_3i\0\0\0s6\0\0\0\0\ 16\ 1\18\ 1N\ 1\f\ 1\r\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\10\ 1\10\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0b\ 1\0\0C\0\0\0s¿\b\0\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 3\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 4\0d\ 1\0d\ 5\0d\ 1\0d\ 1\0d\ 5\0d\ 2\0d\ 1\0d\ 2\0d\ 5\0d\ 1\0d\ 1\0d\ 5\0d\ 1\0d\ 6\0d\ 2\0d\ 1\0d\ 6\0d\ 5\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 6\0d\ 1\0d\ 5\0d\ 5\0d\ 1\0d\ 5\0d\ 6\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 4\0d\ 2\0d\ 5\0d\ 1\0d\ 2\0d\ 5\0d\ 2\0d\ 2\0d\ 2\0d\ 5\0d\ 2\0d\ 1\0d\ 5\0d\ 2\0d\ 6\0d\ 2\0d\ 2\0d\ 6\0d\ 5\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 6\0d\ 2\0d\ 5\0d\ 5\0d\ 2\0d\ 5\0d\ 6\0d\ 2\0d\ 1\0d\ 1\0d\ 5\0d\ 2\0d\ 2\0d\ 5\0d\ 2\0d\ 3\0d\ 5\0d\ 1\0d\ 2\0d\ 5\0d\ 2\0d\ 4\0d\ 5\0d\ 5\0d\ 1\0d\ 5\0d\ 5\0d\ 2\0d\ 5\0d\ 2\0d\ 5\0d\ 5\0d\ 1\0d\ 5\0d\ 5\0d\ 6\0d\ 2\0d\ 5\0d\ 6\0d\ 5\0d\ 5\0d\ 1\0d\ 2\0d\ 5\0d\ 2\0d\ 6\0d\ 5\0d\ 5\0d\ 5\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 1\0d\ 1\0d\ 6\0d\ 2\0d\ 2\0d\ 6\0d\ 2\0d\ 3\0d\ 6\0d\ 1\0d\ 2\0d\ 6\0d\ 2\0d\ 4\0d\ 6\0d\ 5\0d\ 1\0d\ 6\0d\ 5\0d\ 2\0d\ 6\0d\ 2\0d\ 5\0d\ 6\0d\ 1\0d\ 5\0d\ 6\0d\ 6\0d\ 2\0d\ 6\0d\ 6\0d\ 5\0d\ 6\0d\ 1\0d\ 2\0d\ 6\0d\ 2\0d\ 6\0d\ 6\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 6\0d\ 6\0\0}\ 1\0d\a\0d\b\0d    \0d
++\0d\v\0d\f\0d\r\0d\ e\0d        \0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d    \0d\r\0d\15\0d\13\0d\14\0d\13\0d\15\0d\16\0d\12\0d\14\0d\12\0d\11\0d\17\0d\16\0d\14\0d\11\0d\10\0d\18\0d\17\0d\14\0d\10\0d\ f\0d\19\0d\18\0d\14\0d\ f\0d   \0d\r\0d\19\0d\14\0d\r\0d\15\0d\16\0d\17\0d\18\0d\19\0d   \0d\13\0d\1a\0d
++\0d\r\0d\15\0d\e\0d\ e\0d\12\0d\1c\0d\1d\0d\13\0d\16\0d\1e\0d\1f\0d\15\0d\b\0\0d\11\0d\10\0d\ f\0\0d\14\0d\b\0d\f\0d\r\0d  \0d\14\0d   \0d\r\0d\19\0d\ f\0d\14\0d\ f\0d\19\0d\18\0d\10\0d\14\0d\10\0d\18\0d\17\0d\11\0d\14\0d\11\0\0d!\0d\17\0d\14\0\0d\b\0d\f\0d!\0d\14\0d\f\0d\r\0d\19\0d\18\0d\17\0d!\0d\11\0d"\0d#\0d\12\0d\17\0d$\0d%\0d\16\0d\v\0d\f\0d\r\0d\ e\0d&\0d'\0d(\0d)\0d\r\0d\19\0d\18\0d\17\0d\16\0d\15\0d\14\0d\r\0d(\0d*\0d\15\0d\14\0d\15\0d*\0d+\0d\16\0d\14\0d\16\0d\17\0d,\0d+\0d\14\0d\17\0d\18\0d-\0d,\0d\14\0d\18\0d\19\0d.\0d-\0d\14\0d\19\0d\r\0d(\0d.\0d\14\0d(\0d*\0d+\0d,\0d-\0d.\0d\r\0d\15\0d\e\0d\ e\0d(\0d*\0d/\0d)\0d\16\0d\1e\0d\1f\0d\15\0d+\0d0\0d1\0d*\0d\f\0d!\0d\17\0d\18\0d\19\0d\r\0d\14\0d\f\0d'\0d(\0d\r\0d\14\0d\r\0d(\0d.\0d\19\0d\14\0d\19\0d.\0d-\0d\18\0d\14\0d\18\0d-\0d,\0d\17\0d\14\0d\17\0d!\0d2\0d,\0d\14\0d!\0d\f\0d'\0d2\0d\14\0d'\0d(\0d.\0d-\0d,\0d2\0d\17\0d$\0d%\0d\16\0d,\0d3\0d4\0d+\0d&\0d'\0d(\0d)\0d5\0d6\0d7\0d8\0d(\0d.\0d-\0d,\0d+\0d*\0d\14\0d(\0d7\0d9\0d*\0d\14\0d*\0d9\0d:\0d+\0d\14\0d+\0d,\0d;\0d:\0d\14\0d,\0d-\0d<\0d;\0d\14\0d-\0d.\0d=\0d<\0d\14\0d.\0d(\0d7\0d=\0d\14\0d7\0d9\0d:\0d;\0d<\0d=\0d(\0d*\0d/\0d)\0d7\0d9\0d>\0d8\0d+\0d0\0d1\0d*\0d:\0d?\0d@\0d9\0d'\0d2\0d,\0d-\0d.\0d(\0d\14\0d'\0d6\0d7\0d(\0d\14\0d(\0d7\0d=\0d.\0d\14\0d.\0d=\0d<\0d-\0d\14\0d-\0d<\0d;\0d,\0d\14\0d,\0d2\0dA\0d;\0d\14\0d2\0d'\0d6\0dA\0d\14\0d6\0d7\0d=\0d<\0d;\0dA\0d,\0d3\0d4\0d+\0d;\0dB\0dC\0d:\0gb\ 1}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0dD\0\83\ 1\0\ 1|\ 3\0j\ 3\0d
++\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\ e\0\83\ 1\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0d\a\0\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0d9\0dC\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0dC\0dE\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0dF\0dG\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0dG\0dH\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0dI\0dJ\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0dJ\0dK\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0dL\0dM\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0dM\0dN\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0dO\0dP\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0dP\0dQ\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0\0|\ 2\0dR\0dS\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d+\0|\ 2\0\0d9\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d+\0|\ 2\0dE\0dF\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d+\0|\ 2\0dH\0dI\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d+\0|\ 2\0dK\0dL\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d+\0|\ 2\0dN\0dO\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d+\0|\ 2\0dQ\0dR\0!\83\ 3\0\ 1|\ 3\0j\b\0\83\0\0\ 1t     \0j\ 1\0\83\0\0}\ 4\0|\ 4\0j
++\0|\ 1\0dT\0d
++\0\83\ 3\0\ 1|\ 4\0j\v\0d\a\0dU\0\83\ 2\0\ 1|\ 4\0j\v\0d  \0dV\0\83\ 2\0\ 1|\ 4\0j\v\0d\ f\0dW\0\83\ 2\0\ 1|\ 3\0j\f\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(X\0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0ô?g\0\0\0\0\0\0ø?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@i\0\0\0\0i\v\0\0\0i\ 1\0\0\0i\ 3\0\0\0i\ f\0\0\0i\1a\0\0\0i\10\0\0\0i\12\0\0\0i\ 2\0\0\0i\ 4\0\0\0i\a\0\0\0i\r\0\0\0i\ 6\0\0\0iÿÿÿÿi\15\0\0\0i\1c\0\0\0i\16\0\0\0i\13\0\0\0i\11\0\0\0i\ 5\0\0\0i\14\0\0\0i
++\0\0\0i  \0\0\0i\19\0\0\0i\18\0\0\0i\b\0\0\0i\17\0\0\0i\f\0\0\0i\ e\0\0\0i\e\0\0\0i\1d\0\0\0i\1e\0\0\0i)\0\0\0i\1f\0\0\0i!\0\0\0i$\0\0\0i+\0\0\0i%\0\0\0i"\0\0\0\0\0\0i#\0\0\0i(\0\0\0i'\0\0\0i&\0\0\0i*\0\0\0i,\0\0\0i-\0\0\0i8\0\0\0i.\0\0\0i0\0\0\0i3\0\0\0i:\0\0\0i4\0\0\0i1\0\0\0i/\0\0\0i2\0\0\0i7\0\0\0i6\0\0\0i5\0\0\0i9\0\0\0i;\0\0\0t\b\0\0\03DMesh_1iC\0\0\0in\0\0\0iv\0\0\0i~\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\1f\ 1\0\0i'\ 1\0\0i/\ 1\0\0iZ\ 1\0\0ib\ 1\0\0i<\0\0\0s\b\0\0\0titi [m]s\16\0\0\0density power [MW/m^3]s\ 6\0\0\0t [kW](\r\0\0\0R\ 6\0\0\0R\a\0\0\0R\b\0\0\0R  \0\0\0R
++\0\0\0R\v\0\0\0t
++\0\0\0NORM_HEXA8t\f\0\0\0NORM_POLYHEDR\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\11\0\0\0R\12\0\0\0(\ 5\0\0\0R\13\0\0\0R\14\0\0\0R\15\0\0\0t\ 3\0\0\0retR\17\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\r\0\0\0build3DMesh_1\86\0\0\0sd\0\0\0\0\ 1Z\ 1-\ 1Z\ 1-\ 1Z\ 1-\ 1Z\ 13\ 3\99\ 10\ 1\81\ 1\18\ 2\99\ 10\ 1\81\ 1\18\ 2\99\ 10\ 1\81\ 1\1e\ 2\f\ 1\r\ 1\r\ 1\r\ 2\1a\ 1\1a\ 1\1a\ 1\1a\ 2\1a\ 1\1a\ 1\1a\ 1\1a\ 2\1a\ 1\1a\ 1\1a\ 1\1a\ 2\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 2
++\ 1\f\ 1\13\ 1\10\ 1\10\ 1\10\ 1\r\ 1c\ 1\0\0\0\ 5\0\0\0$\0\0\0C\0\0\0\ 1\0\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 1\0d\ 1\0d\ 3\0d\ 1\0d\ 2\0d\ 3\0d\ 1\0d\ 3\0d\ 3\0d\ 1\0d\ 4\0d\ 5\0d\ 1\0d\ 2\0d\ 6\0d\ 1\0d\a\0d\ 5\0d\ 1\0g$\0}\ 1\0d\b\0d     \0d
++\0d    \0d\v\0d
++\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d    \0d\b\0d\f\0d\11\0d     \0d\13\0d\11\0d\ e\0d\v\0d  \0g\18\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d
++\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\f\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\14\0\83\ 1\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\12\0d\13\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\ 6\0d\13\0|\ 2\0d\13\0d\f\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0\0|\ 2\0d\15\0d\16\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\a\0d       \0|\ 2\0d\16\0d\17\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t\b\0d\f\0|\ 2\0d\f\0d\15\0!\83\ 3\0\ 1|\ 3\0j\ 5\0t        \0d      \0|\ 2\0d\17\0d\18\0!\83\ 3\0\ 1|\ 3\0j
++\0\83\0\0\ 1t\v\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\f\0|\ 1\0d\15\0d\13\0\83\ 3\0\ 1|\ 4\0j\r\0d\12\0d\19\0\83\ 2\0\ 1|\ 4\0j\r\0d
++\0d\1a\0\83\ 2\0\ 1|\ 3\0j\ e\0|\ 4\0\83\ 1\0\ 1|\ 3\0S(\e\0\0\0Ng333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?g\9a\99\99\99\99\99©¿gffffffî?g333333ó?gÍÌÌÌÌÌÜ?i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i
++\0\0\0i\b\0\0\0i     \0\0\0i\v\0\0\0i\a\0\0\0i\0\0\0\0i\ 3\0\0\0t\f\0\0\03DSurfMesh_1i\f\0\0\0i\10\0\0\0i\14\0\0\0i\18\0\0\0s\b\0\0\0toto [m]s\a\0\0\0ff [km](\ f\0\0\0R\ 6\0\0\0R\a\0\0\0R   \0\0\0R
++\0\0\0R\b\0\0\0R\v\0\0\0R\1c\0\0\0R\1e\0\0\0R\1d\0\0\0R\1f\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0R\11\0\0\0R\12\0\0\0(\ 5\0\0\0R\13\0\0\0\0\0\0R!\0\0\0R"\0\0\0R\17\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\11\0\0\0build3DSurfMesh_1Ä\0\0\0s(\0\0\0\0\ 1Q\ 1!\ 1N\ 1\f\ 1\r\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\f\ 1\13\ 1\10\ 1\10\ 1\r\ 1c\ 1\0\0\0
++\0\0\0\ 5\0\0\0C\0\0\0\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0g\ 5\0}\ 2\0|\ 1\0j\ 2\0|\ 2\0t\ 3\0\83\ 2\0}\ 3\0t\0\0j\ 4\0\83\0\0}\ 4\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0g\ 4\0}\ 5\0|\ 4\0j\ 2\0|\ 5\0t\ 3\0\83\ 2\0}\ 6\0|\ 6\0j\ 5\0d\ 4\0\83\ 1\0\ 1d\ 6\0d\a\0d\ 6\0g\ 3\0}\a\0d\ 6\0d\ 6\0d\ 6\0g\ 3\0}\b\0|\ 6\0j\ 6\0|\b\0|\a\0t\a\0\vd\b\0\15\83\ 3\0\ 1|\ 3\0j\b\0|\ 6\0d\ 1\0\83\ 2\0}        \0|      \0S(     \0\0\0Ni\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@(       \0\0\0R\ 4\0\0\0R.\0\0\0t\11\0\0\0buildPartOfMySelft\ 5\0\0\0FalseR\18\0\0\0t\14\0\0\0changeSpaceDimensiont\ 6\0\0\0rotateR\ 1\0\0\0t\11\0\0\0buildExtrudedMesh(
++\0\0\0R\13\0\0\0t\v\0\0\0m3dsurfBaset\a\0\0\0numberst\a\0\0\0m3dsurft\a\0\0\0m1dBaset\b\0\0\0numbers2t\ 3\0\0\0m1dt\ 3\0\0\0vect\ 2\0\0\0ptR+\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\r\0\0\0build3DMesh_2Ú\0\0\0s\18\0\0\0\0\ 1\f\ 1\15\ 1\12\ 1\f\ 1\12\ 1\12\ 1\r\ 1\ f\ 1\ f\ 1\18\ 1\12\ 1c\ 1\0\0\0\19\0\0\0\ e\ 1\0\0C\0\0\0sW\11\0\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 4\0d\ 1\0d\ 5\0d\ 1\0d\ 6\0d\a\0d\ 2\0d\a\0d\ 3\0d\a\0d\ 4\0d\a\0d\ 5\0d\a\0d\ 6\0d\b\0d\ 2\0d\b\0d\ 3\0d\b\0d\ 4\0d\b\0d\ 5\0d\b\0d\ 6\0d     \0d\ 2\0d   \0d\ 3\0d   \0d\ 4\0d   \0d\ 5\0d   \0d\ 6\0d\ 6\0d\ 2\0d\ 6\0d\ 3\0d\ 6\0d\ 4\0d\ 6\0d\ 5\0d\ 6\0d\ 6\0d\ 5\0d\ 2\0d\ 5\0d\ 3\0d\ 5\0d\ 4\0d\ 5\0d\ 5\0d\ 5\0d\ 6\0d\ 4\0d\ 2\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 4\0d\ 5\0d\ 4\0d\ 6\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 5\0d\ 3\0d\ 6\0d\ 2\0d\ 3\0d\ 2\0d\ 4\0d\ 2\0d\ 5\0d\ 2\0d\ 6\0d\ 2\0d\ 2\0d\ 2\0d\ 6\0d\ 1\0d\ 6\0d\ 2\0d\ 1\0d\ 1\0d\ 1\0d\ 6\0d\ 6\0d\ 6\0d\ 6\0d\ 6\0d\ 1\0d\ 6\0d\ 1\0d
++\0d\ 6\0d\ 3\0d\ 6\0d\v\0d\ 6\0d\ 4\0d\ 6\0d\f\0d\ 6\0d\ 5\0d\ 6\0d\r\0d\ 6\0d\ 6\0d  \0d\ 6\0d\b\0d\ 6\0d\a\0d\r\0d\ 1\0d\ 5\0d\ 1\0d\f\0d\ 1\0d\ 4\0d\ 1\0d\v\0d\ 1\0d\ 3\0d\ 1\0d
++\0d\ 1\0d\ 2\0d\a\0d\ 2\0d\b\0d\ 2\0d  \0d\r\0d   \0d\r\0d\b\0d\r\0d\a\0d\ 5\0d       \0d\ 5\0d\b\0d\ 5\0d\a\0d\f\0d       \0d\f\0d\b\0d\f\0d\a\0d\ 4\0d       \0d\ 4\0d\b\0d\ 4\0d\a\0d\v\0d       \0d\v\0d\b\0d\v\0d\a\0d\ 3\0d       \0d\ 3\0d\b\0d\ 3\0d\a\0d
++\0d    \0d
++\0d\b\0d
++\0d\a\0d\ e\0d\ 6\0d   \0d\ 6\0d\ f\0d\ 6\0d\b\0d\ 6\0d\10\0d\ 6\0d\a\0d\ 6\0d\11\0d\ 6\0d\ 1\0d  \0d\ 1\0d\b\0d\ 1\0d\a\0d\11\0d\ 1\0d\a\0d\ 1\0d\10\0d\ 1\0d\b\0d\ 1\0d\ f\0d\ 1\0d    \0d\ 1\0d\ e\0d\ 1\0d\ 6\0d\a\0d\ 6\0d\b\0d\ 6\0d      \0d\11\0d   \0d\11\0d\b\0d\11\0d\a\0d\a\0d       \0d\a\0d\b\0d\a\0d\a\0d\10\0d       \0d\10\0d\b\0d\10\0d\a\0d\b\0d       \0d\b\0d\b\0d\b\0d\a\0d\ f\0d       \0d\ f\0d\b\0d\ f\0d\a\0d  \0d      \0d      \0d\b\0d   \0d\a\0d\ e\0d        \0d\ e\0d\b\0d\ e\0d\a\0g\ e\ 1}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0|\ 1\0d\12\0d\13\0\83\ 3\0\ 1|\ 2\0j\ 3\0d\14\0d\ 2\0\83\ 2\0}\ 2\0|\ 2\0j\ 4\0d\15\0d\16\0\83\ 2\0\ 1|\ 2\0j\ 4\0d\17\0d\18\0\83\ 2\0\ 1|\ 2\0j\ 4\0d\13\0d\19\0\83\ 2\0\ 1d\15\0d\17\0d\1a\0d\15\0d\1a\0d\e\0d\17\0d\13\0d\1a\0d\13\0d\1c\0d\1a\0d\13\0d\14\0d\1d\0d\13\0d\1d\0d\1c\0d\14\0d\1e\0d\1d\0d\1e\0d\1f\0d\1d\0d\e\0d\1a\0\0d\e\0\0d!\0d\1a\0d\1c\0\0d\1c\0d"\0\0d\1c\0d\1d\0d#\0d\1c\0d#\0d"\0d\1d\0d\1f\0d#\0d\1f\0d$\0d#\0d!\0\0d%\0d!\0d%\0d&\0\0d"\0d%\0d"\0d'\0d%\0d"\0d#\0d(\0d"\0d(\0d'\0d#\0d$\0d(\0d$\0d)\0d(\0d&\0d%\0d*\0d&\0d*\0d+\0d%\0d'\0d*\0d'\0d,\0d*\0d'\0d(\0d-\0d'\0d-\0d,\0d(\0d)\0d-\0d)\0d.\0d-\0d+\0d*\0d/\0d+\0d/\0d0\0d*\0d,\0d/\0d,\0d1\0d/\0d,\0d-\0d2\0d,\0d2\0d1\0d-\0d.\0d2\0d.\0d3\0d2\0d0\0d/\0d4\0d0\0d4\0d5\0d/\0d1\0d4\0d1\0d6\0d4\0d1\0d2\0d7\0d1\0d7\0d6\0d2\0d3\0d7\0d3\0d8\0d7\0d5\0d4\0d9\0d5\0d9\0d:\0d4\0d6\0d9\0d6\0d;\0d9\0d6\0d7\0d<\0d6\0d<\0d;\0d7\0d8\0d<\0d8\0d=\0d<\0d:\0d9\0d>\0d:\0d>\0d?\0d9\0d;\0d>\0d;\0d@\0d>\0d;\0d<\0dA\0d;\0dA\0d@\0d<\0d=\0dA\0d=\0dB\0dA\0\0}\ 3\0dC\0dD\0dE\0dF\0dD\0dG\0dH\0dE\0dG\0dI\0dJ\0dH\0dI\0dK\0dL\0dJ\0dF\0dE\0dM\0dN\0dE\0dH\0dO\0dM\0dH\0dJ\0dP\0dO\0dJ\0dL\0dQ\0dP\0dN\0dM\0dR\0dS\0dM\0dO\0dT\0dR\0dO\0dP\0dU\0dT\0dP\0dQ\0dV\0dU\0dS\0dR\0dW\0dX\0dR\0dT\0dY\0dW\0dT\0dU\0dZ\0dY\0dU\0dV\0d[\0dZ\0dX\0dW\0d\\0d]\0dW\0dY\0d^\0d\\0dY\0dZ\0d_\0d^\0dZ\0d[\0d`\0d_\0d]\0d\\0da\0db\0d\\0d^\0dc\0da\0d^\0d_\0dd\0dc\0d_\0d`\0de\0dd\0db\0da\0df\0dg\0da\0dc\0dh\0df\0dc\0dd\0di\0dh\0dd\0de\0dj\0di\0dg\0df\0dk\0dl\0df\0dh\0dm\0dk\0dh\0di\0dn\0dm\0di\0dj\0do\0dn\0dp\0dq\0dr\0ds\0dq\0dt\0du\0dr\0dt\0dv\0dw\0du\0dv\0dx\0dy\0dw\0ds\0dr\0dz\0d{\0dr\0du\0d|\0dz\0du\0dw\0d}\0d|\0dw\0dy\0d~\0d}\0d{\0dz\0d\7f\0d\80\0dz\0d|\0d\81\0d\7f\0d|\0d}\0d\82\0d\81\0d}\0d~\0d\83\0d\82\0d\80\0d\7f\0d\84\0d\85\0d\7f\0d\81\0d\86\0d\84\0d\81\0d\82\0d\87\0d\86\0d\82\0d\83\0d\88\0d\87\0d\85\0d\84\0d\89\0d\8a\0d\84\0d\86\0d\8b\0d\89\0d\86\0d\87\0d\8c\0d\8b\0d\87\0d\88\0d\8d\0d\8c\0d\8a\0d\89\0d\8e\0d\8f\0d\89\0d\8b\0d\90\0d\8e\0d\8b\0d\8c\0d\91\0d\90\0d\8c\0d\8d\0d\92\0d\91\0d\8f\0d\8e\0d\93\0d\94\0d\8e\0d\90\0d\95\0d\93\0d\90\0d\91\0d\96\0d\95\0d\91\0d\92\0d\97\0d\96\0d\94\0d\93\0d\98\0d\99\0d\93\0d\95\0d\9a\0d\98\0d\95\0d\96\0d\9b\0d\9a\0d\96\0d\97\0d\9c\0d\9b\0g\0\ 1}\ 4\0t\ 5\0j\ 1\0d\9d\0d\13\0\83\ 2\0}\ 5\0|\ 5\0j\ 6\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\a\0d_\0\83\ 1\0\ 1t\b\0|\ 3\0\83\ 1\0d\14\0\1a}\ 6\0x:\0t        \0|\ 6\0\83\ 1\0D],\0}\a\0|\ 5\0j
++\0t\v\0d\14\0|\ 3\0d\14\0|\a\0\14d\14\0|\a\0\14d\14\0\17!\83\ 3\0\ 1q&   Wt\b\0|\ 4\0\83\ 1\0d\1e\0\1a}\b\0x:\0t   \0|\b\0\83\ 1\0D],\0}\a\0|\ 5\0j
++\0t\f\0d\1e\0|\ 4\0d\1e\0|\a\0\14d\1e\0|\a\0\14d\1e\0\17!\83\ 3\0\ 1qs   W|\ 5\0j\r\0\83\0\0\ 1|\ 5\0j\ e\0d\9e\0\83\ 1\0\ 1t\ 5\0j\ 1\0d\9d\0d\17\0\83\ 2\0}        \0|      \0j\ 6\0|\ 2\0\83\ 1\0\ 1d\15\0d\17\0d\17\0d\13\0d\13\0d\14\0d\14\0d\1e\0d\1e\0d\1f\0d\1f\0d$\0d$\0d)\0d)\0d.\0d.\0d3\0d3\0d8\0d8\0d=\0d=\0dB\0dB\0dA\0dA\0d@\0d@\0d>\0d>\0d?\0d?\0d:\0d:\0d5\0d5\0d0\0d0\0d+\0d+\0d&\0d&\0d!\0d!\0d\e\0d\e\0d\15\0dB\0d=\0d=\0d8\0d8\0d3\0d3\0d.\0d.\0d)\0d)\0d$\0d$\0d\1f\0d\1f\0d\1e\0d\99\0d\94\0d\94\0d\8f\0d\8f\0d\8a\0d\8a\0d\85\0d\85\0d\80\0d\80\0d{\0d{\0ds\0ds\0dp\0dp\0dq\0dq\0dt\0dt\0dv\0dv\0dx\0dx\0dy\0dy\0d~\0d~\0d\83\0d\83\0d\88\0d\88\0d\8d\0d\8d\0d\92\0d\92\0d\97\0d\97\0d\9c\0d\9c\0d\9b\0d\9b\0d\9a\0d\9a\0d\98\0d\98\0d\99\0dl\0dg\0dg\0db\0db\0d]\0d]\0dX\0dX\0dS\0dS\0dN\0dN\0dF\0dF\0dC\0dC\0dD\0dD\0dG\0dG\0dI\0dI\0dK\0dK\0dL\0dL\0dQ\0dQ\0dV\0dV\0d[\0d[\0d`\0d`\0de\0de\0dj\0dj\0do\0do\0dn\0dn\0dm\0dm\0dk\0dk\0dl\0\0}
++\0|    \0j\a\0d\81\0\83\ 1\0\ 1x:\0\0d\81\0\83\ 1\0D],\0}\a\0\0j
++\0t\ f\0d\13\0|
++\0d\13\0|\a\0\14d\13\0|\a\0\14d\13\0\17!\83\ 3\0\ 1\vW| \0j\r\0\83\0\0\ 1|       \0j\ e\0d\9e\0\83\ 1\0\ 1t\ 5\0j\ 1\0d\9d\0d\15\0\83\ 2\0}\v\0|\v\0j\ 6\0|\ 2\0\83\ 1\0\ 1d?\0d\15\0d\9c\0dK\0g\ 4\0}\f\0|\v\0j\a\0d\1e\0\83\ 1\0\ 1x.\0t   \0d\1e\0\83\ 1\0D] \0}\a\0|\v\0j
++\0t\10\0d\17\0|\f\0|\a\0\19g\ 1\0\83\ 3\0\ 1qk\fW|\v\0j\r\0\83\0\0\ 1t\11\0j\ 1\0\83\0\0}\r\0|\r\0j\12\0d_\0d\17\0\83\ 2\0\ 1d\9f\0|\r\0d~\0*d \0|\r\0d~\0d]\0+d¡\0|\r\0d]\0)t\11\0j\ 1\0\83\0\0}\ e\0|\ e\0j\12\0d\81\0d\17\0\83\ 2\0\ 1\0|\ e\0d\1e\0*d£\0|\ e\0d\1e\0d"\0+d¤\0|\ e\0d"\0d%\0+d¥\0|\ e\0d%\0d.\0+d¦\0|\ e\0d.\0d2\0+d§\0|\ e\0d2\0d6\0+d¨\0|\ e\0d6\0d>\0+d©\0|\ e\0d>\0d?\0+dª\0|\ e\0d?\0dx\0+d«\0|\ e\0dx\0d\85\0+d¬\0|\ e\0d\85\0d~\0+d­\0|\ e\0d~\0d\92\0+d®\0|\ e\0d\92\0dz\0+d¯\0|\ e\0dz\0)t\11\0j\ 1\0\83\0\0}\ f\0|\ f\0j\ 2\0\0\0\0\0g\ 4\0d\1e\0d\17\0\83\ 3\0\ 1t\11\0j\ 1\0\83\0\0}\10\0|\10\0j\12\0d\12\0d\17\0\83\ 2\0\ 1|\10\0j\13\0\83\0\0\ 1t\11\0j\ 1\0\83\0\0}\11\0|\11\0j\12\0d#\0d\17\0\83\ 2\0\ 1|\11\0j\14\0d\17\0\83\ 1\0\ 1|\11\0|\10\0d\15\0d\1e\0d.\0dB\0d?\0d\99\0dC\0d\9c\0dK\0dp\0dl\0do\0dx\0g\r\0<t\11\0j\ 1\0\83\0\0}\12\0|\12\0j\12\0d_\0d\17\0\83\ 2\0\ 1|\12\0j\14\0d\17\0\83\ 1\0\ 1t\11\0j\ 1\0\83\0\0}\13\0|\13\0j\12\0d\81\0d\17\0\83\ 2\0\ 1|\13\0j\14\0dh\0\83\ 1\0\ 1t\11\0j\ 1\0\83\0\0}\14\0|\14\0j\12\0d\1e\0d\17\0\83\ 2\0\ 1|\14\0j\14\0da\0\83\ 1\0\ 1\0\0\0\0\0\0\0\0\0\0\0d¿\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g#\0}\15\0\0d\e\0\0d\17\0\0\0d\1e\0\0d\13\0\0d\1a\0\0d\1c\0\0d\1d\0\0d\1f\0\0d!\0\0\0\0d"\0\0d#\0\0d\14\0d\15\0\0\0\0\0\0\0d\9f\0g#\0}\16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0g&\0}\17\0d\e\0g\ 1\0\0g\ 1\0d\17\0g\ 1\0\0g\ 1\0d\1e\0g\ 1\0\0g\ 1\0\0g\ 1\0d\13\0g\ 1\0\0g\ 1\0\0g\ 1\0\0g\ 1\0\0g\ 1\0\0g\ 1\0\0\0\0\0g\ 4\0d\1a\0g\ 1\0\0g\ 1\0d\1c\0g\ 1\0\0g\ 1\0d\1d\0g\ 1\0\0g\ 1\0d\1f\0g\ 1\0\0g\ 1\0d!\0g\ 1\0\0g\ 1\0\0g\ 1\0\0g\ 1\0d"\0g\ 1\0\0g\ 1\0d#\0g\ 1\0\0g\ 1\0d\14\0g\ 1\0\0g\ 1\0\0\0d\9f\0g\ 3\0\0g\ 1\0\0g\ 1\0d\9f\0g\ 1\0\0\0\0\0\0\0d\9f\0g\a\0d\14\0g\ 1\0g&\0}\18\0|\ 5\0|       \0|\v\0|\r\0|\ e\0|\ f\0|\10\0|\12\0|\13\0|\14\0|\15\0|\16\0|\17\0|\18\0f\ e\0S(ý\0\0\0Ng\0\0\0\0\0\0$@g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ô?g\0\0\0\0\0\0\ 4@g\0\0\0\0\0\0\ e@g\0\0\0\0\0\0\14@g\0\0\0\0\0\80!@g\0\0\0\0\0\0\1e@g\0\0\0\0\0\0\19@g\0\0\0\0\0\0ä?g\0\0\0\0\0\0þ?g\0\0\0\0\0\0       @g\0\0\0\0\0\80\11@g\0\0\0\0\0\80\16@g\0\0\0\0\0\80\e@g\0\0\0\0\0@ @g\0\0\0\0\0À"@i\87\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\0\0\0\0s\f\0\0\0X [INCONNUE]i\ 1\0\0\0s\f\0\0\0Y [INCONNUE]s\f\0\0\0Z [INCONNUE]i\ 6\0\0\0i\ 5\0\0\0i\a\0\0\0i\b\0\0\0i\ 4\0\0\0i    \0\0\0i\v\0\0\0i
++\0\0\0i\f\0\0\0i\r\0\0\0i\ e\0\0\0i\10\0\0\0i\ f\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0i\15\0\0\0i\14\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\1a\0\0\0i\19\0\0\0i\e\0\0\0i\1c\0\0\0i\1d\0\0\0i\1f\0\0\0i\1e\0\0\0\0\0\0i!\0\0\0i"\0\0\0i$\0\0\0i#\0\0\0i%\0\0\0i&\0\0\0i'\0\0\0i(\0\0\0i,\0\0\0i)\0\0\0i*\0\0\0i+\0\0\0i.\0\0\0ie\0\0\0ir\0\0\0id\0\0\0if\0\0\0is\0\0\0ig\0\0\0it\0\0\0i0\0\0\0ih\0\0\0iu\0\0\0ic\0\0\0iv\0\0\0iw\0\0\0ii\0\0\0ix\0\0\0ib\0\0\0iy\0\0\0iz\0\0\0ij\0\0\0i{\0\0\0ia\0\0\0i|\0\0\0i}\0\0\0ik\0\0\0i~\0\0\0i`\0\0\0i\7f\0\0\0i\80\0\0\0il\0\0\0i\81\0\0\0i_\0\0\0i\82\0\0\0i\83\0\0\0im\0\0\0i\84\0\0\0i^\0\0\0i\85\0\0\0i\86\0\0\0in\0\0\0iq\0\0\0i2\0\0\0ip\0\0\0io\0\0\0i3\0\0\0i1\0\0\0i<\0\0\0iI\0\0\0i;\0\0\0i=\0\0\0iJ\0\0\0i>\0\0\0iK\0\0\0i4\0\0\0i?\0\0\0iL\0\0\0i:\0\0\0iM\0\0\0iN\0\0\0i@\0\0\0iO\0\0\0i9\0\0\0iP\0\0\0iQ\0\0\0iA\0\0\0iR\0\0\0i8\0\0\0iS\0\0\0iT\0\0\0iB\0\0\0iU\0\0\0i7\0\0\0iV\0\0\0iW\0\0\0iC\0\0\0iX\0\0\0i6\0\0\0iY\0\0\0iZ\0\0\0iD\0\0\0i[\0\0\0i5\0\0\0i\\0\0\0i]\0\0\0iE\0\0\0iH\0\0\0i-\0\0\0iG\0\0\0iF\0\0\0i/\0\0\0t\ 2\0\0\0mas\13\0\0\0CREE PAR CODE_ASTERiÿÿÿÿiþÿÿÿiýÿÿÿiøÿÿÿi÷ÿÿÿiöÿÿÿiõÿÿÿiôÿÿÿióÿÿÿiòÿÿÿiñÿÿÿiðÿÿÿiïÿÿÿiîÿÿÿiíÿÿÿiìÿÿÿiëÿÿÿiüÿÿÿiûÿÿÿiúÿÿÿiùÿÿÿt \0\0\0A1A2____________________________t \0\0\0A1______________________________t \0\0\0A2A4____________________________t \0\0\0A2______________________________t \0\0\0A3A1____________________________t \0\0\0A3C5____________________________t \0\0\0A3______________________________t \0\0\0A4A3____________________________t \0\0\0A4______________________________t \0\0\0B1C1____________________________t \0\0\0B1______________________________t \0\0\0B2B4____________________________t \0\0\0B2______________________________t \0\0\0B3B1____________________________t \0\0\0B3______________________________t \0\0\0B4C3____________________________t \0\0\0B4______________________________t \0\0\0C1C4____________________________t \0\0\0C1______________________________t \0\0\0C2B2____________________________t \0\0\0C2______________________________t \0\0\0C3C2____________________________t \0\0\0C3______________________________t \0\0\0C4B3____________________________t \0\0\0C4______________________________t \0\0\0C5A4____________________________t \0\0\0C5______PMMA____________________t\f\0\0\0FAMILLE_ZEROt \0\0\0MESH____APPS____AP1_____________t \0\0\0MESH____APPS____AP2_____________t \0\0\0MESH____APPS____AP3_____________t \0\0\0MESH____APPS____AP4_____________t \0\0\0MESH____DALQ1___DALLE___________t \0\0\0MESH____DALQ2___DALLE___________t \0\0\0MESH____DALT3___DALLE___________t\ 2\0\0\0A1t\ 4\0\0\0A1A2t\ 2\0\0\0A2t\ 4\0\0\0A2A4t\ 2\0\0\0A3t\ 4\0\0\0A3A1t\ 4\0\0\0A3C5t\ 2\0\0\0A4t\ 4\0\0\0A4A3t\ 3\0\0\0AP1t\ 3\0\0\0AP2t\ 3\0\0\0AP3t\ 3\0\0\0AP4t\ 4\0\0\0APPSt\ 2\0\0\0B1t\ 4\0\0\0B1C1t\ 2\0\0\0B2t\ 4\0\0\0B2B4t\ 2\0\0\0B3t\ 4\0\0\0B3B1t\ 2\0\0\0B4t\ 4\0\0\0B4C3t\ 2\0\0\0C1t\ 4\0\0\0C1C4t\ 2\0\0\0C2t\ 4\0\0\0C2B2t\ 2\0\0\0C3t\ 4\0\0\0C3C2t\ 2\0\0\0C4t\ 4\0\0\0C4B3t\ 2\0\0\0C5t\ 4\0\0\0C5A4t\ 5\0\0\0DALLEt\ 5\0\0\0DALQ1t\ 5\0\0\0DALQ2t\ 5\0\0\0DALT3t\ 4\0\0\0MESHt\ 4\0\0\0PMMA(\15\0\0\0R\ f\0\0\0R\a\0\0\0R\10\0\0\0t\14\0\0\0changeNbOfComponentsR\11\0\0\0R\ 6\0\0\0R\12\0\0\0R
++\0\0\0t\ 3\0\0\0lent\ 5\0\0\0rangeR\v\0\0\0R\1c\0\0\0R\1e\0\0\0R\ e\0\0\0t\ e\0\0\0setDescriptionR\f\0\0\0t\v\0\0\0NORM_POINT1t\f\0\0\0DataArrayIntt\ 5\0\0\0alloct\f\0\0\0fillWithZerot\ 4\0\0\0iota(\19\0\0\0R\13\0\0\0t\ 3\0\0\0coot\ 4\0\0\0coo2t\ 5\0\0\0c2trit\a\0\0\0c2quad4t\ 2\0\0\0m2t\ 5\0\0\0nbTrit\ 1\0\0\0it\ 5\0\0\0nbQuat\ 2\0\0\0m1t\ 5\0\0\0c1segt\ 2\0\0\0m0t\ 4\0\0\0c0ptt\ 2\0\0\0f2t\ 2\0\0\0f1t\ 2\0\0\0f0t\ 1\0\0\0pt\ 2\0\0\0p1t\ 2\0\0\0n2t\ 2\0\0\0n1t\ 2\0\0\0n0t\ 3\0\0\0fnst\ 4\0\0\0fidst\ 5\0\0\0grpnst\f\0\0\0famIdsPerGrp(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\15\0\0\0buildMultiLevelMesh_1è\0\0\0\0\0\0\0\ 1ÿ\0ÿ\0ÿ\03\ 1\f\ 1\13\ 1\12\ 1\10\ 1\10\ 1\10\ 1ÿ\0ÿ\0H\ 1ÿ\0ÿ\0ÿ\0     \ 1\12\ 1\r\ 1\r\ 1\10\ 1\13\ 1&\ 1\ 4\ 1\10\ 1\13\ 1&\ 1\ 4\ 1
++\ 1\r\ 1\12\ 1\r\ 1ÿ\0ç\ 1\r\ 1\13\ 1&\ 1\ 4\ 1
++\ 1\r\ 1\12\ 1\r\ 1\12\ 1\r\ 1\13\ 1\1a\ 1\ 4\ 1
++\ 1\f\ 1\10\ 1
++\ 1\r\ 1
++\ 1\f\ 1\10\ 1
++\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1
++\ 1\f\ 1\1f\ 1\f\ 1\10\ 1
++\ 1\f\ 1\10\ 1\r\ 11\ 1\f\ 1\10\ 1\r\ 1\f\ 1\10\ 1\r\ 1\f\ 1\10\ 1\r\ 1o\ 1o\ 1x\ 1ÿ\0\f\ 1c\ 2\0\0\0\15\0\0\0#\0\0\0C\0\0\0\ 5\0\0d\ 1\0}\ 2\0t\0\0j\ 1\0d\ 2\0d\ 3\0\83\ 2\0}\ 3\0|\ 3\0j\ 2\0d\ 4\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\ 5\0\83\ 1\0\ 1|\ 3\0j\ 2\0d\ 3\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\ 6\0d\a\0d\b\0g\ 3\0\83\ 1\0\ 1t\ 5\0|\ 2\0d\ 3\0\83\ 2\0}\ 4\0t\ 6\0t\ 6\0t\a\0t\a\0t\a\0t\b\0t\b\0g\a\0}\ 5\0d   \0d\ 4\0d
++\0d\ 3\0g\ 4\0d\v\0d\f\0d\r\0d\ e\0g\ 4\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0g\ 6\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0g\ 6\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0g\ 6\0d!\0d"\0d#\0d$\0d!\0d%\0d"\0d$\0d"\0d%\0d#\0d$\0d#\0d%\0d!\0g\ f\0d&\0d'\0d(\0d)\0d$\0d*\0d+\0d,\0d-\0d$\0d&\0d*\0d-\0d'\0d$\0d'\0d-\0d,\0d(\0d$\0d(\0d,\0d+\0d)\0d$\0d)\0d+\0d*\0d&\0g\1d\0g\a\0}\ 6\0|\ 4\0j     \0t
++\0|\ 5\0\83\ 1\0\83\ 1\0\ 1x-\0t\v\0|\ 5\0|\ 6\0\83\ 2\0D]\1c\0\\ 2\0}\a\0}\b\0|\ 4\0j\f\0|\a\0|\b\0\83\ 2\0\ 1q\8f\ 1W|\ 4\0j\r\0\83\0\0\ 1|\ 4\0j\ e\0|\ 3\0\83\ 1\0\ 1t\ 5\0|\ 2\0d
++\0\83\ 2\0\0t\ f\0t\ f\0t\10\0t\10\0t\10\0t\11\0t\11\0t\11\0t\11\0g   \0}
++\0d    \0d\ 4\0d
++\0g\ 3\0d\ 3\0d\v\0d\f\0g\ 3\0d\r\0d\ e\0d\ f\0d\10\0g\ 4\0d\11\0d\12\0d\13\0d\14\0g\ 4\0d\15\0d\16\0d\17\0d\18\0g\ 4\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0g\ 5\0d\1e\0d\1f\0\0d!\0d"\0g\ 5\0d#\0d%\0d&\0g\ 3\0d'\0d(\0d)\0d*\0d-\0d,\0d+\0g\a\0g        \0}\v\0|   \0j      \0t
++\0|
++\0\83\ 1\0\83\ 1\0\ 1x-\0t\v\0|
++\0|\v\0\83\ 2\0D]\1c\0\\ 2\0}\a\0}\b\0\0j\f\0|\a\0|\b\0\83\ 2\0\ 1\ 2W|     \0j\r\0\83\0\0\ 1|       \0j\ e\0|\ 3\0\83\ 1\0\ 1t\12\0j\ 1\0\83\0\0}\f\0|\f\0j\13\0d  \0|\ 4\0\83\ 2\0\ 1|\f\0j\13\0d$\0|      \0\83\ 2\0\ 1t\14\0j\ 1\0d    \0d\ 4\0d\f\0d\ e\0g\ 4\0\83\ 1\0}\r\0|\r\0j\15\0d.\0\83\ 1\0\ 1t\14\0j\ 1\0d\ 4\0d
++\0d\ 3\0d\v\0d\r\0g\ 5\0\83\ 1\0}\ e\0|\ e\0j\15\0d/\0\83\ 1\0\ 1|\ 1\0j\16\0t\17\0|\f\0j\18\0d      \0|\r\0|\ e\0g\ 2\0\83\ 4\0\ 1t\14\0j\ 1\0d   \0d\ 4\0d\f\0d\r\0g\ 4\0\83\ 1\0}\r\0|\r\0j\15\0d.\0\83\ 1\0\ 1|\f\0j\18\0\0|\r\0|\ e\0g\ 2\0\83\ 2\0\ 1t\14\0j\ 1\0d\ 4\0d
++\0d\ 3\0d\v\0d\ e\0g\ 5\0\83\ 1\0}\ f\0|\ f\0j\15\0d0\0\83\ 1\0\ 1t\14\0j\ 1\0d
++\0d\ 3\0d\v\0d\f\0g\ 4\0\83\ 1\0}\10\0|\10\0j\15\0d1\0\83\ 1\0\ 1t\14\0j\ 1\0d\f\0d\r\0d\ e\0d\ f\0g\ 4\0\83\ 1\0}\11\0|\11\0j\15\0d2\0\83\ 1\0\ 1|\f\0j\18\0d$\0|\ f\0|\10\0|\11\0g\ 3\0\83\ 2\0\ 1t\14\0j\ 1\0d      \0d\12\0d\16\0d\17\0g\ 4\0\83\ 1\0}\12\0|\12\0j\15\0d3\0\83\ 1\0\ 1t\14\0j\ 1\0d\ 4\0d
++\0d\14\0d\15\0d\17\0g\ 5\0\83\ 1\0}\13\0|\13\0j\15\0d4\0\83\ 1\0\ 1|\f\0j\18\0d\ 4\0|\12\0|\13\0g\ 2\0\83\ 2\0\ 1|\ 1\0j\16\0t\17\0|\f\0j\19\0d        \0t\14\0j\ 1\0d        \0d\ f\0d\10\0d\v\0d\f\0d\r\0d\ e\0d\11\0g\b\0\83\ 1\0\83\ 4\0\ 1|\f\0j\19\0\0t\14\0j\ 1\0d        \0d\ f\0d\10\0d\v\0d\f\0d\r\0d\ e\0g\a\0\83\ 1\0\83\ 2\0\ 1t\14\0j\ 1\0d    \0d\ f\0d\10\0d\v\0d\f\0d\r\0d\ e\0d\12\0d\13\0g      \0\83\ 1\0}\14\0|\f\0j\19\0d$\0|\14\0\83\ 2\0\ 1|\f\0j\19\0d$\0d5\0\83\ 2\0\ 1|\f\0j\19\0d$\0|\14\0\83\ 2\0\ 1t\14\0j\ 1\0|\f\0j\e\0\83\0\0d\ 4\0\17\83\ 1\0}\14\0|\14\0j\ 3\0d\ f\0\83\ 1\0\ 1|\ 1\0j\16\0t\17\0|\f\0j\19\0d\ 4\0|\14\0\83\ 4\0\ 1t\14\0j\ 1\0|\f\0j\e\0\83\0\0\83\ 1\0}\14\0|\14\0j\ 3\0d\ f\0\83\ 1\0\ 1|\f\0j\19\0d\ 4\0|\14\0\83\ 2\0\ 1|\f\0S(6\0\0\0\0\0\0Level 0 (meshDim=3) - 2 TETRA4 + 3 PENTA6 + 2 POLYH
++        # POLYH #0 becomes 1 TETRA4
++        # POLYH #1 becomes HEXA8
++        # Level -1 (meshDim=2) - 2 TRI3 + 3 QUAD4 + 4 POLYG
++        # POLYG #2 becomes TRI3t\r\0\0\0NightmareMeshi&\0\0\0i\ 3\0\0\0i\ 1\0\0\0g\0\0\0\0\0@\8f@s\ 5\0\0\0X [m]s\ 5\0\0\0Y [m]s\ 5\0\0\0Z [m]i\0\0\0\0i\ 2\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i   \0\0\0i
++\0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0i\ e\0\0\0i\ f\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\19\0\0\0i\1a\0\0\0i\e\0\0\0i\1c\0\0\0iÿÿÿÿi\1d\0\0\0i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i%\0\0\0i$\0\0\0i#\0\0\0t\a\0\0\0grp0_L0t\a\0\0\0grp1_L0t\b\0\0\0grp0_LM1t\b\0\0\0grp1_LM1t\b\0\0\0grp2_LM1t       \0\0\0grp0_Nodet   \0\0\0grp1_NodeN(\1c\0\0\0R\ f\0\0\0R\a\0\0\0t   \0\0\0rearrangeR\8f\0\0\0t\13\0\0\0setInfoOnComponentsR\ 6\0\0\0t\v\0\0\0NORM_TETRA4t\v\0\0\0NORM_PENTA6R*\0\0\0R
++\0\0\0R\88\0\0\0t\ 3\0\0\0zipR\v\0\0\0R\ e\0\0\0R\12\0\0\0R\1c\0\0\0R\1e\0\0\0R\1f\0\0\0t\f\0\0\0MEDFileUMesht\ e\0\0\0setMeshAtLevelR\8c\0\0\0R\b\0\0\0t\f\0\0\0assertRaisest\15\0\0\0InterpKernelExceptiont\10\0\0\0setGroupsAtLevelt\10\0\0\0setRenumFieldArrt\ 4\0\0\0Nonet\10\0\0\0getNumberOfNodes(\15\0\0\0R\13\0\0\0t\ 6\0\0\0testert\b\0\0\0meshNameR\14\0\0\0t\ 5\0\0\0mesh0t\ 5\0\0\0type0t\ 5\0\0\0conn0t\ 3\0\0\0typt \0\0\0nodalConnt\ 6\0\0\0meshM1t\ 6\0\0\0typeM1t\ 6\0\0\0connM1t\ 2\0\0\0mmRª\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\ 2\0\0\0da(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\13\0\0\0buildMLMeshUnPolyze=\ 1\0\0sx\0\0\0\0\ 6\ 6\ 2\12\0\r\0\r\0\r\0\16\ 1\ f\ 1\e\ 1í\ 1\13\ 1\1c\ 1\10\ 1\ 4\ 1
++\ 1\r\ 2\ f\ 1!\ 1\93\ 1\13\ 1\1c\ 1\10\ 1\ 4\ 1
++\ 1\r\ 2\f\ 1\10\ 1\10\ 1\e\0\r\ 1\1e\0\r\ 1\1f\ 1\e\0\r\ 1\16\ 1\1e\0\r\ 1\e\0\r\ 1\e\0\r\ 1\19\ 1\e\0\r\ 1\1e\0\r\ 1\16\ 2:\ 1.\ 1*\ 1\10\ 1\10\ 1\10\ 1\19\0\r\0\19\ 1\15\0\r\0\10\ 1c\ 1\0\0\0\a\0\0\0\12\0\0\0C\0\0\0s   \ 1\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0}\ 2\0t\ 3\0j\ 4\0t\ 5\0t\ 6\0\83\ 2\0}\ 3\0|\ 3\0j\a\0d\ 1\0\83\ 1\0\ 1|\ 3\0j\b\0|\ 1\0\83\ 1\0\ 1t        \0j\ 4\0\83\0\0}\ 4\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d        \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0g\12\0}\ 5\0|\ 4\0j
++\0|\ 5\0|\ 2\0d\14\0\83\ 3\0\ 1|\ 4\0j\v\0d\15\0d\16\0\83\ 2\0\ 1|\ 4\0j\v\0d\17\0d\18\0\83\ 2\0\ 1|\ 4\0j\v\0d\19\0d\1a\0\83\ 2\0\ 1|\ 3\0j\f\0|\ 4\0\83\ 1\0\ 1|\ 4\0j\r\0\83\0\0}\ 6\0|\ 3\0j\ e\0d\b\0d\15\0d\17\0\83\ 3\0\ 1|\ 3\0j\ f\0\83\0\0\ 1|\ 3\0S(\e\0\0\0Nt\12\0\0\0VectorFieldOnCellsg\0\0\0\0\0\0\0\0g\0\0\0\0\0\0$@g\0\0\0\0\0\04@g\0\0\0\0\0\0ð?g\0\0\0\0\0\0&@g\0\0\0\0\0\05@g\0\0\0\0\0\0\0@g\0\0\0\0\0\0(@g\0\0\0\0\0\06@g\0\0\0\0\0\0\b@g\0\0\0\0\0\0*@g\0\0\0\0\0\07@g\0\0\0\0\0\0\10@g\0\0\0\0\0\0,@g\0\0\0\0\0\08@g\0\0\0\0\0\0\14@g\0\0\0\0\0\0.@g\0\0\0\0\0\09@i\ 3\0\0\0i\0\0\0\0s\ e\0\0\0power [MW/m^3]i\ 1\0\0\0s\10\0\0\0density [g/cm^3]i\ 2\0\0\0s\ f\0\0\0temperature [K](\10\0\0\0R\ 4\0\0\0R.\0\0\0t\10\0\0\0getNumberOfCellst\16\0\0\0MEDCouplingFieldDoubleR\a\0\0\0t\b\0\0\0ON_CELLSt\b\0\0\0ONE_TIMER\b\0\0\0t\a\0\0\0setMeshR\ f\0\0\0R\10\0\0\0R\11\0\0\0t\b\0\0\0setArrayt
++\0\0\0getPointert\a\0\0\0setTimet\15\0\0\0checkConsistencyLight(\a\0\0\0R\13\0\0\0R\16\0\0\0t   \0\0\0nbOfCellsR\9d\0\0\0t\ 5\0\0\0arrayt\ 4\0\0\0arr1t\ 3\0\0\0tmp(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\16\0\0\0buildVecFieldOnCells_1t\ 1\0\0\0\0\0\0\ 1\f\ 1\f\ 1\12\ 1\r\ 1\r\ 1\f\ 1<\ 1\13\ 1\10\ 1\10\ 1\10\ 1\r\ 1\f\ 1\13\ 1
++\ 1c\ 1\0\0\0\ 6\0\0\0$\0\0\0C\0\0\0s3\ 1\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0}\ 2\0t\ 3\0j\ 4\0t\ 5\0t\ 6\0\83\ 2\0}\ 3\0|\ 3\0j\a\0d\ 1\0\83\ 1\0\ 1|\ 3\0j\b\0|\ 1\0\83\ 1\0\ 1t  \0j\ 4\0\83\0\0}\ 4\0|\ 3\0j
++\0|\ 4\0\83\ 1\0\ 1d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d        \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0d#\0d$\0d%\0g$\0}\ 5\0|\ 4\0j\v\0|\ 5\0|\ 2\0d&\0\83\ 3\0\ 1|\ 4\0j\f\0d'\0d(\0\83\ 2\0\ 1|\ 4\0j\f\0d)\0d*\0\83\ 2\0\ 1|\ 4\0j\f\0d+\0d,\0\83\ 2\0\ 1|\ 3\0j\r\0d-\0d+\0d&\0\83\ 3\0\ 1|\ 3\0j\ e\0\83\0\0\ 1|\ 3\0S(.\0\0\0Nt\12\0\0\0VectorFieldOnNodesg\0\0\0\0\0\80Q@g\0\0\0\0\0\0T@g\0\0\0\0\0\80V@g\0\0\0\0\0ÀQ@g\0\0\0\0\0@T@g\0\0\0\0\0ÀV@g\0\0\0\0\0\0R@g\0\0\0\0\0\80T@g\0\0\0\0\0\0W@g\0\0\0\0\0@R@g\0\0\0\0\0ÀT@g\0\0\0\0\0@W@g\0\0\0\0\0\80R@g\0\0\0\0\0\0U@g\0\0\0\0\0\80W@g\0\0\0\0\0ÀR@g\0\0\0\0\0@U@g\0\0\0\0\0ÀW@g\0\0\0\0\0@\8f@g\0\0\0\0\0\8dÃ@g\0\0\0\0\0\92Ã@g\0\0\0\0\0H\8f@g\0\0\0\0\80\8dÃ@g\0\0\0\0\80\92Ã@g\0\0\0\0\0P\8f@g\0\0\0\0\0\8eÃ@g\0\0\0\0\0\93Ã@g\0\0\0\0\0X\8f@g\0\0\0\0\80\8eÃ@g\0\0\0\0\80\93Ã@g\0\0\0\0\0`\8f@g\0\0\0\0\0\8fÃ@g\0\0\0\0\0\94Ã@g\0\0\0\0\0h\8f@g\0\0\0\0\80\8fÃ@g\0\0\0\0\80\94Ã@i\ 3\0\0\0i\0\0\0\0s\ e\0\0\0power [MW/m^3]i\ 1\0\0\0s\10\0\0\0density [g/cm^3]i\ 2\0\0\0s\ f\0\0\0temperature [K]gö(\\8fÂõ\0@(\ f\0\0\0R\ 4\0\0\0R.\0\0\0\0\0\0\0\0\0R\a\0\0\0t\b\0\0\0ON_NODESRÏ\0\0\0R\b\0\0\0\0\0\0R\ f\0\0\0\0\0\0R\10\0\0\0R\11\0\0\0\0\0\0\0\0\0(\ 6\0\0\0R\13\0\0\0R\16\0\0\0t        \0\0\0nbOfNodesR\9d\0\0\0\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\16\0\0\0buildVecFieldOnNodes_1\86\ 1\0\0\0\0\0\0\ 1\f\ 1\f\ 1\12\ 1\r\ 1\r\ 1\f\ 1\r\ 16\ 1<\ 1\13\ 1\10\ 1\10\ 1\10\ 1\13\ 1
++\ 1c\ 1\0\0\0\16\0\0\0\r\0\0\0C\0\0\0\ 2\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0d\ 4\0}\ 4\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 5\0d\ 6\0g\ 6\0}\ 5\0d\a\0|\ 2\0\14d\b\0\18d\b\0d        \0|\ 2\0\14\18d\a\0|\ 2\0\14d\b\0\18d
++\0|\ 2\0\14d\b\0\18d\b\0\0|\ 2\0\14\18d\a\0|\ 2\0\14d\b\0\18d\b\0d   \0|\ 1\0\14\18d\a\0|\ 1\0\14d\b\0\18d\a\0|\ 1\0\14d\b\0\18d\b\0d        \0|\ 1\0\14\18d\a\0|\ 1\0\14d\b\0\18d\a\0|\ 1\0\14d\b\0\18g\f\0}\ 6\0d     \0|\ 4\0\14d  \0|\ 4\0\14d  \0|\ 4\0\14d  \0|\ 3\0\14d  \0|\ 3\0\14d  \0|\ 3\0\14g\ 6\0}\a\0|\ 5\0}\b\0|\ 6\0}   \0|\a\0}
++\0t\0\0j\ 1\0\83\0\0}\v\0t\ 2\0j\ 3\0t\ 4\0t\ 5\0\83\ 2\0}\f\0|\f\0j\ 6\0d\v\0d\b\0d\f\0\83\ 3\0\ 1|\f\0j\a\0|\v\0\83\ 1\0\ 1|\f\0j\b\0t        \0|\b\0|   \0|
++\0\83\ 4\0\ 1d\r\0d\ 6\0d\r\0d\r\0d\ 6\0d\r\0d\r\0d\ 5\0d\ 5\0d\r\0d\ 5\0d\ 5\0g\f\0}\r\0|\r\0}\ e\0|        \0d\ e\0d\ f\0!}       \0|      \0}\ f\0|
++\0d\ e\0d\10\0!}
++\0|
++\0}\10\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 6\0d\ 6\0d\ 5\0d\ 6\0g\b\0}\11\0|\11\0}\12\0|     \0d\ e\0d   \0!}     \0|
++\0d\ e\0d\a\0!}
++\0|\f\0j\b\0t
++\0|\12\0\0|
++\0\83\ 4\0\ 1|\f\0j\b\0t\v\0|\ e\0|\ f\0|\10\0\83\ 4\0\ 1t\f\0j\ 3\0\83\0\0}\13\0|\13\0j\r\0d\11\0d\a\0\83\ 2\0\ 1|\13\0j\ e\0\83\0\0}\14\0x1\0t\ f\0d\16\0\83\ 1\0D]#\0}\15\0|\13\0j\10\0d\ e\0|\15\0t\11\0|\15\0d\12\0\17\83\ 1\0\83\ 3\0\ 1qE\ 2W|\f\0j\12\0|\13\0\83\ 1\0\ 1|\f\0j\13\0d\13\0\83\ 1\0\ 1|\13\0j\14\0d\ e\0d\14\0\83\ 2\0\ 1|\13\0j\14\0d\b\0d\15\0\83\ 2\0\ 1|\f\0j\15\0\83\0\0\ 1|\f\0S(\17\0\0\0Ng\86ÂÞ×Í\9aÜ?gÛ°\1dê\89q·?gB\14\19\97Ä\97¼?g2\82\18'Ì%¬?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 2\0\0\0i\ 1\0\0\0i\ 4\0\0\0g\8fÂõ(\\8f\0@g\1f\85ëQ¸\1e    @i\ 5\0\0\0g\0\0\0\0\0\0ð¿i\0\0\0\0i\ 6\0\0\0i\ 3\0\0\0i\13\0\0\0i\a\0\0\0t\18\0\0\0MyFirstFieldOnGaussPoints\ e\0\0\0power [MW/m^3]t\a\0\0\0densityi&\0\0\0(\16\0\0\0R\ 4\0\0\0R%\0\0\0\0\0\0R\a\0\0\0t\v\0\0\0ON_GAUSS_PTRÏ\0\0\0\0\0\0\0\0\0t\1a\0\0\0setGaussLocalizationOnTypeR\1c\0\0\0R\1e\0\0\0R\1d\0\0\0R\ f\0\0\0R\8d\0\0\0\0\0\0R\89\0\0\0t\ 5\0\0\0setIJt\ 5\0\0\0floatRÑ\0\0\0R\b\0\0\0R\11\0\0\0\0\0\0(\16\0\0\0R\13\0\0\0t\ 2\0\0\0_at\ 2\0\0\0_bt\ 3\0\0\0_p1t\ 3\0\0\0_p2t\a\0\0\0refCoo1t\ 6\0\0\0gsCoo1t\ 3\0\0\0wg1t\b\0\0\0_refCoo1t\a\0\0\0_gsCoo1t\ 4\0\0\0_wg1t\ 1\0\0\0mt\ 1\0\0\0ft\a\0\0\0refCoo2t\b\0\0\0_refCoo2t\a\0\0\0_gsCoo2t\ 4\0\0\0_wg2t\a\0\0\0refCoo3t\b\0\0\0_refCoo3RÖ\0\0\0t\ 3\0\0\0ptrR\96\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\16\0\0\0buildVecFieldOnGauss_1\98\ 1\0\0sP\0\0\0\0\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1\18\ 17\ 1S\ 10\ 1\ 6\ 1\ 6\ 1\ 6\ 1\f\ 1\12\ 1\13\ 1\r\ 1\16\ 1*\ 1\ 6\ 1\r\ 1\ 6\ 1\r\ 1\ 6\ 1\1e\ 1\ 6\ 1\r\ 1\r\ 1\16\ 1\16\ 1\f\ 1\10\ 1\f\ 1\13\ 1\1d\ 1\ 4\ 1\r\ 1\r\ 1\10\ 1\10\ 1
++\ 1c\ 1\0\0\0\17\0\0\0\r\0\0\0C\0\0\0sc\ 3\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0d\ 4\0}\ 4\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 5\0d\ 6\0g\ 6\0}\ 5\0d\a\0|\ 2\0\14d\b\0\18d\b\0d        \0|\ 2\0\14\18d\a\0|\ 2\0\14d\b\0\18d
++\0|\ 2\0\14d\b\0\18d\b\0\0|\ 2\0\14\18d\a\0|\ 2\0\14d\b\0\18d\b\0d   \0|\ 1\0\14\18d\a\0|\ 1\0\14d\b\0\18d\a\0|\ 1\0\14d\b\0\18d\b\0d        \0|\ 1\0\14\18d\a\0|\ 1\0\14d\b\0\18d\a\0|\ 1\0\14d\b\0\18g\f\0}\ 6\0d     \0|\ 4\0\14d  \0|\ 4\0\14d  \0|\ 4\0\14d  \0|\ 3\0\14d  \0|\ 3\0\14d  \0|\ 3\0\14g\ 6\0}\a\0|\ 5\0}\b\0|\ 6\0}   \0|\a\0}
++\0t\0\0j\ 1\0\83\0\0}\v\0t\ 2\0j\ 3\0t\ 4\0t\ 5\0\83\ 2\0}\f\0|\f\0j\ 6\0d\v\0d\b\0d\f\0\83\ 3\0\ 1|\f\0j\a\0|\v\0\83\ 1\0\ 1t\b\0j\ 3\0\83\0\0}\r\0|\r\0j       \0d\r\0d\a\0d\ e\0g\ 3\0d\ e\0d\b\0\83\ 3\0\ 1|\f\0j
++\0|\r\0|\b\0|      \0|
++\0\83\ 4\0\ 1|
++\0d\ f\0c\ 2\0\19d\a\09\ 3<|\f\0j
++\0d\b\0d\f\0g\ 2\0|\b\0|        \0|
++\0\83\ 4\0\ 1|
++\0d\ f\0c\ 2\0\19d\a\09\ 3<|\f\0j
++\0d    \0g\ 1\0|\b\0|        \0|
++\0\83\ 4\0\ 1d\10\0d\ 6\0d\10\0d\10\0d\ 6\0d\10\0d\10\0d\ 5\0d\ 5\0d\10\0d\ 5\0d\ 5\0g\f\0}\ e\0|\ e\0}\ f\0|        \0d\r\0d\11\0!}       \0|      \0}\10\0|
++\0d\r\0d\ e\0!}
++\0|
++\0}\11\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 6\0d\ 6\0d\ 5\0d\ 6\0g\b\0}\12\0|\12\0}\13\0|     \0d\r\0d   \0!}     \0|
++\0d\r\0d\a\0!}
++\0|\f\0j
++\0d\11\0d\12\0d\13\0g\ 3\0|\13\0|     \0|
++\0\83\ 4\0\ 1|
++\0d\ f\0c\ 2\0\19d\a\09\ 3<|\f\0j
++\0d\14\0g\ 1\0|\13\0|   \0|
++\0\83\ 4\0\ 1|\f\0j\v\0t\f\0|\ f\0|\10\0|\11\0\83\ 4\0\ 1t\r\0j\ 3\0\83\0\0}\14\0|\14\0j\ e\0d\15\0d\a\0\83\ 2\0\ 1|\14\0j\ f\0\83\0\0}\15\0x1\0t\10\0d\19\0\83\ 1\0D]#\0}\16\0|\14\0j\11\0d\r\0|\16\0t\12\0|\16\0d\12\0\17\83\ 1\0\83\ 3\0\ 1\ 2W|\f\0j\13\0|\14\0\83\ 1\0\ 1|\f\0j\14\0d\16\0\83\ 1\0\ 1|\14\0j\15\0d\r\0d\17\0\83\ 2\0\ 1|\14\0j\15\0d\b\0d\18\0\83\ 2\0\ 1|\f\0j\16\0\83\0\0\ 1|\f\0S(\1a\0\0\0Ng\86ÂÞ×Í\9aÜ?gÛ°\1dê\89q·?gB\14\19\97Ä\97¼?g2\82\18'Ì%¬?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 2\0\0\0i\ 1\0\0\0i\ 4\0\0\0g\8fÂõ(\\8f\0@g\1f\85ëQ¸\1e    @i\ 5\0\0\0i\0\0\0\0i\ 3\0\0\0iÿÿÿÿg\0\0\0\0\0\0ð¿i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i  \0\0\0i5\0\0\0\0\0\0s\ e\0\0\0power [MW/m^3]Rß\0\0\0ij\0\0\0(\17\0\0\0R\ 4\0\0\0R'\0\0\0\0\0\0R\a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\8c\0\0\0R\10\0\0\0t\e\0\0\0setGaussLocalizationOnCellsRá\0\0\0R\1d\0\0\0R\ f\0\0\0R\8d\0\0\0\0\0\0R\89\0\0\0\0\0\0\0\0\0\0\0\0R\b\0\0\0R\11\0\0\0\0\0\0(\17\0\0\0R\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\ 2\0\0\0diRð\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\96\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\16\0\0\0buildVecFieldOnGauss_2Â\ 1\0\0s`\0\0\0\0\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1\18\ 17\ 1S\ 10\ 1\ 6\ 1\ 6\ 1\ 6\ 1\f\ 1\12\ 1\13\ 1\r\ 1\f\0\1c\ 1\16\ 1\10\ 1\1c\ 1\10\ 1\19\ 1*\ 1\ 6\ 1\r\ 1\ 6\ 1\r\ 1\ 6\ 1\1e\ 1\ 6\ 1\r\ 1\r\ 1\1f\ 1\10\ 1\19\ 1\16\ 1\f\ 1\10\ 1\f\ 1\13\ 1\1d\ 1\ 4\ 1\r\ 1\r\ 1\10\ 1\10\ 1
++\ 1c\ 1\0\0\0\17\0\0\0\r\0\0\0C\0\0\0sc\ 3\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0d\ 4\0}\ 4\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 5\0d\ 6\0g\ 6\0}\ 5\0d\a\0|\ 2\0\14d\b\0\18d\b\0d        \0|\ 2\0\14\18d\a\0|\ 2\0\14d\b\0\18d
++\0|\ 2\0\14d\b\0\18d\b\0\0|\ 2\0\14\18d\a\0|\ 2\0\14d\b\0\18d\b\0d   \0|\ 1\0\14\18d\a\0|\ 1\0\14d\b\0\18d\a\0|\ 1\0\14d\b\0\18d\b\0d        \0|\ 1\0\14\18d\a\0|\ 1\0\14d\b\0\18d\a\0|\ 1\0\14d\b\0\18g\f\0}\ 6\0d     \0|\ 4\0\14d  \0|\ 4\0\14d  \0|\ 4\0\14d  \0|\ 3\0\14d  \0|\ 3\0\14d  \0|\ 3\0\14g\ 6\0}\a\0|\ 5\0}\b\0|\ 6\0}   \0|\a\0}
++\0t\0\0j\ 1\0\83\0\0}\v\0t\ 2\0j\ 3\0t\ 4\0t\ 5\0\83\ 2\0}\f\0|\f\0j\ 6\0d\v\0d\b\0d\f\0\83\ 3\0\ 1|\f\0j\a\0|\v\0\83\ 1\0\ 1t\b\0j\ 3\0\83\0\0}\r\0|\r\0j       \0d\r\0d\b\0d\a\0g\ 3\0d\ e\0d\b\0\83\ 3\0\ 1|\f\0j
++\0|\r\0|\b\0|      \0|
++\0\83\ 4\0\ 1|
++\0d\ f\0c\ 2\0\19d\a\09\ 3<|\f\0j
++\0d\ e\0\0g\ 2\0|\b\0|        \0|
++\0\83\ 4\0\ 1|
++\0d\ f\0c\ 2\0\19d\a\09\ 3<|\f\0j
++\0d\f\0g\ 1\0|\b\0|   \0|
++\0\83\ 4\0\ 1d\10\0d\ 6\0d\10\0d\10\0d\ 6\0d\10\0d\10\0d\ 5\0d\ 5\0d\10\0d\ 5\0d\ 5\0g\f\0}\ e\0|\ e\0}\ f\0|        \0d\r\0d\11\0!}       \0|      \0}\10\0|
++\0d\r\0d\ e\0!}
++\0|
++\0}\11\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 6\0d\ 6\0d\ 5\0d\ 6\0g\b\0}\12\0|\12\0}\13\0|     \0d\r\0d   \0!}     \0|
++\0d\r\0d\a\0!}
++\0|\f\0j
++\0d\11\0d\12\0d\13\0g\ 3\0|\13\0|     \0|
++\0\83\ 4\0\ 1|
++\0d\ f\0c\ 2\0\19d\a\09\ 3<|\f\0j
++\0d\14\0g\ 1\0|\13\0|   \0|
++\0\83\ 4\0\ 1|\f\0j\v\0t\f\0|\ f\0|\10\0|\11\0\83\ 4\0\ 1t\r\0j\ 3\0\83\0\0}\14\0|\14\0j\ e\0d\15\0d\a\0\83\ 2\0\ 1|\14\0j\ f\0\83\0\0}\15\0x1\0t\10\0d\19\0\83\ 1\0D]#\0}\16\0|\14\0j\11\0d\r\0|\16\0t\12\0|\16\0d\12\0\17\83\ 1\0\83\ 3\0\ 1\ 2W|\f\0j\13\0|\14\0\83\ 1\0\ 1|\f\0j\14\0d\16\0\83\ 1\0\ 1|\14\0j\15\0d\r\0d\17\0\83\ 2\0\ 1|\14\0j\15\0d\b\0d\18\0\83\ 2\0\ 1|\f\0j\16\0\83\0\0\ 1|\f\0S(\1a\0\0\0Ng\86ÂÞ×Í\9aÜ?gÛ°\1dê\89q·?gB\14\19\97Ä\97¼?g2\82\18'Ì%¬?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 2\0\0\0i\ 1\0\0\0i\ 4\0\0\0g\8fÂõ(\\8f\0@g\1f\85ëQ¸\1e    @i\ 5\0\0\0i\0\0\0\0i\ 3\0\0\0iÿÿÿÿg\0\0\0\0\0\0ð¿i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i  \0\0\0i5\0\0\0\0\0\0s\ e\0\0\0power [MW/m^3]Rß\0\0\0ij\0\0\0(\17\0\0\0R\ 4\0\0\0R'\0\0\0\0\0\0R\a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\8c\0\0\0R\10\0\0\0\0\0\0\0\0\0R\1d\0\0\0R\ f\0\0\0R\8d\0\0\0\0\0\0R\89\0\0\0\0\0\0\0\0\0\0\0\0R\b\0\0\0R\11\0\0\0\0\0\0(\17\0\0\0R\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\96\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\1e\0\0\0buildVecFieldOnGauss_2_Simplerô\ 1\0\0s`\0\0\0\0\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1\18\ 17\ 1S\ 10\ 1\ 6\ 1\ 6\ 1\ 6\ 1\f\ 1\12\ 1\13\ 1\r\ 1\f\0\1c\ 1\16\ 1\10\ 1\1c\ 1\10\ 1\19\ 1*\ 1\ 6\ 1\r\ 1\ 6\ 1\r\ 1\ 6\ 1\1e\ 1\ 6\ 1\r\ 1\r\ 1\1f\ 1\10\ 1\19\ 1\16\ 1\f\ 1\10\ 1\f\ 1\13\ 1\1d\ 1\ 4\ 1\r\ 1\r\ 1\10\ 1\10\ 1
++\ 1c\ 1\0\0\0\ 5\0\0\0\a\0\0\0C\0\0\0\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0t\ 2\0j\ 3\0t\ 4\0t\ 5\0\83\ 2\0}\ 2\0|\ 2\0j\ 6\0d\ 1\0d\ 2\0d\ 3\0\83\ 3\0\ 1|\ 2\0j\a\0|\ 1\0\83\ 1\0\ 1t\b\0j\ 3\0\83\0\0}\ 3\0|\ 3\0\0d\ 4\0d\ 5\0\83\ 2\0\ 1x1\0t
++\0d\v\0\83\ 1\0D]#\0}\ 4\0|\ 3\0j\v\0d\ 6\0|\ 4\0t\f\0|\ 4\0d\a\0\17\83\ 1\0\83\ 3\0\ 1qg\0W|\ 2\0j\r\0|\ 3\0\83\ 1\0\ 1|\ 3\0j\ e\0d\ 6\0d\b\0\83\ 2\0\ 1|\ 3\0j\ e\0d\ 2\0d        \0\83\ 2\0\ 1|\ 2\0j\ f\0d
++\0\83\ 1\0\ 1|\ 2\0j\10\0\83\0\0\ 1|\ 2\0S(\f\0\0\0Ng\1f\85ëQ¸\1e      @i\ 1\0\0\0i\ 5\0\0\0i\14\0\0\0i\ 2\0\0\0i\0\0\0\0i\b\0\0\0s        \0\0\0power [W]t\v\0\0\0temperaturet\10\0\0\0MyFieldOnGaussNEi(\0\0\0(\11\0\0\0R\ 4\0\0\0R%\0\0\0\0\0\0R\a\0\0\0t\v\0\0\0ON_GAUSS_NERÏ\0\0\0\0\0\0\0\0\0R\ f\0\0\0R\8d\0\0\0R\89\0\0\0\0\0\0\0\0\0\0\0\0R\11\0\0\0R\b\0\0\0\0\0\0(\ 5\0\0\0R\13\0\0\0\0\0\0\0\0\0\0\0\0R\96\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\18\0\0\0buildVecFieldOnGaussNE_1%\ 2\0\0s\1c\0\0\0\0\ 1\f\ 1\12\ 1\13\ 1\r\ 1\f\ 1\10\ 1\13\ 1!\ 1\r\ 1\10\ 1\10\ 1\r\ 1
++\ 1c\ 1\0\0\0%\0\0\0\13\0\0\0C\0\0\0\ 6\0\0t\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0g\12\0d\ 4\0d\ 3\0\83\ 3\0}\ 1\0t\ 1\0d\ 5\0d\ 3\0\83\ 2\0}\ 2\0|\ 2\0j\ 2\0|\ 1\0\83\ 1\0\ 1|\ 2\0j\ 3\0\83\0\0\ 1|\ 2\0j\ 4\0t\ 5\0d\ 2\0d\ 6\0d\ 3\0g\ 3\0\83\ 2\0\ 1|\ 2\0j\ 4\0t\ 5\0d\ 6\0d\a\0d\ 3\0g\ 3\0\83\ 2\0\ 1|\ 2\0j\ 4\0t\ 6\0d\ 1\0d\b\0d\ 6\0d\ 2\0g\ 4\0\83\ 2\0\ 1|\ 2\0j\ 4\0t\ 6\0\0d
++\0d\ 6\0d\b\0g\ 4\0\83\ 2\0\ 1|\ 2\0j\ 4\0t\ 6\0d
++\0d\v\0d\a\0d\ 6\0g\ 4\0\83\ 2\0\ 1|\ 2\0j\a\0\83\0\0}\ 3\0t\b\0\83\0\0}\ 4\0|\ 4\0j    \0d\ 1\0|\ 2\0\83\ 2\0\ 1|\ 4\0\0d\f\0|\ 3\0\83\ 2\0\ 1t
++\0d\ 1\0d\ 3\0d\ 6\0g\ 3\0\83\ 1\0}\ 5\0|\ 5\0j\v\0d\r\0\83\ 1\0\ 1t
++\0d\ 2\0d\ 3\0d\b\0d\ 6\0g\ 4\0\83\ 1\0}\ 6\0|\ 6\0j\v\0d\ e\0\83\ 1\0\ 1t
++\0d\ 1\0d\ 6\0g\ 2\0\83\ 1\0}\a\0|\a\0j\v\0d\ f\0\83\ 1\0\ 1|\ 4\0j\f\0d\ 1\0|\ 5\0|\ 6\0|\a\0g\ 3\0\83\ 2\0\ 1t
++\0d\ 1\0d\ 2\0g\ 2\0\83\ 1\0}\b\0|\b\0j\v\0d\10\0\83\ 1\0\ 1t
++\0d\ 3\0d\b\0d\ 6\0d\a\0d        \0d
++\0g\ 6\0\83\ 1\0}      \0|      \0j\v\0d\11\0\83\ 1\0\ 1t
++\0d\ 1\0d\b\0g\ 2\0\83\ 1\0}
++\0|
++\0j\v\0d\12\0\83\ 1\0\ 1|\ 4\0j\f\0d\f\0|\b\0|      \0|
++\0g\ 3\0\83\ 2\0\ 1t\r\0\83\0\0}\v\0|\v\0j\ e\0|\ 4\0\83\ 1\0\ 1t\ f\0\83\0\0}\f\0d\13\0}\r\0d#\0d$\0g\ 2\0}\ e\0t\10\0\83\0\0}\ f\0\0t\11\0|\ e\0\83\ 1\0D]¬\0\\ 2\0}\10\0\\ 3\0}\11\0}\12\0}\13\0t\12\0t\13\0t\14\0\83\ 2\0}\14\0|\14\0j\15\0|\13\0|\11\0|\12\0\83\ 3\0\ 1|\14\0j\16\0|\ 2\0\83\ 1\0\ 1t\0\0|\ 2\0j\17\0\83\0\0d\ 2\0\83\ 2\0}\15\0|\15\0j\18\0\83\0\0\ 1|\15\0d\ 2\0|\10\0\177}\15\0|\15\0d\16\09}\15\0|\14\0j\19\0|\15\0\83\ 1\0\ 1|\14\0j\1a\0\83\0\0\ 1|\14\0j\v\0|\r\0\83\ 1\0\ 1|\ f\0j\e\0|\14\0\83\ 1\0\ 1qq\ 2W|\f\0j\1c\0|\ f\0\83\ 1\0\ 1d\17\0}\16\0d%\0d&\0d'\0g\ 3\0}\17\0t\10\0\83\0\0}\18\0xG\ 1t\11\0|\17\0\83\ 1\0D]9\ 1\\ 2\0}\10\0\\ 3\0}\11\0}\12\0}\13\0t\12\0t\13\0t\14\0\83\ 2\0}\19\0|\19\0j\15\0|\13\0|\11\0|\12\0\83\ 3\0\ 1|\19\0j\16\0|\ 2\0\83\ 1\0\ 1t\0\0|\ 2\0j\17\0\83\0\0d\ 2\0\83\ 2\0}\15\0|\15\0j\18\0\83\0\0\ 1|\15\0d\ 2\0|\10\0\177}\15\0|\19\0j\19\0|\15\0\83\ 1\0\ 1|\19\0j\1a\0\83\0\0\ 1|\19\0j\v\0|\16\0\83\ 1\0\ 1|\18\0j\e\0|\19\0\83\ 1\0\ 1t\12\0t\13\0t\14\0\83\ 2\0}\1a\0|\1a\0j\15\0|\13\0|\11\0|\12\0\83\ 3\0\ 1|\1a\0j\16\0|\ 3\0\83\ 1\0\ 1t\0\0|\ 3\0j\17\0\83\0\0d\ 2\0\83\ 2\0}\15\0|\15\0j\18\0\83\0\0\ 1|\15\0d(\0|\10\0\177}\15\0|\1a\0j\19\0|\15\0\83\ 1\0\ 1|\1a\0j\1a\0\83\0\0\ 1|\1a\0j\v\0|\16\0\83\ 1\0\ 1|\18\0|\11\0|\12\0f\ 2\0\19j\1d\0|\1a\0\83\ 1\0\ 1qY\ 3W|\f\0j\1c\0|\18\0\83\ 1\0\ 1d\e\0}\e\0d)\0d*\0d+\0d,\0g\ 4\0}\1c\0t\10\0\83\0\0}\1d\0\ 1t\11\0|\1c\0\83\ 1\0D]§\ 1\\ 2\0}\10\0\\ 3\0}\11\0}\12\0}\13\0t
++\0d\ 1\0d\ 2\0d\b\0d\ 6\0g\ 4\0\83\ 1\0}\1e\0|\1e\0j\v\0d\1f\0\83\ 1\0\ 1|\ 2\0|\1e\0\19}\1f\0t\12\0t\13\0t\14\0\83\ 2\0\0\0j\15\0|\13\0|\11\0|\12\0\83\ 3\0\ 1\0j\16\0|\1f\0\83\ 1\0\ 1t\0\0|\1f\0j\17\0\83\0\0d\ 2\0\83\ 2\0}\15\0|\15\0j\18\0\83\0\0\ 1|\15\0\0|\10\0\17d\ 2\0\177}\15\0\0j\19\0|\15\0\83\ 1\0\ 1\0j\1a\0\83\0\0\ 1\0j\v\0|\e\0\83\ 1\0\ 1|\1d\0j\1e\0\0|\ 4\0d\ 1\0|\1e\0\83\ 4\0\ 1t
++\0d\ 1\0d\b\0g\ 2\0\83\ 1\0}!\0|!\0j\v\0d!\0\83\ 1\0\ 1|\ 3\0|!\0\19}"\0t\12\0t\13\0t\14\0\83\ 2\0}#\0|#\0j\15\0|\13\0|\11\0|\12\0\83\ 3\0\ 1|#\0j\16\0|"\0\83\ 1\0\ 1t\0\0|"\0j\17\0\83\0\0d\ 2\0\83\ 2\0}\15\0|\15\0j\18\0\83\0\0\ 1|\15\0d-\0|\10\0\177}\15\0|#\0j\19\0|\15\0\83\ 1\0\ 1|#\0j\1a\0\83\0\0\ 1|#\0j\v\0|\e\0\83\ 1\0\ 1|\1d\0|\11\0|\12\0f\ 2\0\19j\1f\0|#\0|\ 4\0d\f\0|!\0\83\ 4\0\ 1\ 4W|\f\0j\1c\0|\1d\0\83\ 1\0\ 1\0\83\0\0}$\0|$\0j!\0|\v\0\83\ 1\0\ 1|$\0j"\0|\f\0\83\ 1\0\ 1|$\0S(.\0\0\0Ni\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0\0\0\0R\16\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 3\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0iÿÿÿÿt    \0\0\0gr0_0_2_4t\v\0\0\0gr0_1_2_3_4t\a\0\0\0gr0_0_4t\ e\0\0\0grM1_SegOnTri3t\ f\0\0\0grM1_SegOnQuad4t\v\0\0\0grM1_bottomt
++\0\0\0fNoProfileg{\14®Gáz\84?g{\14®Gáz\94?g\9a\99\99\99\99\99¹?t\13\0\0\0fNoProfileMultiLevsg\0\0\0\0\0\0\0\0g\9a\99\99\99\99\99É?id\0\0\0t\11\0\0\0fProfileMultiLevsg\0\0\0\0\0\0$@g\0\0\0\0\0\04@g\0\0\0\0\0\0>@t\ 4\0\0\0pfl1iè\ 3\0\0t
++\0\0\0pfl2BottomiÐ\a\0\0(\ 3\0\0\0i\0\0\0\0iÿÿÿÿg{\14®Gáz\84?(\ 3\0\0\0i\ 1\0\0\0iÿÿÿÿg{\14®Gáz\94?(\ 3\0\0\0i\0\0\0\0iÿÿÿÿg\0\0\0\0\0\0\0\0(\ 3\0\0\0i\ 1\0\0\0iÿÿÿÿg\9a\99\99\99\99\99¹?(\ 3\0\0\0i\ 2\0\0\0iÿÿÿÿg\9a\99\99\99\99\99É?ie\0\0\0(\ 3\0\0\0i\0\0\0\0iÿÿÿÿg\0\0\0\0\0\0\0\0(\ 3\0\0\0i\ 1\0\0\0iÿÿÿÿg\0\0\0\0\0\0$@(\ 3\0\0\0i\ 2\0\0\0iÿÿÿÿg\0\0\0\0\0\04@(\ 3\0\0\0i\ 3\0\0\0iÿÿÿÿg\0\0\0\0\0\0>@iÑ\a\0\0(#\0\0\0R\ f\0\0\0R\ 6\0\0\0R\12\0\0\0R
++\0\0\0R\v\0\0\0R\1c\0\0\0R\1e\0\0\0t\v\0\0\0computeSkinR¶\0\0\0\0\0\0R\8c\0\0\0R\b\0\0\0\0\0\0t\r\0\0\0MEDFileMeshest\b\0\0\0pushMesht\r\0\0\0MEDFileFieldst\13\0\0\0MEDFileFieldMultiTSt \0\0\0enumerateRÍ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\8f\0\0\0\0\0\0\0\0\0t\17\0\0\0appendFieldNoProfileSBTt  \0\0\0pushFieldt\14\0\0\0setFieldNoProfileSBTt\12\0\0\0appendFieldProfilet\ f\0\0\0setFieldProfilet\v\0\0\0MEDFileDatat       \0\0\0setMeshest   \0\0\0setFields(%\0\0\0R\13\0\0\0R\90\0\0\0R\9a\0\0\0R\98\0\0\0\0\0\0t\ 4\0\0\0grp0t\ 4\0\0\0grp1t\ 4\0\0\0grp2t\ 4\0\0\0grp3t\ 4\0\0\0grp4t\ 4\0\0\0grp5t\ 2\0\0\0mst\ 2\0\0\0fst\ 6\0\0\0f1Namet\v\0\0\0timeStepsF1R\9d\0\0\0R\96\0\0\0t\ 2\0\0\0itt\ 5\0\0\0ordert\ 3\0\0\0timt\ 6\0\0\0f11Tmpt\ 3\0\0\0arrt\ 6\0\0\0f2Namet\v\0\0\0timeStepsF2R\9c\0\0\0t\ 6\0\0\0f21Tmpt\ 6\0\0\0f22Tmpt\ 6\0\0\0f3Namet\v\0\0\0timeStepsF3t\ 2\0\0\0f3R        \ 1\0\0t\ 6\0\0\0m0Partt\ 6\0\0\0f31Tmpt\ 4\0\0\0pfl2t\ 6\0\0\0m1Partt\ 6\0\0\0f32Tmpt\ 4\0\0\0data(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt1\0\0\0buildACompleteMEDDataStructureWithFieldsOnCells_15\ 2\0\0\0\0\0\0\ 1H\ 1\ f\ 1\r\ 1
++\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1\1c\ 1\f\ 1 \ 2\10\0\10\ 2\15\0\r\ 1\18\0\r\ 1\12\0\r\ 1\19\ 1\12\0\r\ 1\1e\0\r\ 1\12\0\r\ 1\19\ 1       \ 1\r\ 2     \ 2\ 6\ 1\f\ 1   \ 1"\ 1\ f\ 1\13\ 1\r\ 1\15\0
++\0\ e\0
++\ 1\r\ 1
++\ 1\r\ 1\r\ 1\ 4\ 1\r\ 2\ 6\ 1\ f\ 1 \ 1"\ 1\ f\ 1\13\ 1\r\ 1\15\0
++\0\ e\ 1\r\ 1
++\ 1\r\ 1\r\ 1\ f\ 1\13\ 1\r\ 1\15\0
++\0\ e\ 1\r\ 1
++\ 1\r\ 1\17\ 1\ 4\ 1\r\ 2\ 6\ 1\12\ 1 \ 1"\ 1\18\0\r\ 1
++\ 1\ f\ 1\13\ 1\r\ 1\15\0
++\0\12\ 1\r\ 1
++\ 1\r\ 1\16\ 1\12\0\r\ 1
++\ 1\ f\ 1\13\ 1\r\ 1\15\0
++\0\ e\ 1\r\ 1
++\ 1\r\ 1 \ 1\ 4\ 1\r\ 2     \0\r\0\r\ 1c\ 1\0\0\0\f\0\0\0\b\0\0\0C\0\0\0s1\ 2\0\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 1\0g\b\0}\ 1\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 4\0}\ 2\0d\a\0d\ 3\0d\ 3\0d\ 4\0d\ 4\0d\ 5\0d\ 6\0d\ 3\0g\b\0}\ 3\0t\0\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 2\0d\ 4\0\83\ 1\0\ 1|\ 4\0j\ 3\0d\ 3\0\83\ 1\0\ 1|\ 4\0j\ 4\0t\ 5\0d\ 6\0|\ 2\0\83\ 3\0\ 1|\ 4\0j\ 6\0\83\0\0\ 1t\0\0j\ 1\0\83\0\0}\ 5\0|\ 5\0j\ 2\0d\ 3\0\83\ 1\0\ 1|\ 5\0j\ 3\0d\ 6\0\83\ 1\0\ 1|\ 5\0j\ 4\0t\a\0d\ 4\0|\ 3\0d\a\0d\ 4\0!\83\ 3\0\ 1|\ 5\0j\ 4\0t\a\0d\ 4\0|\ 3\0d\ 4\0d\ 6\0!\83\ 3\0\ 1|\ 5\0j\ 4\0t\a\0d\ 4\0|\ 3\0d\ 6\0d\b\0!\83\ 3\0\ 1|\ 5\0j\ 4\0t\a\0d\ 4\0|\ 3\0d\b\0d     \0!\83\ 3\0\ 1|\ 5\0j\ 6\0\83\0\0\ 1t\b\0j\ 1\0\83\0\0}\ 6\0|\ 6\0j        \0|\ 1\0d\ 6\0d\ 4\0\83\ 3\0\ 1|\ 4\0j
++\0|\ 6\0\83\ 1\0\ 1|\ 5\0j
++\0|\ 6\0\83\ 1\0\ 1t\v\0j\ 1\0\83\0\0}\a\0|\a\0j\f\0d\a\0|\ 4\0\83\ 2\0\ 1|\a\0j\f\0d
++\0|\ 5\0\83\ 2\0\ 1|\a\0j\r\0d\v\0\83\ 1\0\ 1t\ e\0j\ 1\0d\a\0g\ 1\0\83\ 1\0}\b\0|\b\0j\r\0d\f\0\83\ 1\0\ 1t\ e\0j\ 1\0d\a\0d\ 3\0d\ 4\0d\ 5\0g\ 4\0\83\ 1\0\0|      \0j\r\0d\r\0\83\ 1\0\ 1|\a\0j\ f\0d
++\0|\b\0\0g\ 2\0\83\ 2\0\ 1t\10\0j\ 1\0\83\0\0}
++\0|
++\0j\11\0d\a\0|\a\0\83\ 2\0\ 1t\12\0j\ 1\0\83\0\0}\v\0|\v\0j\13\0|
++\0\83\ 1\0\ 1|\v\0S(\ e\0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\0\0\0\0i\ 6\0\0\0i\b\0\0\0iÿÿÿÿt\ 5\0\0\0carreR¬\0\0\0\0\0\0(\14\0\0\0R\ 6\0\0\0R\a\0\0\0\0\0\0R
++\0\0\0R\v\0\0\0R\1e\0\0\0R\ e\0\0\0R\f\0\0\0R\ f\0\0\0R\10\0\0\0R\12\0\0\0\0\0\0\0\0\0R\b\0\0\0R\8c\0\0\0\0\0\0R\f\ 1\0\0t\f\0\0\0setMeshAtPosR\16\ 1\0\0R\17\ 1\0\0(\f\0\0\0t\ 4\0\0\0selfR\14\0\0\0t\ 6\0\0\0conn2Dt\ 6\0\0\0conn1Dt\ 6\0\0\0mesh2Dt\ 6\0\0\0mesh1Dt
++\0\0\0meshCoordsRÈ\0\0\0\0\0\0\0\0\0R\1f\ 1\0\0t\ 3\0\0\0mfd(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt,\0\0\0buildAMEDFileDataWithGroupOnOneFamilyForSauv\95\ 2\0\0sD\0\0\0\0\ 2\1e\ 2\12\ 2\1e\ 2\f\ 1\r\ 1\r\ 1\13\ 1
++\ 2\f\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 2\f\ 1\13\ 1\r\ 1\r\ 2\f\ 1\10\ 1\10\ 1\r\ 3\12\ 1\r\ 2\e\ 1\r\ 2\16\ 2\f\ 1\10\ 1\f\ 1\r\ 2(\15\0\0\0t\b\0\0\0__name__t
++\0\0\0__module__R\18\0\0\0R\1a\0\0\0R#\0\0\0R%\0\0\0R'\0\0\0R,\0\0\0R.\0\0\0R<\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Rÿ\0\0\0R5\ 1\0\0R?\ 1\0\0t\v\0\0\0classmethod(\0\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyR\ 4\0\0\0\19\0\0\0sJ\0\0\0\ 6\ 1  \12       \11       \16       \16       \1d       >       \16       \ e       U       7       \12       \12       *       2       1       \10       `       1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1\f\ 1N(\0\0\0\0(\ 6\0\0\0t       \0\0\0MEDLoadert\ 4\0\0\0mathR\ 1\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0(\0\0\0\0(\0\0\0\0(\0\0\0\0sy\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderDataForTest.pyt\b\0\0\0<module>\16\0\0\0s\ 4\0\0\0
++\ 1\1c\ 2
+\ Pas de fin de ligne à la fin du fichier
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderFinalize.i MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderFinalize.i
+--- MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderFinalize.i     1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderFinalize.i     2018-04-19 17:25:17.783798266 +0200
+@@ -0,0 +1,78 @@
++// Copyright (C) 2017  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++%pythoncode %{
++MEDFileMeshesIterator.__next__ = MEDFileMeshesIterator.next
++MEDFileAnyTypeFieldMultiTSIterator.__next__ = MEDFileAnyTypeFieldMultiTSIterator.next
++MEDFileFieldsIterator.__next__ = MEDFileFieldsIterator.next
++%}
++
++%pythoncode %{
++def MEDCouplingMEDFileUMeshReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileUMesh,((),(self.__getstate__()),))
++MEDFileUMesh.__reduce__=MEDCouplingMEDFileUMeshReduce
++del MEDCouplingMEDFileUMeshReduce
++def MEDCouplingMEDFileCMeshReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileCMesh,((self.serialize(),),(self.__getstate__()),))
++MEDFileCMesh.__reduce__=MEDCouplingMEDFileCMeshReduce
++del MEDCouplingMEDFileCMeshReduce
++def MEDCouplingMEDFileCurveLinearMeshReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileCurveLinearMesh,((self.serialize(),),(self.__getstate__()),))
++MEDFileCurveLinearMesh.__reduce__=MEDCouplingMEDFileCurveLinearMeshReduce
++del MEDCouplingMEDFileCurveLinearMeshReduce
++def MEDCouplingMEDFileDataReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileData,((self.serialize(),),(self.__getstate__()),))
++MEDFileData.__reduce__=MEDCouplingMEDFileDataReduce
++del MEDCouplingMEDFileDataReduce
++def MEDCouplingMEDFileMeshesReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileMeshes,((self.serialize(),),(self.__getstate__()),))
++MEDFileMeshes.__reduce__=MEDCouplingMEDFileMeshesReduce
++del MEDCouplingMEDFileMeshesReduce
++def MEDCouplingMEDFileFieldsReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileFields,((self.serialize(),),(self.__getstate__()),))
++MEDFileFields.__reduce__=MEDCouplingMEDFileFieldsReduce
++del MEDCouplingMEDFileFieldsReduce
++def MEDCouplingMEDFileField1TSReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileField1TS,((self.serialize(),),(self.__getstate__()),))
++MEDFileField1TS.__reduce__=MEDCouplingMEDFileField1TSReduce
++del MEDCouplingMEDFileField1TSReduce
++def MEDCouplingMEDFileFieldMultiTSReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileFieldMultiTS,((self.serialize(),),(self.__getstate__()),))
++MEDFileFieldMultiTS.__reduce__=MEDCouplingMEDFileFieldMultiTSReduce
++del MEDCouplingMEDFileFieldMultiTSReduce
++def MEDCouplingMEDFileIntField1TSReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileIntField1TS,((self.serialize(),),(self.__getstate__()),))
++MEDFileIntField1TS.__reduce__=MEDCouplingMEDFileIntField1TSReduce
++def MEDCouplingMEDFileIntFieldMultiTSReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileIntFieldMultiTS,((self.serialize(),),(self.__getstate__()),))
++MEDFileIntFieldMultiTS.__reduce__=MEDCouplingMEDFileIntFieldMultiTSReduce
++del MEDCouplingMEDFileIntFieldMultiTSReduce
++def MEDCouplingMEDFileFloatField1TSReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileFloatField1TS,((self.serialize(),),(self.__getstate__()),))
++MEDFileFloatField1TS.__reduce__=MEDCouplingMEDFileFloatField1TSReduce
++def MEDCouplingMEDFileFloatFieldMultiTSReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileFloatFieldMultiTS,((self.serialize(),),(self.__getstate__()),))
++MEDFileFloatFieldMultiTS.__reduce__=MEDCouplingMEDFileFloatFieldMultiTSReduce
++del MEDCouplingMEDFileFloatFieldMultiTSReduce
++def MEDCouplingMEDFileParametersReduce(self):
++  return MEDCouplingStdReduceFunct,(MEDFileParameters,((self.serialize(),),(self.__getstate__()),))
++MEDFileParameters.__reduce__=MEDCouplingMEDFileParametersReduce
++del MEDCouplingMEDFileParametersReduce
++%}
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoader.i MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoader.i
+--- MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoader.i     2018-04-19 17:04:36.765223281 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoader.i     2018-04-19 17:25:17.760797811 +0200
+@@ -18,12 +18,11 @@
+ //
+ // Author : Anthony Geay (CEA/DEN)
++%module MEDLoader
++
+ %include "MEDLoaderCommon.i"
+ %pythoncode %{
+-def MEDCouplingDataArrayDoublenew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.DataArrayDouble____new___(cls,args)
+ def MEDCouplingDataArrayDoubleIadd(self,*args):
+     import _MEDLoader
+     return _MEDLoader.DataArrayDouble____iadd___(self, self, *args)
+@@ -39,9 +38,6 @@
+ def MEDCouplingDataArrayDoubleIpow(self,*args):
+     import _MEDLoader
+     return _MEDLoader.DataArrayDouble____ipow___(self, self, *args)
+-def MEDCouplingFieldDoublenew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDCouplingFieldDouble____new___(cls,args)
+ def MEDCouplingFieldDoubleIadd(self,*args):
+     import _MEDLoader
+     return _MEDLoader.MEDCouplingFieldDouble____iadd___(self, self, *args)
+@@ -57,18 +53,6 @@
+ def MEDCouplingFieldDoubleIpow(self,*args):
+     import _MEDLoader
+     return _MEDLoader.MEDCouplingFieldDouble____ipow___(self, self, *args)
+-def MEDCouplingFieldIntnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDCouplingFieldInt____new___(cls,args)
+-def MEDCouplingFieldFloatnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDCouplingFieldFloat____new___(cls,args)
+-def MEDCouplingDataArrayBytenew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.DataArrayByte____new___(cls,args)
+-def MEDCouplingDataArrayFloatnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.DataArrayFloat____new___(cls,args)
+ def MEDCouplingDataArrayFloatIadd(self,*args):
+     import _MEDLoader
+     return _MEDLoader.DataArrayFloat____iadd___(self, self, *args)
+@@ -81,9 +65,6 @@
+ def MEDCouplingDataArrayFloatIdiv(self,*args):
+     import _MEDLoader
+     return _MEDLoader.DataArrayFloat____idiv___(self, self, *args)
+-def MEDCouplingDataArrayIntnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.DataArrayInt____new___(cls,args)
+ def MEDCouplingDataArrayIntIadd(self,*args):
+     import _MEDLoader
+     return _MEDLoader.DataArrayInt____iadd___(self, self, *args)
+@@ -129,110 +110,14 @@
+ def MEDCouplingDataArrayIntTupleImod(self,*args):
+     import _MEDLoader
+     return _MEDLoader.DataArrayIntTuple____imod___(self, self, *args)
+-def ParaMEDMEMDenseMatrixIadd(self,*args):
++def MEDCouplingDenseMatrixIadd(self,*args):
+     import _MEDLoader
+     return _MEDLoader.DenseMatrix____iadd___(self, self, *args)
+-def ParaMEDMEMDenseMatrixIsub(self,*args):
++def MEDCouplingDenseMatrixIsub(self,*args):
+     import _MEDLoader
+     return _MEDLoader.DenseMatrix____isub___(self, self, *args)
+-def MEDCouplingUMeshnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDCouplingUMesh____new___(cls,args)
+-def MEDCoupling1DGTUMeshnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDCoupling1DGTUMesh____new___(cls,args)
+-def MEDCoupling1SGTUMeshnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDCoupling1SGTUMesh____new___(cls,args)
+-def MEDCouplingCurveLinearMeshnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDCouplingCurveLinearMesh____new___(cls,args)
+-def MEDCouplingCMeshnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDCouplingCMesh____new___(cls,args)
+-def MEDCouplingIMeshnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDCouplingIMesh____new___(cls,args)
+-def MEDCouplingExtrudedMeshnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDCouplingMappedExtrudedMesh____new___(cls,args)
+-%}
+-
+-%pythoncode %{
+-def MEDCouplingMEDFileUMeshnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileUMesh____new___(cls,args)
+-def MEDCouplingMEDFileCMeshnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileCMesh____new___(cls,args)
+-def MEDCouplingMEDFileCurveLinearMeshnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileCurveLinearMesh____new___(cls,args)
+-def MEDCouplingMEDFileMeshesnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileMeshes____new___(cls,args)
+-def MEDCouplingMEDFileDatanew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileData____new___(cls,args)
+-def MEDCouplingMEDFileFieldsnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileFields____new___(cls,args)
+-def MEDCouplingMEDFileField1TSnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileField1TS____new___(cls,args)
+-def MEDCouplingMEDFileFieldMultiTSnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileFieldMultiTS____new___(cls,args)
+-def MEDCouplingMEDFileIntField1TSnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileIntField1TS____new___(cls,args)
+-def MEDCouplingMEDFileIntFieldMultiTSnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileIntFieldMultiTS____new___(cls,args)
+-def MEDCouplingMEDFileFloatField1TSnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileFloatField1TS____new___(cls,args)
+-def MEDCouplingMEDFileFloatFieldMultiTSnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileFloatFieldMultiTS____new___(cls,args)
+-def MEDCouplingMEDFileParametersnew(cls,*args):
+-    import _MEDLoader
+-    return _MEDLoader.MEDFileParameters____new___(cls,args)
+ %}
+ %include "MEDCouplingFinalize.i"
+-%pythoncode %{
+-MEDFileMeshesIterator.__next__ = MEDFileMeshesIterator.next
+-MEDFileAnyTypeFieldMultiTSIterator.__next__ = MEDFileAnyTypeFieldMultiTSIterator.next
+-MEDFileFieldsIterator.__next__ = MEDFileFieldsIterator.next
+-%}
+-
+-%pythoncode %{
+-MEDFileUMesh.__new__=classmethod(MEDCouplingMEDFileUMeshnew)
+-del MEDCouplingMEDFileUMeshnew
+-MEDFileCMesh.__new__=classmethod(MEDCouplingMEDFileCMeshnew)
+-del MEDCouplingMEDFileCMeshnew
+-MEDFileCurveLinearMesh.__new__=classmethod(MEDCouplingMEDFileCurveLinearMeshnew)
+-del MEDCouplingMEDFileCurveLinearMeshnew
+-MEDFileData.__new__=classmethod(MEDCouplingMEDFileDatanew)
+-del MEDCouplingMEDFileDatanew
+-MEDFileMeshes.__new__=classmethod(MEDCouplingMEDFileMeshesnew)
+-del MEDCouplingMEDFileMeshesnew
+-MEDFileFields.__new__=classmethod(MEDCouplingMEDFileFieldsnew)
+-del MEDCouplingMEDFileFieldsnew
+-MEDFileField1TS.__new__=classmethod(MEDCouplingMEDFileField1TSnew)
+-del MEDCouplingMEDFileField1TSnew
+-MEDFileFieldMultiTS.__new__=classmethod(MEDCouplingMEDFileFieldMultiTSnew)
+-del MEDCouplingMEDFileFieldMultiTSnew
+-MEDFileIntField1TS.__new__=classmethod(MEDCouplingMEDFileIntField1TSnew)
+-del MEDCouplingMEDFileIntField1TSnew
+-MEDFileIntFieldMultiTS.__new__=classmethod(MEDCouplingMEDFileIntFieldMultiTSnew)
+-del MEDCouplingMEDFileIntFieldMultiTSnew
+-MEDFileFloatField1TS.__new__=classmethod(MEDCouplingMEDFileFloatField1TSnew)
+-del MEDCouplingMEDFileFloatField1TSnew
+-MEDFileFloatFieldMultiTS.__new__=classmethod(MEDCouplingMEDFileFloatFieldMultiTSnew)
+-del MEDCouplingMEDFileFloatFieldMultiTSnew
+-MEDFileParameters.__new__=classmethod(MEDCouplingMEDFileParametersnew)
+-del MEDCouplingMEDFileParametersnew
+-%}
++%include "MEDLoaderFinalize.i"
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderSplitter.py MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderSplitter.py
+--- MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderSplitter.py    2018-04-19 17:04:36.766223301 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderSplitter.py    2018-04-19 17:25:17.772798048 +0200
+@@ -26,7 +26,7 @@
+     @classmethod
+     def New(cls,mfd,idsLst):
+         """ mfd is a MEDFileData instance containing only one mesh. idsLst is a list of DataArrayInt containing each the ids per processor """
+-        return MEDLoaderSplitter(fileName)
++        return MEDLoaderSplitter(mfd,idsLst)
+         pass
+     def __init__(self,mfd,idsLst):
+@@ -96,18 +96,26 @@
+     def __splitMesh(self,mfm,idsLst):
+         ret0 = [MEDFileMeshes() for i in range(len(idsLst))]
+-        m=mfm.getMeshAtLevel(0)
++        m=mfm[0]
++        addlevs=list(mfm.getNonEmptyLevels())[1:]
++        dAddlevs={k:mfm[k] for k in addlevs}
+         for ret,ids in zip(ret0,idsLst):
+             mlPart=mfm.createNewEmpty()
+-            mPart=m[ids] ; trad=mPart.zipCoordsTraducer()
+-            trad=trad.invertArrayO2N2N2O(mPart.getNumberOfNodes())
+-            mlPart.setMeshAtLevel(0,mPart)
++            mPart=m[ids] ; trado2n=mPart.zipCoordsTraducer()
++            trad=trado2n.invertArrayO2N2N2O(mPart.getNumberOfNodes())
++            mlPart[0]=mPart
+             if 0 in mfm.getFamArrNonEmptyLevelsExt():
+                 mlPart.setFamilyFieldArr(0,mfm.getFamilyFieldAtLevel(0)[ids])
+                 pass
+             if 1 in mfm.getFamArrNonEmptyLevelsExt():
+                 mlPart.setFamilyFieldArr(1,mfm.getFamilyFieldAtLevel(1)[trad])
+                 pass
++            for k,v in dAddlevs.iteritems():
++                part=v.getCellIdsFullyIncludedInNodeIds(trad)
++                mSubPart=v[part] ; mSubPart.renumberNodesInConn(trado2n) ; mSubPart.setCoords(mPart.getCoords())
++                mlPart[k]=mSubPart
++                mlPart.setFamilyFieldArr(k,mfm.getFamilyFieldAtLevel(k)[part])
++                pass
+             mlPart.copyFamGrpMapsFrom(mfm)
+             ret.pushMesh(mlPart)
+             pass
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTest1.pyc MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTest1.pyc
+--- MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTest1.pyc      1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTest1.pyc      2018-04-19 17:25:17.768797969 +0200
+@@ -0,0 +1,192 @@
++\ 3ó\r
++\18;ÕZc\0\0\0\0\0\0\0\0\ 3\0\0\0@\0\0\0sz\0\0\0d\0\0d\ 1\0l\0\0Z\0\0d\0\0d\ 1\0l\ 1\0Z\ 1\0d\0\0d\ 2\0l\ 2\0m\ 3\0Z\ 3\0m\ 4\0Z\ 4\0m\ 5\0Z\ 5\0\ 1d\0\0d\ 3\0l\ 6\0m\ 6\0Z\ 6\0\ 1d\ 4\0e\ 1\0j\a\0f\ 1\0d\ 5\0\84\0\0\83\0\0YZ\b\0e      \0d\ 6\0k\ 2\0rv\0e\ 1\0j
++\0\83\0\0\ 1n\0\0d\ 1\0S(\a\0\0\0iÿÿÿÿN(\ 3\0\0\0t\ 2\0\0\0pit\ 1\0\0\0et\ 4\0\0\0sqrt(\ 1\0\0\0t\14\0\0\0MEDLoaderDataForTestt\ e\0\0\0MEDLoaderTest1c\0\0\0\0\0\0\0\0\ 1\0\0\0B\0\0\0\0\0\0e\0\0Z\ 1\0d\0\0\84\0\0Z\ 2\0d\ 1\0\84\0\0Z\ 3\0d\ 2\0\84\0\0Z\ 4\0d\ 3\0\84\0\0Z\ 5\0d\ 4\0\84\0\0Z\ 6\0d\ 5\0\84\0\0Z\a\0d\ 6\0\84\0\0Z\b\0d\a\0\84\0\0\0d\b\0\84\0\0Z
++\0d    \0\84\0\0Z\v\0d
++\0\84\0\0Z\f\0d\v\0\84\0\0Z\r\0d\f\0\84\0\0Z\ e\0d\r\0\84\0\0Z\ f\0d\ e\0\84\0\0Z\10\0d\ f\0\84\0\0Z\11\0d\10\0\84\0\0Z\12\0d\11\0\84\0\0Z\13\0d\12\0\84\0\0Z\14\0d\13\0\84\0\0Z\15\0d\14\0\84\0\0Z\16\0d\15\0\84\0\0Z\17\0d\16\0\84\0\0Z\18\0d\17\0\84\0\0Z\19\0d\18\0\84\0\0Z\1a\0d\19\0\84\0\0Z\e\0RS(\1a\0\0\0c\ 1\0\0\0\ 3\0\0\0\ 4\0\0\0C\0\0\0sa\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1t\ 3\0j\ 4\0d\ 1\0|\ 1\0t\ 5\0\83\ 3\0\ 1t\ 3\0j\ 6\0d\ 1\0|\ 1\0j\a\0\83\0\0d\ 2\0\83\ 3\0}\ 2\0|\0\0j\b\0|\ 1\0j     \0|\ 2\0d\ 3\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\ 4\0\0\0Ns\v\0\0\0Pyfile1.medi\0\0\0\0g\11ê-\81\99\97q=(
++\0\0\0R\ 3\0\0\0t\r\0\0\0build1DMesh_1t\15\0\0\0checkConsistencyLightt \0\0\0MEDLoadert
++\0\0\0WriteUMesht\ 4\0\0\0Truet\11\0\0\0ReadUMeshFromFilet\a\0\0\0getNamet
++\0\0\0assertTruet\a\0\0\0isEqual(\ 3\0\0\0t\ 4\0\0\0selft\ 4\0\0\0mesht\a\0\0\0mesh_rw(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\f\0\0\0testMesh1DRW\1c\0\0\0s\f\0\0\0\0\ 1\f\ 1
++\ 1\13\ 1\e\ 1\19\ 1c\ 1\0\0\0\ 3\0\0\0\ 4\0\0\0C\0\0\0sa\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1t\ 3\0j\ 4\0d\ 1\0|\ 1\0t\ 5\0\83\ 3\0\ 1t\ 3\0j\ 6\0d\ 1\0|\ 1\0j\a\0\83\0\0d\ 2\0\83\ 3\0}\ 2\0|\0\0j\b\0|\ 1\0j   \0|\ 2\0d\ 3\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\ 4\0\0\0Ns\v\0\0\0Pyfile2.medi\0\0\0\0g\11ê-\81\99\97q=(
++\0\0\0R\ 3\0\0\0t\12\0\0\0build2DCurveMesh_1R\ 6\0\0\0R\a\0\0\0R\b\0\0\0R       \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 3\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\11\0\0\0testMesh2DCurveRW$\0\0\0s\f\0\0\0\0\ 1\f\ 1
++\ 1\13\ 1\e\ 1\19\ 1c\ 1\0\0\0\ 3\0\0\0\ 4\0\0\0C\0\0\0sa\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1t\ 3\0j\ 4\0d\ 1\0|\ 1\0t\ 5\0\83\ 3\0\ 1t\ 3\0j\ 6\0d\ 1\0|\ 1\0j\a\0\83\0\0d\ 2\0\83\ 3\0}\ 2\0|\0\0j\b\0|\ 1\0j   \0|\ 2\0d\ 3\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\ 4\0\0\0Ns\v\0\0\0Pyfile3.medi\0\0\0\0g\11ê-\81\99\97q=(
++\0\0\0R\ 3\0\0\0t\r\0\0\0build2DMesh_1R\ 6\0\0\0R\a\0\0\0R\b\0\0\0R    \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 3\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\f\0\0\0testMesh2DRW,\0\0\0s\f\0\0\0\0\ 1\f\ 1
++\ 1\13\ 1\e\ 1\19\ 1c\ 1\0\0\0\ 3\0\0\0\ 4\0\0\0C\0\0\0sa\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1t\ 3\0j\ 4\0d\ 1\0|\ 1\0t\ 5\0\83\ 3\0\ 1t\ 3\0j\ 6\0d\ 1\0|\ 1\0j\a\0\83\0\0d\ 2\0\83\ 3\0}\ 2\0|\0\0j\b\0|\ 1\0j   \0|\ 2\0d\ 3\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\ 4\0\0\0Ns\v\0\0\0Pyfile4.medi\0\0\0\0g\11ê-\81\99\97q=(
++\0\0\0R\ 3\0\0\0t\11\0\0\0build3DSurfMesh_1R\ 6\0\0\0R\a\0\0\0R\b\0\0\0R        \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 3\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\10\0\0\0testMesh3DSurfRW4\0\0\0s\f\0\0\0\0\ 1\f\ 1
++\ 1\13\ 1\e\ 1\19\ 1c\ 1\0\0\0\ 3\0\0\0\ 4\0\0\0C\0\0\0sa\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1t\ 3\0j\ 4\0d\ 1\0|\ 1\0t\ 5\0\83\ 3\0\ 1t\ 3\0j\ 6\0d\ 1\0|\ 1\0j\a\0\83\0\0d\ 2\0\83\ 3\0}\ 2\0|\0\0j\b\0|\ 1\0j   \0|\ 2\0d\ 3\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\ 4\0\0\0Ns\v\0\0\0Pyfile5.medi\0\0\0\0g\11ê-\81\99\97q=(
++\0\0\0R\ 3\0\0\0t\r\0\0\0build3DMesh_1R\ 6\0\0\0R\a\0\0\0R\b\0\0\0R    \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 3\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\f\0\0\0testMesh3DRW<\0\0\0s\f\0\0\0\0\ 1\f\ 1
++\ 1\13\ 1\e\ 1\19\ 1c\ 1\0\0\0\ 3\0\0\0      \0\0\0C\0\0\0s\11\ 1\0\0t\0\0j\ 1\0\83\0\0}\ 1\0t\ 2\0j\ 3\0d\ 1\0|\ 1\0t\ 4\0\83\ 3\0\ 1t\ 2\0j\ 5\0d\ 1\0|\ 1\0j\ 6\0\83\0\0j\a\0\83\0\0d\ 2\0|\ 1\0j\a\0\83\0\0d\ 2\0d\ 3\0\83\ 6\0}\ 2\0|\0\0j\b\0|\ 1\0j   \0|\ 2\0d\ 4\0d\ 4\0\83\ 3\0\83\ 1\0\ 1t\0\0j
++\0\83\0\0}\ 1\0t\ 2\0j\ 3\0d\ 5\0|\ 1\0t\ 4\0\83\ 3\0\ 1t\ 2\0j\v\0d\ 5\0|\ 1\0j\ 6\0\83\0\0j\a\0\83\0\0d\ 2\0|\ 1\0j\a\0\83\0\0d\ 6\0d\a\0\83\ 6\0}\ 2\0|\0\0j\b\0|\ 1\0j  \0|\ 2\0d\ 4\0d\ 4\0\83\ 3\0\83\ 1\0\ 1|\0\0j\f\0t\r\0t\ 2\0j\ 5\0d\ 5\0|\ 1\0j\ 6\0\83\0\0j\a\0\83\0\0d\ 2\0|\ 1\0j\a\0\83\0\0d\ 6\0d\a\0\83\b\0\ 1d\0\0S(\b\0\0\0Ns\v\0\0\0Pyfile6.medi\0\0\0\0i\ 1\0\0\0g\11ê-\81\99\97q=s\v\0\0\0Pyfile7.medi\ 2\0\0\0i\ 3\0\0\0(\ e\0\0\0R\ 3\0\0\0t\16\0\0\0buildVecFieldOnCells_1R\a\0\0\0t
++\0\0\0WriteFieldR        \0\0\0t\r\0\0\0ReadFieldCellt\a\0\0\0getMeshR\v\0\0\0R\f\0\0\0R\r\0\0\0t\16\0\0\0buildVecFieldOnNodes_1t\r\0\0\0ReadFieldNodet\f\0\0\0assertRaisest \0\0\0Exception(\ 3\0\0\0R\ e\0\0\0t\ 2\0\0\0f1t\ 2\0\0\0f2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\f\0\0\0testFieldRW1D\0\0\0s\14\0\0\0\0\ 1\f\ 1\13\ 10\ 1\1c\ 2\f\ 1\13\ 10\ 1\1c\ 17\ 1c\ 1\0\0\0       \0\0\0     \0\0\0C\0\0\0s#\ 4\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0t\0\0j\ 1\0\83\0\0}\ 4\0t\ 2\0j\ 3\0|\ 1\0|\ 4\0t\ 4\0\83\ 3\0\ 1|\ 4\0j\ 5\0d\ 4\0d\ 5\0d\ 6\0\83\ 3\0\ 1|\ 4\0j\ 6\0\83\0\0j\a\0d\a\0d\a\0|\ 2\0\83\ 3\0\ 1t\ 2\0j\b\0|\ 1\0|\ 4\0\83\ 2\0\ 1|\ 4\0j\ 5\0d\b\0d     \0d
++\0\83\ 3\0\ 1|\ 4\0j\ 6\0\83\0\0j\a\0d\a\0d\a\0|\ 3\0\83\ 3\0\ 1t\ 2\0j\b\0|\ 1\0|\ 4\0\83\ 2\0\ 1t\ 2\0j    \0|\ 1\0|\ 4\0j
++\0\83\0\0j\v\0\83\0\0d\a\0|\ 4\0j\v\0\83\0\0d\ 5\0d\ 6\0\83\ 6\0}\ 5\0|\ 4\0j\ 5\0d\ 4\0d\ 5\0d\ 6\0\83\ 3\0\ 1|\ 4\0j\ 6\0\83\0\0j\a\0d\a\0d\a\0|\ 2\0\83\ 3\0\ 1|\0\0j\f\0|\ 4\0j\r\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1t\ 2\0j        \0|\ 1\0|\ 4\0j
++\0\83\0\0j\v\0\83\0\0d\a\0|\ 4\0j\v\0\83\0\0d\a\0d\f\0\83\ 6\0}\ 5\0t\0\0j\ 1\0\83\0\0}\ 6\0|\0\0j\f\0|\ 6\0j\r\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1t\ 2\0j        \0|\ 1\0|\ 4\0j
++\0\83\0\0j\v\0\83\0\0d\a\0|\ 4\0j\v\0\83\0\0d       \0d
++\0\83\ 6\0}\ 5\0|\ 4\0j\ 5\0d\b\0d     \0d
++\0\83\ 3\0\ 1|\ 4\0j\ 6\0\83\0\0j\a\0d\a\0d\a\0|\ 3\0\83\ 3\0\ 1|\0\0j\f\0|\ 4\0j\r\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0t\ f\0t\ 2\0j       \0|\ 1\0|\ 4\0j
++\0\83\0\0j\v\0\83\0\0d\a\0|\ 4\0j\v\0\83\0\0d\r\0d
++\0\83\b\0\ 1t\0\0j\10\0\83\0\0}\ 4\0d\ e\0}\a\0t\ 2\0j\ 3\0|\a\0|\ 4\0t\ 4\0\83\ 3\0\ 1|\ 4\0j\ 5\0d\ f\0d\10\0d\11\0\83\ 3\0\ 1|\ 4\0j\ 6\0\83\0\0j\11\0\83\0\0}\b\0|\ 4\0j\ 6\0\83\0\0j\a\0d\a\0d\12\0|\ 2\0\83\ 3\0\ 1t\ 2\0j\b\0|\a\0|\ 4\0\83\ 2\0\ 1|\ 4\0j\ 5\0d\13\0d\14\0d\15\0\83\ 3\0\ 1|\ 4\0j\ 6\0\83\0\0j\a\0d\a\0d\12\0|\ 3\0\83\ 3\0\ 1t\ 2\0j\b\0|\a\0|\ 4\0\83\ 2\0\ 1t\ 2\0j\12\0|\a\0|\ 4\0j
++\0\83\0\0j\v\0\83\0\0d\a\0|\ 4\0j\v\0\83\0\0d\10\0d\11\0\83\ 6\0}\ 5\0|\ 4\0j\ 5\0d\ f\0d\10\0d\11\0\83\ 3\0\ 1|\ 4\0j\ 6\0\83\0\0j\a\0d\a\0d\12\0|\ 2\0\83\ 3\0\ 1|\0\0j\f\0|\ 4\0j\r\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1t\ 2\0j\12\0|\a\0|\ 4\0j
++\0\83\0\0j\v\0\83\0\0d\a\0|\ 4\0j\v\0\83\0\0d\16\0d\12\0\83\ 6\0}\ 5\0t\0\0j\10\0\83\0\0}\ 6\0|\0\0j\f\0|\ 6\0j\r\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1t\ 2\0j\12\0|\a\0|\ 4\0j
++\0\83\0\0j\v\0\83\0\0d\a\0|\ 4\0j\v\0\83\0\0d\14\0d\15\0\83\ 6\0}\ 5\0|\ 4\0j\ 5\0d\13\0d\14\0d\15\0\83\ 3\0\ 1|\ 4\0j\ 6\0\83\0\0j\a\0d\a\0d\12\0|\ 3\0\83\ 3\0\ 1|\0\0j\f\0|\ 4\0j\r\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\17\0\0\0Ns\v\0\0\0Pyfile8.medgºOLæÖ\1cÈ@g\0p\1c!6+pÂg\0\0\0\0\0\0$@i\b\0\0\0\0\0\0i\0\0\0\0gHáz\14®G$@i\12\0\0\0i\13\0\0\0g\11ê-\81\99\97q=i\ 1\0\0\0i\1c\0\0\0s\v\0\0\0Pyfile9.medg\0\0\0\0\0\80[@il\0\0\0im\0\0\0i\ 3\0\0\0g\0\0\0\0\0@j@iÐ\0\0\0\0\0\0i\ 2\0\0\0(\13\0\0\0R\ 3\0\0\0R\1a\0\0\0R\a\0\0\0R\e\0\0\0R        \0\0\0t\a\0\0\0setTimet\b\0\0\0getArrayt\ 5\0\0\0setIJt!\0\0\0WriteFieldUsingAlreadyWrittenMeshR\1c\0\0\0R\1d\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0\0\0\0R!\0\0\0R\1e\0\0\0t
++\0\0\0getPointerR\1f\0\0\0(   \0\0\0R\ e\0\0\0t\b\0\0\0fileNamet\ 4\0\0\0VAL1t\ 4\0\0\0VAL2R"\0\0\0R#\0\0\0t\ 2\0\0\0f3t       \0\0\0fileName2t\ 3\0\0\0tmp(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\f\0\0\0testFieldRW2Q\0\0\0sZ\0\0\0\0\ 1\ 6\ 1\ 6\ 1\ 6\ 1\f\ 1\13\ 1\13\ 1\19\ 1\10\ 1\13\ 1\19\ 1\10\ 20\ 1\13\ 1\19\ 1\1c\ 10\ 1\f\ 1\1c\ 10\ 1\13\ 1\19\ 1\1c\ 27\ 2\f\ 1\ 6\ 1\13\ 1\13\ 1\12\ 1\19\ 1\10\ 1\13\ 1\19\ 1\10\ 10\ 1\13\ 1\19\ 1\1c\ 10\ 1\f\ 1\1c\ 10\ 1\13\ 1\19\ 1\1c\ 1c\ 1\0\0\0\v\0\0\0\a\0\0\0C\0\0\0s\93\ 6\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0d\ 4\0}\ 4\0d\ 5\0}\ 5\0t\0\0j\ 1\0\83\0\0}\ 6\0|\ 6\0j\ 2\0\83\0\0j\ 3\0|\ 5\0\83\ 1\0\ 1|\ 6\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\ 6\0j\ 4\0d\ 6\0d\a\0d\b\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\ 6\0\83\0\0}\a\0|\ 6\0j\ 5\0\83\0\0j\a\0d    \0d      \0|\ 2\0\83\ 3\0\ 1t\b\0j    \0|\ 1\0|\ 6\0t
++\0\83\ 3\0\ 1|\ 6\0j\ 4\0d
++\0d\v\0d\f\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\a\0d      \0d      \0|\ 3\0\83\ 3\0\ 1t\b\0j\v\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\ 2\0\83\0\0j\ 3\0|\ 5\0\83\ 1\0\ 1|\ 6\0j\ 4\0d\r\0d\ e\0d\ f\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\a\0d     \0d      \0d\10\0|\ 2\0\14\83\ 3\0\ 1t\b\0j\v\0|\ 1\0|\ 6\0\83\ 2\0\ 1t\b\0j\f\0|\ 1\0|\ 4\0\83\ 2\0}\b\0|\ 6\0j\ 4\0d\11\0d\12\0d\13\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\a\0d  \0d      \0d\10\0|\ 3\0\14\83\ 3\0\ 1t\b\0j\v\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\ 4\0d\14\0d\15\0d\16\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\a\0d    \0d      \0d\17\0|\ 3\0\14\83\ 3\0\ 1t\b\0j\v\0|\ 1\0|\ 6\0\83\ 2\0\ 1t\0\0j\r\0\83\0\0}\ 6\0|\ 6\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\ 6\0j\ 2\0\83\0\0j\ 3\0|\ 5\0\83\ 1\0\ 1|\ 6\0j\ 4\0d\18\0d\a\0d\b\0\83\ 3\0\ 1t\b\0j\v\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\ 4\0d\18\0d\19\0d\1a\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\ 6\0\83\0\0}\a\0|\ 6\0j\ 5\0\83\0\0j\a\0d   \0d\10\0|\ 2\0\83\ 3\0\ 1t\b\0j\v\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\ 4\0d\e\0d\1c\0d\1d\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\a\0d     \0d\10\0|\ 3\0\83\ 3\0\ 1t\b\0j\v\0|\ 1\0|\ 6\0\83\ 2\0\ 1t\b\0j\ e\0|\ 1\0|\ 5\0|\ 4\0\83\ 3\0}  \0|\0\0j\ f\0d\1e\0t\10\0|  \0\83\ 1\0\83\ 2\0\ 1|\0\0j\ f\0d\a\0|      \0d      \0\19d     \0\19\83\ 2\0\ 1|\0\0j\ f\0d\b\0|        \0d      \0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\ f\0d\v\0|    \0d\1f\0\19d  \0\19\83\ 2\0\ 1|\0\0j\ f\0d\f\0|        \0d\1f\0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\ f\0d\ e\0\0\0\19d  \0\19\83\ 2\0\ 1|\0\0j\ f\0d\ f\0|        \0\0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\ f\0d\12\0\0d\10\0\19d  \0\19\83\ 2\0\ 1|\0\0j\ f\0d\13\0|        \0d\10\0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\ f\0d\15\0\0d\17\0\19d  \0\19\83\ 2\0\ 1|\0\0j\ f\0d\16\0|        \0d\17\0\19d\1f\0\19\83\ 2\0\ 1t\b\0j\11\0|\ 1\0|\ 5\0|\ 4\0\83\ 3\0}
++\0|\0\0j\ f\0d\10\0t\10\0|
++\0\83\ 1\0\83\ 2\0\ 1|\0\0j\ f\0d\a\0|
++\0d    \0\19d     \0\19\83\ 2\0\ 1|\0\0j\ f\0d\b\0|
++\0d    \0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\ f\0d\19\0|
++\0d\1f\0\19d        \0\19\83\ 2\0\ 1|\0\0j\ f\0d\1a\0|
++\0d\1f\0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\ f\0d\1c\0|
++\0\0\19d        \0\19\83\ 2\0\ 1|\0\0j\ f\0d\1d\0|
++\0\0\19d\1f\0\19\83\ 2\0\ 1t\b\0j\12\0|\ 1\0|\ 5\0d    \0|\ 4\0d\a\0d\b\0\83\ 6\0}\ 6\0|\0\0j\13\0|\ 2\0|\ 6\0j\ 5\0\83\0\0j\14\0d  \0d      \0\83\ 2\0d!\0\83\ 3\0\ 1t\b\0j\12\0|\ 1\0|\ 5\0d        \0|\ 4\0d\v\0d\f\0\83\ 6\0}\ 6\0|\0\0j\13\0|\ 3\0|\ 6\0j\ 5\0\83\0\0j\14\0d  \0d      \0\83\ 2\0d!\0\83\ 3\0\ 1t\b\0j\12\0|\ 1\0|\ 5\0d        \0|\ 4\0d\ e\0d\ f\0\83\ 6\0}\ 6\0|\0\0j\13\0d\10\0|\ 2\0\14|\ 6\0j\ 5\0\83\0\0j\14\0d      \0d      \0\83\ 2\0d!\0\83\ 3\0\ 1t\b\0j\12\0|\ 1\0|\ 5\0d        \0|\ 4\0d\12\0d\13\0\83\ 6\0}\ 6\0|\0\0j\13\0d\10\0|\ 3\0\14|\ 6\0j\ 5\0\83\0\0j\14\0d      \0d      \0\83\ 2\0d!\0\83\ 3\0\ 1t\b\0j\12\0|\ 1\0|\ 5\0d        \0|\ 4\0d\15\0d\16\0\83\ 6\0}\ 6\0|\0\0j\13\0d\17\0|\ 3\0\14|\ 6\0j\ 5\0\83\0\0j\14\0d      \0d      \0\83\ 2\0d!\0\83\ 3\0\ 1t\b\0j\15\0|\ 1\0|\ 5\0d        \0|\ 4\0d\a\0d\b\0\83\ 6\0}\ 6\0|\0\0j\13\0d"\0|\ 6\0j\ 5\0\83\0\0j\14\0d  \0d\10\0\83\ 2\0d!\0\83\ 3\0\ 1t\b\0j\15\0|\ 1\0|\ 5\0d     \0|\ 4\0d\19\0d\1a\0\83\ 6\0}\ 6\0|\0\0j\13\0|\ 2\0|\ 6\0j\ 5\0\83\0\0j\14\0d  \0d\10\0\83\ 2\0d!\0\83\ 3\0\ 1t\b\0j\15\0|\ 1\0|\ 5\0d     \0|\ 4\0d\1c\0d\1d\0\83\ 6\0}\ 6\0|\0\0j\13\0|\ 3\0|\ 6\0j\ 5\0\83\0\0j\14\0d  \0d\10\0\83\ 2\0d!\0\83\ 3\0\ 1d\0\0S(#\0\0\0Ns\f\0\0\0Pyfile11.medgºOLæÖ\1cÈ@g\0p\1c!6+pÂt\ 6\0\0\0AFieldt\ 6\0\0\0AMesh1g\0\0\0\0\0\0$@i\b\0\0\0i        \0\0\0i\0\0\0\0gHáz\14®G$@i\12\0\0\0i\13\0\0\0g\9a\99\99\99\99\19%@i\1c\0\0\0i\1d\0\0\0i\ 3\0\0\0gR¸\1e\85ëQ%@i&\0\0\0i'\0\0\0g
++×£p=\8a%@i0\0\0\0i1\0\0\0i\ 4\0\0\0g\0\0\0\0\0\80[@il\0\0\0im\0\0\0g\0\0\0\0\0@j@iÐ\0\0\0\0\0\0i\ 5\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\r\0\0\0g\0\0\0\0\0ÀQ@(\16\0\0\0R\ 3\0\0\0R\1a\0\0\0R\1d\0\0\0t\a\0\0\0setNameR%\0\0\0R&\0\0\0R)\0\0\0R'\0\0\0R\a\0\0\0R\e\0\0\0R      \0\0\0R(\0\0\0t\13\0\0\0GetMeshNamesOnFieldR\1e\0\0\0t\16\0\0\0GetCellFieldIterationst\v\0\0\0assertEqualt\ 3\0\0\0lent\16\0\0\0GetNodeFieldIterationsR\1c\0\0\0t\11\0\0\0assertAlmostEqualt\ 5\0\0\0getIJR\1f\0\0\0(\v\0\0\0R\ e\0\0\0R*\0\0\0R+\0\0\0R,\0\0\0t\ 5\0\0\0name1t\ 5\0\0\0name3R"\0\0\0R/\0\0\0t\ 3\0\0\0vect\ 3\0\0\0it1t\ 3\0\0\0it3(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\f\0\0\0testFieldRW3\86\0\0\0s\96\0\0\0\0\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1\f\ 1\13\ 1\r\ 1\13\ 1\12\ 1\19\ 1\13\ 1\13\ 1\19\ 1\10\ 1\13\ 1\13\ 1\1d\ 1\10\ 1\12\ 1\13\ 1\1d\ 1\10\ 1\13\ 1\1d\ 1\10\ 2\f\ 1\r\ 1\13\ 1\13\ 1\10\ 1\13\ 1\12\ 1\19\ 1\10\ 1\13\ 1\19\ 1\10\ 2\15\ 1\16\ 1\18\0\18\ 1\18\0\18\ 1\18\0\18\ 1\18\0\18\ 1\18\0\18\ 1\15\ 1\16\ 1\18\0\18\ 1\18\0\18\ 1\18\0\18\ 3\1e\ 1%\ 1\1e\ 1%\ 1\1e\ 1)\ 1\1e\ 1)\ 1\1e\ 1)\ 2\1e\ 1%\ 1\1e\ 1%\ 1\1e\ 1%\ 1c\ 1\0\0\0\17\0\0\0\12\0\0\0C\0\0\0s3\ 4\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 5\0}\ 3\0|\ 2\0j\ 2\0|\ 3\0t\ 3\0\83\ 2\0}\ 4\0|\ 4\0j\ 4\0d\a\0\83\ 1\0\ 1d\b\0d\ 4\0d\ 5\0d    \0g\ 4\0}\ 5\0|\ 2\0j\ 2\0|\ 5\0t\ 3\0\83\ 2\0}\ 6\0|\ 6\0j\ 4\0d
++\0\83\ 1\0\ 1t\ 5\0j\ 6\0j\a\0\83\0\0}\a\0|\a\0j\ 4\0d\v\0\83\ 1\0\ 1|\a\0j\b\0d\b\0\83\ 1\0\ 1|\a\0j    \0d\ 2\0\83\ 1\0\ 1d\f\0d\r\0d\ 2\0d\b\0g\ 4\0}\b\0|\a\0j
++\0t\ 5\0j\v\0d\ 4\0|\b\0d\f\0d\ 4\0!\83\ 3\0\ 1|\a\0j\f\0\83\0\0\ 1|\a\0j\r\0|\ 2\0j\ e\0\83\0\0\83\ 1\0\ 1|\ 2\0|\ 4\0|\ 6\0|\a\0g\ 4\0\0d\ e\0}
++\0t\ 5\0j\ f\0|\ 1\0|
++\0|    \0t\ 3\0\83\ 4\0\ 1t\ 5\0j\10\0|\ 1\0|
++\0\83\ 2\0}\v\0|\ 2\0j\ 4\0|
++\0\83\ 1\0\ 1d\f\0d\ 2\0d\ 3\0d\b\0d\ 4\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\r\0d\15\0d\ 5\0d      \0d\ 6\0d\16\0d\17\0g\12\0}\f\0|\v\0j\ 2\0|\f\0t\ 3\0\83\ 2\0}\r\0|\r\0j\ 4\0|
++\0\83\ 1\0\ 1|\0\0j\11\0|\r\0j\12\0|\ 2\0d\18\0\83\ 2\0\83\ 1\0\ 1t\ 5\0j\13\0|\ 1\0|
++\0\83\ 2\0}\ e\0|\0\0j\14\0d\ 4\0t\15\0|\ e\0\83\ 1\0\83\ 2\0\ 1|\ e\0j\16\0d\a\0\83\ 1\0\ 1|\ e\0j\16\0d
++\0\83\ 1\0\ 1|\ e\0j\16\0d\v\0\83\ 1\0\ 1|\ e\0j\16\0d\19\0\83\ 1\0\ 1d\1e\0}\ f\0t\ 5\0j\17\0|\ 1\0|
++\0d\f\0|\ f\0\83\ 4\0}\10\0|\0\0j\11\0|\10\0j\12\0|\ 4\0d\18\0\83\ 2\0\83\ 1\0\ 1d
++\0g\ 1\0}\ f\0t\ 5\0j\17\0|\ 1\0|
++\0d\f\0|\ f\0\83\ 4\0}\11\0|\0\0j\11\0|\11\0j\12\0|\ 6\0d\18\0\83\ 2\0\83\ 1\0\ 1d\v\0g\ 1\0}\ f\0t\ 5\0j\17\0|\ 1\0|
++\0d\f\0|\ f\0\83\ 4\0}\12\0|\0\0j\11\0|\12\0j\12\0|\a\0d\18\0\83\ 2\0\83\ 1\0\ 1d\19\0}\ f\0t\ 5\0j\17\0|\ 1\0|
++\0d\f\0|\ f\0\83\ 4\0}\13\0|\ 2\0j\ 4\0d\19\0\83\ 1\0\ 1|\0\0j\11\0|\13\0j\12\0|\ 2\0d\18\0\83\ 2\0\83\ 1\0\ 1d\1a\0d\e\0g\ 2\0}\ f\0t\ 5\0j\18\0|\ 1\0|
++\0d\f\0|\ f\0\83\ 4\0}\10\0|\10\0j\ 4\0d\a\0\83\ 1\0\ 1|\0\0j\11\0|\10\0j\12\0|\ 4\0d\18\0\83\ 2\0\83\ 1\0\ 1t\ 5\0j\19\0|\ 1\0d\ e\0d\19\0\83\ 3\0}\14\0|\0\0j\14\0d\ 4\0t\15\0|\14\0\83\ 1\0\83\ 2\0\ 1d\1a\0d\1c\0d\1d\0d\e\0g\ 4\0}\15\0|\0\0j\1a\0|\15\0d\f\0\19|\14\0\83\ 2\0\ 1|\0\0j\1a\0|\15\0d\ 2\0\19|\14\0\83\ 2\0\ 1|\0\0j\1a\0|\15\0d\ 3\0\19|\14\0\83\ 2\0\ 1|\0\0j\1a\0|\15\0d\b\0\19|\14\0\83\ 2\0\ 1t\ 5\0j\e\0|\ 1\0d\ e\0d\1a\0\83\ 3\0}\16\0|\0\0j\14\0d\ 3\0t\15\0|\16\0\83\ 1\0\83\ 2\0\ 1|\0\0j\14\0|\16\0d\f\0\19d\19\0\83\ 2\0\ 1|\0\0j\14\0|\16\0d\ 2\0\19d\a\0\83\ 2\0\ 1d\0\0S(\1f\0\0\0Ns\f\0\0\0Pyfile10.medi\ 1\0\0\0i\ 2\0\0\0i\ 4\0\0\0i\r\0\0\0i\ f\0\0\0t\ 5\0\0\0mesh2i\ 3\0\0\0i\ e\0\0\0t\ 5\0\0\0mesh3t\ 5\0\0\0mesh4i\0\0\0\0i\v\0\0\0t\ 6\0\0\03DTotoi\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i     \0\0\0i
++\0\0\0i\f\0\0\0i\10\0\0\0i\11\0\0\0g\11ê-\81\99\97q=t\b\0\0\03DMesh_1s     \0\0\0Family_-3s   \0\0\0Family_-5s   \0\0\0Family_-4s   \0\0\0Family_-2(\ 1\0\0\0s\ 5\0\0\0mesh2(\1c\0\0\0R\ 3\0\0\0R\18\0\0\0t\11\0\0\0buildPartOfMySelfR       \0\0\0R3\0\0\0R\a\0\0\0t\10\0\0\0MEDCouplingUMesht\ 3\0\0\0Newt\10\0\0\0setMeshDimensiont\r\0\0\0allocateCellst\ e\0\0\0insertNextCellt\v\0\0\0NORM_TETRA4t\14\0\0\0finishInsertingCellst  \0\0\0setCoordst   \0\0\0getCoordst\15\0\0\0WriteUMeshesPartitionR
++\0\0\0R\f\0\0\0R\r\0\0\0t\12\0\0\0GetMeshGroupsNamesR6\0\0\0R7\0\0\0t\ 5\0\0\0indext\13\0\0\0ReadUMeshFromGroupst\15\0\0\0ReadUMeshFromFamiliest\e\0\0\0GetMeshFamiliesNamesOnGroupt\b\0\0\0assertInt\1a\0\0\0GetMeshGroupsNamesOnFamily(\17\0\0\0R\ e\0\0\0R*\0\0\0t\ 5\0\0\0mesh1t\ 5\0\0\0part1RA\0\0\0t\ 5\0\0\0part2RB\0\0\0RC\0\0\0t\ 4\0\0\0connt\ 6\0\0\0meshest\ 5\0\0\0mnanet\ 5\0\0\0mesh5t\ 5\0\0\0part3t\ 5\0\0\0mesh6t\ 4\0\0\0grpsR=\0\0\0t\a\0\0\0mesh2_2t\a\0\0\0mesh3_2t\a\0\0\0mesh4_2t\a\0\0\0mesh1_2t\ 3\0\0\0rett\ 3\0\0\0reft\ 4\0\0\0ret1(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\10\0\0\0testMultiMeshRW1Ð\0\0\0sx\0\0\0\0\ 1\ 6\ 1\f\ 1\15\ 1\12\ 1\r\ 1\12\ 1\12\ 1\r\ 1\ f\ 1\r\ 1\r\ 1\r\ 1\12\ 1\1d\ 1
++\ 1\13\ 1\12\ 1\ 6\ 1\16\ 2\12\ 1\r\ 1<\ 1\12\ 1\r\ 1\19\ 1\12\ 1\16\ 1\r\ 1\r\ 1\r\ 1\r\ 2\ 6\ 1\18\ 1\19\ 1       \ 1\18\ 1\19\ 1   \ 1\18\ 1\19\ 1\ 6\ 1\18\ 1\r\ 1\19\ 2\f\ 1\18\ 1\r\ 1\19\ 2\15\ 1\16\ 1\12\ 1\14\ 1\14\ 1\14\ 1\14\ 2\15\ 1\16\ 1\14\ 1\14\ 1c\ 1\0\0\0\ e\0\0\0
++\0\0\0C\0\0\0\ 1\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0\83\ 1\0\\ 3\0}\ 3\0}\ 4\0}\ 5\0t\ 3\0j\ 4\0|\ 1\0|\ 2\0t\ 5\0\83\ 3\0\ 1d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 5\0}\ 6\0|\ 2\0j\ 6\0|\ 6\0t\ 5\0\83\ 2\0}\a\0|\a\0j\a\0|\ 2\0j\b\0\83\0\0\83\ 1\0\ 1|\a\0j       \0\83\0\0}\b\0|\0\0j
++\0d\b\0|\b\0\83\ 2\0\ 1t\ 3\0j\v\0j\f\0t\ 3\0j\r\0t\ 3\0j\ e\0\83\ 2\0}  \0|      \0j\a\0d   \0\83\ 1\0\ 1|  \0j\ f\0|\a\0\83\ 1\0\ 1t\ 3\0j\10\0j\f\0\83\0\0}
++\0|
++\0j\11\0|\b\0d\ 4\0\83\ 2\0\ 1|       \0j\12\0|
++\0\83\ 1\0\ 1d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0g
++\0}\v\0|
++\0j\13\0|\v\0|\b\0d\ 4\0\83\ 3\0\ 1|    \0j\14\0d\14\0d\ 4\0d\15\0\83\ 3\0\ 1|      \0j\15\0\83\0\0\ 1t\ 3\0j\16\0|\ 1\0|      \0t\17\0\83\ 3\0\ 1t\ 3\0j\18\0|\ 1\0|      \0j\19\0\83\0\0j\b\0\83\0\0d\16\0|       \0j\b\0\83\0\0d\ 4\0d\15\0\83\ 6\0}\f\0t\ 3\0j\1a\0|\ 1\0|   \0j\19\0\83\0\0j\b\0\83\0\0|  \0j\b\0\83\0\0\83\ 3\0}\r\0|\0\0j
++\0|\r\0t\ 3\0j\r\0g\ 1\0\83\ 2\0\ 1|\f\0j\15\0\83\0\0\ 1|\0\0j\e\0|    \0j\1c\0|\f\0d\ 2\0d\ 2\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\17\0\0\0Ns\f\0\0\0Pyfile12.medg\11ê-\81\99\97q=i\ 1\0\0\0i\ 2\0\0\0i\ 4\0\0\0i\r\0\0\0i\ f\0\0\0i\ 5\0\0\0t\12\0\0\0VectorFieldOnCellsg\0\0\0\0\0ÀQ@g\0\0\0\0\0`e@g\0\0\0\0\0\0$@g\0\0\0\0\0\80[@g\0\0\0\0\0\04@g\0\0\0\0\0\0^@g\0\0\0\0\0\0>@g\0\0\0\0\0@`@g\0\0\0\0\0\0D@g\0\0\0\0\0\80a@g\1f\85ëQ¸\1e  @i\a\0\0\0i\0\0\0\0(\1d\0\0\0R\ 3\0\0\0R\18\0\0\0t
++\0\0\0mergeNodesR\a\0\0\0R\b\0\0\0R      \0\0\0RF\0\0\0R3\0\0\0R\v\0\0\0t\10\0\0\0getNumberOfCellsR6\0\0\0t\16\0\0\0MEDCouplingFieldDoubleRH\0\0\0t\b\0\0\0ON_CELLSt\b\0\0\0ONE_TIMEt\a\0\0\0setMesht\ f\0\0\0DataArrayDoublet\ 5\0\0\0alloct\b\0\0\0setArrayt  \0\0\0setValuesR%\0\0\0R\ 6\0\0\0R\e\0\0\0t\ 5\0\0\0FalseR\1c\0\0\0R\1d\0\0\0t\ f\0\0\0GetTypesOfFieldR\f\0\0\0R\r\0\0\0(\ e\0\0\0R\ e\0\0\0R*\0\0\0RX\0\0\0t\ 2\0\0\0dat\ 1\0\0\0bt\f\0\0\0newNbOfNodesRY\0\0\0RA\0\0\0t      \0\0\0nbOfCellsR"\0\0\0t\ 5\0\0\0arrayt\ 4\0\0\0arr1R#\0\0\0t\ 2\0\0\0tt(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\12\0\0\0testFieldProfilRW1\13\ 1\0\0s4\0\0\0\0\ 1\ 6\ 1\f\ 1\18\ 1\13\ 1\15\ 1\12\ 1\13\ 2\f\ 1\10\ 1\e\ 1\r\ 1\r\ 1\ f\ 1\10\ 1\r\ 1$\ 1\13\ 1\13\ 1
++\ 2\13\ 20\ 1'\ 1\16\ 1
++\ 1\1c\ 2c\ 1\0\0\0\ 4\0\0\0\b\0\0\0C\0\0\0s{\0\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0t\ 2\0j\ 3\0|\ 1\0|\ 2\0t\ 4\0\83\ 3\0\ 1t\ 2\0j\ 5\0t\ 2\0j\ 6\0|\ 1\0|\ 2\0j\a\0\83\0\0j\b\0\83\0\0d\ 2\0|\ 2\0j\b\0\83\0\0d\ 3\0d\ 4\0\83\a\0}\ 3\0|\0\0j      \0|\ 2\0j
++\0|\ 3\0d\ 5\0d\ 5\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\ 6\0\0\0Ns\f\0\0\0Pyfile13.medi\0\0\0\0i\ 1\0\0\0i\ 5\0\0\0g\11ê-\81\99\97q=(\v\0\0\0R\ 3\0\0\0t\16\0\0\0buildVecFieldOnGauss_1R\a\0\0\0R\e\0\0\0R  \0\0\0t    \0\0\0ReadFieldt\v\0\0\0ON_GAUSS_PTR\1d\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 4\0\0\0R\ e\0\0\0R*\0\0\0R"\0\0\0R#\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\11\0\0\0testFieldGaussRW13\ 1\0\0s\f\0\0\0\0\ 1\ 6\ 1\f\ 1\13\ 16\ 1\1c\ 1c\ 1\0\0\0\ 4\0\0\0\b\0\0\0C\0\0\0\0\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0t\ 2\0j\ 3\0|\ 1\0|\ 2\0t\ 4\0\83\ 3\0\ 1|\0\0j\ 5\0t\ 2\0j\ 6\0g\ 1\0t\ 2\0j\a\0|\ 1\0d\ 2\0d\ 3\0\83\ 3\0\83\ 2\0\ 1t\ 2\0j\b\0t\ 2\0j\ 6\0|\ 1\0|\ 2\0j       \0\83\0\0j
++\0\83\0\0d\ 4\0|\ 2\0j
++\0\83\0\0d\ 5\0d\ 6\0\83\a\0}\ 3\0|\0\0j\v\0|\ 2\0j\f\0|\ 3\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\b\0\0\0Ns\f\0\0\0Pyfile14.medt\b\0\0\02DMesh_2t\10\0\0\0MyFieldOnGaussNEi\0\0\0\0i\ 1\0\0\0i\ 5\0\0\0g\11ê-\81\99\97q=(\r\0\0\0R\ 3\0\0\0t\18\0\0\0buildVecFieldOnGaussNE_1R\a\0\0\0R\e\0\0\0R   \0\0\0R6\0\0\0t\v\0\0\0ON_GAUSS_NERv\0\0\0R\80\0\0\0R\1d\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 4\0\0\0R\ e\0\0\0R*\0\0\0R"\0\0\0R#\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\13\0\0\0testFieldGaussNERW1;\ 1\0\0s\ e\0\0\0\0\ 1\ 6\ 1\f\ 1\13\ 1%\ 16\ 1\1c\ 1c\ 1\0\0\0\ 5\0\0\0\ 6\0\0\0C\0\0\0s\8f\0\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 6\0}\ 3\0|\ 2\0j\ 2\0|\ 3\0t\ 3\0\83\ 2\0\ 1|\ 2\0j\ 4\0\83\0\0\ 1t\ 5\0j\ 6\0|\ 1\0|\ 2\0t\a\0\83\ 3\0\ 1t\ 5\0j\b\0|\ 1\0|\ 2\0j      \0\83\0\0d\ 5\0\83\ 3\0}\ 4\0|\0\0j
++\0|\ 2\0j\v\0|\ 4\0d\b\0\83\ 2\0\83\ 1\0\ 1d\0\0S(     \0\0\0Ns\f\0\0\0Pyfile15.medi\ 2\0\0\0i\ 5\0\0\0i\ 1\0\0\0i\0\0\0\0i\ 3\0\0\0i\ 4\0\0\0g\11ê-\81\99\97q=(\f\0\0\0R\ 3\0\0\0R\16\0\0\0t\r\0\0\0renumberCellsRu\0\0\0R\ 6\0\0\0R\a\0\0\0R\b\0\0\0R      \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 5\0\0\0R\ e\0\0\0R*\0\0\0R\ f\0\0\0t       \0\0\0renumber1R\10\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\17\0\0\0testMesh3DSurfShuffleRWD\ 1\0\0s\12\0\0\0\0\ 1\ 6\ 1\f\ 1\18\ 1\10\ 1
++\ 1\13\ 1\e\ 1\19\ 1c\ 1\0\0\0\f\0\0\0\14\0\0\0C\0\0\0sY\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\0\0j\ 2\0d\ 2\0|\ 2\0j\ 3\0\83\0\0\83\ 2\0\ 1|\0\0j\ 2\0d\ 3\0|\ 2\0j\ 4\0\83\0\0\83\ 2\0\ 1d\ 4\0d\ 5\0d\ 6\0g\ 3\0}\ 3\0|\ 2\0j\ 5\0|\ 3\0\83\ 1\0\ 1d\ 4\0d\a\0d\b\0d     \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\ 5\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\ 6\0d\17\0g\14\0}\ 4\0|\ 2\0j\ 6\0|\ 4\0t\a\0\83\ 2\0\ 1|\ 2\0j\b\0\83\0\0\ 1t       \0j
++\0|\ 1\0|\ 2\0t\v\0\83\ 3\0\ 1|\ 2\0j\f\0t\a\0\83\ 1\0}\ 5\0|\ 5\0j\r\0t  \0j\ e\0t\a\0\83\ 2\0}\ 6\0|\ 6\0j\ f\0d\18\0d\ 4\0d\b\0\83\ 3\0\ 1|\ 6\0j\10\0t\v\0\83\ 1\0}\a\0t        \0j\11\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\12\0d\19\0\83\ 1\0\ 1|\ 6\0j\ f\0d\1a\0d\a\0d\ 5\0\83\ 3\0\ 1|\ 6\0j\10\0t\v\0\83\ 1\0}\b\0t  \0j\11\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\12\0d\e\0\83\ 1\0\ 1|\ 6\0j\ f\0d\1c\0d\11\0d\ 6\0\83\ 3\0\ 1|\ 6\0j\10\0t\v\0\83\ 1\0}     \0t      \0j\11\0|\ 1\0|\ 6\0\83\ 2\0\ 1d\1e\0d\1f\0\0g\ 3\0}
++\0t    \0j\13\0t   \0j\14\0|\ 1\0|\a\0j\15\0\83\0\0j\16\0\83\0\0d\ f\0|\a\0j\16\0\83\0\0|
++\0\83\ 6\0}\v\0|\0\0j\ 2\0d\a\0t\17\0|\v\0\83\ 1\0\83\ 2\0\ 1|\0\0j\18\0|\v\0d\ f\0\19j\19\0|\a\0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1|\0\0j\18\0|\v\0d\ 4\0\19j\19\0|\b\0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1|\0\0j\18\0|\v\0d\b\0\19j\19\0|        \0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1d\0\0S(!\0\0\0Ns\f\0\0\0Pyfile17.medi\14\0\0\0i-\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 6\0\0\0i\ 3\0\0\0i\ 2\0\0\0i\b\0\0\0i      \0\0\0i\f\0\0\0i\r\0\0\0i\10\0\0\0i\13\0\0\0i\0\0\0\0i\a\0\0\0i\ 5\0\0\0i\ f\0\0\0i\ e\0\0\0i\11\0\0\0i
++\0\0\0i\12\0\0\0i\v\0\0\0g\0\0\0\0\0\0\0\0s\ 3\0\0\02*xg{\14®Gáz\84?s\ 5\0\0\02*x/3g{\14®Gáz\94?g\11ê-\81\99\97q=(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0(\1a\0\0\0R\ 3\0\0\0t\r\0\0\0build3DMesh_2R6\0\0\0Rl\0\0\0t\10\0\0\0getNumberOfNodest\12\0\0\0convertToPolyTypesR\88\0\0\0Ru\0\0\0t\1a\0\0\0orientCorrectlyPolyhedronsR\a\0\0\0R\b\0\0\0R        \0\0\0t\ f\0\0\0getMeasureFieldt\18\0\0\0buildNewTimeReprFromThisRo\0\0\0R%\0\0\0t\r\0\0\0cloneWithMeshR(\0\0\0t  \0\0\0applyFunct\14\0\0\0ReadFieldsOnSameMeshRn\0\0\0R\1d\0\0\0R\v\0\0\0R7\0\0\0R\f\0\0\0R\r\0\0\0(\f\0\0\0R\ e\0\0\0R*\0\0\0t\ 1\0\0\0mt\ 5\0\0\0polyst\ 5\0\0\0renumt\ 5\0\0\0f1TmpR"\0\0\0t\ 3\0\0\0f_1t\ 3\0\0\0f_2t\ 3\0\0\0f_3t\ 3\0\0\0itst\ 2\0\0\0fs(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\18\0\0\0testMultiFieldShuffleRW1O\ 1\0\0s<\0\0\0\0\ 1\ 6\ 1\f\ 1\16\ 1\16\ 1\ f\ 1\r\ 1B\ 1\10\ 1
++\ 2\13\ 1\ f\ 1\15\ 1\13\ 1\ f\ 1\10\ 1\r\ 1\13\ 1\ f\ 1\10\ 1\r\ 1\13\ 1\ f\ 1\10\ 2\ f\ 13\ 1\16\ 1 \ 1 \ 1 \ 1c\ 1\0\0\0\10\0\0\0
++\0\0\0C\0\0\0s\83\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0d\ 2\0d\ 2\0d\ 3\0g\ 3\0}\ 3\0d\ 2\0d\ 2\0d\ 4\0g\ 3\0}\ 4\0|\ 2\0j\ 2\0|\ 3\0|\ 4\0d\ 5\0\83\ 3\0}\ 5\0|\ 2\0j\ 3\0|\ 5\0t\ 4\0\83\ 2\0}\ 6\0d\ 6\0d\a\0d\b\0\0d
++\0g\ 5\0}\a\0|\ 6\0j\ 5\0|\a\0t\ 6\0\83\ 2\0\ 1|\ 6\0j\a\0d\v\0\83\ 1\0\ 1|\ 6\0|\ 2\0g\ 2\0}\b\0t\b\0j  \0|\ 1\0|\b\0t\ 4\0\83\ 3\0\ 1t\b\0j
++\0|\ 1\0|\ 6\0j\v\0\83\0\0d\b\0\83\ 3\0}  \0|\0\0j\f\0|        \0j\r\0|\ 2\0d\ 5\0\83\ 2\0\f\83\ 1\0\ 1|     \0j\a\0|\ 2\0j\v\0\83\0\0\83\ 1\0\ 1|\0\0j\f\0|        \0j\r\0|\ 2\0d\ 5\0\83\ 2\0\83\ 1\0\ 1t\b\0j
++\0|\ 1\0|\ 6\0j\v\0\83\0\0d\f\0\83\ 3\0}
++\0|\0\0j\f\0|
++\0j\r\0|\ 6\0d\ 5\0\83\ 2\0\83\ 1\0\ 1t\b\0j\ e\0j\ f\0t\b\0j\10\0t\b\0j\11\0\83\ 2\0}\v\0|\v\0j\a\0d\r\0\83\ 1\0\ 1|\v\0j\12\0|\ 6\0\83\ 1\0\ 1t\b\0j\13\0j\ f\0\83\0\0}\f\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0g
++\0}\r\0|\f\0j\14\0|\r\0|\ 6\0j\15\0\83\0\0d\a\0\83\ 3\0\ 1|\f\0j\16\0d\b\0d\18\0\83\ 2\0\ 1|\f\0j\16\0d\ 6\0d\19\0\83\ 2\0\ 1|\v\0j\17\0|\f\0\83\ 1\0\ 1|\f\0j\14\0|\r\0|\ 6\0j\15\0\83\0\0d\a\0\83\ 3\0}\ e\0|\v\0j\18\0d\1a\0d\a\0d\e\0\83\ 3\0\ 1|\v\0j\19\0\83\0\0\ 1t\b\0j\1a\0|\ 1\0|\v\0\83\ 2\0\ 1t\b\0j\e\0|\ 1\0|\v\0j\1c\0\83\0\0j\v\0\83\0\0d\f\0|\v\0j\v\0\83\0\0d\a\0d\e\0\83\ 6\0}\ f\0|\0\0j\f\0|\ f\0j\r\0|\v\0d\ 5\0d\ 5\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\1c\0\0\0Ns\f\0\0\0Pyfile18.medg\0\0\0\0\0\0\0\0g333333Ó¿g\0\0\0\0\0\0ð?g\11ê-\81\99\97q=i\ 1\0\0\0i\ 2\0\0\0i\0\0\0\0i\ 4\0\0\0i\ 3\0\0\0t\12\0\0\0ExampleOfMultiDimWiÿÿÿÿt\13\0\0\0FieldOnFacesShuffleg\0\0\0\0\0ÀQ@g\0\0\0\0\0`e@g\0\0\0\0\0\0$@g\0\0\0\0\0\80[@g\0\0\0\0\0\04@g\0\0\0\0\0\0^@g\0\0\0\0\0\0>@g\0\0\0\0\0@`@g\0\0\0\0\0\0D@g\0\0\0\0\0\80a@s \0\0\0plkj [mm]s\v\0\0\0pqqqss [mm]g\1f\85ëQ¸\1e     @i\a\0\0\0(\1d\0\0\0R\ 3\0\0\0R\8b\0\0\0t\10\0\0\0findNodesOnPlanet\19\0\0\0buildFacePartOfMySelfNodeR       \0\0\0R\88\0\0\0Ru\0\0\0R3\0\0\0R\a\0\0\0t\f\0\0\0WriteUMeshesR
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0Rm\0\0\0RH\0\0\0Rn\0\0\0Ro\0\0\0Rp\0\0\0Rq\0\0\0Rt\0\0\0Rl\0\0\0t\12\0\0\0setInfoOnComponentRs\0\0\0R%\0\0\0R\ 6\0\0\0R(\0\0\0R\1c\0\0\0R\1d\0\0\0(\10\0\0\0R\ e\0\0\0R*\0\0\0t\ 3\0\0\0m3dt\ 2\0\0\0ptR=\0\0\0t\ 5\0\0\0nodest\ 3\0\0\0m2dt\b\0\0\0renumberR\\0\0\0t\a\0\0\0m3d_bist\a\0\0\0m2d_bisR"\0\0\0R{\0\0\0R|\0\0\0R/\0\0\0R#\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\13\0\0\0testWriteUMeshesRW1q\ 1\0\0sB\0\0\0\0\ 1\ 6\ 1\f\ 1\ f\ 1\ f\ 1\15\ 1\12\ 1\15\ 1\10\ 1\r\ 1\f\ 1\13\ 1\e\ 1\1a\ 1\13\ 1\19\ 1\e\ 1\19\ 2\e\ 1\r\ 1\r\ 1\ f\ 1$\ 1\19\ 1\10\ 1\10\ 1\r\ 1\e\ 1\13\ 1
++\ 1\10\ 10\ 1\1c\ 1c\ 1\0\0\0\f\0\0\0\18\0\0\0C\0\0\0sn\ 2\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0\83\0\0}\ 4\0t\ 3\0j\ 4\0|\ 1\0|\ 3\0t\ 5\0\83\ 3\0\ 1t\ 3\0j\ 6\0j\a\0t\ 3\0j\b\0t\ 3\0j       \0\83\ 2\0}\ 5\0|\ 5\0j
++\0d\ 3\0\83\ 1\0\ 1|\ 5\0j\v\0|\ 3\0\83\ 1\0\ 1t\ 3\0j\f\0j\a\0\83\0\0}\ 6\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d  \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0g\18\0}\a\0|\ 6\0j\r\0|\a\0|\ 4\0d\1c\0\83\ 3\0\ 1|\ 5\0j\ e\0|\ 6\0\83\ 1\0\ 1|\ 6\0j\ f\0d\1d\0d\1e\0\83\ 2\0\ 1|\ 6\0j\ f\0d\1f\0\0\83\ 2\0\ 1|\ 5\0j\10\0d!\0d\1c\0d"\0\83\ 3\0\ 1|\ 5\0j\11\0\83\0\0\ 1d\1f\0d#\0g\ 2\0}\b\0|\ 5\0j\12\0|\b\0\83\ 1\0}      \0|      \0j\13\0\83\0\0j
++\0|\ 5\0j\13\0\83\0\0j\14\0\83\0\0\83\ 1\0\ 1t\ 3\0j\15\0|\ 1\0|        \0t\16\0\83\ 3\0\ 1t\ 3\0j\17\0|\ 1\0|      \0j\13\0\83\0\0j\14\0\83\0\0d\1d\0|       \0j\14\0\83\0\0d\1c\0d"\0\83\ 6\0}
++\0|
++\0j\11\0\83\0\0\ 1|\0\0j\18\0|
++\0j\19\0\0d$\0d$\0\83\ 3\0\83\ 1\0\ 1d\1f\0d%\0d\1d\0d&\0d\1c\0d#\0g\ 6\0}\v\0\0j\1a\0|\v\0\83\ 1\0\ 1t\ 3\0j\ 4\0|\ 2\0|\ 3\0t\ 5\0\83\ 3\0\ 1t\ 3\0j\15\0|\ 2\0|        \0t\16\0\83\ 3\0\ 1t\ 3\0j\17\0|\ 2\0|      \0j\13\0\83\0\0j\14\0\83\0\0d\1d\0|       \0j\14\0\83\0\0d\1c\0d"\0\83\ 6\0}
++\0|
++\0j\11\0\83\0\0\ 1|\0\0j\18\0|
++\0j\19\0\0d$\0d$\0\83\ 3\0\83\ 1\0\ 1d\0\0S('\0\0\0Ns\f\0\0\0Pyfile19.meds\f\0\0\0Pyfile20.medt\r\0\0\0VFieldOnNodesg\0\0\0\0\0\0ð?g\0\0\0\0\0@Y@g\0\0\0\0\0\0\0@g\0\0\0\0\0\80Y@g\0\0\0\0\0\0\b@g\0\0\0\0\0ÀY@g\0\0\0\0\0\0\10@g\0\0\0\0\0\0Z@g\0\0\0\0\0\0\14@g\0\0\0\0\0@Z@g\0\0\0\0\0\0\18@g\0\0\0\0\0\80Z@g\0\0\0\0\0\0\1c@g\0\0\0\0\0ÀZ@g\0\0\0\0\0\0 @g\0\0\0\0\0\0[@g\0\0\0\0\0\0"@g\0\0\0\0\0@[@g\0\0\0\0\0\0$@g\0\0\0\0\0\80[@g\0\0\0\0\0\0&@g\0\0\0\0\0À[@g\0\0\0\0\0\0(@g\0\0\0\0\0\0\@i\ 2\0\0\0i\0\0\0\0\0\0\0tyty [mm]i\ 1\0\0\0s      \0\0\0uiop [MW]g\1f\85ëQ¸\1e     @i\a\0\0\0i\ 4\0\0\0g\11ê-\81\99\97q=i\ 3\0\0\0i\ 5\0\0\0(\e\0\0\0R\ 3\0\0\0R\14\0\0\0R\8c\0\0\0R\a\0\0\0R\b\0\0\0R   \0\0\0Rm\0\0\0RH\0\0\0t\b\0\0\0ON_NODESRo\0\0\0R3\0\0\0Rp\0\0\0Rq\0\0\0Rt\0\0\0Rs\0\0\0\0\0\0R%\0\0\0R\ 6\0\0\0t\f\0\0\0buildSubPartR\1d\0\0\0R\v\0\0\0R\e\0\0\0Ru\0\0\0R\1f\0\0\0R\f\0\0\0R\r\0\0\0t\r\0\0\0renumberNodes(\f\0\0\0R\ e\0\0\0R*\0\0\0R.\0\0\0R\94\0\0\0\0\0\0nbOfNodesR"\0\0\0R{\0\0\0R|\0\0\0t\ 4\0\0\0arr2R#\0\0\0R-\0\0\0t\ 4\0\0\0arr3(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\16\0\0\0testFieldNodeProfilRW1\95\ 1\0\0s>\0\0\0\0\ 1\ 6\ 1\ 6\ 1\f\ 1\f\ 1\13\ 1\e\ 1\r\ 1\r\ 1\ f\ 1N\ 1\13\ 1\r\ 1\10\ 1\10\ 1\13\ 1
++\ 1\f\ 1\ f\ 1\1f\ 1\13\ 20\ 1
++\ 1\1c\ 2\18\ 1\r\ 1\13\ 1\13\ 10\ 1
++\ 1\1c\ 2c\ 1\0\0\0      \0\0\0\18\0\0\0C\0\0\0\ 1\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0t\ 2\0j\ 3\0|\ 1\0|\ 2\0t\ 4\0\83\ 3\0\ 1t\ 2\0j\ 5\0j\ 6\0t\ 2\0j\a\0t\ 2\0j\b\0\83\ 2\0}\ 3\0|\ 3\0j    \0d\ 2\0\83\ 1\0\ 1|\ 3\0j
++\0|\ 2\0\83\ 1\0\ 1d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d   \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0g\18\0}\ 4\0t\ 2\0j\v\0j\ 6\0\83\0\0}\ 5\0|\ 5\0j\f\0|\ 4\0d\e\0d\1c\0\83\ 3\0\ 1|\ 3\0j\r\0|\ 5\0\83\ 1\0\ 1|\ 5\0j\ e\0d\1d\0d\1e\0\83\ 2\0\ 1|\ 5\0j\ e\0d\1f\0\0\83\ 2\0\ 1|\ 5\0j\ f\0\83\0\0}\ 6\0|\ 3\0j\10\0d!\0d\1c\0d"\0\83\ 3\0\ 1d#\0d"\0d\1c\0d\1f\0d$\0d%\0d&\0d\1d\0d'\0d(\0d)\0d*\0g\f\0}\a\0|\ 3\0j\11\0|\a\0\83\ 1\0\ 1|\ 3\0j\12\0\83\0\0\ 1t\ 2\0j\13\0|\ 1\0|\ 3\0t\14\0\83\ 3\0\ 1t\ 2\0j\15\0|\ 1\0|\ 3\0j\16\0\83\0\0j\17\0\83\0\0d\1d\0|\ 3\0j\17\0\83\0\0d\1c\0d"\0\83\ 6\0}\b\0|\0\0j\18\0|\b\0j\19\0|\ 3\0d+\0d+\0\83\ 3\0\83\ 1\0\ 1d\0\0S(,\0\0\0Ns\f\0\0\0Pyfile23.medt\b\0\0\0FieldMixg\0\0\0\0\0¼\90@g\0\0\0\0\0L\92@g\0\0\0\0\0\90\8f@g\0\0\0\0\0X\91@g\0\0\0\0\0à\8f@g\0\0\0\0\0\80\91@g\0\0\0\0\0\18\90@g\0\0\0\0\0¨\91@g\0\0\0\0\0@\90@g\0\0\0\0\0Ð\91@g\0\0\0\0\0h\90@g\0\0\0\0\0ø\91@g\0\0\0\0\0\90\90@g\0\0\0\0\0 \92@g\0\0\0\0\0¸\90@g\0\0\0\0\0H\92@g\0\0\0\0\0à\90@g\0\0\0\0\0p\92@g\0\0\0\0\0\b\91@g\0\0\0\0\0\98\92@g\0\0\0\0\0\f\91@g\0\0\0\0\0\9c\92@g\0\0\0\0\0\10\91@g\0\0\0\0\0 \92@i\f\0\0\0i\ 2\0\0\0i\0\0\0\0\0\0\0plkj [mm]i\ 1\0\0\0s\v\0\0\0pqqqss [mm]g\\8fÂõ(\        @i\a\0\0\0i\ 3\0\0\0i\ 5\0\0\0i\v\0\0\0i
++\0\0\0i  \0\0\0i\ 6\0\0\0i\b\0\0\0i\ 4\0\0\0g\11ê-\81\99\97q=(\1a\0\0\0R\ 3\0\0\0R\16\0\0\0R\a\0\0\0R\b\0\0\0R   \0\0\0Rm\0\0\0RH\0\0\0\0\0\0Ro\0\0\0R3\0\0\0Rp\0\0\0Rq\0\0\0Rt\0\0\0Rs\0\0\0\0\0\0R)\0\0\0R%\0\0\0\0\0\0R\ 6\0\0\0R\e\0\0\0Ru\0\0\0R\1f\0\0\0R\1d\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(   \0\0\0R\ e\0\0\0R*\0\0\0R\ f\0\0\0R"\0\0\0\0\0\0R{\0\0\0R/\0\0\0t\b\0\0\0renumArrR#\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\16\0\0\0testFieldNodeProfilRW2¹\ 1\0\0s,\0\0\0\0\ 1\ 6\ 1\f\ 1\13\ 2\e\ 1\r\ 1\r\ 1$\ 1*\ 1\ f\ 1\13\ 1\r\ 1\10\ 1\10\ 1\f\ 1\13\ 2*\ 1\r\ 1
++\ 1\13\ 10\ 1\1c\ 2c\ 1\0\0\0\v\0\0\0\18\0\0\0C\0\0\0\ 3\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0t\ 2\0j\ 3\0j\ 4\0t\ 2\0j\ 5\0t\ 2\0j\ 6\0\83\ 2\0}\ 3\0|\ 3\0j\a\0d\ 2\0\83\ 1\0\ 1|\ 3\0j\b\0|\ 2\0\83\ 1\0\ 1t\ 2\0j      \0j\ 4\0\83\0\0}\ 4\0|\ 3\0j
++\0|\ 4\0\83\ 1\0\ 1d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d   \0d
++\0d\v\0d\f\0d\r\0d\ e\0g\f\0}\ 5\0|\ 4\0j\v\0|\ 5\0d\ f\0d\10\0\83\ 3\0\ 1|\ 4\0j\f\0d\11\0d\12\0\83\ 2\0\ 1|\ 4\0j\f\0d\13\0d\14\0\83\ 2\0\ 1|\ 3\0j\r\0d\15\0d\10\0d\16\0\83\ 3\0\ 1|\ 3\0j\ e\0\83\0\0\ 1t\ 2\0j\ 3\0j\ 4\0t\ 2\0j\ f\0t\ 2\0j\ 6\0\83\ 2\0}\ 6\0|\ 6\0j\a\0d\ 2\0\83\ 1\0\ 1|\ 6\0j\b\0|\ 2\0\83\ 1\0\ 1t\ 2\0j  \0j\ 4\0\83\0\0}\ 4\0|\ 6\0j
++\0|\ 4\0\83\ 1\0\ 1d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0d#\0d$\0d%\0d&\0d'\0d(\0d)\0d*\0d+\0d,\0d-\0d.\0g\18\0}\a\0|\ 4\0j\v\0|\a\0d/\0d\10\0\83\ 3\0\ 1|\ 4\0j\f\0d\11\0d\12\0\83\ 2\0\ 1|\ 4\0j\f\0d\13\0d\14\0\83\ 2\0\ 1|\ 6\0j\r\0d\15\0d\10\0d\16\0\83\ 3\0\ 1|\ 6\0j\ e\0\83\0\0\ 1t\ 2\0j\10\0|\ 1\0|\ 3\0t\11\0\83\ 3\0\ 1t\ 2\0j\12\0|\ 1\0|\ 3\0j\13\0\83\0\0j\14\0\83\0\0|\ 3\0j\14\0\83\0\0\83\ 3\0}\b\0|\0\0j\15\0d\13\0t\16\0|\b\0\83\ 1\0\83\ 2\0\ 1|\0\0j\15\0t\ 2\0j\ 5\0|\b\0d\11\0\19\83\ 2\0\ 1t\ 2\0j\17\0|\ 1\0|\ 3\0j\13\0\83\0\0j\14\0\83\0\0\83\ 2\0}     \0|\0\0j\15\0d\13\0t\16\0|  \0\83\ 1\0\83\ 2\0\ 1|\0\0j\18\0\0d\11\0\19d\ 2\0k\ 2\0\83\ 1\0\ 1t\ 2\0j\19\0|\ 1\0|\ 6\0\83\ 2\0\ 1t\ 2\0j\17\0|\ 1\0|\ 3\0j\13\0\83\0\0j\14\0\83\0\0\83\ 2\0}     \0|\0\0j\15\0d\13\0t\16\0|  \0\83\ 1\0\83\ 2\0\ 1|\0\0j\18\0\0d\11\0\19d\ 2\0k\ 2\0\83\ 1\0\ 1t\ 2\0j\12\0|\ 1\0|\ 3\0j\13\0\83\0\0j\14\0\83\0\0|\ 3\0j\14\0\83\0\0\83\ 3\0}\b\0|\0\0j\15\0d\10\0t\16\0|\b\0\83\ 1\0\83\ 2\0\ 1|\0\0j\15\0t\ 2\0j\ f\0|\b\0d\11\0\19\83\ 2\0\ 1|\0\0j\15\0t\ 2\0j\ 5\0|\b\0d\13\0\19\83\ 2\0\ 1t\ 2\0j\1a\0|\ 1\0|\ 3\0j\13\0\83\0\0j\14\0\83\0\0d\11\0|\ 3\0j\14\0\83\0\0d\10\0d\16\0\83\ 6\0}
++\0|\0\0j\18\0|
++\0j\e\0|\ 6\0d0\0d0\0\83\ 3\0\83\ 1\0\ 1t\ 2\0j\1c\0|\ 1\0|\ 3\0j\13\0\83\0\0j\14\0\83\0\0d\11\0|\ 3\0j\14\0\83\0\0d\10\0d\16\0\83\ 6\0}
++\0|\0\0j\18\0|
++\0j\e\0|\ 3\0d0\0d0\0\83\ 3\0\83\ 1\0\ 1d\0\0S(1\0\0\0Ns\f\0\0\0Pyfile21.medR´\0\0\0g\0\0\0\0\0ÀQ@g\0\0\0\0\0`e@g\0\0\0\0\0\0$@g\0\0\0\0\0\80[@g\0\0\0\0\0\04@g\0\0\0\0\0\0^@g\0\0\0\0\0\0>@g\0\0\0\0\0@`@g\0\0\0\0\0\0D@g\0\0\0\0\0\80a@g\0\0\0\0\0\0I@g\0\0\0\0\0Àb@i\ 6\0\0\0i\ 2\0\0\0i\0\0\0\0s      \0\0\0plkj [mm]i\ 1\0\0\0s\v\0\0\0pqqqss [mm]g\1f\85ëQ¸\1e        @i\a\0\0\0g\0\0\0\0\0¼\90@g\0\0\0\0\0L\92@g\0\0\0\0\0\90\8f@g\0\0\0\0\0X\91@g\0\0\0\0\0à\8f@g\0\0\0\0\0\80\91@g\0\0\0\0\0\18\90@g\0\0\0\0\0¨\91@g\0\0\0\0\0@\90@g\0\0\0\0\0Ð\91@g\0\0\0\0\0h\90@g\0\0\0\0\0ø\91@g\0\0\0\0\0\90\90@g\0\0\0\0\0 \92@g\0\0\0\0\0¸\90@g\0\0\0\0\0H\92@g\0\0\0\0\0à\90@g\0\0\0\0\0p\92@g\0\0\0\0\0\b\91@g\0\0\0\0\0\98\92@g\0\0\0\0\0\f\91@g\0\0\0\0\0\9c\92@g\0\0\0\0\0\10\91@g\0\0\0\0\0 \92@i\f\0\0\0g\11ê-\81\99\97q=(\1d\0\0\0R\ 3\0\0\0R\16\0\0\0R\a\0\0\0Rm\0\0\0RH\0\0\0Rn\0\0\0Ro\0\0\0R3\0\0\0Rp\0\0\0Rq\0\0\0Rs\0\0\0Rt\0\0\0\0\0\0R%\0\0\0R\ 6\0\0\0\0\0\0R\e\0\0\0\0\0\0Rv\0\0\0R\1d\0\0\0R\v\0\0\0R6\0\0\0R7\0\0\0t\16\0\0\0GetAllFieldNamesOnMeshR\f\0\0\0R(\0\0\0R\1f\0\0\0R\r\0\0\0R\1c\0\0\0(\v\0\0\0R\ e\0\0\0R*\0\0\0R\ f\0\0\0R"\0\0\0R{\0\0\0R|\0\0\0R#\0\0\0\0\0\0t\ 2\0\0\0tsR\9c\0\0\0R-\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\e\0\0\0testMixCellAndNodesFieldRW1Ô\ 1\0\0sZ\0\0\0\0\ 1\ 6\ 1\f\ 1\e\ 1\r\ 1\r\ 1\ f\ 1\r\ 1*\ 1\13\ 1\10\ 1\10\ 1\13\ 1
++\ 2\e\ 1\r\ 1\r\ 1\ f\ 1\r\ 1$\ 1*\ 1\13\ 1\10\ 1\10\ 1\13\ 1
++\ 2\13\ 1'\ 1\16\ 1\17\ 1\1e\ 1\16\ 1\17\ 1\10\ 1\1e\ 1\16\ 1\17\ 2'\ 1\16\ 1\17\ 1\17\ 20\ 1\1c\ 10\ 1\1c\ 2c\ 1\0\0\0\ 5\0\0\0\ 4\0\0\0C\0\0\0\ 1\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0t\ 2\0j\ 3\0j\ 4\0t\ 2\0j\ 5\0t\ 2\0j\ 6\0\83\ 2\0}\ 3\0|\ 3\0j\a\0d\ 2\0\83\ 1\0\ 1|\ 3\0j\b\0d\ 3\0d\ 4\0d\ 5\0\83\ 3\0\ 1|\ 3\0j        \0|\ 2\0\83\ 1\0\ 1|\ 3\0j
++\0d\ 6\0d\a\0\83\ 2\0\ 1t\ 2\0j\v\0|\ 1\0|\ 3\0t\f\0\83\ 3\0\ 1|\ 3\0j\b\0d\b\0d      \0d
++\0\83\ 3\0\ 1|\ 3\0j
++\0d\ 6\0d\v\0\83\ 2\0\ 1t\ 2\0j\r\0|\ 1\0|\ 3\0\83\ 2\0\ 1|\ 3\0j\a\0d\f\0\83\ 1\0\ 1t\ 2\0j\v\0|\ 1\0|\ 3\0t\ e\0\83\ 3\0\ 1|\ 3\0j\a\0d\r\0\83\ 1\0\ 1|\ 2\0j\a\0d\ e\0\83\ 1\0\ 1t\ 2\0j\v\0|\ 1\0|\ 3\0t\ e\0\83\ 3\0\ 1t\ 2\0j\ 3\0j\ 4\0t\ 2\0j\ f\0t\ 2\0j\ 6\0\83\ 2\0}\ 3\0|\ 3\0j\a\0d\ f\0\83\ 1\0\ 1|\ 3\0j\b\0d\10\0d    \0d\11\0\83\ 3\0\ 1|\ 3\0j    \0|\ 2\0\83\ 1\0\ 1|\ 3\0j
++\0d\12\0d\13\0\83\ 2\0\ 1t\ 2\0j\v\0|\ 1\0|\ 3\0t\ e\0\83\ 3\0\ 1t\ 2\0j\10\0|\ 1\0\83\ 1\0}\ 4\0|\0\0j\11\0d\14\0t\12\0|\ 4\0\83\ 1\0\83\ 2\0\ 1|\0\0j\13\0|\ 4\0d\15\0\19d\ 2\0k\ 2\0\83\ 1\0\ 1|\0\0j\13\0|\ 4\0d\16\0\19d\f\0k\ 2\0\83\ 1\0\ 1|\0\0j\13\0|\ 4\0d\ 6\0\19d\r\0k\ 2\0\83\ 1\0\ 1|\0\0j\13\0|\ 4\0d\12\0\19d\ f\0k\ 2\0\83\ 1\0\ 1d\0\0S(\17\0\0\0Ns\f\0\0\0Pyfile22.medt\ 6\0\0\0Field1g\85ëQ¸\1e\85\v@i\ 5\0\0\0i\ 6\0\0\0i\ 2\0\0\0s\ 3\0\0\0x+ygfffffR\8f@i\a\0\0\0i\b\0\0\0s\a\0\0\0x+77.*yt\ 6\0\0\0Field2t\ 6\0\0\0Field3t\v\0\0\02DMesh_2Bist\ 6\0\0\0Field8g{\14®Gáú!@i       \0\0\0i\ 3\0\0\0s\ 5\0\0\03*x+yi\ 4\0\0\0i\0\0\0\0i\ 1\0\0\0(\14\0\0\0R\ 3\0\0\0t\r\0\0\0build2DMesh_2R\a\0\0\0Rm\0\0\0RH\0\0\0\0\0\0Ro\0\0\0R3\0\0\0R%\0\0\0Rp\0\0\0t\10\0\0\0fillFromAnalyticR\e\0\0\0R        \0\0\0R(\0\0\0Ru\0\0\0Rn\0\0\0t\10\0\0\0GetAllFieldNamesR6\0\0\0R7\0\0\0R\f\0\0\0(\ 5\0\0\0R\ e\0\0\0R*\0\0\0R\ f\0\0\0R"\0\0\0R\9c\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\17\0\0\0testGetAllFieldNamesRW1\b\ 2\0\0s:\0\0\0\0\ 1\ 6\ 1\f\ 1\e\ 1\r\ 1\13\ 1\r\ 1\10\ 1\13\ 1\13\ 1\10\ 1\10\ 1\r\ 1\13\ 1\r\ 1\r\ 1\13\ 1\e\ 1\r\ 1\13\ 1\r\ 1\10\ 1\13\ 1\ f\ 1\16\ 1\17\ 1\17\ 1\17\ 1\17\ 1c\ 1\0\0\0\b\0\0\0\a\0\0\0C\0\0\0sa\ 1\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0t\0\0j\ 3\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0g\ 4\0\83\ 1\0t\0\0j\ 3\0d\ 2\0d\ 3\0g\ 2\0\83\ 1\0t\0\0j\ 3\0d\ 2\0d\ 3\0g\ 2\0\83\ 1\0\83\ 3\0\ 1|\ 2\0j\ 4\0\83\0\0}\ 2\0|\ 2\0j\ 5\0d\ 6\0\83\ 1\0\ 1t\0\0j\ 6\0t\0\0j\a\0\83\ 1\0}\ 3\0|\ 3\0j\b\0|\ 2\0\83\ 1\0\ 1d\a\0}\ 4\0t\0\0j\ 3\0|\ 4\0d\ 5\0\14\83\ 1\0}\ 5\0|\ 5\0j        \0\83\0\0\ 1|\ 5\0j
++\0|\ 4\0\83\ 1\0\ 1|\ 5\0j\v\0g\0\0t\f\0|\ 4\0\83\ 1\0D]\10\0}\ 6\0d\b\0|\ 6\0\16^\ 2\0\0\83\ 1\0\ 1|\ 3\0j\r\0|\ 5\0\83\ 1\0\ 1|\ 3\0j\ 5\0d        \0\83\ 1\0\ 1t\0\0j\ e\0|\ 1\0|\ 3\0t\ f\0\83\ 3\0\ 1t\0\0j\10\0|\ 1\0|\ 2\0j\11\0\83\0\0d\ 2\0|\ 3\0j\11\0\83\0\0d
++\0d
++\0\83\ 6\0}\a\0|\0\0j\12\0|\ 3\0j\13\0|\a\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\f\0\0\0Ns\f\0\0\0Pyfile57.medi\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0t\b\0\0\0TinyMeshi\ 4\10\0\0s\ 3\0\0\0c%it\r\0\0\0FieldBigCompoiÿÿÿÿg\11ê-\81\99\97q=(\14\0\0\0R\a\0\0\0t\10\0\0\0MEDCouplingCMeshRN\0\0\0Rq\0\0\0t\11\0\0\0buildUnstructuredR3\0\0\0Rm\0\0\0Rn\0\0\0Rp\0\0\0t\ 4\0\0\0iotat     \0\0\0rearranget\13\0\0\0setInfoOnComponentst\ 5\0\0\0rangeRs\0\0\0R\e\0\0\0R       \0\0\0R\1c\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\b\0\0\0R\ e\0\0\0R*\0\0\0R\94\0\0\0t\ 1\0\0\0ft      \0\0\0nbOfCompot\ 3\0\0\0arrt\ 1\0\0\0iR#\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\16\0\0\0testBigNbOfCompoNonReg'\ 2\0\0s$\0\0\0\0\ 1\ 6\ 1\f\0F\ 1\f\0\r\ 1\12\0\r\ 1\ 6\ 1\13\0
++\ 1\r\ 1*\ 1\r\ 1\r\ 1\13\ 1*\ 1\1c\ 1c\ 1\0\0\0\v\0\0\0
++\0\0\0C\0\0\0\ 3\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0d\ 2\0t\0\0j\ 2\0\83\ 2\0}\ 2\0|\ 2\0j\ 3\0\83\0\0\ 1|\ 2\0j\ 4\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 4\0\83\ 1\0\ 1|\ 2\0j\ 5\0t\0\0j\ 6\0d\a\0d\a\0d\b\0d\b\0d\b\0d\a\0d\a\0d\b\0g\b\0d    \0d\ 4\0\83\ 3\0\83\ 1\0\ 1g\0\0t\a\0d      \0\83\ 1\0D]\12\0}\ 3\0|\ 2\0j\b\0\83\0\0^\ 2\0q\7f\0}\ 4\0x7\0t       \0|\ 4\0\83\ 1\0D])\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j
++\0t\v\0|\ 3\0\83\ 1\0d
++\0\14d\a\0g\ 2\0\83\ 1\0\ 1\0Wt\0\0j\ 1\0j\f\0|\ 4\0\83\ 1\0}\ 6\0|\ 6\0j\r\0t\ e\0\83\ 1\0}\a\0|\a\0j\ f\0\83\0\0j\10\0d\v\0g\ 1\0\83\ 1\0\ 1t\0\0j\11\0|\ 1\0|\a\0t\12\0\83\ 3\0\ 1t\0\0j\13\0|\ 1\0d\f\0d\ 3\0|\a\0j\14\0\83\0\0d\r\0d\r\0\83\ 6\0}\b\0|\b\0j\15\0t\0\0j\ 1\0|\b\0j\16\0\83\0\0\83\ 1\0\83\ 1\0\ 1|\0\0j\17\0|\a\0j\18\0|\b\0d\ e\0d\ e\0\83\ 3\0\83\ 1\0\ 1|\ 6\0j\19\0\83\0\0}\ 6\0|\ 6\0j\1a\0\83\0\0\ 1t\0\0j\e\0|\ 6\0\83\ 1\0}\ 6\0|\ 6\0j\r\0t\ e\0\83\ 1\0}\a\0|\a\0j\ f\0\83\0\0j\10\0d\v\0g\ 1\0\83\ 1\0\ 1t\0\0j\11\0|\ 1\0|\a\0t\12\0\83\ 3\0\ 1t\0\0j\13\0|\ 1\0d\f\0d\ 3\0|\a\0j\14\0\83\0\0d\r\0d\r\0\83\ 6\0}\b\0|\b\0j\15\0t\0\0j\e\0|\b\0j\16\0\83\0\0\83\ 1\0\83\ 1\0\ 1|\0\0j\17\0|\a\0j\18\0|\b\0d\ e\0d\ e\0\83\ 3\0\83\ 1\0\ 1t\0\0j\1c\0\83\0\0}\ 6\0t\0\0j\ 6\0d    \0\83\ 1\0}   \0|      \0j\1d\0\83\0\0\ 1|\ 6\0j\ 5\0\0|      \0\83\ 2\0\ 1|\ 6\0j\1e\0d\ 2\0\83\ 1\0\ 1|\ 6\0j\r\0t\ e\0\83\ 1\0}\a\0|\a\0j\ f\0\83\0\0j\10\0d\v\0g\ 1\0\83\ 1\0\ 1t\0\0j\11\0|\ 1\0|\a\0t\12\0\83\ 3\0\ 1t\0\0j\13\0|\ 1\0d\ 2\0d\ 3\0|\a\0j\14\0\83\0\0d\r\0d\r\0\83\ 6\0}\b\0|\0\0j\17\0|\a\0j\18\0|\b\0d\ e\0d\ e\0\83\ 3\0\83\ 1\0\ 1|\ 6\0j\19\0\83\0\0j\1f\0\83\0\0}
++\0t\0\0\0d\ 2\0\83\ 1\0}\ 6\0|\ 6\0j!\0d       \0d      \0g\ 2\0\83\ 1\0\ 1|\ 6\0j\ 5\0|
++\0\83\ 1\0\ 1|\ 6\0j\r\0t\ e\0\83\ 1\0}\a\0|\a\0j\ f\0\83\0\0j\10\0d\v\0g\ 1\0\83\ 1\0\ 1t\0\0j\11\0|\ 1\0|\a\0t\12\0\83\ 3\0\ 1t\0\0j\13\0|\ 1\0d\ 2\0d\ 3\0|\a\0j\14\0\83\0\0d\r\0d\r\0\83\ 6\0}\b\0|\0\0j\17\0|\a\0j\18\0|\b\0d\ e\0d\ e\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\ f\0\0\0Ns\f\0\0\0Pyfile73.medR\ f\0\0\0i\0\0\0\0i\ 2\0\0\0i\ 1\0\0\0i\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0g\0\0\0\0\0\0ø?s
++\0\0\0ABC [defg]t\ 5\0\0\0mergeiÿÿÿÿg\11ê-\81\99\97q=("\0\0\0R\a\0\0\0t\14\0\0\0MEDCoupling1SGTUMesht
++\0\0\0NORM_QUAD4RJ\0\0\0RK\0\0\0RN\0\0\0Rq\0\0\0\0\0\0t\b\0\0\0deepCopyt  \0\0\0enumeratet   \0\0\0translatet\ 5\0\0\0floatt\10\0\0\0Merge1SGTUMeshesR\8f\0\0\0Ru\0\0\0R&\0\0\0\0\0\0R\e\0\0\0R   \0\0\0R\1c\0\0\0R\v\0\0\0Rp\0\0\0R\1d\0\0\0R\f\0\0\0R\r\0\0\0\0\0\0t\10\0\0\0convertAllToPolyt\14\0\0\0MEDCoupling1DGTUMeshRÅ\0\0\0\0\0\0R3\0\0\0RO\0\0\0t\1a\0\0\0MEDCouplingCurveLinearMesht\14\0\0\0setNodeGridStructure(\v\0\0\0R\ e\0\0\0t\ 5\0\0\0fnameR\94\0\0\0\0\0\0t\ 2\0\0\0mst\ 3\0\0\0eltt\ 2\0\0\0m0RË\0\0\0t\ 5\0\0\0fReadRÍ\0\0\0t\ 1\0\0\0c(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\17\0\0\0testMultiMeshTypeWrite07\ 2\0\0sZ\0\0\0\0\ 1\ 6\ 1\15\0
++\ 1\19\ 14\ 2%\ 1\19\ 1\1d\ 1\ 4\ 2\12\ 1\ f\0\16\ 1\13\ 2$\ 1\1c\ 1\1c\ 2\f\0
++\ 1\ f\ 1\ f\0\16\ 1\13\ 2$\ 1\1c\ 1\1c\ 2\f\ 1\ f\0
++\ 1\10\ 1\r\ 1\ f\0\16\ 1\13\ 2$\ 1\1c\ 2\12\ 1\ f\ 1\13\ 1\r\ 1\ f\0\16\ 1\13\ 2$\ 1\1c\ 1c\ 1\0\0\0
++\0\0\0
++\0\0\0C\0\0\0\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0d\ 2\0t\0\0j\ 2\0\83\ 2\0}\ 2\0|\ 2\0j\ 3\0\83\0\0\ 1|\ 2\0j\ 4\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 4\0\83\ 1\0\ 1|\ 2\0j\ 5\0t\0\0j\ 6\0d\a\0d\a\0d\b\0d\b\0d\b\0d\a\0d\a\0d\b\0g\b\0d    \0d\ 4\0\83\ 3\0\83\ 1\0\ 1g\0\0t\a\0d      \0\83\ 1\0D]\12\0}\ 3\0|\ 2\0j\b\0\83\0\0^\ 2\0q\7f\0}\ 4\0x7\0t       \0|\ 4\0\83\ 1\0D])\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j
++\0t\v\0|\ 3\0\83\ 1\0d
++\0\14d\a\0g\ 2\0\83\ 1\0\ 1\0Wt\0\0j\ 1\0j\f\0|\ 4\0\83\ 1\0}\ 6\0t\0\0j\r\0|\ 1\0|\ 6\0t\ e\0\83\ 3\0\ 1t\0\0j\ f\0|\ 1\0d\v\0d\ 3\0\83\ 3\0}\a\0|\0\0j\10\0t\11\0|\a\0t\0\0j\12\0\83\ 2\0\83\ 1\0\ 1t\0\0j\ 1\0|\a\0\83\ 1\0}\a\0|\0\0j\10\0|\ 6\0j\13\0|\a\0d\f\0\83\ 2\0\83\ 1\0\ 1|\ 6\0j\14\0\83\0\0}\ 6\0|\ 6\0j\15\0\83\0\0\ 1t\0\0j\16\0|\ 6\0\83\ 1\0}\ 6\0t\0\0j\r\0|\ 1\0|\ 6\0t\ e\0\83\ 3\0\ 1t\0\0j\ f\0|\ 1\0d\v\0d\ 3\0\83\ 3\0}\a\0t\0\0j\16\0|\a\0\83\ 1\0}\a\0|\0\0j\10\0|\ 6\0j\13\0|\a\0d\f\0\83\ 2\0\83\ 1\0\ 1t\0\0j\17\0\83\0\0}\ 6\0t\0\0j\ 6\0d   \0\83\ 1\0}\b\0|\b\0j\18\0\83\0\0\ 1|\ 6\0j\ 5\0|\b\0|\b\0\83\ 2\0\ 1|\ 6\0j\19\0d\ 2\0\83\ 1\0\ 1t\0\0j\r\0|\ 1\0|\ 6\0t\ e\0\83\ 3\0\ 1t\0\0j\ f\0|\ 1\0d\ 3\0\83\ 2\0}\a\0|\0\0j\10\0t\11\0|\a\0t\0\0j\17\0\83\ 2\0\83\ 1\0\ 1|\0\0j\10\0|\ 6\0j\13\0|\a\0d\f\0\83\ 2\0\83\ 1\0\ 1|\ 6\0j\14\0\83\0\0j\1a\0\83\0\0}   \0t\0\0j\e\0d\ 2\0\83\ 1\0}\ 6\0|\ 6\0j\1c\0\0d      \0g\ 2\0\83\ 1\0\ 1|\ 6\0j\ 5\0\0\83\ 1\0\ 1t\0\0j\r\0|\ 1\0|\ 6\0t\ e\0\83\ 3\0\ 1t\0\0j\ f\0|\ 1\0d\ 3\0\83\ 2\0}\a\0|\0\0j\10\0t\11\0|\a\0t\0\0j\e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\10\0|\ 6\0j\13\0|\a\0d\f\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\r\0\0\0Ns\f\0\0\0Pyfile74.medR\ f\0\0\0i\0\0\0\0i\ 2\0\0\0i\ 1\0\0\0i\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0g\0\0\0\0\0\0ø?RÐ\0\0\0g\11ê-\81\99\97q=(\1d\0\0\0R\a\0\0\0\0\0\0\0\0\0RJ\0\0\0RK\0\0\0RN\0\0\0Rq\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t   \0\0\0WriteMeshR   \0\0\0t\10\0\0\0ReadMeshFromFileR\f\0\0\0t
++\0\0\0isinstanceRG\0\0\0R\r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R3\0\0\0RO\0\0\0\0\0\0\0\0\0(
++\0\0\0R\ e\0\0\0\0\0\0R\94\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\ 5\0\0\0mReadRÍ\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\17\0\0\0testMultiMeshTypeWrite1h\ 2\0\0sP\0\0\0\0\ 1\ 6\ 1\15\0
++\ 1\19\ 14\ 2%\ 1\19\ 1\1d\ 1\ 4\ 1\12\ 1\13\ 2\15\ 1\19\ 1\ f\ 1\19\ 2\f\0
++\ 1\ f\ 1\13\ 2\15\ 1\ f\ 1\19\ 2\f\ 1\ f\0
++\ 1\10\ 1\r\ 1\13\ 2\12\ 1\19\ 1\19\ 2\12\ 1\ f\ 1\13\ 1\r\ 1\13\ 2\12\ 1\19\ 1\19\ 1c\ 1\0\0\0\ 3\0\0\0\ 3\0\0\0C\0\0\0sN\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0j\ 3\0d\ 1\0\83\ 1\0}\ 2\0|\ 2\0j\ 4\0d\ 2\0d\ 3\0\83\ 2\0\ 1|\0\0j\ 5\0d\ 3\0|\ 2\0j\ 6\0\83\0\0k\ 6\0\83\ 1\0\ 1d\ 4\0S(\ 5\0\0\0s`\0\0\0 This test is a non regression test on MEDFileUMesh.changeGroupName thanks to Alliance.
++        i\0\0\0\0t\b\0\0\0grp0_LM1t\a\0\0\0xonall1N(\a\0\0\0R\ 3\0\0\0t,\0\0\0buildAMEDFileDataWithGroupOnOneFamilyForSauvt   \0\0\0getMeshest\f\0\0\0getMeshAtPost\ f\0\0\0changeGroupNameR\f\0\0\0t\ e\0\0\0getGroupsNames(\ 3\0\0\0R\ e\0\0\0t\ 3\0\0\0mfdR\ f\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\13\0\0\0testChangeGroupName\97\ 2\0\0s
++\0\0\0\0\ 3\f\ 1\15\ 1\10\ 1\19\ 1c\ 1\0\0\0    \0\0\0\b\0\0\0C\0\0\0\ 1\0\0d\ 1\0}\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 3\0d\ 2\0g\b\0}\ 2\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 4\0}\ 3\0t\0\0j\ 1\0j\ 2\0d\b\0d\ 5\0\83\ 2\0}\ 4\0|\ 4\0j\ 3\0d\ 4\0\83\ 1\0\ 1|\ 4\0j\ 4\0t\0\0j\ 5\0d\a\0|\ 3\0\83\ 3\0\ 1|\ 4\0j\ 6\0\83\0\0\ 1t\0\0j\a\0j\ 2\0\83\0\0}\ 5\0|\ 5\0j\b\0|\ 2\0d\a\0d\ 5\0\83\ 3\0\ 1|\ 4\0j  \0|\ 5\0\83\ 1\0\ 1t\0\0j
++\0j\ 2\0t\0\0j\v\0t\0\0j\f\0\83\ 2\0}\ 6\0|\ 6\0j\r\0|\ 4\0\83\ 1\0\ 1t\0\0j\a\0j\ 2\0\83\0\0}\a\0|\a\0j\ e\0d\ 4\0d\ 4\0\83\ 2\0\ 1|\a\0j\ f\0d\ 3\0\83\ 1\0\ 1|\a\0j\10\0d        \0d
++\0\83\ 2\0\ 1|\ 6\0j\11\0|\a\0\83\ 1\0\ 1|\ 6\0j\12\0d\v\0\83\ 1\0\ 1t\0\0j\13\0\83\0\0}\b\0t\0\0j\14\0d\ 5\0\83\ 1\0\ 1t\0\0j\15\0|\b\0\83\ 1\0\ 1|\0\0j\16\0d\ 5\0|\b\0j\17\0\83\0\0\83\ 2\0\ 1t\0\0j\14\0d    \0\83\ 1\0\ 1t\0\0j\15\0|\b\0\83\ 1\0\ 1|\0\0j\16\0d       \0|\b\0j\17\0\83\0\0\83\ 2\0\ 1~\b\0t\0\0j\14\0d\ 5\0\83\ 1\0\ 1|\0\0j\18\0t\0\0j\19\0t\0\0j\1a\0|\ 1\0|\ 6\0t\e\0\83\ 5\0\ 1|\ 6\0j\1c\0\83\0\0j\10\0d      \0d\f\0\83\ 2\0\ 1t\0\0j\1a\0|\ 1\0|\ 6\0t\e\0\83\ 3\0\ 1d\r\0S(\ e\0\0\0sm\0\0\0 This test is a non regression test, to check that in basic API the policies are taken into account.
++        s\f\0\0\0Pyfile75.medg\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0R\ f\0\0\0i\0\0\0\0s\15\0\0\0CONCENTRATION of I129t\ 5\0\0\0fieldt\ 4\0\0\0I129N(\1d\0\0\0R\a\0\0\0RG\0\0\0RH\0\0\0RJ\0\0\0RK\0\0\0\0\0\0RM\0\0\0Rq\0\0\0Rt\0\0\0RN\0\0\0Rm\0\0\0Rn\0\0\0Ro\0\0\0Rp\0\0\0Rr\0\0\0\0\0\0\0\0\0Rs\0\0\0R3\0\0\0t\f\0\0\0MEDFileUMesht\13\0\0\0SetTooLongStrPolicyt\1d\0\0\0AssignStaticWritePropertiesToR6\0\0\0t\13\0\0\0getTooLongStrPolicyR \0\0\0t\15\0\0\0InterpKernelExceptionR\e\0\0\0R      \0\0\0R&\0\0\0(       \0\0\0R\ e\0\0\0\0\0\0t\ 6\0\0\0coordst\ 6\0\0\0conn2DR\94\0\0\0t
++\0\0\0meshCoordsRË\0\0\0t\ 1\0\0\0dt\ 2\0\0\0mm(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\18\0\0\0testFieldWithTooLongName \ 2\0\0s>\0\0\0\0\ 3\ 6\ 2\1e\ 2\12\ 2\15\ 1\r\ 1\16\ 1
++\ 2\ f\ 1\13\ 1\r\ 2\e\ 1\r\ 1\ f\ 1\10\ 1\r\ 2\10\ 1\r\ 1\r\ 2\f\ 1\r\ 1\r\ 1\16\ 1\r\ 1\r\ 1\16\ 1\ 3\ 2\r\ 1\1f\ 1\16\ 1\13\ 1c\ 1\0\0\0\r\0\0\0\17\0\0\0C\0\0\0s\8c\ 3\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0d\ 2\0\83\ 1\0}\ 2\0t\0\0j\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 4\0\83\ 1\0}\ 3\0t\0\0j\ 2\0d\ 3\0d\ 5\0d\ 6\0d\a\0d\b\0g\ 5\0\83\ 1\0}\ 4\0t\0\0j\ 2\0d\b\0g\ 1\0\83\ 1\0}\ 5\0|\ 2\0j\ 3\0|\ 3\0|\ 4\0|\ 5\0\83\ 3\0\ 1t\0\0j\ 4\0t\0\0j\ 5\0\83\ 1\0}\ 6\0|\ 6\0j\ 6\0d     \0\83\ 1\0\ 1|\ 6\0j\a\0|\ 2\0\83\ 1\0\ 1t\0\0j\ 2\0d
++\0\83\ 1\0}\a\0|\a\0j\b\0\83\0\0\ 1|\ 6\0\0|\a\0\83\ 1\0\ 1|\ 6\0j
++\0\83\0\0\ 1t\0\0j\ 4\0t\0\0j\ 5\0\83\ 1\0}\b\0|\b\0j\ 6\0d\v\0\83\ 1\0\ 1|\b\0j\a\0|\ 2\0\83\ 1\0\ 1t\0\0j\ 2\0d
++\0\83\ 1\0}\a\0|\a\0j\b\0\83\0\0\ 1|\a\0d\ 6\09}\a\0|\b\0j       \0|\a\0\83\ 1\0\ 1|\b\0j
++\0\83\0\0\ 1|\ 6\0j\v\0\83\0\0}       \0|      \0j\f\0\83\0\0\ 4\1ed\f\09\ 2(|        \0j\r\0d\r\0d\a\0d\ e\0\83\ 3\0\ 1t\0\0j\ e\0|\ 1\0|\ 6\0j\ f\0\83\0\0t\10\0\83\ 3\0\ 1t\0\0j\11\0|\ 1\0|\ 6\0\83\ 2\0\ 1t\0\0j\11\0|\ 1\0|\b\0\83\ 2\0\ 1t\0\0j\11\0|\ 1\0|    \0\83\ 2\0\ 1t\0\0j\12\0|\ 1\0d\ 2\0d\ 3\0d   \0d\ f\0d\ f\0\83\ 6\0}
++\0|\0\0j\13\0|\ 6\0j\14\0|
++\0d\10\0d\10\0\83\ 3\0\83\ 1\0\ 1|\0\0j\13\0|
++\0j\f\0\83\0\0j\14\0t\0\0j\ 2\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0d#\0d$\0g\14\0\83\ 1\0d\10\0\83\ 2\0\83\ 1\0\ 1t\0\0j\12\0|\ 1\0d\ 2\0d\ 3\0d\v\0d\ f\0d\ f\0\83\ 6\0}\v\0|\0\0j\13\0|\b\0j\14\0|\v\0d\10\0d\10\0\83\ 3\0\83\ 1\0\ 1|\0\0j\13\0|\v\0j\f\0\83\0\0j\14\0t\0\0j\ 2\0d\11\0d\14\0d\17\0d\1a\0d\1d\0\0d#\0d%\0d&\0d'\0d(\0d)\0d*\0d+\0d,\0d-\0d.\0d/\0d0\0d1\0g\14\0\83\ 1\0d\10\0\83\ 2\0\83\ 1\0\ 1t\0\0j\12\0|\ 1\0d\ 2\0d\ 3\0d    \0d\a\0d\ e\0\83\ 6\0}\f\0|\0\0j\13\0|    \0j\14\0|\f\0d\10\0d\10\0\83\ 3\0\83\ 1\0\ 1|\0\0j\13\0|\f\0j\f\0\83\0\0j\14\0t\0\0j\ 2\0d\11\0d\15\0d\19\0d\1d\0d!\0d2\0d&\0d3\0d4\0d*\0d5\0d6\0d.\0d7\0d8\0d9\0d:\0d;\0d<\0d=\0g\14\0\83\ 1\0d\10\0\83\ 2\0\83\ 1\0\ 1d>\0S(?\0\0\0sj\0\0\0 This test focuses on MEDLoader.WriteFieldUsingAlreadyWrittenMesh with mesh different from UMesh.
++        s\f\0\0\0Pyfile76.medR\ f\0\0\0i\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0i\a\0\0\0R"\0\0\0i\14\0\0\0R#\0\0\0i\ 4\0\0\0g\9a\99\99\99\99\99ñ?i\ 6\0\0\0iÿÿÿÿg\11ê-\81\99\97q=g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@g\0\0\0\0\0\0\10@g\0\0\0\0\0\0\14@g\0\0\0\0\0\0\18@g\0\0\0\0\0\0\1c@g\0\0\0\0\0\0 @g\0\0\0\0\0\0"@g\0\0\0\0\0\0$@g\0\0\0\0\0\0&@g\0\0\0\0\0\0(@g\0\0\0\0\0\0*@g\0\0\0\0\0\0,@g\0\0\0\0\0\0.@g\0\0\0\0\0\00@g\0\0\0\0\0\01@g\0\0\0\0\0\02@g\0\0\0\0\0\03@g\0\0\0\0\0\05@g\0\0\0\0\0\08@g\0\0\0\0\0\0;@g\0\0\0\0\0\0>@g\0\0\0\0\0\80@@g\0\0\0\0\0\0B@g\0\0\0\0\0\80C@g\0\0\0\0\0\0E@g\0\0\0\0\0\80F@g\0\0\0\0\0\0H@g\0\0\0\0\0\80I@g\0\0\0\0\0\0K@g\0\0\0\0\0\80L@g\0\0\0\0\0\04@g\0\0\0\0\0\0<@g\0\0\0\0\0\0@@g\0\0\0\0\0\0D@g\0\0\0\0\0\0F@g\0\0\0\0\0\0J@g\0\0\0\0\0\0L@g\0\0\0\0\0\0N@g\0\0\0\0\0\0P@g\0\0\0\0\0\0Q@g\0\0\0\0\0\0R@g\0\0\0\0\0\0S@N(\15\0\0\0R\a\0\0\0\0\0\0Rq\0\0\0RN\0\0\0Rm\0\0\0\0\0\0R3\0\0\0Rp\0\0\0\0\0\0Rs\0\0\0R\ 6\0\0\0\0\0\0R&\0\0\0R%\0\0\0\0\0\0R\1d\0\0\0R      \0\0\0R(\0\0\0R\1f\0\0\0R\f\0\0\0R\r\0\0\0(\r\0\0\0R\ e\0\0\0\0\0\0R\ f\0\0\0t\ 4\0\0\0arrXt\ 4\0\0\0arrYt\ 4\0\0\0arrZR"\0\0\0\0\0\0R#\0\0\0t\ 3\0\0\0f11t\ 3\0\0\0f1rt\ 3\0\0\0f2rt\ 3\0\0\0f3r(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\1c\0\0\0testUsingAlreadyWrittenMesh2Ë\ 2\0\0sL\0\0\0\0\ 3\ 6\ 1\ f\ 1\e\ 1\1e\ 1\12\ 1\13\ 2\12\0\r\ 1\r\ 1\ f\0
++\ 1\r\ 1
++\ 2\12\0\r\ 1\r\ 1\ f\0
++\0
++\ 1\r\ 1
++\ 2\f\0\11\0\13\ 2\19\ 1\10\ 1\10\ 1\10\ 2\1e\ 1\1c\ 1d\ 1\1e\ 1\1c\ 1d\ 1\1e\ 1\1c\ 1d\ 1c\ 1\0\0\0\v\0\0\0
++\0\0\0C\0\0\0s\80\f\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0d\ 2\0\83\ 1\0}\ 2\0|\ 2\0j\ 2\0\83\0\0\ 1t\0\0j\ 3\0\83\0\0}\ 3\0|\ 3\0j\ 4\0|\ 2\0|\ 2\0\83\ 2\0\ 1|\ 3\0j\ 5\0\83\0\0}\ 3\0|\ 3\0j\ 6\0d\ 3\0\83\ 1\0\ 1t\0\0j\a\0t\0\0j\b\0\83\ 1\0}\ 4\0|\ 4\0j\ 6\0d\ 4\0\83\ 1\0\ 1|\ 4\0j   \0d\ 5\0d\ 6\0d\a\0\83\ 3\0\ 1t\0\0j\ 1\0d\a\0d\b\0d\ 2\0d  \0d
++\0d\v\0d\f\0d\r\0d\ e\0g        \0\83\ 1\0}\ 5\0|\ 4\0j
++\0|\ 5\0\83\ 1\0\ 1|\ 4\0j\v\0|\ 3\0\83\ 1\0\ 1t\0\0j\f\0|\ 1\0|\ 4\0t\r\0\83\ 3\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0\83\ 1\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0\83\ 2\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\ 6\0d\a\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\ 6\0d\a\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\ 4\0j\11\0\83\0\0}\ 6\0|\ 6\0j
++\0|\ 4\0j\12\0\83\0\0d\11\0\17\83\ 1\0\ 1|\ 6\0j\ 6\0d\12\0\83\ 1\0\ 1|\ 6\0j   \0d\13\0d\ 2\0d        \0\83\ 3\0\ 1t\0\0j\13\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\0\0j\14\0t\15\0t\0\0j\10\0|\ 1\0\83\ 3\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0\83\ 2\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\ 6\0d\a\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\ 6\0d\a\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0|\ 1\0d\12\0\83\ 2\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0|\ 1\0d\12\0d\ 2\0\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\12\0d\ 2\0d       \0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\ 4\0j\11\0\83\0\0}\a\0|\a\0j       \0d\14\0d\b\0d\ 2\0\83\ 3\0\ 1|\a\0j
++\0|\a\0j\12\0\83\0\0d\ e\0\17\83\ 1\0\ 1t\0\0j\13\0|\ 1\0|\a\0\83\ 2\0\ 1|\0\0j\14\0t\15\0t\0\0j\10\0|\ 1\0\83\ 3\0\ 1|\0\0j\14\0t\15\0t\0\0j\10\0|\ 1\0d\ 4\0\83\ 4\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\ 6\0d\a\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\ 6\0d\a\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\a\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\b\0d\ 2\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\a\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\b\0d\ 2\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\ 6\0d\a\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\ 6\0d\a\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\a\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\b\0d\ 2\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\a\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\b\0d\ 2\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0|\ 1\0d\12\0\83\ 2\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0|\ 1\0d\12\0d\ 2\0\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\14\0t\15\0t\0\0j\10\0|\ 1\0d\12\0\0d      \0\83\ 6\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\12\0d\ 2\0d   \0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\14\0t\15\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\12\0d     \0d      \0\83      \0\ 1t\0\0j\16\0\83\0\0}\b\0|\ 3\0|\b\0d\10\0<|\b\0j\17\0|\ 1\0d\a\0\83\ 2\0\ 1t\0\0j\18\0t\19\0t\1a\0d\f\0\83\ 1\0\83\ 1\0\83\ 1\0}       \0|      \0j\ 6\0d\15\0\83\ 1\0\ 1t\0\0j\a\0t\0\0j\b\0\83\ 1\0}\ 4\0|\ 4\0j\ 6\0d\ 4\0\83\ 1\0\ 1|\ 4\0j  \0d\ 5\0d\ 6\0d\a\0\83\ 3\0\ 1t\0\0j\ 1\0d\a\0d\b\0d\ 2\0d  \0d
++\0d\v\0d\f\0d\r\0g\b\0\83\ 1\0}\ 5\0|\ 4\0j
++\0|\ 5\0\83\ 1\0\ 1|\ 4\0j\v\0|\ 3\0|    \0\19\83\ 1\0\ 1|\ 4\0j\e\0\83\0\0\ 1t\0\0j\1c\0\83\0\0}
++\0|
++\0j\1d\0|\ 4\0|\b\0d\10\0|        \0\83\ 4\0\ 1|
++\0j\17\0|\ 1\0d\10\0\83\ 2\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0\83\ 1\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0\83\ 2\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\ 6\0d\a\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\ 6\0d\a\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\ 4\0j\11\0\83\0\0}\ 6\0|\ 6\0j
++\0|\ 4\0j\12\0\83\0\0d\11\0\17\83\ 1\0\ 1|\ 6\0j\ 6\0d\12\0\83\ 1\0\ 1|\ 6\0j   \0d\13\0d\ 2\0d        \0\83\ 3\0\ 1t\0\0j\1c\0\83\0\0}
++\0|
++\0j\1d\0|\ 6\0|\b\0d\10\0|        \0\83\ 4\0\ 1|
++\0j\17\0|\ 1\0d\10\0\83\ 2\0\ 1|\0\0j\14\0t\15\0t\0\0j\10\0|\ 1\0\83\ 3\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0\83\ 2\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\ 6\0d\a\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\ 6\0d\a\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0|\ 1\0d\12\0\83\ 2\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0|\ 1\0d\12\0d\ 2\0d      \0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\12\0d\ 2\0d       \0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\ 4\0j\11\0\83\0\0}\a\0|\a\0j       \0d\14\0d\b\0d\ 2\0\83\ 3\0\ 1|\a\0j
++\0|\a\0j\12\0\83\0\0d\ e\0\17\83\ 1\0\ 1t\0\0j\1c\0\83\0\0}
++\0|
++\0j\1d\0|\a\0|\b\0d\10\0|        \0\83\ 4\0\ 1|
++\0j\17\0|\ 1\0d\10\0\83\ 2\0\ 1|\0\0j\14\0t\15\0t\0\0j\10\0|\ 1\0\83\ 3\0\ 1|\0\0j\14\0t\15\0t\0\0j\10\0|\ 1\0d\ 4\0\83\ 4\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\ 6\0d\a\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\ 6\0d\a\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\a\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\b\0d\ 2\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\a\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\b\0d\ 2\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\ 6\0d\a\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 4\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\ 6\0d\a\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\a\0j\ f\0t\0\0j\10\0|\ 1\0d\ 4\0d\b\0d\ 2\0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\a\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\ 4\0d\b\0d\ 2\0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0|\ 1\0d\12\0\83\ 2\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0|\ 1\0d\12\0d\ 2\0d     \0\83\ 4\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\14\0t\15\0t\0\0j\10\0|\ 1\0d\12\0\0d      \0\83\ 6\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\12\0d\ 2\0d   \0\83\a\0d\ f\0d\ f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\14\0t\15\0t\0\0j\10\0t\0\0j\b\0|\ 1\0d\ 3\0d\10\0d\12\0d     \0d      \0\83      \0\ 1d\0\0S(\16\0\0\0Ns\r\0\0\0Pyfile111.medi\ 4\0\0\0R\ f\0\0\0\0\0\0g\0\0\0\0\0\0\b@i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i      \0\0\0i
++\0\0\0g\11ê-\81\99\97q=i\0\0\0\0i\1e\0\0\0t\ 6\0\0\0field2g\0\0\0\0\0\0\14@g\0\0\0\0\0\0\10@t\ 3\0\0\0PFL(\1e\0\0\0R\a\0\0\0Rq\0\0\0\0\0\0\0\0\0RN\0\0\0\0\0\0R3\0\0\0Rm\0\0\0Rn\0\0\0R%\0\0\0Rs\0\0\0Rp\0\0\0R\e\0\0\0R    \0\0\0R\f\0\0\0R\r\0\0\0R\80\0\0\0\0\0\0R&\0\0\0R(\0\0\0\0\0\0R!\0\0\0\0\0\0t\ 5\0\0\0writet\f\0\0\0DataArrayIntt\ 4\0\0\0listRÊ\0\0\0R\ 6\0\0\0t\ f\0\0\0MEDFileField1TSt\ f\0\0\0setFieldProfile(\v\0\0\0R\ e\0\0\0\0\0\0\0\0\0R\94\0\0\0\0\0\0Rw\0\0\0R-\0\0\0R#\0\0\0\0\0\0t\ 3\0\0\0pflt\ 4\0\0\0f1ts(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\12\0\0\0testEasyFieldRead1ó\ 2\0\0\0\0\0\0\ 1\ 6\ 1\ f\0
++\ 1\f\0\10\ 1\f\ 1\r\ 1\12\ 1\r\ 1\13\ 1*\ 1\r\0\r\ 1\13\ 2%\ 1(\ 1.\ 1:\ 2\f\ 1\17\ 1\r\ 1\13\ 1\10\ 2\16\ 1(\ 1.\ 1:\ 1(\ 1.\ 1:\ 2\f\ 1\13\ 1\17\ 1\10\ 2\16\ 1\19\ 1.\ 1:\ 1.\ 1:\ 2.\ 1:\ 1.\ 1:\ 2(\ 1.\ 1\1f\ 1:\ 1+\ 2\f\ 1
++\ 1\10\ 2\e\ 1\r\ 2\12\ 1\r\ 1\13\ 1'\ 1\r\0\11\ 1
++\ 2\f\ 1\16\ 1\10\ 2%\ 1(\ 1.\ 1:\ 2\f\ 1\17\ 1\r\ 1\13\ 1\f\ 1\16\ 1\10\ 2\16\ 1(\ 1.\ 1:\ 1(\ 1.\ 1:\ 2\f\ 1\13\ 1\17\ 1\f\ 1\16\ 1\10\ 2\16\ 1\19\ 1.\ 1:\ 1.\ 1:\ 2.\ 1:\ 1.\ 1:\ 2(\ 1.\ 1\1f\ 1:\ 1+\ 1(\1c\0\0\0t\b\0\0\0__name__t
++\0\0\0__module__R\11\0\0\0R\13\0\0\0R\15\0\0\0R\17\0\0\0R\19\0\0\0R$\0\0\0R0\0\0\0R@\0\0\0Ri\0\0\0R~\0\0\0R\82\0\0\0R\87\0\0\0R\8a\0\0\0R\9d\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\ 5\ 1\0\0R\ f\ 1\0\0(\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyR\ 4\0\0\0\e\0\0\0s6\0\0\0\ 6\ 1        \b       \b       \b       \b       \b       \r       5       J       C               \b                       \v       "       $       $       \e       4       \1f       \10       1       /                       +       (       xt\b\0\0\0__main__(\v\0\0\0R\a\0\0\0t\b\0\0\0unittestt\ 4\0\0\0mathR\0\0\0\0R\ 1\0\0\0R\ 2\0\0\0R\ 3\0\0\0t\b\0\0\0TestCaseR\ 4\0\0\0R\10\ 1\0\0t\ 4\0\0\0main(\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest1.pyt\b\0\0\0<module>\16\0\0\0s\12\0\0\0\f\ 1\f\ 1\1c\ 1\10\ 2\19ÿ\0ÿ\0ÿ\0U\f\ 1
+\ Pas de fin de ligne à la fin du fichier
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTest2.pyc MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTest2.pyc
+--- MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTest2.pyc      1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTest2.pyc      2018-04-19 17:25:17.779798187 +0200
+@@ -0,0 +1,84 @@
++\ 3ó\r
++\18;ÕZc\0\0\0\0\0\0\0\0\ 3\0\0\0@\0\0\0sx\0\0\0d\0\0d\ 1\0l\0\0Td\0\0d\ 2\0l\ 1\0Z\ 1\0d\0\0d\ 3\0l\ 2\0m\ 3\0Z\ 3\0m\ 4\0Z\ 4\0m\ 5\0Z\ 5\0\ 1d\0\0d\ 4\0l\ 6\0m\ 6\0Z\ 6\0\ 1d\ 5\0e\ 1\0j\a\0f\ 1\0d\ 6\0\84\0\0\83\0\0YZ\b\0e        \0d\a\0k\ 2\0rt\0e\ 1\0j
++\0\83\0\0\ 1n\0\0d\ 2\0S(\b\0\0\0iÿÿÿÿ(\ 1\0\0\0t\ 1\0\0\0*N(\ 3\0\0\0t\ 2\0\0\0pit\ 1\0\0\0et\ 4\0\0\0sqrt(\ 1\0\0\0t\14\0\0\0MEDLoaderDataForTestt\ e\0\0\0MEDLoaderTest2c\0\0\0\0\0\0\0\0\ 1\0\0\0B\0\0\0st\0\0\0e\0\0Z\ 1\0d\0\0\84\0\0Z\ 2\0d\ 1\0\84\0\0Z\ 3\0d\ 2\0\84\0\0Z\ 4\0d\ 3\0\84\0\0Z\ 5\0d\ 4\0\84\0\0Z\ 6\0d\ 5\0\84\0\0Z\a\0d\ 6\0\84\0\0Z\b\0d\a\0\84\0\0Z      \0d\b\0\84\0\0Z
++\0d    \0\84\0\0Z\v\0d
++\0\84\0\0Z\f\0d\v\0\84\0\0Z\r\0RS(\f\0\0\0c\ 1\0\0\0\ 3\0\0\0\ 4\0\0\0C\0\0\0s[\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1t\ 3\0d\ 1\0|\ 1\0t\ 4\0\83\ 3\0\ 1t\ 5\0d\ 1\0|\ 1\0j\ 6\0\83\0\0d\ 2\0\83\ 3\0}\ 2\0|\0\0j\a\0|\ 1\0j\b\0|\ 2\0d\ 3\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\ 4\0\0\0Ns\v\0\0\0Pyfile1.medi\0\0\0\0g\11ê-\81\99\97q=( \0\0\0R\ 4\0\0\0t\r\0\0\0build1DMesh_1t\15\0\0\0checkConsistencyLightt\r\0\0\0WriteUMeshDept\ 5\0\0\0Falset\11\0\0\0ReadUMeshFromFilet\a\0\0\0getNamet
++\0\0\0assertTruet\a\0\0\0isEqual(\ 3\0\0\0t\ 4\0\0\0selft\ 4\0\0\0mesht\a\0\0\0mesh_rw(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\f\0\0\0testMesh1DRW\1c\0\0\0s\f\0\0\0\0\ 1\f\ 1
++\ 1\10\ 1\18\ 1\19\ 1c\ 1\0\0\0\ 3\0\0\0\ 4\0\0\0C\0\0\0s[\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1t\ 3\0d\ 1\0|\ 1\0t\ 4\0\83\ 3\0\ 1t\ 5\0d\ 1\0|\ 1\0j\ 6\0\83\0\0d\ 2\0\83\ 3\0}\ 2\0|\0\0j\a\0|\ 1\0j\b\0|\ 2\0d\ 3\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\ 4\0\0\0Ns\v\0\0\0Pyfile2.medi\0\0\0\0g\11ê-\81\99\97q=( \0\0\0R\ 4\0\0\0t\12\0\0\0build2DCurveMesh_1R\a\0\0\0R\b\0\0\0R      \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 3\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\11\0\0\0testMesh2DCurveRW$\0\0\0s\f\0\0\0\0\ 1\f\ 1
++\ 1\10\ 1\18\ 1\19\ 1c\ 1\0\0\0\ 3\0\0\0\ 4\0\0\0C\0\0\0s[\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1t\ 3\0d\ 1\0|\ 1\0t\ 4\0\83\ 3\0\ 1t\ 5\0d\ 1\0|\ 1\0j\ 6\0\83\0\0d\ 2\0\83\ 3\0}\ 2\0|\0\0j\a\0|\ 1\0j\b\0|\ 2\0d\ 3\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\ 4\0\0\0Ns\v\0\0\0Pyfile3.medi\0\0\0\0g\11ê-\81\99\97q=( \0\0\0R\ 4\0\0\0t\r\0\0\0build2DMesh_1R\a\0\0\0R\b\0\0\0R   \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 3\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\f\0\0\0testMesh2DRW,\0\0\0s\f\0\0\0\0\ 1\f\ 1
++\ 1\10\ 1\18\ 1\19\ 1c\ 1\0\0\0\ 3\0\0\0\ 4\0\0\0C\0\0\0s[\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1t\ 3\0d\ 1\0|\ 1\0t\ 4\0\83\ 3\0\ 1t\ 5\0d\ 1\0|\ 1\0j\ 6\0\83\0\0d\ 2\0\83\ 3\0}\ 2\0|\0\0j\a\0|\ 1\0j\b\0|\ 2\0d\ 3\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\ 4\0\0\0Ns\v\0\0\0Pyfile4.medi\0\0\0\0g\11ê-\81\99\97q=( \0\0\0R\ 4\0\0\0t\11\0\0\0build3DSurfMesh_1R\a\0\0\0R\b\0\0\0R       \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 3\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\10\0\0\0testMesh3DSurfRW4\0\0\0s\f\0\0\0\0\ 1\f\ 1
++\ 1\10\ 1\18\ 1\19\ 1c\ 1\0\0\0\ 3\0\0\0\ 4\0\0\0C\0\0\0s[\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1t\ 3\0d\ 1\0|\ 1\0t\ 4\0\83\ 3\0\ 1t\ 5\0d\ 1\0|\ 1\0j\ 6\0\83\0\0d\ 2\0\83\ 3\0}\ 2\0|\0\0j\a\0|\ 1\0j\b\0|\ 2\0d\ 3\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\ 4\0\0\0Ns\v\0\0\0Pyfile5.medi\0\0\0\0g\11ê-\81\99\97q=( \0\0\0R\ 4\0\0\0t\r\0\0\0build3DMesh_1R\a\0\0\0R\b\0\0\0R   \0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 3\0\0\0R\ e\0\0\0R\ f\0\0\0R\10\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\f\0\0\0testMesh3DRW<\0\0\0s\f\0\0\0\0\ 1\f\ 1
++\ 1\10\ 1\18\ 1\19\ 1c\ 1\0\0\0\ 3\0\0\0\a\0\0\0C\0\0\0\0\0\0t\0\0j\ 1\0\83\0\0}\ 1\0t\ 2\0d\ 1\0|\ 1\0t\ 3\0\83\ 3\0\ 1t\ 4\0d\ 1\0|\ 1\0j\ 5\0\83\0\0j\ 6\0\83\0\0d\ 2\0|\ 1\0j\ 6\0\83\0\0d\ 2\0d\ 3\0\83\ 6\0}\ 2\0|\0\0j\a\0|\ 1\0j\b\0|\ 2\0d\ 4\0d\ 4\0\83\ 3\0\83\ 1\0\ 1t\0\0j        \0\83\0\0}\ 1\0t\ 2\0d\ 5\0|\ 1\0t\ 3\0\83\ 3\0\ 1t
++\0d\ 5\0|\ 1\0j\ 5\0\83\0\0j\ 6\0\83\0\0d\ 2\0|\ 1\0j\ 6\0\83\0\0d\ 6\0d\a\0\83\ 6\0}\ 2\0|\0\0j\a\0|\ 1\0j\b\0|\ 2\0d\ 4\0d\ 4\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\b\0\0\0Ns\v\0\0\0Pyfile6.medi\0\0\0\0i\ 1\0\0\0g\11ê-\81\99\97q=s\v\0\0\0Pyfile7.medi\ 2\0\0\0i\ 3\0\0\0(\v\0\0\0R\ 4\0\0\0t\16\0\0\0buildVecFieldOnCells_1t\r\0\0\0WriteFieldDepR        \0\0\0t\r\0\0\0ReadFieldCellt\a\0\0\0getMeshR\v\0\0\0R\f\0\0\0R\r\0\0\0t\16\0\0\0buildVecFieldOnNodes_1t\r\0\0\0ReadFieldNode(\ 3\0\0\0R\ e\0\0\0t\ 2\0\0\0f1t\ 2\0\0\0f2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\f\0\0\0testFieldRW1D\0\0\0s\12\0\0\0\0\ 1\f\ 1\10\ 1-\ 1\1c\ 2\f\ 1\10\ 1-\ 1\1c\ 1c\ 1\0\0\0        \0\0\0\a\0\0\0C\0\0\0\ 3\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0t\0\0j\ 1\0\83\0\0}\ 4\0t\ 2\0|\ 1\0|\ 4\0t\ 3\0\83\ 3\0\ 1|\ 4\0j\ 4\0d\ 4\0d\ 5\0d\ 6\0\83\ 3\0\ 1|\ 4\0j\ 5\0\83\0\0j\ 6\0d\a\0d\a\0|\ 2\0\83\ 3\0\ 1t\a\0|\ 1\0|\ 4\0\83\ 2\0\ 1|\ 4\0j\ 4\0d\b\0d       \0d
++\0\83\ 3\0\ 1|\ 4\0j\ 5\0\83\0\0j\ 6\0d\a\0d\a\0|\ 3\0\83\ 3\0\ 1t\a\0|\ 1\0|\ 4\0\83\ 2\0\ 1t\b\0|\ 1\0|\ 4\0\0\83\0\0j
++\0\83\0\0d\a\0|\ 4\0j
++\0\83\0\0d\ 5\0d\ 6\0\83\ 6\0}\ 5\0|\ 4\0j\ 4\0d\ 4\0d\ 5\0d\ 6\0\83\ 3\0\ 1|\ 4\0j\ 5\0\83\0\0j\ 6\0d\a\0d\a\0|\ 2\0\83\ 3\0\ 1|\0\0j\v\0|\ 4\0j\f\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1t\b\0|\ 1\0|\ 4\0j    \0\83\0\0j
++\0\83\0\0d\a\0|\ 4\0j
++\0\83\0\0d\a\0d\f\0\83\ 6\0}\ 5\0t\0\0j\ 1\0\83\0\0}\ 6\0|\0\0j\v\0|\ 6\0j\f\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1t\b\0|\ 1\0|\ 4\0j    \0\83\0\0j
++\0\83\0\0d\a\0|\ 4\0j
++\0\83\0\0\0d
++\0\83\ 6\0}\ 5\0|\ 4\0j\ 4\0d\b\0d     \0d
++\0\83\ 3\0\ 1|\ 4\0j\ 5\0\83\0\0j\ 6\0d\a\0d\a\0|\ 3\0\83\ 3\0\ 1|\0\0j\v\0|\ 4\0j\f\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1t\0\0j\r\0\83\0\0}\ 4\0d\r\0}\a\0t\ 2\0|\a\0|\ 4\0t\ 3\0\83\ 3\0\ 1|\ 4\0j\ 4\0d\ e\0d\ f\0d\10\0\83\ 3\0\ 1|\ 4\0j\ 5\0\83\0\0j\ e\0\83\0\0}\b\0|\ 4\0j\ 5\0\83\0\0j\ 6\0d\a\0d\11\0|\ 2\0\83\ 3\0\ 1t\a\0|\a\0|\ 4\0\83\ 2\0\ 1|\ 4\0j\ 4\0d\12\0d\13\0d\14\0\83\ 3\0\ 1|\ 4\0j\ 5\0\83\0\0j\ 6\0d\a\0d\11\0|\ 3\0\83\ 3\0\ 1t\a\0|\a\0|\ 4\0\83\ 2\0\ 1t\ f\0|\a\0|\ 4\0j    \0\83\0\0j
++\0\83\0\0d\a\0|\ 4\0j
++\0\83\0\0d\ f\0d\10\0\83\ 6\0}\ 5\0|\ 4\0j\ 4\0d\ e\0d\ f\0d\10\0\83\ 3\0\ 1|\ 4\0j\ 5\0\83\0\0j\ 6\0d\a\0d\11\0|\ 2\0\83\ 3\0\ 1|\0\0j\v\0|\ 4\0j\f\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1t\ f\0|\a\0|\ 4\0j    \0\83\0\0j
++\0\83\0\0d\a\0|\ 4\0j
++\0\83\0\0d\15\0d\11\0\83\ 6\0}\ 5\0t\0\0j\r\0\83\0\0}\ 6\0|\0\0j\v\0|\ 6\0j\f\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1t\ f\0|\a\0|\ 4\0j    \0\83\0\0j
++\0\83\0\0d\a\0|\ 4\0j
++\0\83\0\0d\13\0d\14\0\83\ 6\0}\ 5\0|\ 4\0j\ 4\0d\12\0d\13\0d\14\0\83\ 3\0\ 1|\ 4\0j\ 5\0\83\0\0j\ 6\0d\a\0d\11\0|\ 3\0\83\ 3\0\ 1|\0\0j\v\0|\ 4\0j\f\0|\ 5\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\16\0\0\0Ns\v\0\0\0Pyfile8.medgºOLæÖ\1cÈ@g\0p\1c!6+pÂg\0\0\0\0\0\0$@i\b\0\0\0i   \0\0\0i\0\0\0\0gHáz\14®G$@i\12\0\0\0i\13\0\0\0g\11ê-\81\99\97q=i\ 1\0\0\0s\v\0\0\0Pyfile9.medg\0\0\0\0\0\80[@il\0\0\0im\0\0\0i\ 3\0\0\0g\0\0\0\0\0@j@iÐ\0\0\0\0\0\0i\ 2\0\0\0(\10\0\0\0R\ 4\0\0\0R\1a\0\0\0R\e\0\0\0R  \0\0\0t\a\0\0\0setTimet\b\0\0\0getArrayt\ 5\0\0\0setIJt!\0\0\0WriteFieldUsingAlreadyWrittenMeshR\1c\0\0\0R\1d\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0R\1e\0\0\0t
++\0\0\0getPointerR\1f\0\0\0(   \0\0\0R\ e\0\0\0t\b\0\0\0fileNamet\ 4\0\0\0VAL1t\ 4\0\0\0VAL2R \0\0\0R!\0\0\0t\ 2\0\0\0f3t       \0\0\0fileName2t\ 3\0\0\0tmp(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\f\0\0\0testFieldRW2P\0\0\0sX\0\0\0\0\ 1\ 6\ 1\ 6\ 1\ 6\ 1\f\ 1\10\ 1\13\ 1\19\ 1\r\ 1\13\ 1\19\ 1\r\ 2-\ 1\13\ 1\19\ 1\1c\ 1-\ 1\f\ 1\1c\ 1-\ 1\13\ 1\19\ 1\1c\ 2\f\ 1\ 6\ 1\10\ 1\13\ 1\12\ 1\19\ 1\r\ 1\13\ 1\19\ 1\r\ 1-\ 1\13\ 1\19\ 1\1c\ 1-\ 1\f\ 1\1c\ 1-\ 1\13\ 1\19\ 1\1c\ 1c\ 1\0\0\0
++\0\0\0\a\0\0\0C\0\0\0sK\ 6\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0d\ 4\0}\ 4\0d\ 5\0}\ 5\0t\0\0j\ 1\0\83\0\0}\ 6\0|\ 6\0j\ 2\0\83\0\0j\ 3\0|\ 5\0\83\ 1\0\ 1|\ 6\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\ 6\0j\ 4\0d\ 6\0d\a\0d\b\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\ 6\0\83\0\0}\a\0|\ 6\0j\ 5\0\83\0\0j\a\0d  \0d      \0|\ 2\0\83\ 3\0\ 1t\b\0|\ 1\0|\ 6\0t      \0\83\ 3\0\ 1|\ 6\0j\ 4\0d
++\0d\v\0d\f\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\a\0d      \0d      \0|\ 3\0\83\ 3\0\ 1t
++\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\ 2\0\83\0\0j\ 3\0|\ 5\0\83\ 1\0\ 1|\ 6\0j\ 4\0d\r\0d\ e\0d\ f\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\a\0d        \0d      \0d\10\0|\ 2\0\14\83\ 3\0\ 1t
++\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\ 4\0d\11\0d\12\0d\13\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\a\0d   \0d      \0d\10\0|\ 3\0\14\83\ 3\0\ 1t
++\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\ 4\0d\14\0d\15\0d\16\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\a\0d   \0d      \0d\17\0|\ 3\0\14\83\ 3\0\ 1t
++\0|\ 1\0|\ 6\0\83\ 2\0\ 1t\0\0j\v\0\83\0\0}\ 6\0|\ 6\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\ 6\0j\ 2\0\83\0\0j\ 3\0|\ 5\0\83\ 1\0\ 1|\ 6\0j\ 4\0d\18\0d\a\0d\b\0\83\ 3\0\ 1t
++\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\ 4\0d\18\0d\19\0d\1a\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\ 6\0\83\0\0}\a\0|\ 6\0j\ 5\0\83\0\0j\a\0\0d\10\0|\ 2\0\83\ 3\0\ 1t
++\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\ 4\0d\e\0d\1c\0d\1d\0\83\ 3\0\ 1|\ 6\0j\ 5\0\83\0\0j\a\0d   \0d\10\0|\ 3\0\83\ 3\0\ 1t
++\0|\ 1\0|\ 6\0\83\ 2\0\ 1t\f\0|\ 1\0|\ 5\0|\ 4\0\83\ 3\0}\b\0|\0\0j\r\0d\1e\0t\ e\0|\b\0\83\ 1\0\83\ 2\0\ 1|\0\0j\r\0d\a\0|\b\0d      \0\19d     \0\19\83\ 2\0\ 1|\0\0j\r\0d\b\0|\b\0d     \0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\r\0d\v\0|\b\0d\1f\0\19d     \0\19\83\ 2\0\ 1|\0\0j\r\0d\f\0|\b\0d\1f\0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\r\0d\ e\0|\b\0\0\19\0\19\83\ 2\0\ 1|\0\0j\r\0d\ f\0|\b\0\0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\r\0d\12\0|\b\0d\10\0\19\0\19\83\ 2\0\ 1|\0\0j\r\0d\13\0|\b\0d\10\0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\r\0d\15\0|\b\0d\17\0\19\0\19\83\ 2\0\ 1|\0\0j\r\0d\16\0|\b\0d\17\0\19d\1f\0\19\83\ 2\0\ 1t\ f\0|\ 1\0|\ 5\0|\ 4\0\83\ 3\0}  \0|\0\0j\r\0d\10\0t\ e\0|  \0\83\ 1\0\83\ 2\0\ 1|\0\0j\r\0d\a\0|      \0d      \0\19d     \0\19\83\ 2\0\ 1|\0\0j\r\0d\b\0|        \0d      \0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\r\0d\19\0|    \0d\1f\0\19d  \0\19\83\ 2\0\ 1|\0\0j\r\0d\1a\0|        \0d\1f\0\19d\1f\0\19\83\ 2\0\ 1|\0\0j\r\0d\1c\0\0\0\19d  \0\19\83\ 2\0\ 1|\0\0j\r\0d\1d\0|        \0\0\19d\1f\0\19\83\ 2\0\ 1t\10\0|\ 1\0|\ 5\0\0|\ 4\0d\a\0d\b\0\83\ 6\0}\ 6\0|\0\0j\11\0|\ 2\0|\ 6\0j\ 5\0\83\0\0j\12\0d  \0d      \0\83\ 2\0d!\0\83\ 3\0\ 1t\10\0|\ 1\0|\ 5\0d   \0|\ 4\0d\v\0d\f\0\83\ 6\0}\ 6\0|\0\0j\11\0|\ 3\0|\ 6\0j\ 5\0\83\0\0j\12\0d  \0d      \0\83\ 2\0d!\0\83\ 3\0\ 1t\10\0|\ 1\0|\ 5\0d   \0|\ 4\0d\ e\0d\ f\0\83\ 6\0}\ 6\0|\0\0j\11\0d\10\0|\ 2\0\14|\ 6\0j\ 5\0\83\0\0j\12\0d      \0d      \0\83\ 2\0d!\0\83\ 3\0\ 1t\10\0|\ 1\0|\ 5\0d   \0|\ 4\0d\12\0d\13\0\83\ 6\0}\ 6\0|\0\0j\11\0d\10\0|\ 3\0\14|\ 6\0j\ 5\0\83\0\0j\12\0d      \0d      \0\83\ 2\0d!\0\83\ 3\0\ 1t\10\0|\ 1\0|\ 5\0d   \0|\ 4\0d\15\0d\16\0\83\ 6\0}\ 6\0|\0\0j\11\0d\17\0|\ 3\0\14|\ 6\0j\ 5\0\83\0\0j\12\0d      \0d      \0\83\ 2\0d!\0\83\ 3\0\ 1t\13\0|\ 1\0|\ 5\0d   \0|\ 4\0d\a\0d\b\0\83\ 6\0}\ 6\0|\0\0j\11\0d"\0|\ 6\0j\ 5\0\83\0\0j\12\0d  \0d\10\0\83\ 2\0d!\0\83\ 3\0\ 1t\13\0|\ 1\0|\ 5\0d        \0|\ 4\0d\19\0d\1a\0\83\ 6\0}\ 6\0|\0\0j\11\0|\ 2\0|\ 6\0j\ 5\0\83\0\0j\12\0d  \0d\10\0\83\ 2\0d!\0\83\ 3\0\ 1t\13\0|\ 1\0|\ 5\0d        \0|\ 4\0d\1c\0d\1d\0\83\ 6\0}\ 6\0|\0\0j\11\0|\ 3\0|\ 6\0j\ 5\0\83\0\0j\12\0d  \0d\10\0\83\ 2\0d!\0\83\ 3\0\ 1d\0\0S(#\0\0\0Ns\f\0\0\0Pyfile11.medgºOLæÖ\1cÈ@g\0p\1c!6+pÂt\ 6\0\0\0AFieldt\ 6\0\0\0AMesh1g\0\0\0\0\0\0$@i\b\0\0\0i        \0\0\0i\0\0\0\0gHáz\14®G$@i\12\0\0\0i\13\0\0\0g\9a\99\99\99\99\19%@i\1c\0\0\0i\1d\0\0\0i\ 3\0\0\0gR¸\1e\85ëQ%@i&\0\0\0i'\0\0\0g
++×£p=\8a%@i0\0\0\0i1\0\0\0i\ 4\0\0\0g\0\0\0\0\0\80[@il\0\0\0im\0\0\0g\0\0\0\0\0@j@iÐ\0\0\0\0\0\0i\ 5\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\r\0\0\0g\0\0\0\0\0ÀQ@(\14\0\0\0R\ 4\0\0\0R\1a\0\0\0R\1d\0\0\0t\a\0\0\0setNameR#\0\0\0R$\0\0\0R'\0\0\0R%\0\0\0R\e\0\0\0R   \0\0\0R&\0\0\0R\1e\0\0\0t\16\0\0\0GetCellFieldIterationst\v\0\0\0assertEqualt\ 3\0\0\0lent\16\0\0\0GetNodeFieldIterationsR\1c\0\0\0t\11\0\0\0assertAlmostEqualt\ 5\0\0\0getIJR\1f\0\0\0(
++\0\0\0R\ e\0\0\0R(\0\0\0R)\0\0\0R*\0\0\0t\ 5\0\0\0name1t\ 5\0\0\0name3R \0\0\0R-\0\0\0t\ 3\0\0\0it1t\ 3\0\0\0it3(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\f\0\0\0testFieldRW3\83\0\0\0s\94\0\0\0\0\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1\f\ 1\13\ 1\r\ 1\13\ 1\12\ 1\19\ 1\10\ 1\13\ 1\19\ 1\r\ 1\13\ 1\13\ 1\1d\ 1\r\ 1\13\ 1\1d\ 1\r\ 1\13\ 1\1d\ 1\r\ 2\f\ 1\r\ 1\13\ 1\13\ 1\r\ 1\13\ 1\12\ 1\19\ 1\r\ 1\13\ 1\19\ 1\r\ 2\12\ 1\16\ 1\18\0\18\ 1\18\0\18\ 1\18\0\18\ 1\18\0\18\ 1\18\0\18\ 1\12\ 1\16\ 1\18\0\18\ 1\18\0\18\ 1\18\0\18\ 3\e\ 1%\ 1\e\ 1%\ 1\e\ 1)\ 1\e\ 1)\ 1\e\ 1)\ 2\e\ 1%\ 1\e\ 1%\ 1\e\ 1%\ 1c\ 1\0\0\0\14\0\0\0\12\0\0\0C\0\0\0s;\ 3\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 5\0}\ 3\0|\ 2\0j\ 2\0|\ 3\0t\ 3\0\83\ 2\0}\ 4\0|\ 4\0j\ 4\0d\a\0\83\ 1\0\ 1d\b\0d\ 4\0d\ 5\0d   \0g\ 4\0}\ 5\0|\ 2\0j\ 2\0|\ 5\0t\ 3\0\83\ 2\0}\ 6\0|\ 6\0j\ 4\0d
++\0\83\ 1\0\ 1t\ 5\0j\ 6\0\83\0\0}\a\0|\a\0j\ 4\0d\v\0\83\ 1\0\ 1|\a\0j\a\0d\b\0\83\ 1\0\ 1|\a\0j\b\0d\ 2\0\83\ 1\0\ 1d\f\0d\r\0d\ 2\0d\b\0g\ 4\0}\b\0|\a\0j        \0t
++\0d\ 4\0|\b\0d\f\0d\ 4\0!\83\ 3\0\ 1|\a\0j\v\0\83\0\0\ 1|\a\0j\f\0|\ 2\0j\r\0\83\0\0\83\ 1\0\ 1|\ 2\0|\ 4\0|\ 6\0|\a\0g\ 4\0}       \0d\ e\0}
++\0t\ e\0|\ 1\0|
++\0|    \0t\ f\0\83\ 4\0\ 1t\10\0|\ 1\0|
++\0\83\ 2\0}\v\0|\ 2\0j\ 4\0|
++\0\83\ 1\0\ 1d\f\0d\ 2\0d\ 3\0d\b\0d\ 4\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\r\0d\15\0d\ 5\0d      \0d\ 6\0d\16\0d\17\0g\12\0}\f\0|\v\0j\ 2\0|\f\0t\ 3\0\83\ 2\0}\r\0|\r\0j\ 4\0|
++\0\83\ 1\0\ 1|\0\0j\11\0|\r\0j\12\0|\ 2\0d\18\0\83\ 2\0\83\ 1\0\ 1t\13\0|\ 1\0|
++\0\83\ 2\0}\ e\0|\0\0j\14\0d\ 4\0t\15\0|\ e\0\83\ 1\0\83\ 2\0\ 1|\ e\0j\16\0d\a\0\83\ 1\0\ 1|\ e\0j\16\0d
++\0\83\ 1\0\ 1|\ e\0j\16\0d\v\0\83\ 1\0\ 1|\ e\0j\16\0d\19\0\83\ 1\0\ 1d\a\0g\ 1\0}\ f\0t\17\0|\ 1\0|
++\0d\f\0|\ f\0\83\ 4\0}\10\0|\0\0j\11\0|\10\0j\12\0|\ 4\0d\18\0\83\ 2\0\83\ 1\0\ 1d
++\0g\ 1\0}\ f\0t\17\0|\ 1\0|
++\0d\f\0|\ f\0\83\ 4\0}\11\0|\0\0j\11\0|\11\0j\12\0|\ 6\0d\18\0\83\ 2\0\83\ 1\0\ 1d\v\0g\ 1\0}\ f\0t\17\0|\ 1\0|
++\0d\f\0|\ f\0\83\ 4\0}\12\0|\0\0j\11\0|\12\0j\12\0|\a\0d\18\0\83\ 2\0\83\ 1\0\ 1d\19\0g\ 1\0}\ f\0t\17\0|\ 1\0|
++\0d\f\0|\ f\0\83\ 4\0}\13\0|\ 2\0j\ 4\0d\19\0\83\ 1\0\ 1|\0\0j\11\0|\13\0j\12\0|\ 2\0d\18\0\83\ 2\0\83\ 1\0\ 1d\1a\0d\e\0g\ 2\0}\ f\0t\18\0|\ 1\0|
++\0d\f\0|\ f\0\83\ 4\0}\10\0|\10\0j\ 4\0d\a\0\83\ 1\0\ 1|\0\0j\11\0|\10\0j\12\0|\ 4\0d\18\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\1c\0\0\0Ns\f\0\0\0Pyfile10.medi\ 1\0\0\0i\ 2\0\0\0i\ 4\0\0\0i\r\0\0\0i\ f\0\0\0t\ 5\0\0\0mesh2i\ 3\0\0\0i\ e\0\0\0t\ 5\0\0\0mesh3t\ 5\0\0\0mesh4i\0\0\0\0i\v\0\0\0t\ 6\0\0\03DTotoi\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i     \0\0\0i
++\0\0\0i\f\0\0\0i\10\0\0\0i\11\0\0\0g\11ê-\81\99\97q=t\b\0\0\03DMesh_1s     \0\0\0Family_-5s   \0\0\0Family_-3(\19\0\0\0R\ 4\0\0\0R\18\0\0\0t\11\0\0\0buildPartOfMySelft\ 4\0\0\0TrueR1\0\0\0t\10\0\0\0MEDCouplingUMesht\ 3\0\0\0Newt\10\0\0\0setMeshDimensiont\r\0\0\0allocateCellst\ e\0\0\0insertNextCellt\v\0\0\0NORM_TETRA4t\14\0\0\0finishInsertingCellst        \0\0\0setCoordst   \0\0\0getCoordst\18\0\0\0WriteUMeshesPartitionDepR      \0\0\0R
++\0\0\0R\f\0\0\0R\r\0\0\0t\12\0\0\0GetMeshGroupsNamesR3\0\0\0R4\0\0\0t\ 5\0\0\0indext\13\0\0\0ReadUMeshFromGroupst\15\0\0\0ReadUMeshFromFamilies(\14\0\0\0R\ e\0\0\0R(\0\0\0t\ 5\0\0\0mesh1t\ 5\0\0\0part1R=\0\0\0t\ 5\0\0\0part2R>\0\0\0R?\0\0\0t\ 4\0\0\0connt\ 6\0\0\0meshest\ 5\0\0\0mnanet\ 5\0\0\0mesh5t\ 5\0\0\0part3t\ 5\0\0\0mesh6t\ 4\0\0\0grpst\ 3\0\0\0vect\a\0\0\0mesh2_2t\a\0\0\0mesh3_2t\a\0\0\0mesh4_2t\a\0\0\0mesh1_2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\10\0\0\0testMultiMeshRW1Ì\0\0\0sb\0\0\0\0\ 1\ 6\ 1\f\ 1\15\ 1\12\ 1\r\ 1\12\ 1\12\ 1\r\ 1\f\ 1\r\ 1\r\ 1\r\ 1\12\ 1\1a\ 1
++\ 1\13\ 1\12\ 1\ 6\ 1\13\ 2\ f\ 1\r\ 1<\ 1\12\ 1\r\ 1\19\ 1\ f\ 1\16\ 1\r\ 1\r\ 1\r\ 1\r\ 2     \ 1\15\ 1\19\ 1   \ 1\15\ 1\19\ 1   \ 1\15\ 1\19\ 1   \ 1\15\ 1\r\ 1\19\ 2\f\ 1\15\ 1\r\ 1\19\ 1c\ 1\0\0\0\ 5\0\0\0\ 6\0\0\0C\0\0\0s\89\0\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 6\0}\ 3\0|\ 2\0j\ 2\0|\ 3\0t\ 3\0\83\ 2\0\ 1|\ 2\0j\ 4\0\83\0\0\ 1t\ 5\0|\ 1\0|\ 2\0t\ 3\0\83\ 3\0\ 1t\ 6\0|\ 1\0|\ 2\0j\a\0\83\0\0d\ 5\0\83\ 3\0}\ 4\0|\0\0j\b\0|\ 2\0j     \0|\ 4\0d\b\0\83\ 2\0\83\ 1\0\ 1d\0\0S(     \0\0\0Ns\f\0\0\0Pyfile15.medi\ 2\0\0\0i\ 5\0\0\0i\ 1\0\0\0i\0\0\0\0i\ 3\0\0\0i\ 4\0\0\0g\11ê-\81\99\97q=(
++\0\0\0R\ 4\0\0\0R\16\0\0\0t\r\0\0\0renumberCellsR      \0\0\0R\a\0\0\0R\b\0\0\0R
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0(\ 5\0\0\0R\ e\0\0\0R(\0\0\0R\ f\0\0\0t       \0\0\0renumber1R\10\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\17\0\0\0testMesh3DSurfShuffleRW\ 2\ 1\0\0s\12\0\0\0\0\ 1\ 6\ 1\f\ 1\18\ 1\10\ 1
++\ 1\10\ 1\18\ 1\19\ 1c\ 1\0\0\0\f\0\0\0\14\0\0\0C\0\0\0sD\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\0\0j\ 2\0d\ 2\0|\ 2\0j\ 3\0\83\0\0\83\ 2\0\ 1|\0\0j\ 2\0d\ 3\0|\ 2\0j\ 4\0\83\0\0\83\ 2\0\ 1d\ 4\0d\ 5\0d\ 6\0g\ 3\0}\ 3\0|\ 2\0j\ 5\0|\ 3\0\83\ 1\0\ 1d\ 4\0d\a\0d\b\0d     \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\ 5\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\ 6\0d\17\0g\14\0}\ 4\0|\ 2\0j\ 6\0|\ 4\0t\a\0\83\ 2\0\ 1|\ 2\0j\b\0\83\0\0\ 1t       \0|\ 1\0|\ 2\0t\a\0\83\ 3\0\ 1|\ 2\0j
++\0t\a\0\83\ 1\0}\ 5\0|\ 5\0j\v\0t\f\0t\a\0\83\ 2\0}\ 6\0|\ 6\0j\r\0d\18\0d\ 4\0d\b\0\83\ 3\0\ 1|\ 6\0j\ e\0t\ f\0\83\ 1\0}\a\0t\10\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\11\0d\19\0\83\ 1\0\ 1|\ 6\0j\r\0d\1a\0d\a\0d\ 5\0\83\ 3\0\ 1|\ 6\0j\ e\0t\ f\0\83\ 1\0}\b\0t\10\0|\ 1\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\11\0d\e\0\83\ 1\0\ 1|\ 6\0j\r\0d\1c\0d\11\0d\ 6\0\83\ 3\0\ 1|\ 6\0j\ e\0t\ f\0\83\ 1\0}  \0t\10\0|\ 1\0|\ 6\0\83\ 2\0\ 1d\1e\0d\1f\0\0g\ 3\0}
++\0t\12\0t\13\0|\ 1\0|\a\0j\14\0\83\0\0j\15\0\83\0\0d\ f\0|\a\0j\15\0\83\0\0|
++\0\83\ 6\0}\v\0|\0\0j\ 2\0d\a\0t\16\0|\v\0\83\ 1\0\83\ 2\0\ 1|\0\0j\17\0|\v\0d\ f\0\19j\18\0|\a\0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1|\0\0j\17\0|\v\0d\ 4\0\19j\18\0|\b\0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1|\0\0j\17\0|\v\0d\b\0\19j\18\0|        \0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1d\0\0S(!\0\0\0Ns\f\0\0\0Pyfile17.medi\14\0\0\0i-\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 6\0\0\0i\ 3\0\0\0i\ 2\0\0\0i\b\0\0\0i      \0\0\0i\f\0\0\0i\r\0\0\0i\10\0\0\0i\13\0\0\0i\0\0\0\0i\a\0\0\0i\ 5\0\0\0i\ f\0\0\0i\ e\0\0\0i\11\0\0\0i
++\0\0\0i\12\0\0\0i\v\0\0\0g\0\0\0\0\0\0\0\0s\ 3\0\0\02*xg{\14®Gáz\84?s\ 5\0\0\02*x/3g{\14®Gáz\94?g\11ê-\81\99\97q=(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0(\19\0\0\0R\ 4\0\0\0t\r\0\0\0build3DMesh_2R3\0\0\0t\10\0\0\0getNumberOfCellst\10\0\0\0getNumberOfNodest\12\0\0\0convertToPolyTypesRb\0\0\0R      \0\0\0t\1a\0\0\0orientCorrectlyPolyhedronsR\b\0\0\0t\ f\0\0\0getMeasureFieldt\18\0\0\0buildNewTimeReprFromThist\b\0\0\0ONE_TIMER#\0\0\0t\r\0\0\0cloneWithMeshRC\0\0\0R&\0\0\0\0\0\0applyFunct\14\0\0\0ReadFieldsOnSameMesht\b\0\0\0ON_CELLSR\1d\0\0\0R\v\0\0\0R4\0\0\0R\f\0\0\0R\r\0\0\0(\f\0\0\0R\ e\0\0\0R(\0\0\0t\ 1\0\0\0mt\ 5\0\0\0polyst\ 5\0\0\0renumt\ 5\0\0\0f1TmpR \0\0\0t\ 3\0\0\0f_1t\ 3\0\0\0f_2t\ 3\0\0\0f_3t\ 3\0\0\0itst\ 2\0\0\0fs(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\18\0\0\0testMultiFieldShuffleRW1\r\ 1\0\0s<\0\0\0\0\ 1\ 6\ 1\f\ 1\16\ 1\16\ 1\ f\ 1\r\ 1B\ 1\10\ 1
++\ 2\10\ 1\ f\ 1\12\ 1\13\ 1\ f\ 1\r\ 1\r\ 1\13\ 1\ f\ 1\r\ 1\r\ 1\13\ 1\ f\ 1\r\ 2\ f\ 1-\ 1\16\ 1 \ 1 \ 1 \ 1c\ 1\0\0\0\10\0\0\0
++\0\0\0C\0\0\0sh\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0d\ 2\0d\ 2\0d\ 3\0g\ 3\0}\ 3\0d\ 2\0d\ 2\0d\ 4\0g\ 3\0}\ 4\0|\ 2\0j\ 2\0|\ 3\0|\ 4\0d\ 5\0\83\ 3\0}\ 5\0|\ 2\0j\ 3\0|\ 5\0t\ 4\0\83\ 2\0}\ 6\0d\ 6\0d\a\0d\b\0\0d
++\0g\ 5\0}\a\0|\ 6\0j\ 5\0|\a\0t\ 6\0\83\ 2\0\ 1|\ 6\0j\a\0d\v\0\83\ 1\0\ 1|\ 6\0|\ 2\0g\ 2\0}\b\0t\b\0|\ 1\0|\b\0t\ 6\0\83\ 3\0\ 1t     \0|\ 1\0|\ 6\0j
++\0\83\0\0d\b\0\83\ 3\0}   \0|\0\0j\v\0|        \0j\f\0|\ 2\0d\ 5\0\83\ 2\0\f\83\ 1\0\ 1|     \0j\a\0|\ 2\0j
++\0\83\0\0\83\ 1\0\ 1|\0\0j\v\0|       \0j\f\0|\ 2\0d\ 5\0\83\ 2\0\83\ 1\0\ 1t      \0|\ 1\0|\ 6\0j
++\0\83\0\0d\f\0\83\ 3\0}
++\0|\0\0j\v\0|
++\0j\f\0|\ 6\0d\ 5\0\83\ 2\0\83\ 1\0\ 1t\r\0j\ e\0t\ f\0t\10\0\83\ 2\0}\v\0|\v\0j\a\0d\r\0\83\ 1\0\ 1|\v\0j\11\0|\ 6\0\83\ 1\0\ 1t\12\0j\ e\0\83\0\0}\f\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0g
++\0}\r\0|\f\0j\13\0|\r\0|\ 6\0j\14\0\83\0\0d\a\0\83\ 3\0\ 1|\f\0j\15\0d\b\0d\18\0\83\ 2\0\ 1|\f\0j\15\0d\ 6\0d\19\0\83\ 2\0\ 1|\v\0j\16\0|\f\0\83\ 1\0\ 1|\f\0j\13\0|\r\0|\ 6\0j\14\0\83\0\0d\a\0\83\ 3\0}\ e\0|\v\0j\17\0d\1a\0d\a\0d\e\0\83\ 3\0\ 1|\v\0j\18\0\83\0\0\ 1t\19\0|\ 1\0|\v\0\83\ 2\0\ 1t\1a\0|\ 1\0|\v\0j\e\0\83\0\0j
++\0\83\0\0d\f\0|\v\0j
++\0\83\0\0d\a\0d\e\0\83\ 6\0}\ f\0|\0\0j\v\0|\ f\0j\f\0|\v\0d\ 5\0d\ 5\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\1c\0\0\0Ns\f\0\0\0Pyfile18.medg\0\0\0\0\0\0\0\0g333333Ó¿g\0\0\0\0\0\0ð?g\11ê-\81\99\97q=i\ 1\0\0\0i\ 2\0\0\0i\0\0\0\0i\ 4\0\0\0i\ 3\0\0\0t\12\0\0\0ExampleOfMultiDimWiÿÿÿÿt\13\0\0\0FieldOnFacesShuffleg\0\0\0\0\0ÀQ@g\0\0\0\0\0`e@g\0\0\0\0\0\0$@g\0\0\0\0\0\80[@g\0\0\0\0\0\04@g\0\0\0\0\0\0^@g\0\0\0\0\0\0>@g\0\0\0\0\0@`@g\0\0\0\0\0\0D@g\0\0\0\0\0\80a@s   \0\0\0plkj [mm]s\v\0\0\0pqqqss [mm]g\1f\85ëQ¸\1e     @i\a\0\0\0(\1c\0\0\0R\ 4\0\0\0Re\0\0\0t\10\0\0\0findNodesOnPlanet\19\0\0\0buildFacePartOfMySelfNodeRC\0\0\0Rb\0\0\0R     \0\0\0R1\0\0\0t\f\0\0\0WriteUMeshesR
++\0\0\0R\v\0\0\0R\f\0\0\0R\r\0\0\0t\16\0\0\0MEDCouplingFieldDoubleRE\0\0\0Rp\0\0\0Rl\0\0\0t\a\0\0\0setMesht\ f\0\0\0DataArrayDoublet \0\0\0setValuesRf\0\0\0t\12\0\0\0setInfoOnComponentt\b\0\0\0setArrayR#\0\0\0R\a\0\0\0R&\0\0\0R\1c\0\0\0R\1d\0\0\0(\10\0\0\0R\ e\0\0\0R(\0\0\0t\ 3\0\0\0m3dt\ 2\0\0\0ptR\\0\0\0t\ 5\0\0\0nodest\ 3\0\0\0m2dt\b\0\0\0renumberRV\0\0\0t\a\0\0\0m3d_bist\a\0\0\0m2d_bisR \0\0\0t\ 5\0\0\0arrayt\ 4\0\0\0arr1R-\0\0\0R!\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\13\0\0\0testWriteUMeshesRW1/\ 1\0\0sB\0\0\0\0\ 1\ 6\ 1\f\ 1\ f\ 1\ f\ 1\15\ 1\12\ 1\15\ 1\10\ 1\r\ 1\f\ 1\10\ 1\18\ 1\1a\ 1\13\ 1\19\ 1\18\ 1\19\ 2\12\ 1\r\ 1\r\ 1\f\ 1$\ 1\19\ 1\10\ 1\10\ 1\r\ 1\e\ 1\13\ 1
++\ 1\r\ 1-\ 1\1c\ 1(\ e\0\0\0t\b\0\0\0__name__t
++\0\0\0__module__R\11\0\0\0R\13\0\0\0R\15\0\0\0R\17\0\0\0R\19\0\0\0R"\0\0\0R.\0\0\0R<\0\0\0Ra\0\0\0Rd\0\0\0Rz\0\0\0R\8f\0\0\0(\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyR\ 5\0\0\0\e\0\0\0s\1a\0\0\0\ 6\ 1      \b       \b       \b       \b       \b       \f       3       I       6       \v       "       #t\b\0\0\0__main__(\v\0\0\0t    \0\0\0MEDLoadert\b\0\0\0unittestt\ 4\0\0\0mathR\ 1\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0t\b\0\0\0TestCaseR\ 5\0\0\0R\90\0\0\0t\ 4\0\0\0main(\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest2.pyt\b\0\0\0<module>\16\0\0\0s\ e\0\0\0
++\ 1\f\ 1\1c\ 1\10\ 2\19ÿ\0:\f\ 1
+\ Pas de fin de ligne à la fin du fichier
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTest3.py MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTest3.py
+--- MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTest3.py       2018-04-19 17:04:36.767223321 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTest3.py       2018-04-19 17:25:17.795798503 +0200
+@@ -32,6 +32,36 @@
+ else:
+     import pickle
++class StdOutRedirect(object):
++    def __init__(self,fileName):
++        import os,sys
++        sys.stderr.flush()
++        self.stdoutOld=os.dup(2)
++        self.fdOfSinkFile=os.open(fileName,os.O_CREAT | os.O_RDWR)
++        fd2=os.dup2(self.fdOfSinkFile,2)
++        self.origPyVal=sys.stderr
++        class FlushFile(object):
++            def __init__(self,f):
++                self.f=f
++            def write(self,st):
++                self.f.write(st)
++                self.f.flush()
++            def flush(self):
++                return self.f.flush()
++            def isatty(self):
++                return self.f.isatty()
++            def close(self):
++                os.fsync(self.f)
++                self.f.close();
++        sys.stderr=FlushFile(os.fdopen(self.fdOfSinkFile,"w"))
++    def __del__(self):
++        import os,sys
++        sys.stderr.close()
++        sys.stderr=self.origPyVal
++        os.fsync(2)
++        os.dup2(self.stdoutOld,2)
++        os.close(self.stdoutOld)
++
+ class MEDLoaderTest3(unittest.TestCase):
+     def testMEDMesh1(self):
+         fileName="Pyfile18.med"
+@@ -546,6 +576,10 @@
+         ff1.setTime(3,4,2.3)
+         itt,orr,ti=ff1.getTime()
+         self.assertEqual(3,itt); self.assertEqual(4,orr); self.assertAlmostEqual(2.3,ti,14);
++        f1.setTime(5.5,7,8)
++        ff1.copyTimeInfoFrom(f1)
++        itt,orr,ti=ff1.getTime()
++        self.assertEqual(7,itt); self.assertEqual(8,orr); self.assertAlmostEqual(5.5,ti,14);
+         da,infos=ff1.getUndergroundDataArrayExt()
+         f2.getArray().setName(da.getName())#da has the same name than f2
+         self.assertTrue(da.isEqual(f2.getArray(),1e-12))
+@@ -878,7 +912,7 @@
+         pass
+     # Tricky test of the case of in a MED file containing a Field on GAUSS_NE is lying on a profile that is reality represents all the geom entities of a level.
+     # By default when using setFieldProfile method such profile is not created because it is not useful ! So here a trick is used to force MEDLoader to do that
+-    # for the necessity of the test ! The idea is too create artificially a mesh having one more fictious cell per type and to roll back right after !
++    # for the necessity of the test ! The idea is too create artificially a mesh having one more fictitious cell per type and to roll back right after !
+     def testMEDField15(self):
+         fname="Pyfile36.med"
+         m0=MEDLoaderDataForTest.build2DMesh_1()
+@@ -1381,7 +1415,7 @@
+         mm.write(fname,2)   
+     def testBuildInnerBoundaryAlongM1Group4(self):
+-        """ Test case where cells touch the M1 group on some nodes only and not on full egdes (triangle mesh for ex)
++        """ Test case where cells touch the M1 group on some nodes only and not on full edges (triangle mesh for ex)
+         """
+         coo = DataArrayDouble([0.,0., 1.,0., 2.,0., 3.,0.,
+                                0.,1., 1.,1., 2.,1., 3.,1.,
+@@ -2027,8 +2061,16 @@
+         mm.setFamiliesOnGroup("grp0",["MyOtherFam"])
+         mm.setFamiliesOnGroup("grpA",["MyOther-1"])
+         #
++        self.assertTrue(mm.getNodeFamiliesArr(["MyFam","MyOtherFam"]).isEqual(DataArrayInt([1,3,4,12]))) # find family id 2 and 3 into famCoo
++        #
+         daTest=DataArrayInt([1,3,4,6,9,10,12]) ; daTest.setName("grp1")
+         mm.addNodeGroup(daTest)
++        self.assertTrue(mm.getNodeGroupArr(daTest.getName()).isEqual(daTest)) # the node group has been pushed right before -> now read it
++        self.assertTrue(mm.getNodeGroupsArr(["grp1","grpA"]).isEqual(DataArrayInt([1,3,4,6,9,10,11,12])))#daTest+[11] because 11 is the rank of -1 (MyOther-1) in famCoo
++        #
++        expect1=DataArrayInt([1,4]) ; expect1.setName("MyFam")
++        self.assertTrue(mm.getNodeFamilyArr(expect1.getName()).isEqual(expect1))
++        #
+         self.assertTrue(mm.getGroupArr(1,daTest.getName()).isEqual(daTest))
+         self.assertTrue(mm.getFamilyFieldAtLevel(1).isEqual(DataArrayInt([6,2,6,8,2,6,5,6,6,7,7,4,8])))
+         for lev,arr in [(0,da0),(-1,da1),(-2,da2)]:
+@@ -2596,31 +2638,34 @@
+         ff1.setFieldNoProfileSBT(f1)
+         a=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
+         self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
+-        self.assertTrue(a.isEqual(f1,1e-12,1e-12))
++        self.assertTrue(a.isEqual(f1,1e-12,0))
+         ff1.write(fname,0)
++        a,b=ff1.getUndergroundDataArrayExt()
++        self.assertEqual(a.getHiddenCppPointer(),ff1.getUndergroundDataArray().getHiddenCppPointer())
++        self.assertEqual(b,[((3,0),(0,2)),((4,0),(2,4)),((6,0),(4,5)),((5,0),(5,6))])
+         ff2=MEDFileAnyTypeField1TS.New(fname)
+         self.assertEqual(ff2.getName(),"VectorFieldOnCells")
+         self.assertEqual(ff2.getTime(),[0,1,2.0])
+         self.assertTrue(isinstance(ff2,MEDFileIntField1TS))
+         a=ff1.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
+         self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
+-        self.assertTrue(a.isEqual(f1,1e-12,1e-12))
++        self.assertTrue(a.isEqual(f1,1e-12,0))
+         ff2.setTime(1,2,3.)
+         c=ff2.getUndergroundDataArray() ; c*=2
+-        ff2.write(fname,0) # 2 time steps in 
++        ff2.write(fname,0) # 2 time steps in
+         ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
+         self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
+         self.assertEqual(len(ffs1),2)
+         self.assertTrue(isinstance(ffs1,MEDFileIntFieldMultiTS))
+         a=ffs1[2.].getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
+-        self.assertTrue(a.isEqual(f1,1e-12,1e-12))
++        self.assertTrue(a.isEqual(f1,1e-12,0))
+         a=ffs1.getFieldOnMeshAtLevel(ON_CELLS,0,1,0,mm1)
+-        self.assertTrue(a.isEqual(f1,1e-12,1e-12))
++        self.assertTrue(a.isEqual(f1,1e-12,0))
+         it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
+         a=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
+         self.assertTrue(a.getArray().isEqual(2*f1.getArray()))
+         f1.setTime(3.,1,2) ; f1.getArray()[:]*=2
+-        self.assertTrue(a.isEqual(f1,1e-12,1e-12)) ; f1.getArray()[:]/=2
++        self.assertTrue(a.isEqual(f1,1e-12,0)) ; f1.getArray()[:]/=2
+         bc=DataArrayInt(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
+         for it in ffs1:
+             a=it.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
+@@ -3708,7 +3753,7 @@
+         pass
+     def testMEDFileUMeshSetName(self):
+-        """ This test is a small but important one for MEDReader in sauv mode. When .sauv file is loaded the convertion is performed in memory and a preparation is done then.
++        """ This test is a small but important one for MEDReader in sauv mode. When .sauv file is loaded the conversion is performed in memory and a preparation is done then.
+         This preparation makes access to internal MEDCouplingMesh pointers whose name must be updated.
+         """
+         fname="Pyfile79.med"
+@@ -4523,8 +4568,7 @@
+             grpExp=grp+delta ; grpExp.setName("%s_node"%grp.getName())
+             self.assertTrue(mm.getGroupArr(1,"%s_node"%grp.getName()).isEqual(grpExp))
+         pass
+-
+-    pass
++    
+     def testMEDFileJoint1(self):
+         fileName="Pyfile92.med"
+         coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
+@@ -4562,8 +4606,8 @@
+         self.assertRaises( InterpKernelException, jointsR.getJointAtPos,1)
+         self.assertRaises( InterpKernelException, jointsR.destroyJointAtPos,1)
+         jointsR.destroyJointAtPos(0)
+-        
+-    pass
++        pass
++    
+     def testMEDFileJoint2(self):
+         fileNameWr="Pyfile93.med"
+         coo=DataArrayDouble([(0,0,0),(1,0,0),(2,0,0)])
+@@ -4656,35 +4700,7 @@
+         """ EDF11242 : check status of MED file calls to detect problems immediately. Sorry this test generates awful messages !"""
+         fname="Pyfile94.med"
+         errfname="Pyfile94.err"
+-        class StdOutRedirect(object):
+-            def __init__(self,fileName):
+-                import os,sys
+-                sys.stderr.flush()
+-                self.stdoutOld=os.dup(2)
+-                self.fdOfSinkFile=os.open(fileName,os.O_CREAT | os.O_RDWR)
+-                fd2=os.dup2(self.fdOfSinkFile,2)
+-                self.origPyVal=sys.stderr
+-                class FlushFile(object):
+-                    def __init__(self,f):
+-                        self.f=f
+-                    def write(self,st):
+-                        self.f.write(st)
+-                        self.f.flush()
+-                    def flush(self):
+-                        return self.f.flush()
+-                    def isatty(self):
+-                        return self.f.isatty()
+-                sys.stderr=FlushFile(os.fdopen(self.fdOfSinkFile,"w"))
+-            def __del__(self):
+-                import os,sys
+-                sys.stderr=self.origPyVal
+-                if sys.version_info.major >= 3:
+-                    self.fdOfSinkFile.close()
+-                    pass
+-                #os.fsync(self.fdOfSinkFile)
+-                os.fsync(2)
+-                os.dup2(self.stdoutOld,2)
+-                os.close(self.stdoutOld)
++        
+         import os
+         # first clean file if needed
+         if os.path.exists(fname):
+@@ -4855,7 +4871,7 @@
+       self.assertEqual(mm.getFamiliesIdsOnGroup("RID"),(-4,3))
+       mm.write(fileName,2)
+       # now read such funny file !
+-      mm2=MEDFileMesh.New(fileName) # <- normaly mdump of Pyfile98.med must contain only RID and FAMILLE_ZERO families.
++      mm2=MEDFileMesh.New(fileName) # <- normally mdump of Pyfile98.med must contain only RID and FAMILLE_ZERO families.
+       self.assertTrue(mm.isEqual(mm2,1e-16))
+       self.assertEqual(mm2.getFamiliesNames(),("FAMILLE_ZERO",'RIDF!/__\\!0000','RIDF!/__\\!0001'))
+       self.assertEqual(mm2.getFamiliesNamesWithFilePointOfView(),("FAMILLE_ZERO","RIDF","RIDF"))
+@@ -5230,12 +5246,12 @@
+         mm=MEDFileMesh.New(fname)
+         f1ts=MEDFileIntField1TS(fname,fieldName,6,7)
+         ftst0=f1ts.field(mm)
+-        self.assertTrue(f0.isEqual(ftst0,1e-12,1e-12))
++        self.assertTrue(f0.isEqual(ftst0,1e-12,0))
+         f1ts=MEDFileIntField1TS(fname,fieldName,8,9)
+         ftst1=f1ts.field(mm)
+-        self.assertTrue(f1.isEqual(ftst1,1e-12,1e-12))
++        self.assertTrue(f1.isEqual(ftst1,1e-12,0))
+         fmts=MEDFileIntFieldMultiTS(fname,fieldName)
+-        self.assertTrue(f1.isEqual(fmts.field(8,9,mm),1e-12,1e-12))
++        self.assertTrue(f1.isEqual(fmts.field(8,9,mm),1e-12,0))
+         ## Basic test on nodes on top level
+         f2=MEDCouplingFieldInt(ON_NODES) ; arr2=DataArrayInt([200,201,202]) ; arr2.setInfoOnComponent(0,"tutu") ; f2.setArray(arr2) ; f2.setMesh(m) ; f2.setTime(22.,23,24)
+         f2.setName(fieldName)
+@@ -5244,9 +5260,9 @@
+         #
+         mm=MEDFileMesh.New(fname)
+         f1ts=MEDFileIntField1TS(fname,fieldName,23,24)
+-        self.assertTrue(f2.isEqual(f1ts.field(mm),1e-12,1e-12))
++        self.assertTrue(f2.isEqual(f1ts.field(mm),1e-12,0))
+         fmts=MEDFileIntFieldMultiTS(fname,fieldName)
+-        self.assertTrue(f2.isEqual(fmts.field(23,24,mm),1e-12,1e-12))
++        self.assertTrue(f2.isEqual(fmts.field(23,24,mm),1e-12,0))
+         ## Node on elements
+         f3=MEDCouplingFieldInt(ON_GAUSS_NE) ; f3.setMesh(m) ; arr3=DataArrayInt([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]) ; f3.setArray(arr3) ; f3.setTime(0.5,2,3)
+         f3.setName(fieldName) ; f3.checkConsistencyLight()
+@@ -5254,7 +5270,7 @@
+         #
+         mm=MEDFileMesh.New(fname)
+         f1ts=MEDFileIntField1TS(fname,fieldName,2,3)
+-        self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
++        self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,0))
+         ## Gauss
+         f4=MEDCouplingFieldInt(ON_GAUSS_PT) ; f4.setMesh(m) ; f4.setName(fieldName)
+         f4.setGaussLocalizationOnType(NORM_TRI3,[0.,0.,1.,0.,1.,1.],[0.1,0.1, 0.2,0.2, 0.3,0.3, 0.4,0.4, 0.5,0.5],[0.2,0.3,0.1,0.05,0.35])
+@@ -5265,7 +5281,7 @@
+         #
+         mm=MEDFileMesh.New(fname)
+         f1ts=MEDFileIntField1TS(fname,fieldName,4,5)
+-        self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
++        self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,0))
+         pass
+     def testMEDFileFieldEasyField3(self):
+@@ -5353,7 +5369,7 @@
+         f1ts=MEDFileIntField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
+         #
+         mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,1,2)
+-        self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
++        self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,0))
+         # here f1 lying on level -1 not 0 check if "field" method detect it !
+         f1=MEDCouplingFieldInt(ON_CELLS) ; f1.setName(fieldName) ; f1.setArray(DataArrayInt([(0,100),(1,101),(0,100),(1,101),(0,100),(1,101)]))
+         f1.setMesh(mm[-1]) # -1 is very important
+@@ -5363,7 +5379,7 @@
+         f1ts=MEDFileIntField1TS() ; f1ts.setFieldNoProfileSBT(f1) ; f1ts.write(fname,0)
+         #
+         mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,3,4)
+-        self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,1e-12))
++        self.assertTrue(f1.isEqual(f1ts.field(mm),1e-12,0))
+         # nodes on elements
+         f3=MEDCouplingFieldInt(ON_GAUSS_NE)
+         f3.setMesh(mm[-1]) # this line is important
+@@ -5372,7 +5388,7 @@
+         mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f3) ; ff.write(fname,0)
+         #
+         mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,2,3)
+-        self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,1e-12))
++        self.assertTrue(f3.isEqual(f1ts.field(mm),1e-12,0))
+         # gauss
+         f4=MEDCouplingFieldInt(ON_GAUSS_PT)
+         f4.setMesh(mm[-1]) # this line is important
+@@ -5383,7 +5399,7 @@
+         f4.checkConsistencyLight()
+         mm.write(fname,2) ; ff=MEDFileIntField1TS() ; ff.setFieldNoProfileSBT(f4) ; ff.write(fname,0)
+         mm=MEDFileMesh.New(fname) ; f1ts=MEDFileIntField1TS(fname,fieldName,4,5)
+-        self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,1e-12))
++        self.assertTrue(f4.isEqual(f1ts.field(mm),1e-12,0))
+         pass
+     def testMEDFileFieldEasyField5(self):
+@@ -5767,6 +5783,8 @@
+         pass
+     
+     @unittest.skipUnless(LooseVersion(MEDFileVersionStr())>=LooseVersion('3.2.1'),"This test requires at least MEDFile version 3.2.1")
++    @unittest.skipUnless(LooseVersion(MEDFileVersionStr())<LooseVersion('4.0.0'),
++                         "This test is not compatible with MEDFile version 4.0.0 and above")
+     def testWriteInto30(self):
+         fname="Pyfile108.med"
+         fname2="Pyfile109.med"
+@@ -5900,12 +5918,12 @@
+         fmts5=pickle.loads(st)
+         self.assertEqual(len(fs4[0]),len(fmts5))
+         self.assertTrue(isinstance(fmts5,MEDFileIntFieldMultiTS))
+-        self.assertTrue(fmts5[0].field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,1e-12))
++        self.assertTrue(fmts5[0].field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,0))
+         # MEDFileIntField1TS
+         st=pickle.dumps(fs4[0][0],pickle.HIGHEST_PROTOCOL)
+         f1ts6=pickle.loads(st)
+         self.assertTrue(isinstance(f1ts6,MEDFileIntField1TS))
+-        self.assertTrue(f1ts6.field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,1e-12))
++        self.assertTrue(f1ts6.field(ms4[0]).isEqual((fs4[0][0]).field(ms4[0]),1e-12,0))
+         # MEDFileParameters
+         self.testParameters1()# generates Pyfile56.med
+         params=MEDFileParameters("Pyfile56.med")
+@@ -5989,6 +6007,447 @@
+         self.assertTrue(ff1.field(mm).isEqual(f3,1e-12,1e-12))
+         pass
+     
++    def testFloat32InMEDFileFieldStar1(self):
++        """Like testInt32InMEDFileFieldStar1 but with float32 :)"""
++        fname="Pyfile114.med"
++        f1=MEDLoaderDataForTest.buildVecFieldOnCells_1();
++        f1=f1.convertToFloatField()
++        m1=f1.getMesh()
++        mm1=MEDFileUMesh.New()
++        mm1.setCoords(m1.getCoords())
++        mm1.setMeshAtLevel(0,m1)
++        mm1.setName(m1.getName())
++        mm1.write(fname,2)
++        ff1=MEDFileFloatField1TS()
++        ff1.setFieldNoProfileSBT(f1)
++        a=ff1.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
++        self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
++        self.assertTrue(a.isEqual(f1,1e-12,1e-12))
++        ff1.write(fname,0)
++        a,b=ff1.getUndergroundDataArrayExt()
++        self.assertEqual(a.getHiddenCppPointer(),ff1.getUndergroundDataArray().getHiddenCppPointer())
++        self.assertEqual(b,[((3,0),(0,2)),((4,0),(2,4)),((6,0),(4,5)),((5,0),(5,6))])
++        ff2=MEDFileAnyTypeField1TS.New(fname)
++        self.assertEqual(ff2.getName(),"VectorFieldOnCells")
++        self.assertEqual(ff2.getTime(),[0,1,2.0])
++        self.assertTrue(isinstance(ff2,MEDFileFloatField1TS))
++        a=ff1.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
++        self.assertEqual(a.getArray().getInfoOnComponents(),['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
++        self.assertTrue(a.isEqual(f1,1e-12,1e-12))
++        ff2.setTime(1,2,3.)
++        c=ff2.getUndergroundDataArray() ; c*=2
++        ff2.write(fname,0) # 2 time steps in 
++        ffs1=MEDFileAnyTypeFieldMultiTS.New(fname,"VectorFieldOnCells")
++        self.assertEqual(ffs1.getTimeSteps(),[(0, 1, 2.0), (1, 2, 3.0)])
++        self.assertEqual(len(ffs1),2)
++        self.assertTrue(isinstance(ffs1,MEDFileFloatFieldMultiTS))
++        a=ffs1[2.].getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
++        self.assertTrue(a.isEqual(f1,1e-12,1e-12))
++        a=ffs1.getFieldOnMeshAtLevel(ON_CELLS,0,1,0,mm1)
++        self.assertTrue(a.isEqual(f1,1e-12,1e-12))
++        it=ffs1.__iter__() ; it.next() ; ff2bis=it.next()
++        a=ff2bis.getFieldOnMeshAtLevel(0,ON_CELLS,mm1)
++        self.assertTrue(a.getArray().isEqual(2*f1.getArray(),1e-7))
++        f1.setTime(3.,1,2) ; f1.getArray()[:]*=2
++        self.assertTrue(a.isEqual(f1,1e-12,1e-12)) ; f1.getArray()[:]/=2
++        bc=DataArrayFloat(6,3) ; bc[:]=0 ; bc.setInfoOnComponents(['power [MW/m^3]','density [g/cm^3]','temperature [K]'])
++        for it in ffs1:
++            a=it.getFieldOnMeshAtLevel(ON_CELLS,0,mm1)
++            bc+=a.getArray()
++            pass
++        self.assertTrue(bc.isEqual(3*f1.getArray(),1e-7))
++        nf1=MEDCouplingFieldFloat(ON_NODES)
++        nf1.setTime(9.,10,-1)
++        nf1.setMesh(f1.getMesh())
++        narr=DataArrayFloat(12,2) ; narr.setInfoOnComponents(["aa [u1]","bbbvv [ppp]"]) ; narr[:,0]=list(range(12)) ; narr[:,1]=2*narr[:,0]
++        nf1.setName("VectorFieldOnNodes") ; nf1.setArray(narr)
++        nff1=MEDFileFloatField1TS.New()
++        nff1.setFieldNoProfileSBT(nf1)
++        self.assertEqual(nff1.getInfo(),('aa [u1]','bbbvv [ppp]'))
++        self.assertEqual(nff1.getTime(),[10,-1,9.0])
++        nff1.write(fname,0)
++        #
++        nf2=MEDCouplingFieldFloat(ON_NODES)
++        nf2.setTime(19.,20,-11)
++        nf2.setMesh(f1.getMesh())
++        narr2=DataArrayFloat(8,2) ; narr.setInfoOnComponents(["aapfl [u1]","bbbvvpfl [ppp]"]) ; narr2[:,0]=list(range(8)) ; narr2[:,0]+=10  ; narr2[:,1]=3*narr2[:,0]
++        nf2.setName("VectorFieldOnNodesPfl") ; narr2.setName(nf2.getName()) ; nf2.setArray(narr2)
++        nff2=MEDFileFloatField1TS.New()
++        npfl=DataArrayInt([1,2,4,5,6,7,10,11]) ; npfl.setName("npfl")
++        nff2.setFieldProfile(nf2,mm1,0,npfl)
++        nff2.getFieldWithProfile(ON_NODES,0,mm1)
++        a,b=nff2.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
++        self.assertTrue(b.isEqual(npfl))
++        self.assertTrue(a.isEqual(narr2,1e-7))
++        nff2.write(fname,0)
++        nff2bis=MEDFileFloatField1TS(fname,"VectorFieldOnNodesPfl")
++        a,b=nff2bis.getFieldWithProfile(ON_NODES,0,mm1) ; b.setName(npfl.getName())
++        self.assertTrue(b.isEqual(npfl))
++        self.assertTrue(a.isEqual(narr2,1e-7))
++        #
++        nf3=MEDCouplingFieldDouble(ON_NODES)
++        nf3.setName("VectorFieldOnNodesDouble")
++        nf3.setTime(29.,30,-21)
++        nf3.setMesh(f1.getMesh())
++        nf3.setArray(f1.getMesh().getCoords())
++        nff3=MEDFileField1TS.New()
++        nff3.setFieldNoProfileSBT(nf3)
++        nff3.write(fname,0)
++        fs=MEDFileFields(fname)
++        self.assertEqual(len(fs),4)
++        ffs=[it for it in fs]
++        self.assertTrue(isinstance(ffs[0],MEDFileFloatFieldMultiTS))
++        self.assertTrue(isinstance(ffs[1],MEDFileFloatFieldMultiTS))
++        self.assertTrue(isinstance(ffs[2],MEDFileFieldMultiTS))
++        self.assertTrue(isinstance(ffs[3],MEDFileFloatFieldMultiTS))
++        #
++        self.assertTrue(fs["VectorFieldOnCells"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getArray(),1e-7))
++        self.assertTrue(fs["VectorFieldOnCells"][1,2].getUndergroundDataArray().isEqualWithoutConsideringStr(2*f1.getArray(),1e-7))
++        self.assertTrue(fs["VectorFieldOnNodesPfl"][0].getUndergroundDataArray().isEqualWithoutConsideringStr(narr2,1e-7))
++        self.assertTrue(fs["VectorFieldOnNodes"][9.].getUndergroundDataArray().isEqualWithoutConsideringStr(narr,1e-7))
++        self.assertTrue(fs["VectorFieldOnNodesDouble"][29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
++        #
++        nf3_read=MEDFileFieldMultiTS(fname,"VectorFieldOnNodesDouble")
++        self.assertTrue(nf3_read[29.].getUndergroundDataArray().isEqualWithoutConsideringStr(f1.getMesh().getCoords(),1e-12))
++        self.assertRaises(InterpKernelException,MEDFileFloatFieldMultiTS.New,fname,"VectorFieldOnNodesDouble")# exception because trying to read a double field with int instance
++        self.assertRaises(InterpKernelException,MEDFileFieldMultiTS.New,fname,"VectorFieldOnNodes")# exception because trying to read a int field with double instance
++        MEDFileField1TS.New(fname,"VectorFieldOnNodesDouble",30,-21)
++        self.assertRaises(InterpKernelException,MEDFileFloatField1TS.New,fname,"VectorFieldOnNodesDouble",30,-21)# exception because trying to read a double field with int instance
++        MEDFileFloatField1TS.New(fname,"VectorFieldOnNodes",10,-1)
++        self.assertRaises(InterpKernelException,MEDFileField1TS.New,fname,"VectorFieldOnNodes",10,-1)# exception because trying to read a double field with int instance
++        #
++        self.assertEqual(fs.getMeshesNames(),('3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1','3DSurfMesh_1'))
++        self.assertTrue(fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
++        self.assertEqual(fs.getMeshesNames(),('3DSurfMesh','3DSurfMesh','3DSurfMesh','3DSurfMesh'))
++        self.assertTrue(not fs.changeMeshNames([('3DSurfMesh_1','3DSurfMesh')]))
++        pass
++
++    def testPenta18_1(self):
++        """EDF8478 : Test of read/write of penta18"""
++        fname="Pyfile115.med"
++        arr=DataArrayDouble([
++            (0.,1.,1.),(0.,0.,1.),(1.,0.,1.),
++            (0.,1.,0.),(0.,0.,0.),(1.,0.,0.),
++            (0.,0.5,1.),(0.5,0.,1.),(0.5,0.5,1.),
++            (0.,0.5,0.),(0.5,0.,0.),(0.5,0.5,0.),
++            (0.,1.,0.5),(0.,0.,0.5),(1.,0.,0.5),
++            (0.,0.5,0.5),(0.5,0.,0.5),(0.5,0.5,0.5)])
++        m=MEDCouplingUMesh("mesh",3)
++        m.setCoords(arr)
++        m.allocateCells(1)
++        m.insertNextCell(NORM_PENTA18,list(range(18)))
++        m.checkConsistencyLight()
++        #
++        f=MEDCouplingFieldDouble(ON_NODES)
++        f.setMesh(m)
++        f.setName("FieldOnPenta18")
++        f.setArray(DataArrayDouble(list(range(18))))
++        f.checkConsistencyLight()
++        #
++        m2,d,di,rd,rdi=m.buildDescendingConnectivity()
++        #
++        f2=MEDCouplingFieldDouble(ON_NODES)
++        f2.setMesh(m)
++        f2.setName("FieldOnPenta18Sub")
++        f2.setArray(DataArrayDouble(list(range(18))))
++        f2.checkConsistencyLight()
++        WriteField(fname,f2,True)
++        f3=ReadField(fname)
++        self.assertTrue(f2.isEqual(f3,1e-12,1e-12))
++        self.assertEqual(f3.getMesh().getNumberOfCells(),1)
++        self.assertEqual(f3.getMesh().getTypeOfCell(0),NORM_PENTA18)
++        pass
++
++    @unittest.skipUnless('linux'==platform.system().lower(),"stderr redirection not ported on Windows ?")
++    @unittest.skipUnless(LooseVersion(MEDFileVersionStr())<LooseVersion('4.0.0'),
++                         "This test is not compatible with MEDFile version 4.0.0 and above")
++    def testMedFileCapabilityToCryOnNewFeatureWritingIntoOldFiles(self):
++        fname="Pyfile116.med"
++        errfname="Pyfile116.err"
++        c=DataArrayDouble([0,1,2,3])
++        m=MEDCouplingCMesh()
++        m.setCoords(c,c)
++        m=m.buildUnstructured()
++        m.setName("mesh")
++        mm=MEDFileUMesh()
++        mm[0]=m
++        f=MEDCouplingFieldInt(ON_CELLS)
++        f.setMesh(m) ; arr2=DataArrayInt(m.getNumberOfCells()) ; arr2.iota()
++        f.setArray(arr2)
++        f.setName("field")
++        f1ts=MEDFileIntField1TS()
++        f1ts.setFieldNoProfileSBT(f)
++        mm.write30(fname,2)
++        f1ts.write30(fname,0)
++        #
++        f=MEDCouplingFieldFloat(ON_CELLS)
++        f.setMesh(m) ; arr2=DataArrayFloat(m.getNumberOfCells()) ; arr2.iota()
++        f.setArray(arr2)
++        f.setName("field2")
++        f1ts=MEDFileFloatField1TS()
++        f1ts.setFieldNoProfileSBT(f)
++        #
++        import os,gc
++        tmp=StdOutRedirect(errfname)
++        self.assertRaises(InterpKernelException,f1ts.write30,fname,0)
++        del tmp
++        gc.collect(0)
++        if os.path.exists(errfname):
++            os.remove(errfname)
++        pass
++
++    def testFieldsLinearToQuadratic(self):
++        fname="Pyfile117.med"
++        arr=DataArrayDouble([0,1])
++        m=MEDCouplingCMesh();
++        m.setCoords(arr,arr,arr)
++        m=m.buildUnstructured()
++        m2=m.deepCopy()
++        m2.translate([2,0,0])
++        m3=MEDCouplingUMesh.MergeUMeshes([m,m2])
++        m3.setName("mesh")
++        mm=MEDFileUMesh()
++        mm[0]=m3
++        mmq=mm.linearToQuadratic(0)
++        mms=MEDFileMeshes() ; mms.pushMesh(mm)
++        mmsq=MEDFileMeshes() ; mmsq.pushMesh(mmq)
++        #
++        f=MEDCouplingFieldDouble(ON_NODES)
++        f.setName("field")
++        f.setMesh(m3)
++        f.setTime(3.,1,2)
++        arr=DataArrayDouble(m3.getNumberOfNodes())
++        arr.iota()
++        f.setArray(arr)
++        f1ts=MEDFileField1TS()
++        f1ts.setFieldNoProfileSBT(f)
++        fmts=MEDFileFieldMultiTS()
++        fmts.pushBackTimeStep(f1ts)
++        f1ts_2=f1ts.deepCopy()
++        f1ts_2.setTime(3,4,5.)
++        f1ts_2.getUndergroundDataArray()[:]*=2.
++        fmts.pushBackTimeStep(f1ts_2)
++        fs=MEDFileFields()
++        fs.pushField(fmts)
++        fs2=fs.linearToQuadratic(mms,mmsq)
++        self.myTester1(fs2,mmsq[0])
++        # A small Write/Read and test again
++        mms.write(fname,2) ; fs.write(fname,0)
++        mms=MEDFileMeshes(fname) ; fs=MEDFileFields(fname)
++        mmq=mms[0].linearToQuadratic(0) ; mmqs=MEDFileMeshes() ; mmqs.pushMesh(mmq)
++        fs2=fs.linearToQuadratic(mms,mmqs)
++        self.myTester1(fs2,mmqs[0])
++        pass
++    
++    def myTester1(self,fs2,mmq):
++        dataExp=DataArrayDouble([0.,0.,0.,1.,0.,0.,0.,1.,0.,1.,1.,0.,0.,0.,1.,1.,0.,1.,0.,1.,1.,1.,1.,1.,2.,0.,0.,3.,0.,0.,2.,1.,0.,3.,1.,0.,2.,0.,1.,3.,0.,1.,2.,1.,1.,3.,1.,1.,0.5, 0.,0.,0.,0.5, 0.,0.5, 1.,0.,1.,0.5, 0.,0.5, 0.,1.,0.,0.5, 1.,0.5, 1.,1.,1.,0.5, 1.,1.,0.,0.5, 0.,0.,0.5, 0.,1.,0.5, 1.,1.,0.5, 2.5, 0.,0.,2.,0.5, 0.,2.5, 1.,0.,3.,0.5, 0.,2.5, 0.,1.,2.,0.5, 1.,2.5, 1.,1.,3.,0.5, 1.,3.,0.,0.5, 2.,0.,0.5, 2.,1.,0.5, 3.,1.,0.5],40,3)
++        dataExp1=DataArrayInt([1,0,2,3,5,4,6,7,16,17,18,19,20,21,22,23,24,25,26,27,9,8,10,11,13,12,14,15,28,29,30,31,32,33,34,35,36,37,38,39])
++        dataExp2=DataArrayDouble([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0.5,1,2.5,2,4.5,5,6.5,6,3,2,4,5,8.5,9,10.5,10,12.5,13,14.5,14,11,10,12,13])
++        fToTest=fs2[0][0].field(mmq)
++        self.assertEqual(fToTest.getTime(),[3.,1,2])
++        mTest=MEDCoupling1SGTUMesh(fToTest.getMesh())
++        self.assertTrue(mTest.getNodalConnectivity().isEqual(dataExp1))
++        self.assertTrue(mTest.getCoords().isEqual(dataExp,1e-12))
++        self.assertTrue(fToTest.getArray().isEqual(dataExp2,1e-12))
++        # testing 2nd timestep
++        fToTest=fs2[0][1].field(mmq)
++        self.assertEqual(fToTest.getTime(),[5.,3,4])
++        mTest=MEDCoupling1SGTUMesh(fToTest.getMesh())
++        self.assertTrue(mTest.getNodalConnectivity().isEqual(dataExp1))
++        self.assertTrue(mTest.getCoords().isEqual(dataExp,1e-12))
++        self.assertTrue(fToTest.getArray().isEqual(2*dataExp2,1e-12))
++        pass
++
++    def testFieldsLinearToQuadratic2(self):
++        """Same than testFieldsLinearToQuadratic but with profile on NODES"""
++        fname="Pyfile118.med"
++        arr=DataArrayDouble([0,1])
++        m=MEDCouplingCMesh();
++        m.setCoords(arr,arr,arr)
++        m=m.buildUnstructured()
++        m2=m.deepCopy()
++        m2.translate([2,0,0])
++        m3=MEDCouplingUMesh.MergeUMeshes([m,m2])
++        m3.setName("mesh")
++        # add a point for fun
++        m3.setCoords(DataArrayDouble.Aggregate(m3.getCoords(),DataArrayDouble([1.5,1.5,1.5],1,3)))
++        #
++        mm=MEDFileUMesh()
++        mm[0]=m3
++        mmq=mm.linearToQuadratic(0)
++        mms=MEDFileMeshes() ; mms.pushMesh(mm)
++        mmsq=MEDFileMeshes() ; mmsq.pushMesh(mmq)
++        #
++        f=MEDCouplingFieldDouble(ON_NODES)
++        f.setName("field")
++        f.setMesh(m3)
++        f.setTime(3.,1,2)
++        arr=DataArrayDouble(8) ; arr.iota()
++        arr.iota()
++        f.setArray(arr)
++        f1ts=MEDFileField1TS()
++        pfl=DataArrayInt([8,9,10,11,12,13,14,15]) ; pfl.setName("pfl")
++        f1ts.setFieldProfile(f,mm,0,pfl) # f lying on 8 nodes of cell #1
++        f1ts_2=f1ts.deepCopy()
++        f1ts_2.setTime(3,4,5.)
++        f1ts_2.getUndergroundDataArray()[:]*=4.
++        fmts=MEDFileFieldMultiTS()
++        fmts.pushBackTimeStep(f1ts)
++        fmts.pushBackTimeStep(f1ts_2)
++        fs=MEDFileFields()
++        fs.pushField(fmts)
++        fs2=fs.linearToQuadratic(mms,mmsq)
++        mms.write(fname,2) ; fs.write(fname,0)
++        #
++        self.myTester2(fs2,mmq)
++        # Read/write
++        mms=MEDFileMeshes(fname) ; fs=MEDFileFields(fname)
++        mmq=mms[0].linearToQuadratic(0) ; mmqs=MEDFileMeshes() ; mmqs.pushMesh(mmq)
++        fs2=fs.linearToQuadratic(mms,mmqs)
++        self.myTester2(fs2,mmq)
++        ## More vicious add single node 16
++        mm=MEDFileUMesh()
++        mm[0]=m3
++        mmq=mm.linearToQuadratic(0)
++        mms=MEDFileMeshes() ; mms.pushMesh(mm)
++        mmsq=MEDFileMeshes() ; mmsq.pushMesh(mmq)
++        #
++        f=MEDCouplingFieldDouble(ON_NODES)
++        f.setName("field")
++        f.setMesh(m3)
++        f.setTime(3.,1,2)
++        arr=DataArrayDouble(9) ; arr.iota()
++        arr.iota()
++        f.setArray(arr)
++        f1ts=MEDFileField1TS()
++        pfl=DataArrayInt([8,9,10,11,12,13,14,15,16]) ; pfl.setName("pfl")
++        f1ts.setFieldProfile(f,mm,0,pfl) # f lying on 9 nodes of cell #1 + orphan node
++        fmts=MEDFileFieldMultiTS()
++        fmts.pushBackTimeStep(f1ts)
++        fs=MEDFileFields()
++        fs.pushField(fmts)
++        fs2=fs.linearToQuadratic(mms,mmsq)
++        #
++        pflExpected=DataArrayInt([8,9,10,11,12,13,14,15,16,29,30,31,32,33,34,35,36,37,38,39,40]) ; pflExpected.setName("pfl_NODE")
++        f1tsToTest=fs2[0][0]
++        exp1=DataArrayDouble([0,1,2,3,4,5,6,7,8,0.5,1,2.5,2,4.5,5,6.5,6,3,2,4,5])
++        assert(f1tsToTest.getProfile("pfl_NODE").isEqual(pflExpected))
++        assert(f1tsToTest.getUndergroundDataArray().isEqual(exp1,1e-12))
++        assert(f1tsToTest.getFieldSplitedByType()==[(40,[(1,(0,21),'pfl_NODE','')])])
++        pass
++
++    def myTester2(self,fs2,mmq):
++        pflExpected=DataArrayInt([8,9,10,11,12,13,14,15,29,30,31,32,33,34,35,36,37,38,39,40]) ; pflExpected.setName("pfl_NODE")
++        f1tsToTest=fs2[0][0]
++        exp1=DataArrayDouble([0,1,2,3,4,5,6,7,0.5,1,2.5,2,4.5,5,6.5,6,3,2,4,5])
++        self.assertTrue(f1tsToTest.getProfile("pfl_NODE").isEqual(pflExpected))
++        self.assertTrue(f1tsToTest.getUndergroundDataArray().isEqual(exp1,1e-12))
++        self.assertEqual(f1tsToTest.getFieldSplitedByType(),[(NORM_ERROR,[(1,(0,20),'pfl_NODE','')])])
++        fToTest=fs2[0][0].field(mmq)
++        self.assertEqual(fToTest.getTime(),[3.,1,2])
++        mTest=MEDCoupling1SGTUMesh(fToTest.getMesh())
++        self.assertTrue(mTest.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3,5,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19])))
++        self.assertTrue(mTest.getCoords().isEqual(DataArrayDouble([(2,0,0),(3,0,0),(2,1,0),(3,1,0),(2,0,1),(3,0,1),(2,1,1),(3,1,1),(2.5,0,0),(2,0.5,0),(2.5,1,0),(3,0.5,0),(2.5,0,1),(2,0.5,1),(2.5,1,1),(3,0.5,1),(3,0,0.5),(2,0,0.5),(2,1,0.5),(3,1,0.5)],20,3),1e-12))
++        self.assertTrue(fToTest.getArray().isEqual(exp1,1e-12))
++        # 2nd Time step
++        f1tsToTest=fs2[0][1]
++        self.assertTrue(f1tsToTest.getProfile("pfl_NODE").isEqual(pflExpected))
++        self.assertTrue(f1tsToTest.getUndergroundDataArray().isEqual(4*exp1,1e-12))
++        self.assertEqual(f1tsToTest.getFieldSplitedByType(),[(NORM_ERROR,[(1,(0,20),'pfl_NODE','')])])
++        fToTest=fs2[0][1].field(mmq)
++        self.assertEqual(fToTest.getTime(),[5.,3,4])
++        mTest=MEDCoupling1SGTUMesh(fToTest.getMesh())
++        self.assertTrue(mTest.getNodalConnectivity().isEqual(DataArrayInt([1,0,2,3,5,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19])))
++        self.assertTrue(mTest.getCoords().isEqual(DataArrayDouble([(2,0,0),(3,0,0),(2,1,0),(3,1,0),(2,0,1),(3,0,1),(2,1,1),(3,1,1),(2.5,0,0),(2,0.5,0),(2.5,1,0),(3,0.5,0),(2.5,0,1),(2,0.5,1),(2.5,1,1),(3,0.5,1),(3,0,0.5),(2,0,0.5),(2,1,0.5),(3,1,0.5)],20,3),1e-12))
++        self.assertTrue(fToTest.getArray().isEqual(4*exp1,1e-12))
++        
++        pass
++
++    def testSetFieldProfileFlatly1(self):
++        """ Sometimes for downstream code fan of profiles, profile are requested unconditionally. setFieldProfile try to reduce at most profile usage. So setFieldProfileFlatly has been added to always create
++        a profile."""
++        arr=DataArrayDouble(10) ; arr.iota()
++        m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
++        m=m.buildUnstructured()
++        m2=m.deepCopy()
++        m2.simplexize(0)
++        m=MEDCouplingUMesh.MergeUMeshes(m2,m)
++        m.setName("mesh")
++        mm=MEDFileUMesh()
++        mm[0]=m
++        f=MEDCouplingFieldDouble(ON_CELLS)
++        f.setMesh(m)
++        arr=DataArrayDouble(m.getNumberOfCells())
++        arr.iota()
++        f.setArray(arr)
++        f.setName("field")
++        pfl=DataArrayInt(m.getNumberOfCells()) ; pfl.iota() ; pfl.setName("pfl")
++        #
++        refSp=[(3,[(0,(0,162),'','')]),(4,[(0,(162,243),'','')])]
++        refSp1=[(3,[(0,(0,162),'pfl_NORM_TRI3','')]),(4,[(0,(162,243),'pfl_NORM_QUAD4','')])]
++        #
++        f1ts=MEDFileField1TS()
++        f1ts.setFieldProfile(f,mm,0,pfl)
++        self.assertEqual(f1ts.getPfls(),()) # here setFieldProfile has detected useless pfl -> no pfl
++        self.assertEqual(f1ts.getFieldSplitedByType(),refSp)
++        self.assertTrue(f1ts.field(mm).isEqual(f,1e-12,1e-12)) # the essential
++        #
++        f1ts=MEDFileField1TS()
++        f1ts.setFieldProfileFlatly(f,mm,0,pfl) # no optimization attempt. Create pfl unconditionally
++        self.assertEqual(f1ts.getPfls(),("%s_NORM_TRI3"%pfl.getName(),"%s_NORM_QUAD4"%pfl.getName()))
++        self.assertEqual(f1ts.getFieldSplitedByType(),refSp1)
++        self.assertTrue(f1ts.field(mm).isEqual(f,1e-12,1e-12)) # the essential
++        self.assertTrue(f1ts.getProfile("pfl_NORM_TRI3").isIota(162))
++        self.assertTrue(f1ts.getProfile("pfl_NORM_QUAD4").isIota(81))
++        pass
++
++    def testRmGroupAtSpeLevelAndMultiLevGrpCreation(self):
++        """ Here multi level groups are created"""
++        arr=DataArrayDouble(11) ; arr.iota()
++        m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
++        m=m.buildUnstructured()
++        m.setName("mesh")
++        m1=m.buildDescendingConnectivity()[0]
++        mm=MEDFileUMesh()
++        mm[0]=m ; mm[-1]=m1
++        ################
++        grpName="grp0"
++        grp0_0=DataArrayInt([0,1,2,6]) ; grp0_0.setName(grpName)
++        grp0_1=DataArrayInt([0,1,2,7]) ; grp0_1.setName(grpName)
++        grp1=DataArrayInt([1,2,3,5,6]) ; grp1.setName("grp1")
++        grp2=DataArrayInt([2,3,5,8]) ; grp2.setName("grp2")
++        ################ ajouter un groupe sur plusieurs niveau
++        mm.addGroup(0,grp1)
++        mm.addGroup(-1,grp2)
++        mm.addGroup(0,grp0_0)
++        mm.addGroup(-1,grp0_1)
++        self.assertEqual(mm.getGrpNonEmptyLevels(grpName),(0,-1))
++        self.assertTrue(mm.getGroupArr(0,grpName).isEqual(grp0_0))
++        self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1))
++        self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1))
++        self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2))
++        self.assertRaises(InterpKernelException,mm.addGroup,-1,grp0_1) # raise
++        self.assertTrue(mm.getGroupArr(0,grpName).isEqual(grp0_0))
++        self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1))
++        self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1))
++        self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2))
++        mm.removeGroupAtLevel(0,grpName)
++        self.assertEqual(mm.getGrpNonEmptyLevels(grpName),(-1,))
++        self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1))
++        self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1))
++        self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2))
++        mm.removeGroupAtLevel(-1,grpName)
++        self.assertEqual(mm.getGrpNonEmptyLevels(grpName),())
++        self.assertRaises(InterpKernelException,mm.removeGroupAtLevel,-2,grpName)
++        mm.addGroup(-1,grp0_1)
++        mm.addGroup(0,grp0_0)
++        self.assertEqual(mm.getGrpNonEmptyLevels(grpName),(0,-1))
++        self.assertTrue(mm.getGroupArr(0,grpName).isEqual(grp0_0))
++        self.assertTrue(mm.getGroupArr(-1,grpName).isEqual(grp0_1))
++        self.assertTrue(mm.getGroupArr(0,"grp1").isEqual(grp1))
++        self.assertTrue(mm.getGroupArr(-1,"grp2").isEqual(grp2))
++        pass
++    
+     pass
+ if __name__ == "__main__":
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTest3.pyc MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTest3.pyc
+--- MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTest3.pyc      1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTest3.pyc      2018-04-19 17:25:17.777798147 +0200
+@@ -0,0 +1,2042 @@
++\ 3ó\r
++\18;ÕZc\0\0\0\0\0\0\0\0\ 3\0\0\0@\0\0\0\0\0\0d\0\0d\ 1\0l\0\0Td\0\0d\ 2\0l\ 1\0Z\ 1\0d\0\0d\ 2\0l\ 2\0Z\ 2\0d\0\0d\ 3\0l\ 3\0m\ 4\0Z\ 4\0m\ 5\0Z\ 5\0m\ 6\0Z\ 6\0\ 1d\0\0d\ 4\0l\a\0m\a\0Z\a\0\ 1d\0\0d\ 5\0l\b\0m    \0Z      \0\ 1d\0\0d\ 2\0l
++\0Z
++\0e
++\0j\v\0j\f\0d\ 6\0k\0\0r\8b\0d\0\0d\ 2\0l\r\0Z\ e\0n\f\0d\0\0d\ 2\0l\ e\0Z\ e\0d\a\0e\ f\0f\ 1\0d\b\0\84\0\0\83\0\0YZ\10\0d    \0e\ 1\0j\11\0f\ 1\0d
++\0\84\0\0\83\0\0YZ\12\0e\13\0d\v\0k\ 2\0\0e\ 1\0j\14\0\83\0\0\ 1n\0\0d\ 2\0S(\f\0\0\0iÿÿÿÿ(\ 1\0\0\0t\ 1\0\0\0*N(\ 3\0\0\0t\ 2\0\0\0pit\ 1\0\0\0et\ 4\0\0\0sqrt(\ 1\0\0\0t\14\0\0\0MEDLoaderDataForTest(\ 1\0\0\0t\f\0\0\0LooseVersioni\ 3\0\0\0t\ e\0\0\0StdOutRedirectc\0\0\0\0\0\0\0\0\ 1\0\0\0B\0\0\0s\1a\0\0\0e\0\0Z\ 1\0d\0\0\84\0\0Z\ 2\0d\ 1\0\84\0\0Z\ 3\0RS(\ 2\0\0\0c\ 2\0\0\0\ 5\0\0\0\ 4\0\0\0\ 3\0\0\0\0\0\0d\ 1\0d\0\0l\0\0\89\0\0d\ 1\0d\0\0l\ 1\0}\ 2\0|\ 2\0j\ 2\0j\ 3\0\83\0\0\ 1\88\0\0j\ 4\0d\ 2\0\83\ 1\0|\0\0_\ 5\0\88\0\0j\ 6\0|\ 1\0\88\0\0j\a\0\88\0\0j\b\0B\83\ 2\0|\0\0_  \0\88\0\0j
++\0|\0\0\0d\ 2\0\83\ 2\0}\ 3\0|\ 2\0j\ 2\0|\0\0_\v\0d\ 3\0t\f\0f\ 1\0\87\0\0f\ 1\0d\ 4\0\86\0\0\83\0\0Y}\ 4\0|\ 4\0\88\0\0j\r\0|\0\0\0d\ 5\0\83\ 2\0\83\ 1\0|\ 2\0_\ 2\0d\0\0S(\ 6\0\0\0Niÿÿÿÿi\ 2\0\0\0t   \0\0\0FlushFilec\0\0\0\0\0\0\0\0\ 2\0\0\0\ 2\0\0\0s;\0\0\0e\0\0Z\ 1\0d\0\0\84\0\0Z\ 2\0d\ 1\0\84\0\0Z\ 3\0d\ 2\0\84\0\0Z\ 4\0d\ 3\0\84\0\0Z\ 5\0\87\0\0f\ 1\0d\ 4\0\86\0\0Z\ 6\0RS(\ 5\0\0\0c\ 2\0\0\0\ 2\0\0\0\ 2\0\0\0S\0\0\0s\r\0\0\0|\ 1\0|\0\0_\0\0d\0\0S(\ 1\0\0\0N(\ 1\0\0\0t\ 1\0\0\0f(\ 2\0\0\0t\ 4\0\0\0selfR\b\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\b\0\0\0__init__,\0\0\0s\ 2\0\0\0\0\ 1c\ 2\0\0\0\ 2\0\0\0\ 2\0\0\0S\0\0\0s!\0\0\0|\0\0j\0\0j\ 1\0|\ 1\0\83\ 1\0\ 1|\0\0j\0\0j\ 2\0\83\0\0\ 1d\0\0S(\ 1\0\0\0N(\ 3\0\0\0R\b\0\0\0t\ 5\0\0\0writet\ 5\0\0\0flush(\ 2\0\0\0R    \0\0\0t\ 2\0\0\0st(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyR\v\0\0\0.\0\0\0s\ 4\0\0\0\0\ 1\10\ 1c\ 1\0\0\0\ 1\0\0\0\ 1\0\0\0S\0\0\0s\r\0\0\0|\0\0j\0\0j\ 1\0\83\0\0S(\ 1\0\0\0N(\ 2\0\0\0R\b\0\0\0R\f\0\0\0(\ 1\0\0\0R    \0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyR\f\0\0\01\0\0\0s\ 2\0\0\0\0\ 1c\ 1\0\0\0\ 1\0\0\0\ 1\0\0\0S\0\0\0s\r\0\0\0|\0\0j\0\0j\ 1\0\83\0\0S(\ 1\0\0\0N(\ 2\0\0\0R\b\0\0\0t\ 6\0\0\0isatty(\ 1\0\0\0R       \0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyR\ e\0\0\03\0\0\0s\ 2\0\0\0\0\ 1c\ 1\0\0\0\ 1\0\0\0\ 2\0\0\0\13\0\0\0s!\0\0\0\88\0\0j\0\0|\0\0j\ 1\0\83\ 1\0\ 1|\0\0j\ 1\0j\ 2\0\83\0\0\ 1d\0\0S(\ 1\0\0\0N(\ 3\0\0\0t\ 5\0\0\0fsyncR\b\0\0\0t\ 5\0\0\0close(\ 1\0\0\0R  \0\0\0(\ 1\0\0\0t\ 2\0\0\0os(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyR\10\0\0\05\0\0\0s\ 4\0\0\0\0\ 1\10\ 1(\a\0\0\0t\b\0\0\0__name__t
++\0\0\0__module__R
++\0\0\0R\v\0\0\0R\f\0\0\0R\ e\0\0\0R\10\0\0\0(\0\0\0\0(\ 1\0\0\0R\11\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyR\a\0\0\0+\0\0\0s
++\0\0\0\ 6\ 1 \ 2       \ 3       \ 2       \ 2t\ 1\0\0\0w(\ e\0\0\0R\11\0\0\0t\ 3\0\0\0syst\ 6\0\0\0stderrR\f\0\0\0t\ 3\0\0\0dupt      \0\0\0stdoutOldt\ 4\0\0\0opent\a\0\0\0O_CREATt\ 6\0\0\0O_RDWRt\f\0\0\0fdOfSinkFilet\ 4\0\0\0dup2t \0\0\0origPyValt\ 6\0\0\0objectt\ 6\0\0\0fdopen(\ 5\0\0\0R        \0\0\0t\b\0\0\0fileNameR\15\0\0\0t\ 3\0\0\0fd2R\a\0\0\0(\0\0\0\0(\ 1\0\0\0R\11\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyR
++\0\0\0$\0\0\0s\10\0\0\0\0\ 1\18\ 1\r\ 1\12\ 1\1f\ 1\15\ 1\f\ 1\1c\rc\ 1\0\0\0\ 3\0\0\0\ 3\0\0\0C\0\0\0se\0\0\0d\ 1\0d\0\0l\0\0}\ 1\0d\ 1\0d\0\0l\ 1\0}\ 2\0|\ 2\0j\ 2\0j\ 3\0\83\0\0\ 1|\0\0j\ 4\0|\ 2\0_\ 2\0|\ 1\0j\ 5\0d\ 2\0\83\ 1\0\ 1|\ 1\0j\ 6\0|\0\0j\a\0d\ 2\0\83\ 2\0\ 1|\ 1\0j\ 3\0|\0\0j\a\0\83\ 1\0\ 1d\0\0S(\ 3\0\0\0Niÿÿÿÿi\ 2\0\0\0(\b\0\0\0R\11\0\0\0R\15\0\0\0R\16\0\0\0R\10\0\0\0R\1e\0\0\0R\ f\0\0\0R\1d\0\0\0R\18\0\0\0(\ 3\0\0\0R    \0\0\0R\11\0\0\0R\15\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\a\0\0\0__del__9\0\0\0s\f\0\0\0\0\ 1\18\ 1\r\ 1\f\ 1\r\ 1\13\ 1(\ 4\0\0\0R\12\0\0\0R\13\0\0\0R
++\0\0\0R#\0\0\0(\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyR\ 6\0\0\0#\0\0\0s\ 4\0\0\0\ 6\ 1       \15t\ e\0\0\0MEDLoaderTest3c\0\0\0\0\0\0\0\0\ 5\0\0\0B\0\0\0sc\ 5\0\0e\0\0Z\ 1\0d\0\0\84\0\0Z\ 2\0d\ 1\0\84\0\0Z\ 3\0d\ 2\0\84\0\0Z\ 4\0d\ 3\0\84\0\0Z\ 5\0d\ 4\0\84\0\0Z\ 6\0d\ 5\0\84\0\0Z\a\0d\ 6\0\84\0\0Z\b\0d\a\0\84\0\0Z  \0d\b\0\84\0\0Z
++\0d    \0\84\0\0Z\v\0d
++\0\84\0\0Z\f\0d\v\0\84\0\0Z\r\0d\f\0\84\0\0Z\ e\0d\r\0\84\0\0Z\ f\0d\ e\0\84\0\0Z\10\0d\ f\0\84\0\0Z\11\0d\10\0\84\0\0Z\12\0d\11\0\84\0\0Z\13\0d\12\0\84\0\0Z\14\0d\13\0\84\0\0Z\15\0d\14\0\84\0\0Z\16\0d\15\0\84\0\0Z\17\0d\16\0\84\0\0Z\18\0d\17\0\84\0\0Z\19\0d\18\0\84\0\0Z\1a\0d\19\0\84\0\0Z\e\0d\1a\0\84\0\0Z\1c\0d\e\0\84\0\0Z\1d\0d\1c\0\84\0\0Z\1e\0d\1d\0\84\0\0Z\1f\0d\1e\0\84\0\0\0d\1f\0\84\0\0Z!\0\0\84\0\0Z"\0d!\0\84\0\0Z#\0d"\0\84\0\0Z$\0d#\0\84\0\0Z%\0d$\0\84\0\0Z&\0d%\0\84\0\0Z'\0d&\0\84\0\0Z(\0d'\0\84\0\0Z)\0d(\0\84\0\0Z*\0d)\0\84\0\0Z+\0d*\0\84\0\0Z,\0d+\0\84\0\0Z-\0d,\0\84\0\0Z.\0d-\0\84\0\0Z/\0d.\0\84\0\0Z0\0d/\0\84\0\0Z1\0d0\0\84\0\0Z2\0d1\0\84\0\0Z3\0d2\0\84\0\0Z4\0d3\0\84\0\0Z5\0d4\0\84\0\0Z6\0d5\0\84\0\0Z7\0d6\0\84\0\0Z8\0d7\0\84\0\0Z9\0d8\0\84\0\0Z:\0d9\0\84\0\0Z;\0d:\0\84\0\0Z<\0d;\0\84\0\0Z=\0d<\0\84\0\0Z>\0d=\0\84\0\0Z?\0d>\0\84\0\0Z@\0d?\0\84\0\0ZA\0d@\0\84\0\0ZB\0dA\0\84\0\0ZC\0dB\0\84\0\0ZD\0dC\0\84\0\0ZE\0dD\0\84\0\0ZF\0dE\0\84\0\0ZG\0dF\0\84\0\0ZH\0dG\0\84\0\0ZI\0dH\0\84\0\0ZJ\0dI\0\84\0\0ZK\0dJ\0\84\0\0ZL\0dK\0\84\0\0ZM\0dL\0\84\0\0ZN\0dM\0\84\0\0ZO\0eP\0jQ\0eR\0\83\0\0dN\0\83\ 2\0dO\0\84\0\0\83\ 1\0ZS\0dP\0\84\0\0ZT\0dQ\0\84\0\0ZU\0dR\0\84\0\0ZV\0dS\0\84\0\0ZW\0dT\0\84\0\0ZX\0dU\0\84\0\0ZY\0dV\0\84\0\0ZZ\0dW\0\84\0\0Z[\0dX\0\84\0\0ZZ\0eP\0jQ\0dY\0e\\0j]\0\83\0\0j^\0\83\0\0k\ 2\0dZ\0\83\ 2\0d[\0\84\0\0\83\ 1\0Z_\0d\\0\84\0\0Z`\0d]\0\84\0\0Za\0eP\0jQ\0eR\0\83\0\0dN\0\83\ 2\0d^\0\84\0\0\83\ 1\0Zb\0d_\0\84\0\0Zc\0d`\0\84\0\0Zd\0da\0\84\0\0Ze\0db\0\84\0\0Zf\0dc\0\84\0\0Zg\0dd\0\84\0\0Zh\0de\0\84\0\0Zi\0df\0\84\0\0Zj\0dg\0\84\0\0Zk\0dh\0\84\0\0Zl\0di\0\84\0\0Zm\0dj\0\84\0\0Zn\0dk\0\84\0\0Zo\0dl\0\84\0\0Zp\0dm\0\84\0\0Zq\0dn\0\84\0\0Zr\0eP\0jQ\0es\0et\0\83\0\0\83\ 1\0es\0do\0\83\ 1\0k\ 5\0dp\0\83\ 2\0eP\0jQ\0es\0et\0\83\0\0\83\ 1\0es\0dq\0\83\ 1\0k\0\0dr\0\83\ 2\0ds\0\84\0\0\83\ 1\0\83\ 1\0Zu\0eP\0jQ\0eR\0\83\0\0dN\0\83\ 2\0dt\0\84\0\0\83\ 1\0Zv\0eP\0jQ\0eR\0\83\0\0dN\0\83\ 2\0du\0\84\0\0\83\ 1\0Zw\0dv\0\84\0\0Zx\0dw\0\84\0\0Zy\0dx\0\84\0\0Zz\0dy\0\84\0\0Z{\0eP\0jQ\0dY\0e\\0j]\0\83\0\0j^\0\83\0\0k\ 2\0dZ\0\83\ 2\0eP\0jQ\0es\0et\0\83\0\0\83\ 1\0es\0dq\0\83\ 1\0k\0\0dr\0\83\ 2\0dz\0\84\0\0\83\ 1\0\83\ 1\0Z|\0d{\0\84\0\0Z}\0d|\0\84\0\0Z~\0d}\0\84\0\0Z\7f\0d~\0\84\0\0Z\80\0d\7f\0\84\0\0Z\81\0d\80\0\84\0\0Z\82\0RS(\81\0\0\0c\ 1\0\0\0\b\0\0\0\ 5\0\0\0C\0\0\0\0\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0j\ 1\0|\ 1\0|\ 2\0\83\ 2\0}\ 3\0|\0\0j\ 2\0t\ 3\0t\0\0j\ 1\0|\ 1\0d\ 3\0\83\ 4\0\ 1|\0\0j\ 4\0d\a\0|\ 3\0j\ 5\0\83\0\0\83\ 2\0\ 1|\ 3\0j\ 6\0t\a\0\83\ 1\0}\ 4\0t\b\0|\ 1\0|\ 2\0d\ 4\0\83\ 3\0}\ 5\0|\0\0j        \0|\ 4\0j
++\0|\ 5\0d\ 6\0\83\ 2\0\83\ 1\0\ 1|\ 3\0j\v\0t\a\0\83\ 1\0}\ 6\0t\b\0|\ 1\0|\ 2\0d\ 5\0\83\ 3\0}\a\0|\0\0j   \0|\ 6\0j
++\0|\a\0d\ 6\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\b\0\0\0Ns\f\0\0\0Pyfile18.medt\12\0\0\0ExampleOfMultiDimWt\0\0\0\0i\0\0\0\0iÿÿÿÿg\11ê-\81\99\97q=(\ 2\0\0\0i\0\0\0\0iÿÿÿÿ(\f\0\0\0t\v\0\0\0MEDFileMesht\ 3\0\0\0Newt\f\0\0\0assertRaisest\15\0\0\0InterpKernelExceptiont\v\0\0\0assertEqualt\11\0\0\0getNonEmptyLevelst\r\0\0\0getLevel0Mesht\ 4\0\0\0Truet\11\0\0\0ReadUMeshFromFilet
++\0\0\0assertTruet\a\0\0\0isEqualt\ e\0\0\0getLevelM1Mesh(\b\0\0\0R    \0\0\0R!\0\0\0t\ 5\0\0\0mnamet\a\0\0\0medmesht\ 4\0\0\0m1_0t\ 4\0\0\0m1_1t\ 4\0\0\0m2_0t\ 4\0\0\0m2_1(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\f\0\0\0testMEDMesh1B\0\0\0s\18\0\0\0\0\ 1\ 6\ 1\ 6\ 1\12\ 1\19\ 1\16\ 1\ f\ 1\12\ 1\19\ 1\ f\ 1\12\ 1\19\ 1c\ 1\0\0\0
++\0\0\0   \0\0\0C\0\0\0s0\ 4\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0t\0\0j\ 1\0|\ 1\0|\ 2\0\83\ 2\0}\ 4\0|\0\0j\ 2\0d\15\0|\ 4\0j\ 3\0\83\0\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\ 5\0\83\ 1\0}\ 5\0t\ 6\0|\ 1\0|\ 2\0d\ 4\0\83\ 3\0}\ 6\0|\0\0j\a\0|\ 5\0j\b\0|\ 6\0d\ 5\0\83\ 2\0\83\ 1\0\ 1|\ 4\0j    \0d\ 4\0d\ 6\0t\ 5\0\83\ 3\0}\a\0t
++\0|\ 1\0|\ 2\0d\ 4\0d\ 6\0g\ 1\0\83\ 4\0}\b\0|\0\0j\a\0|\a\0j\b\0|\b\0d\ 5\0\83\ 2\0\83\ 1\0\ 1|\ 4\0j   \0d\ 4\0d\a\0t\ 5\0\83\ 3\0}\a\0t
++\0|\ 1\0|\ 2\0d\ 4\0d\a\0g\ 1\0\83\ 4\0}\b\0|\0\0j\a\0|\a\0j\b\0|\b\0d\ 5\0\83\ 2\0\83\ 1\0\ 1|\ 4\0j\v\0d\ 4\0d\a\0d\ 6\0g\ 2\0\83\ 2\0}\a\0t
++\0|\ 1\0|\ 2\0d\ 4\0d\a\0d\ 6\0g\ 2\0\83\ 4\0}\b\0|\b\0j\f\0|\a\0j\r\0\83\0\0\83\ 1\0\ 1|\0\0j\a\0|\a\0j\b\0|\b\0d\ 5\0\83\ 2\0\83\ 1\0\ 1|\ 4\0j\ e\0d\ 4\0d\b\0t\ 5\0\83\ 3\0}\a\0t\ f\0|\ 1\0|\ 2\0d\ 4\0d\b\0g\ 1\0\83\ 4\0}\b\0|\0\0j\a\0|\a\0j\b\0|\b\0d\ 5\0\83\ 2\0\83\ 1\0\ 1|\ 4\0j\10\0d\ 4\0d\b\0d      \0g\ 2\0t\ 5\0\83\ 3\0}\a\0t\ f\0|\ 1\0|\ 2\0d\ 4\0d\b\0d   \0g\ 2\0\83\ 4\0}\b\0|\b\0j\f\0|\a\0j\r\0\83\0\0\83\ 1\0\ 1|\0\0j\a\0|\a\0j\b\0|\b\0d\ 5\0\83\ 2\0\83\ 1\0\ 1|\0\0j\a\0|\a\0j\b\0|\b\0d\ 5\0\83\ 2\0\83\ 1\0\ 1|\ 4\0j\11\0|\ 3\0d
++\0\83\ 2\0\ 1|\0\0j\ 2\0d\v\0d
++\0d\f\0d\r\0d\ e\0g\ 5\0|\ 4\0j\12\0d\ 4\0d\ 6\0t\ 5\0\83\ 3\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\ 2\0d\v\0d
++\0d\ e\0g\ 3\0|\ 4\0j\14\0d\ 4\0d\b\0t\ 5\0\83\ 3\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\ 2\0d\v\0d
++\0d\f\0d\r\0d\ e\0g\ 5\0|\ 4\0j\15\0d\ 4\0d       \0d\b\0g\ 2\0t\ 5\0\83\ 3\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\ 2\0d\ f\0d\v\0d
++\0d\10\0d\f\0d\r\0d\11\0d\ e\0g\b\0|\ 4\0j\16\0d\ 4\0d\ 6\0d\12\0d\a\0g\ 3\0t\ 5\0\83\ 3\0j\13\0\83\0\0\83\ 2\0\ 1|\ 4\0j\17\0d\ 4\0\83\ 1\0\0|\0\0j\18\0t\19\0|\ 4\0j\1a\0|       \0t\ 5\0\83\ 4\0\ 1|\0\0j\ 2\0d
++\0d\10\0d\13\0d\11\0d\14\0g\ 5\0|\ 4\0j\12\0d\ 4\0d\ 6\0\83\ 2\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\ 2\0d
++\0d\10\0d\14\0g\ 3\0|\ 4\0j\14\0d\ 4\0d\b\0\83\ 2\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\ 2\0d
++\0d\10\0d\13\0d\11\0d\14\0g\ 5\0|\ 4\0j\15\0d\ 4\0d    \0d\b\0g\ 2\0\83\ 2\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\ 2\0d\ 4\0d
++\0d\10\0d\f\0d\13\0d\11\0d\ e\0d\14\0g\b\0|\ 4\0j\16\0d\ 4\0d\ 6\0d\a\0d\12\0g\ 3\0t\e\0\83\ 3\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\18\0t\19\0|\ 4\0j\1a\0|   \0t\e\0\83\ 4\0\ 1d\0\0S(\16\0\0\0Ns\f\0\0\0Pyfile10.medt\ 6\0\0\03DTotos\10\0\0\0MEDFileMesh1.medi\0\0\0\0g\11ê-\81\99\97q=t\ 5\0\0\0mesh2t\ 5\0\0\0mesh3s  \0\0\0Family_-3s   \0\0\0Family_-5i\ 2\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\r\0\0\0i\ f\0\0\0i\12\0\0\0i\ 3\0\0\0i\ e\0\0\0t\ 5\0\0\0mesh4i\ 5\0\0\0i\10\0\0\0(\ 1\0\0\0i\0\0\0\0(\1c\0\0\0t\f\0\0\0MEDFileUMeshR(\0\0\0R+\0\0\0R,\0\0\0R-\0\0\0R.\0\0\0R/\0\0\0R0\0\0\0R1\0\0\0t\b\0\0\0getGroupt\13\0\0\0ReadUMeshFromGroupst  \0\0\0getGroupst\a\0\0\0setNamet\a\0\0\0getNamet   \0\0\0getFamilyt\15\0\0\0ReadUMeshFromFamiliest\v\0\0\0getFamiliesR\v\0\0\0t\v\0\0\0getGroupArrt    \0\0\0getValuest\f\0\0\0getFamilyArrt\ e\0\0\0getFamiliesArrt\f\0\0\0getGroupsArrt\14\0\0\0getFamilyNameGivenIdR)\0\0\0R*\0\0\0t\10\0\0\0getNodeFamilyArrt\ 5\0\0\0False(
++\0\0\0R  \0\0\0R!\0\0\0R3\0\0\0t\v\0\0\0outFileNameR4\0\0\0R5\0\0\0R6\0\0\0t\ 4\0\0\0g1_0t\ 4\0\0\0g1_1t\ 4\0\0\0famn(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\f\0\0\0testMEDMesh2P\0\0\0sN\0\0\0\0\ 1\ 6\ 1\ 6\ 1\ 6\ 1\12\ 1\16\ 1\ f\ 1\12\ 1\19\ 1\15\ 1\18\ 1\19\ 1\15\ 1\18\ 1\19\ 1\18\ 1\e\ 1\13\ 1\19\ 1\15\ 1\18\ 1\19\ 1\e\ 1\e\ 1\13\ 1\19\ 1\19\ 1\10\ 14\ 1.\ 1:\ 1F\ 1\ f\ 1\19\ 21\ 1+\ 17\ 1F\ 1\19\ 1c\ 1\0\0\0\14\0\0\0\12\0\0\0C\0\0\0s}\b\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 4\0d\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 2\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 4\0g\12\0}\ 3\0d\ 5\0d\ 6\0d\a\0d\b\0d\b\0d\a\0d        \0d\a\0d
++\0d    \0d\v\0d\f\0d\a\0d\ 6\0d\f\0d\r\0d
++\0d\a\0g\12\0}\ 4\0|\ 2\0j\ 2\0|\ 3\0d\ e\0d       \0\83\ 3\0\ 1t\ 3\0j\ 1\0\83\0\0}\ 5\0|\ 5\0j\ 4\0d        \0\83\ 1\0\ 1|\ 5\0j\ 5\0d
++\0\83\ 1\0\ 1|\ 5\0j\ 6\0t\a\0d\ 6\0|\ 4\0d\a\0d\f\0!\83\ 3\0\ 1|\ 5\0j\ 6\0t\a\0d\ 6\0|\ 4\0d\f\0d\ f\0!\83\ 3\0\ 1|\ 5\0j\ 6\0t\b\0d\a\0|\ 4\0d\ 5\0d\a\0!\83\ 3\0\ 1|\ 5\0j\ 6\0t    \0d\a\0|\ 4\0d\ f\0d\10\0!\83\ 3\0\ 1|\ 5\0j\ 6\0t       \0d\a\0|\ 4\0d\10\0d\11\0!\83\ 3\0\ 1|\ 5\0j
++\0\83\0\0\ 1|\ 5\0j\v\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\f\0\83\0\0\ 1t\ 3\0j\ 1\0\83\0\0}\ 6\0|\ 6\0j\ 4\0d\b\0\83\ 1\0\ 1|\ 6\0j\ 5\0d\ 6\0\83\ 1\0\ 1|\ 6\0j\ 6\0t\r\0d  \0d\b\0d\a\0g\ 2\0\83\ 3\0\ 1|\ 6\0j\ 6\0t\r\0d        \0d\ 6\0d\v\0g\ 2\0\83\ 3\0\ 1|\ 6\0j\ 6\0t\ e\0d\ 6\0d     \0d\r\0d
++\0g\ 3\0\83\ 3\0\ 1|\ 6\0j
++\0\83\0\0\ 1|\ 6\0j\v\0|\ 2\0\83\ 1\0\ 1|\ 6\0j\f\0\83\0\0\ 1t\ 3\0j\ 1\0\83\0\0}\a\0|\a\0j\ 4\0d\ 5\0\83\ 1\0\ 1|\a\0j\ 5\0d\a\0\83\ 1\0\ 1|\a\0j\ 6\0t\ f\0d\b\0d\b\0g\ 1\0\83\ 3\0\ 1|\a\0j\ 6\0t\ f\0d\b\0d\ 6\0g\ 1\0\83\ 3\0\ 1|\a\0j\ 6\0t\ f\0d\b\0d   \0g\ 1\0\83\ 3\0\ 1|\a\0j\ 6\0t\ f\0d\b\0d\v\0g\ 1\0\83\ 3\0\ 1|\a\0j
++\0\83\0\0\ 1|\a\0j\v\0|\ 2\0\83\ 1\0\ 1|\a\0j\f\0\83\0\0\ 1t\10\0j\ 1\0\83\0\0}\b\0|\0\0j\11\0|\b\0j\12\0\83\0\0\83\ 1\0\ 1|\b\0j\13\0d\12\0\83\ 1\0\ 1|\b\0j\14\0d\13\0\83\ 1\0\ 1|\b\0j\v\0|\ 2\0\83\ 1\0\ 1|\b\0j\15\0d\14\0|\ 6\0\83\ 2\0\ 1|\b\0j\15\0d\ 5\0|\ 5\0\83\ 2\0\ 1|\b\0j\15\0d\15\0|\a\0\83\ 2\0\ 1t\16\0j\ 1\0\83\0\0}  \0|      \0j\ 2\0d\b\0d\ 6\0g\ 2\0d  \0d\b\0\83\ 3\0\ 1|       \0j\13\0d\16\0\83\ 1\0\ 1t\16\0j\ 1\0\83\0\0}
++\0|
++\0j\ 2\0d\b\0d      \0d\ 6\0g\ 3\0d\ 6\0d\b\0\83\ 3\0\ 1|
++\0j\13\0d\17\0\83\ 1\0\ 1|\b\0j\17\0d\ 5\0\0|
++\0g\ 2\0t\18\0\83\ 3\0\ 1t\16\0j\ 1\0\83\0\0}\v\0|\v\0j\ 2\0d\ 5\0d\b\0d  \0g\ 3\0d\ 6\0d\b\0\83\ 3\0\ 1|\v\0j\13\0d\16\0\83\ 1\0\ 1t\16\0j\ 1\0\83\0\0}\f\0|\f\0j\ 2\0d\ 5\0d       \0g\ 2\0d   \0d\b\0\83\ 3\0\ 1|\f\0j\13\0d\17\0\83\ 1\0\ 1|\b\0j\17\0d\14\0|\v\0|\f\0g\ 2\0t\18\0\83\ 3\0\ 1t\16\0j\ 1\0\83\0\0}\r\0|\r\0j\ 2\0t\19\0t\1a\0d\r\0\83\ 1\0\83\ 1\0d\r\0d\b\0\83\ 3\0\ 1|\r\0j\13\0d\16\0\83\ 1\0\ 1t\16\0j\ 1\0\83\0\0}\ e\0|\ e\0j\ 2\0t\19\0t\1a\0d\ e\0\83\ 1\0\83\ 1\0d\ e\0d\b\0\83\ 3\0\ 1|\ e\0j\13\0d\17\0\83\ 1\0\ 1|\b\0j\17\0d\b\0|\r\0|\ e\0g\ 2\0t\18\0\83\ 3\0\ 1|\b\0j\e\0d\ 5\0d\18\0\83\ 2\0\ 1|\b\0j\1c\0d\ 5\0d\16\0t\18\0\83\ 3\0}\ f\0|\0\0j\11\0|     \0j\1d\0|\ f\0\83\ 1\0\83\ 1\0\ 1|\b\0j\1c\0d\ 5\0d\17\0t\18\0\83\ 3\0}\ f\0|\0\0j\11\0|
++\0j\1d\0|\ f\0\83\ 1\0\83\ 1\0\ 1|\b\0j\1c\0d\14\0d\16\0t\18\0\83\ 3\0}\ f\0|\0\0j\11\0|\v\0j\1d\0|\ f\0\83\ 1\0\83\ 1\0\ 1|\b\0j\1c\0d\14\0d\17\0t\18\0\83\ 3\0}\ f\0|\0\0j\11\0|\f\0j\1d\0|\ f\0\83\ 1\0\83\ 1\0\ 1|\b\0j\1c\0d\b\0d\16\0t\18\0\83\ 3\0}\ f\0|\0\0j\11\0|\r\0j\1d\0|\ f\0\83\ 1\0\83\ 1\0\ 1|\b\0j\1c\0d\b\0d\17\0t\18\0\83\ 3\0}\ f\0|\0\0j\11\0|\ e\0j\1d\0|\ f\0\83\ 1\0\83\ 1\0\ 1|\0\0j\11\0|\b\0j\1e\0d\18\0\83\ 1\0\83\ 1\0\ 1|\b\0j\1c\0d\ 5\0d\18\0\83\ 2\0}\ f\0|\0\0j\11\0|\ f\0j\1f\0\83\0\0t\19\0t\1a\0d
++\0\83\ 1\0\83\ 1\0k\ 2\0\83\ 1\0\ 1|\b\0\0\83\0\0}\10\0|\0\0j\11\0|\b\0j\1d\0|\10\0d\19\0\83\ 2\0d\ 5\0\19\83\ 1\0\ 1~\b\0|\10\0j!\0|\ 1\0d  \0\83\ 2\0\ 1t"\0j\ 1\0|\ 1\0\83\ 1\0}\b\0|\0\0j#\0t\a\0t\b\0t       \0g\ 3\0|\b\0j$\0d\ 5\0\83\ 1\0\83\ 2\0\ 1|\0\0j#\0t\r\0t\ e\0g\ 2\0|\b\0j$\0d\14\0\83\ 1\0\83\ 2\0\ 1|\0\0j#\0t\ f\0g\ 1\0|\b\0j$\0d\15\0\83\ 1\0\83\ 2\0\ 1|\b\0j%\0t  \0\83\ 1\0}\11\0|\0\0j\11\0t&\0|\11\0t'\0\83\ 2\0\83\ 1\0\ 1|\0\0j\11\0|\11\0j(\0\83\0\0j\1d\0t\16\0d\v\0d\f\0d\a\0d\ 6\0d\f\0d\r\0d
++\0d\a\0g\b\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\11\0|\11\0j)\0\83\0\0j\1d\0t\16\0d\ 5\0d\a\0d\r\0g\ 3\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\b\0j*\0d\ 5\0\83\ 1\0}\12\0|\0\0j#\0d\ 6\0t+\0|\12\0\83\ 1\0\83\ 2\0\ 1|\0\0j\11\0t&\0|\12\0d\ 5\0\19t,\0\83\ 2\0\83\ 1\0\ 1|\0\0j\11\0t&\0|\12\0d\b\0\19t,\0\83\ 2\0\83\ 1\0\ 1|\0\0j\11\0t&\0|\12\0d    \0\19t'\0\83\ 2\0\83\ 1\0\ 1|\0\0j\11\0|\b\0j\12\0\83\0\0\83\ 1\0\ 1|\0\0j\11\0t&\0|\b\0j-\0\83\0\0t.\0\83\ 2\0\83\ 1\0\ 1|\0\0j\11\0t+\0|\b\0j-\0\83\0\0\83\ 1\0d\ 5\0k\ 3\0\83\ 1\0\ 1|\b\0j/\0d\ 5\0\83\ 1\0}\13\0|\ 5\0j\13\0|\b\0j0\0\83\0\0\83\ 1\0\ 1|\ 5\0j\14\0|\b\0j1\0\83\0\0\83\ 1\0\ 1|\0\0j\11\0|\ 5\0j\1d\0|\13\0d\19\0\83\ 2\0\83\ 1\0\ 1|\0\0j#\0d\1a\0d\e\0d\1c\0g\ 3\0d\1d\0d\1e\0g\ 2\0d\1f\0g\ 1\0g\ 3\0d   \0d      \0d\ e\0f\ 4\0t2\0|\ 1\0d\12\0\83\ 2\0\83\ 2\0\ 1d\0\0S( \0\0\0Ns\10\0\0\0MEDFileMesh3.medg333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?i\0\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0\0\0\0i
++\0\0\0i\ e\0\0\0i\12\0\0\0t\19\0\0\0MyFirstMEDCouplingMEDmesht\1e\0\0\0IHopeToConvinceLastMEDMEMUsersiÿÿÿÿiþÿÿÿt\ 2\0\0\0G1t\ 2\0\0\0G2t\f\0\0\0GrpOnAllCellg\11ê-\81\99\97q=(\ 2\0\0\0i\ 3\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\ 5\0\0\0i\b\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 2\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 4\0\0\0(3\0\0\0t\ f\0\0\0DataArrayDoubleR(\0\0\0t     \0\0\0setValuest\10\0\0\0MEDCouplingUMesht\10\0\0\0setMeshDimensiont\r\0\0\0allocateCellst\ e\0\0\0insertNextCellt    \0\0\0NORM_TRI3t
++\0\0\0NORM_QUAD4t\f\0\0\0NORM_POLYGONt\14\0\0\0finishInsertingCellst      \0\0\0setCoordst\15\0\0\0checkConsistencyLightt \0\0\0NORM_SEG2t   \0\0\0NORM_SEG3t\v\0\0\0NORM_POINT1R>\0\0\0R0\0\0\0t\13\0\0\0getUnivNameWrStatusRB\0\0\0t\ e\0\0\0setDescriptiont\ e\0\0\0setMeshAtLevelt\f\0\0\0DataArrayIntt\10\0\0\0setGroupsAtLevelRN\0\0\0t\ 4\0\0\0listt\ 5\0\0\0ranget\10\0\0\0createGroupOnAllRG\0\0\0R1\0\0\0t\v\0\0\0existsGroupRH\0\0\0t\b\0\0\0deepCopyR\v\0\0\0R'\0\0\0R+\0\0\0t\12\0\0\0getGeoTypesAtLevelt%\0\0\0getDirectUndergroundSingleGeoTypeMesht
++\0\0\0isinstancet\14\0\0\0MEDCoupling1DGTUMesht\14\0\0\0getNodalConnectivityt\19\0\0\0getNodalConnectivityIndext'\0\0\0getDirectUndergroundSingleGeoTypeMeshest\ 3\0\0\0lent\14\0\0\0MEDCoupling1SGTUMesht\v\0\0\0getUnivNamet\ 3\0\0\0strt\ e\0\0\0getMeshAtLevelRC\0\0\0t\ e\0\0\0getDescriptiont\12\0\0\0GetUMeshGlobalInfo(\14\0\0\0R    \0\0\0RO\0\0\0t\ 1\0\0\0ct\ 6\0\0\0coordst
++\0\0\0targetConnt\ 1\0\0\0mt\ 2\0\0\0m1t\ 2\0\0\0m2t\ 2\0\0\0mmt\ 4\0\0\0g1_2t\ 4\0\0\0g2_2RQ\0\0\0t\ 4\0\0\0g2_1t\ 4\0\0\0g1_Nt\ 4\0\0\0g2_Nt\ 1\0\0\0tt\ 5\0\0\0mmCpyt\ 3\0\0\0mm0t\ 3\0\0\0lmmt\ 4\0\0\0mbis(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\f\0\0\0testMEDMesh3{\0\0\0\0\0\0\0\ 1\ 6\ 1\f\ 1<\ 1<\ 1\13\ 1\f\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\r\ 1
++\ 1\f\ 1\r\ 1\r\ 1\19\ 1\19\ 1\1c\ 1
++\ 1\r\ 1
++\ 1\f\ 1\r\ 1\r\ 1\16\ 1\16\ 1\16\ 1\16\ 1
++\ 1\r\ 1
++\ 2\f\ 1\13\ 1\r\ 1\r\ 1\r\ 1\10\ 1\10\ 1\10\ 2\f\ 1\19\ 1\r\ 1\f\ 1\1c\ 1\r\ 1\19\ 1\f\ 1\1c\ 1\r\ 1\f\ 1\19\ 1\r\ 1\19\ 1\f\ 1\1f\ 1\r\ 1\f\ 1\1f\ 1\r\ 1\19\ 1\10\ 2\15\ 1\16\ 1\15\ 1\16\ 1\15\ 1\16\ 1\15\ 1\16\ 1\15\ 1\16\ 1\15\ 1\16\ 1\16\ 1\12\ 1%\ 2\f\ 1\1d\0\ 3\ 1\10\ 2\ f\ 2"\ 1\1f\ 1\1c\ 1\ f\ 1\16\ 1:\ 1+\ 1\ f\ 1\16\ 1\1a\ 1\1a\ 1\1a\ 2\13\ 1\1c\ 1\1f\ 1\ f\ 1\13\0\13\ 1\19\ 2@\ 1c\ 1\0\0\0\15\0\0\0\12\0\0\0C\0\0\0\a\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 4\0d\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 2\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 4\0g\12\0}\ 3\0d\ 5\0d\ 6\0d\a\0d\b\0d\b\0d\a\0d  \0d\a\0d
++\0d    \0d\v\0d\f\0d\a\0d\ 6\0d\f\0d\r\0d
++\0d\a\0g\12\0}\ 4\0|\ 2\0j\ 2\0|\ 3\0d\ e\0d       \0\83\ 3\0\ 1|\ 2\0j\ 3\0d\ 5\0d\ f\0\83\ 2\0\ 1|\ 2\0j\ 3\0d\b\0d\10\0\83\ 2\0\ 1t\ 4\0j\ 1\0\83\0\0}\ 5\0|\ 5\0j\ 5\0d        \0\83\ 1\0\ 1|\ 5\0j\ 6\0d
++\0\83\ 1\0\ 1|\ 5\0j\a\0t\b\0d\a\0|\ 4\0d\ 5\0d\a\0!\83\ 3\0\ 1|\ 5\0j\a\0t        \0d\ 6\0|\ 4\0d\a\0d\f\0!\83\ 3\0\ 1|\ 5\0j\a\0t       \0d\ 6\0|\ 4\0d\f\0d\11\0!\83\ 3\0\ 1|\ 5\0j\a\0t\b\0d\a\0|\ 4\0d\11\0d\12\0!\83\ 3\0\ 1|\ 5\0j\a\0t\b\0d\a\0|\ 4\0d\12\0d\13\0!\83\ 3\0\ 1|\ 5\0j
++\0\83\0\0\ 1|\ 5\0j\v\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\f\0\83\0\0\ 1t\ 4\0j\ 1\0\83\0\0}\ 6\0|\ 6\0j\ 5\0d\b\0\83\ 1\0\ 1|\ 6\0j\ 6\0d\ 6\0\83\ 1\0\ 1|\ 6\0j\a\0t\r\0d  \0d\b\0d\a\0g\ 2\0\83\ 3\0\ 1|\ 6\0j\a\0t\ e\0d\ 6\0d     \0d\r\0d
++\0g\ 3\0\83\ 3\0\ 1|\ 6\0j\a\0t\r\0d    \0d\ 6\0d\v\0g\ 2\0\83\ 3\0\ 1|\ 6\0j
++\0\83\0\0\ 1|\ 6\0j\v\0|\ 2\0\83\ 1\0\ 1|\ 6\0j\f\0\83\0\0\ 1t\ 4\0j\ 1\0\83\0\0}\a\0|\a\0j\ 5\0d\ 5\0\83\ 1\0\ 1|\a\0j\ 6\0d\a\0\83\ 1\0\ 1|\a\0j\a\0t\ f\0d\b\0d\b\0g\ 1\0\83\ 3\0\ 1|\a\0j\a\0t\ f\0d\b\0d\ 6\0g\ 1\0\83\ 3\0\ 1|\a\0j\a\0t\ f\0d\b\0d   \0g\ 1\0\83\ 3\0\ 1|\a\0j\a\0t\ f\0d\b\0d\v\0g\ 1\0\83\ 3\0\ 1|\a\0j
++\0\83\0\0\ 1|\a\0j\v\0|\ 2\0\83\ 1\0\ 1|\a\0j\f\0\83\0\0\ 1t\10\0j\ 1\0\83\0\0}\b\0|\b\0j\11\0d\14\0\83\ 1\0\ 1|\b\0j\12\0d\15\0\83\ 1\0\ 1|\b\0j\v\0|\ 2\0\83\ 1\0\ 1t\13\0j\ 1\0\83\0\0}     \0|      \0j\ 2\0d\11\0d\16\0d\17\0d\18\0d\12\0d\19\0d\1a\0d\e\0d\13\0g        \0d\ e\0d\b\0\83\ 3\0\ 1|\b\0j\14\0d\b\0|   \0\83\ 2\0\ 1|\b\0j\15\0d\1c\0|\ 6\0t\16\0\83\ 3\0\ 1|\b\0j\15\0d\ 5\0|\ 5\0t\16\0\83\ 3\0\ 1|\b\0j\15\0d\1d\0|\a\0t\16\0\83\ 3\0\ 1|\b\0j\17\0d\1d\0\83\ 1\0\ 1|\b\0j\15\0d\1d\0|\a\0t\16\0\83\ 3\0\ 1t\13\0j\ 1\0\83\0\0}
++\0|
++\0j\ 2\0\0d\ 6\0g\ 2\0d        \0d\b\0\83\ 3\0\ 1|
++\0j\11\0d\1e\0\83\ 1\0\ 1t\13\0j\ 1\0\83\0\0}\v\0|\v\0j\ 2\0d        \0d\ 5\0d\ 6\0g\ 3\0d\ 6\0d\b\0\83\ 3\0\ 1|\v\0j\11\0d\1f\0\83\ 1\0\ 1|\b\0j\18\0d\ 5\0|
++\0|\v\0g\ 2\0t\16\0\83\ 3\0\ 1t\13\0j\ 1\0\83\0\0}\f\0|\f\0j\ 2\0d\ 5\0d  \0d\b\0g\ 3\0d\ 6\0d\b\0\83\ 3\0\ 1|\f\0j\11\0d\1e\0\83\ 1\0\ 1t\13\0j\ 1\0\83\0\0}\r\0|\r\0j\ 2\0d\ 5\0d    \0g\ 2\0d   \0d\b\0\83\ 3\0\ 1|\r\0j\11\0d\1f\0\83\ 1\0\ 1|\b\0j\18\0d\1c\0|\f\0|\r\0g\ 2\0t\16\0\83\ 3\0\ 1t\13\0j\ 1\0\83\0\0}\ e\0|\ e\0j\ 2\0d\11\0d\16\0d\17\0d\18\0d\12\0d\19\0d\1a\0d\e\0g\b\0d\r\0d\b\0\83\ 3\0\ 1|\ e\0j\11\0d\1e\0\83\ 1\0\ 1t\13\0j\ 1\0\83\0\0}\ f\0|\ f\0j\ 2\0d\11\0d\16\0d\17\0d\18\0d\12\0d\19\0d\1a\0d\e\0d\13\0g        \0d\ e\0d\b\0\83\ 3\0\ 1|\ f\0j\11\0d\1f\0\83\ 1\0\ 1|\b\0j\18\0d\b\0|\ e\0|\ f\0g\ 2\0t\16\0\83\ 3\0\ 1|\b\0j\19\0d\ 5\0d\1e\0t\16\0\83\ 3\0}\10\0|\0\0j\1a\0|
++\0j\e\0|\10\0\83\ 1\0\83\ 1\0\ 1|\b\0j\19\0d\ 5\0d\1f\0t\16\0\83\ 3\0}\10\0|\0\0j\1a\0|\v\0j\e\0|\10\0\83\ 1\0\83\ 1\0\ 1|\b\0j\19\0d\1c\0d\1e\0t\16\0\83\ 3\0}\10\0|\0\0j\1a\0|\f\0j\e\0|\10\0\83\ 1\0\83\ 1\0\ 1|\b\0j\19\0d\1c\0d\1f\0t\16\0\83\ 3\0}\10\0|\0\0j\1a\0|\r\0j\e\0|\10\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1a\0|\b\0j\1c\0\0\83\ 1\0\f\83\ 1\0\ 1|\b\0j\1d\0|\ 1\0d      \0\83\ 2\0\ 1t\1e\0j\ 1\0|\ 1\0\83\ 1\0}\11\0|\b\0j\e\0|\11\0d!\0\83\ 2\0}\12\0|\0\0j\1a\0|\12\0d\ 5\0\19\83\ 1\0\ 1t\1f\0|\11\0\0d\1f\0\83\ 1\0\83\ 1\0}\13\0|\13\0j!\0\83\0\0\ 1|\0\0j"\0d"\0d#\0d$\0d%\0d&\0g\ 5\0|\13\0\83\ 2\0\ 1|\11\0j#\0d\ 6\0g\ 1\0d\1c\0g\ 1\0\83\ 2\0\ 1xK\0|\b\0j$\0d\1f\0\83\ 1\0D]:\0}\14\0|\0\0j"\0|\b\0j\19\0|\14\0d\1f\0\83\ 2\0j%\0\83\0\0|\11\0j\19\0|\14\0d\1f\0\83\ 2\0j%\0\83\0\0\83\ 2\0\ 1q\9d\ 6Wt\1f\0|\11\0\0d\1f\0\83\ 1\0\83\ 1\0}\13\0|\13\0j!\0\83\0\0\ 1|\0\0j"\0d"\0d#\0d$\0d%\0d&\0g\ 5\0|\13\0\83\ 2\0\ 1|\0\0j"\0d'\0d'\0d(\0g\ 3\0|\11\0j&\0d\1c\0\83\ 1\0j%\0\83\0\0\83\ 2\0\ 1|\11\0j&\0d\1c\0\83\ 1\0j'\0d\b\0d\ 5\0d)\0\83\ 3\0\ 1|\0\0j"\0d'\0d)\0d(\0g\ 3\0|\11\0j&\0d\1c\0\83\ 1\0j%\0\83\0\0\83\ 2\0\ 1|\0\0j\1a\0|\11\0j(\0d*\0\83\ 1\0\f\83\ 1\0\ 1|\11\0j)\0d\1c\0d+\0\83\ 2\0\ 1|\0\0j\1a\0|\11\0j(\0d*\0\83\ 1\0\83\ 1\0\ 1|\0\0j"\0t\1f\0t*\0d\ 6\0\83\ 1\0\83\ 1\0|\11\0j\19\0d\1c\0d+\0\83\ 2\0j%\0\83\0\0\83\ 2\0\ 1d\0\0S(,\0\0\0Ns\10\0\0\0MEDFileMesh4.medg333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?i\0\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i  \0\0\0s\v\0\0\0abcdef [km]s    \0\0\0ghij [MW]i
++\0\0\0i\ e\0\0\0i\12\0\0\0t\17\0\0\0My2ndMEDCouplingMEDmesht\1e\0\0\0ThisIsImpossibleToDoWithMEDMEMi\v\0\0\0i\f\0\0\0i\r\0\0\0i\ f\0\0\0i\10\0\0\0i\11\0\0\0iÿÿÿÿiþÿÿÿRV\0\0\0RW\0\0\0RX\0\0\0g\11ê-\81\99\97q=s \0\0\0Family_-3s   \0\0\0Family_-4s   \0\0\0Family_-7t   \0\0\0Family_10t   \0\0\0Family_11iùÿÿÿiúÿÿÿiøÿÿÿs    \0\0\0Family_-8t\f\0\0\0GrpOnAllFace(+\0\0\0RY\0\0\0R(\0\0\0RZ\0\0\0t\12\0\0\0setInfoOnComponentR[\0\0\0R\\0\0\0R]\0\0\0R^\0\0\0R`\0\0\0R_\0\0\0Rb\0\0\0Rc\0\0\0Rd\0\0\0Re\0\0\0Rf\0\0\0Rg\0\0\0R>\0\0\0RB\0\0\0Ri\0\0\0Rk\0\0\0t\10\0\0\0setRenumFieldArrRj\0\0\0R.\0\0\0t\11\0\0\0removeMeshAtLevelRl\0\0\0RG\0\0\0R0\0\0\0R1\0\0\0Rp\0\0\0R\v\0\0\0R'\0\0\0Rm\0\0\0t\12\0\0\0getFamiliesOnGroupt\ 4\0\0\0sortR+\0\0\0t\14\0\0\0keepFamIdsOnlyOnLevst\17\0\0\0getGrpNonEmptyLevelsExtRH\0\0\0t\15\0\0\0getFamilyFieldAtLevelt\ 5\0\0\0setIJt\f\0\0\0existsFamilyRo\0\0\0Rn\0\0\0(\15\0\0\0R       \0\0\0RO\0\0\0R\80\0\0\0R\81\0\0\0R\82\0\0\0R\83\0\0\0R\84\0\0\0R\85\0\0\0R\86\0\0\0t    \0\0\0renumNodeR\87\0\0\0R\88\0\0\0RQ\0\0\0R\89\0\0\0R\8a\0\0\0R\8b\0\0\0R\8c\0\0\0t\ 3\0\0\0mm2t\ 3\0\0\0rest\ 1\0\0\0lt\ 3\0\0\0lev(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\f\0\0\0testMEDMesh4î\0\0\0\0\0\0\0\ 1\ 6\ 1\f\ 1<\ 1<\ 1\13\ 1\10\ 1\10\ 1\f\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\r\ 1
++\ 1\f\ 1\r\ 1\r\ 1\19\ 1\1c\ 1\19\ 1
++\ 1\r\ 1
++\ 1\f\ 1\r\ 1\r\ 1\16\ 1\16\ 1\16\ 1\16\ 1
++\ 1\r\ 1
++\ 2\f\ 1\r\ 1\r\ 1\r\ 1\f\ 1.\ 1\10\ 1\13\ 1\13\ 1\13\ 1\r\ 1\13\ 2\f\ 1\19\ 1\r\ 1\f\ 1\1c\ 1\r\ 1\19\ 1\f\ 1\1c\ 1\r\ 1\f\ 1\19\ 1\r\ 1\19\ 1\f\ 1+\ 1\r\ 1\f\ 1.\ 1\r\ 1\19\ 2\15\ 1\16\ 1\15\ 1\16\ 1\15\ 1\16\ 1\15\ 1\16\ 1\17\ 2\10\ 1\ f\ 1\12\ 1\11\ 1\15\0
++\ 1\1f\ 1\16\ 1\16\ 14\ 1\ 4\ 1\15\0
++\ 1\1f\ 2(\ 1\1c\ 1(\ 1\17\ 1\10\ 1\16\ 1.\ 1c\ 1\0\0\0\ 6\0\0\0\ 3\0\0\0C\0\0\0so\0\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0j\ 1\0|\ 1\0|\ 2\0\83\ 2\0}\ 3\0|\ 3\0j\ 2\0t\ 3\0\83\ 1\0}\ 4\0|\ 3\0j\ 4\0d\ 3\0\83\ 1\0}\ 5\0~\ 3\0|\0\0j\ 5\0d\ 4\0|\ 4\0j\ 6\0\83\0\0\83\ 2\0\ 1|\0\0j\ 5\0d\ 4\0|\ 5\0j\a\0\83\0\0\83\ 2\0\ 1d\0\0S(\ 5\0\0\0Ns\f\0\0\0Pyfile18.medR%\0\0\0i\0\0\0\0i\14\0\0\0(\b\0\0\0R>\0\0\0R(\0\0\0R-\0\0\0R.\0\0\0R\9e\0\0\0R+\0\0\0t\10\0\0\0getNumberOfCellst\11\0\0\0getNumberOfTuples(\ 6\0\0\0R      \0\0\0R!\0\0\0R3\0\0\0R4\0\0\0R5\0\0\0t\ 3\0\0\0da1(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\f\0\0\0testMEDMesh5Y\ 1\0\0s\12\0\0\0\0\ 1\ 6\ 1\ 6\ 1\12\ 1\ f\ 1\ f\ 1\ 3\ 1\16\ 1\16\ 1c\ 1\0\0\0      \0\0\0\r\0\0\0C\0\0\0s\80\ 3\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 2\0d\ 3\0\83\ 3\0\ 1t\ 3\0j\ 1\0\83\0\0}\ 3\0t\ 4\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 5\0d\ 4\0d\ 5\0d\ 6\0g\ 3\0d\a\0d\b\0\83\ 3\0\ 1|\ 4\0j\ 6\0d        \0d
++\0\83\ 2\0\ 1|\ 3\0j\a\0d  \0|\ 4\0\83\ 2\0\ 1t\ 4\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 5\0d\ 4\0d\v\0g\ 2\0d\f\0d\b\0\83\ 3\0\ 1|\ 4\0j\ 6\0d    \0d\r\0\83\ 2\0\ 1|\ 3\0j\a\0d\b\0|\ 4\0\83\ 2\0\ 1t\ 4\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 5\0d\ 4\0d\ e\0g\ 2\0d\f\0d\b\0\83\ 3\0\ 1|\ 4\0j\ 6\0d    \0d\ f\0\83\ 2\0\ 1|\ 3\0j\a\0d\f\0|\ 4\0\83\ 2\0\ 1|\ 2\0j\b\0|\ 3\0\83\ 1\0\ 1|\0\0j       \0|\ 2\0d   \0\19j
++\0|\ 3\0d\10\0\83\ 2\0\83\ 1\0\ 1|\0\0j    \0t\v\0|\ 2\0d        \0\19t\ 3\0\83\ 2\0\83\ 1\0\ 1|\ 2\0j\f\0d\11\0\83\ 1\0\ 1|\ 2\0j\r\0d\12\0\83\ 1\0\ 1|\ 2\0j\ e\0d\ 3\0\83\ 1\0\ 1|\ 2\0j\ f\0d\13\0\83\ 1\0\ 1t\10\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 5\0d     \0d      \0d\b\0d   \0d\b\0d\f\0d\14\0d\a\0d  \0d\b\0d\f\0d\f\0g\f\0d\15\0d\b\0\83\ 3\0\ 1|\ 2\0j\11\0d\b\0|\ 4\0\83\ 2\0\ 1|\ 2\0j\12\0d\16\0d\b\0\83\ 2\0\ 1|\ 2\0j\13\0d\b\0d\16\0\83\ 2\0}\ 4\0d\f\0d\14\0d\17\0g\ 3\0}\ 5\0|\0\0j\14\0|\ 5\0|\ 4\0j\15\0\83\0\0\83\ 2\0\ 1|\0\0j      \0|\ 2\0j\16\0\83\0\0\83\ 1\0\ 1|\ 2\0j\17\0|\ 1\0d\f\0\83\ 2\0\ 1t\18\0j\ 1\0|\ 1\0\83\ 1\0}\ 6\0|\0\0j\14\0t\19\0g\ 1\0|\ 6\0j\1a\0d        \0\83\ 1\0\83\ 2\0\ 1|\0\0j    \0t\v\0|\ 6\0t\0\0\83\ 2\0\83\ 1\0\ 1|\0\0j   \0t\v\0|\ 6\0j\e\0\83\0\0t\1c\0\83\ 2\0\83\ 1\0\ 1|\0\0j     \0t\1d\0|\ 6\0j\e\0\83\0\0\83\ 1\0d       \0k\ 3\0\83\ 1\0\ 1|\0\0j    \0|\ 2\0j
++\0|\ 6\0d\10\0\83\ 2\0d   \0\19\83\ 1\0\ 1|\0\0j\14\0|\ 5\0|\ 6\0j\13\0d\b\0d\16\0\83\ 2\0j\15\0\83\0\0\83\ 2\0\ 1|\ 6\0j\1e\0\83\0\0}\a\0|\ 2\0j\1f\0\83\0\0}\b\0|\ 3\0j\ 2\0|\b\0d\f\0\19|\b\0d       \0\19|\b\0d\b\0\19\83\ 3\0\ 1|\ 3\0j\f\0|\ 2\0\0\83\0\0\83\ 1\0\ 1|\ 3\0j\ f\0|\ 2\0j!\0\83\0\0\83\ 1\0\ 1|\ 3\0j\r\0|\ 2\0j"\0\83\0\0\83\ 1\0\ 1|\0\0j      \0|\a\0j
++\0|\ 3\0d\10\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\18\0\0\0Ns\10\0\0\0MEDFileMesh5.mediÿÿÿÿgffffff\ 2@g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@i\ 3\0\0\0i\ 1\0\0\0i\0\0\0\0s\a\0\0\0XX [mm]g333333ó?i\ 2\0\0\0s\a\0\0\0YY [km]gÍÌÌÌÌÌô?s\a\0\0\0ZZ [um]g\11ê-\81\99\97q=t\ f\0\0\0myFirstCartMesht\f\0\0\0mmmmppppppppt\ 2\0\0\0msi\ 4\0\0\0i\f\0\0\0t\a\0\0\0family1i  \0\0\0(#\0\0\0t\f\0\0\0MEDFileCMeshR(\0\0\0t\a\0\0\0setTimet\10\0\0\0MEDCouplingCMeshRY\0\0\0RZ\0\0\0R\97\0\0\0t\v\0\0\0setCoordsAtt\a\0\0\0setMeshR0\0\0\0R1\0\0\0Rt\0\0\0RB\0\0\0Ri\0\0\0t\f\0\0\0setTimeValuet\v\0\0\0setTimeUnitRk\0\0\0t\11\0\0\0setFamilyFieldArrt\v\0\0\0setFamilyIdRI\0\0\0R+\0\0\0RH\0\0\0Rh\0\0\0R\v\0\0\0R'\0\0\0t
++\0\0\0NORM_HEXA8Rr\0\0\0R{\0\0\0R|\0\0\0Ry\0\0\0t\a\0\0\0getMesht\a\0\0\0getTimeRC\0\0\0t\v\0\0\0getTimeUnitR~\0\0\0(  \0\0\0R    \0\0\0RO\0\0\0R\83\0\0\0R\84\0\0\0t\ 2\0\0\0dat      \0\0\0expected1R\86\0\0\0R\85\0\0\0t\ 2\0\0\0tt(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\f\0\0\0testMEDMesh6d\ 1\0\0s^\0\0\0\0\ 1\ 6\ 1\f\ 1\13\ 1\f\ 1\f\ 1\1c\ 1\10\ 1\10\ 1\f\ 1\19\ 1\10\ 1\10\ 1\f\ 1\19\ 1\10\ 1\10\ 1\r\ 1\1d\ 1\1a\ 1\r\ 1\r\ 1\r\ 1\r\ 1\f\ 17\ 1\10\ 1\10\ 1\12\ 1\ f\ 1\16\ 1\13\ 1\10\ 1\ f\ 1\1c\ 1\16\ 1\1c\ 1\1f\ 1\1d\ 1"\ 1\f\ 1\f\ 1\1f\ 1\13\ 1\13\ 1\13\ 1\19\ 1c\ 1\0\0\0\14\0\0\0\ f\0\0\0C\0\0\0\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0\\ e\0}\ 2\0}\ 3\0}\ 4\0}\ 5\0}\ 6\0}\a\0}\b\0}   \0}
++\0}\v\0}\f\0}\r\0}\ e\0}\ f\0t\ 2\0j\ 3\0\83\0\0}\10\0|\10\0j\ 4\0|\ 2\0j\ 5\0\83\0\0\83\ 1\0\ 1|\10\0j\ 6\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\10\0j\ 6\0d\ 3\0|\ 3\0\83\ 2\0\ 1|\10\0j\ 6\0d\ 4\0|\ 4\0\83\ 2\0\ 1|\10\0j\a\0d\ 2\0|\ 5\0\83\ 2\0\ 1|\10\0j\a\0d\ 3\0|\ 6\0\83\ 2\0\ 1|\10\0j\a\0d\ 4\0|\a\0\83\ 2\0\ 1|\10\0j\a\0d\ 5\0|\b\0\83\ 2\0\ 1|\10\0j\b\0d\ 2\0|     \0\83\ 2\0\ 1|\10\0j\b\0d\ 3\0|
++\0\83\ 2\0\ 1|\10\0j\b\0d\ 4\0|\v\0\83\ 2\0\ 1t        \0|\f\0\83\ 1\0}\11\0x,\0t
++\0|\11\0\83\ 1\0D]\1e\0}\12\0|\10\0j\v\0|\f\0|\12\0\19|\r\0|\12\0\19\83\ 2\0\ 1q\14\ 1Wt   \0|\ e\0\83\ 1\0}\13\0x,\0t
++\0|\13\0\83\ 1\0D]\1e\0}\12\0|\10\0j\f\0|\ e\0|\12\0\19|\ f\0|\12\0\19\83\ 2\0\ 1qO\ 1W|\10\0j\r\0|\ 2\0j\ e\0\83\0\0\83\ 1\0\ 1|\10\0j\ f\0|\ 2\0j\10\0\83\0\0\83\ 1\0\ 1|\0\0j\11\0d\1e\0|\10\0j\12\0d\ 6\0\83\ 1\0\83\ 2\0\ 1|\0\0j\11\0d\1f\0|\10\0j\12\0d\a\0\83\ 1\0\83\ 2\0\ 1|\0\0j\11\0\0|\10\0j\12\0d\b\0\83\ 1\0\83\ 2\0\ 1|\0\0j\11\0d!\0|\10\0j\13\0d\ 6\0d\b\0g\ 2\0\83\ 1\0\83\ 2\0\ 1|\0\0j\11\0d"\0|\10\0j\14\0d    \0\83\ 1\0\83\ 2\0\ 1|\0\0j\11\0d#\0|\10\0j\14\0d
++\0\83\ 1\0\83\ 2\0\ 1|\0\0j\11\0d$\0|\10\0j\15\0d
++\0d    \0g\ 2\0\83\ 1\0\83\ 2\0\ 1|\0\0j\11\0d%\0|\10\0j\16\0d\ 3\0\83\ 1\0\83\ 2\0\ 1|\0\0j\11\0d&\0|\10\0j\16\0d\ 2\0\83\ 1\0\83\ 2\0\ 1|\10\0j\17\0|\ 1\0d\1d\0\83\ 2\0\ 1|\0\0j\18\0t\19\0t\1a\0|\ 1\0\83\ 3\0\ 1d\0\0S('\0\0\0Ns\f\0\0\0Pyfile24.medi\0\0\0\0iÿÿÿÿiþÿÿÿi\ 1\0\0\0t\ 4\0\0\0A2A4t\ 2\0\0\0A1t\ 3\0\0\0AP2t \0\0\0A4A3____________________________t \0\0\0MESH____DALT3___DALLE___________t\ 4\0\0\0A1A2t\ 4\0\0\0A3A1t\ 4\0\0\0A3C5t\ 4\0\0\0A4A3t\ 4\0\0\0B1C1t\ 4\0\0\0B2B4t\ 4\0\0\0B3B1t\ 4\0\0\0B4C3t\ 4\0\0\0C1C4t\ 4\0\0\0C2B2t\ 4\0\0\0C3C2t\ 4\0\0\0C4B3t\ 4\0\0\0C5A4t\ 5\0\0\0DALLEt\ 5\0\0\0DALQ1t\ 5\0\0\0DALQ2t\ 5\0\0\0DALT3t\ 4\0\0\0MESHi\ 2\0\0\0(\ 1\0\0\0iÿÿÿÿ(\0\0\0\0(\ 1\0\0\0iþÿÿÿ(\ 2\0\0\0iÿÿÿÿiþÿÿÿ(\ 1\0\0\0iÿÿÿÿ(\ 1\0\0\0i\0\0\0\0(\ 2\0\0\0i\0\0\0\0iÿÿÿÿ(\ e\0\0\0s\ 4\0\0\0A1A2s\ 4\0\0\0A2A4s\ 4\0\0\0A3A1s\ 4\0\0\0A3C5s\ 4\0\0\0A4A3s\ 4\0\0\0B1C1s\ 4\0\0\0B2B4s\ 4\0\0\0B3B1s\ 4\0\0\0B4C3s\ 4\0\0\0C1C4s\ 4\0\0\0C2B2s\ 4\0\0\0C3C2s\ 4\0\0\0C4B3s\ 4\0\0\0C5A4(\ 5\0\0\0s\ 5\0\0\0DALLEs\ 5\0\0\0DALQ1s\ 5\0\0\0DALQ2s\ 5\0\0\0DALT3s\ 4\0\0\0MESH(\e\0\0\0R\ 4\0\0\0t\15\0\0\0buildMultiLevelMesh_1R>\0\0\0R(\0\0\0Rc\0\0\0t    \0\0\0getCoordsRj\0\0\0\0\0\0R\98\0\0\0Ry\0\0\0Rn\0\0\0t  \0\0\0addFamilyt\15\0\0\0setFamiliesIdsOnGroupRB\0\0\0RC\0\0\0Ri\0\0\0R~\0\0\0R+\0\0\0t\14\0\0\0getGrpNonEmptyLevelst\15\0\0\0getGrpsNonEmptyLevelst\14\0\0\0getFamNonEmptyLevelst\15\0\0\0getFamsNonEmptyLevelst\17\0\0\0getGroupsOnSpecifiedLevR\v\0\0\0R)\0\0\0R*\0\0\0t\ f\0\0\0MEDFileField1TS(\14\0\0\0R      \0\0\0R!\0\0\0R\85\0\0\0R\84\0\0\0t\ 2\0\0\0m0t\ 2\0\0\0f2t\ 2\0\0\0f1t\ 2\0\0\0f0t\ 1\0\0\0pt\ 2\0\0\0n2t\ 2\0\0\0n1t\ 2\0\0\0n0t\ 3\0\0\0fnst\ 4\0\0\0fidst\ 5\0\0\0grpnst\f\0\0\0famIdsPerGrpR\83\0\0\0t\b\0\0\0nbOfFamst\ 1\0\0\0it\b\0\0\0nbOfGrps(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\f\0\0\0testMEDMesh7\95\ 1\0\0sH\0\0\0\0\ 1\ 6\ 16\ 1\f\ 1\13\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\f\ 1\13\ 1\18\ 1\ 4\ 1\f\ 1\13\ 1\18\ 1\ 4\ 1\13\ 1\13\ 2\19\ 1\19\ 1\19\ 1\1f\ 1\19\ 1\19\ 1\1f\ 1\19\ 1\19\ 2\10\ 1\13\ 1c\ 2\0\0\0\ 2\0\0\0\ 4\0\0\0C\0\0\0s\11\0\0\0|\ 1\0d\ 1\0d\ 4\0g\ 2\0=d\0\0S(\ 5\0\0\0Ng{\14®Gáz\94?i\ 3\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0(\0\0\0\0(\ 2\0\0\0R        \0\0\0t\ 2\0\0\0ff(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\11\0\0\0funcToTestDelItem½\ 1\0\0s\ 4\0\0\0\0\ 1\r\ 1c\ 1\0\0\0\b\0\0\0\ 5\0\0\0C\0\0\0\ 1\0\0t\0\0j\ 1\0d\ 1\0\83\ 1\0}\ 1\0|\ 1\0j\ 2\0d\ 2\0d\ 3\0\83\ 2\0\ 1t\ 3\0d\ 1\0\83\ 1\0}\ 2\0d\ 4\0d\ 3\0g\ 2\0d\ 5\0d\ 6\0g\ 2\0d\a\0d\b\0g\ 2\0g\ 3\0}\ 3\0|\0\0j\ 4\0d\ 5\0t\ 5\0|\ 2\0\83\ 1\0\83\ 2\0\ 1xN\0t\ 6\0|\ 2\0\83\ 1\0D]@\0\\ 2\0}\ 4\0}\ 5\0|\0\0j\ 4\0|\ 3\0|\ 4\0\19|\ 5\0j\a\0\83\0\0d\ 3\0 \83\ 2\0\ 1|\0\0j\ 4\0t\b\0|\ 5\0\83\ 1\0t  \0\83\ 2\0\ 1qo\0W|\0\0j\ 4\0d        \0|\ 2\0j
++\0\83\0\0\83\ 2\0\ 1|\0\0j\ 4\0d\ 5\0d\ 6\0g\ 2\0|\ 2\0d\ 4\0\19j\a\0\83\0\0d
++\0 \83\ 2\0\ 1|\0\0j\ 4\0d\ 5\0d\ 6\0g\ 2\0|\ 2\0d\r\0\19j\a\0\83\0\0d
++\0 \83\ 2\0\ 1|\0\0j\ 4\0d\ 5\0d\ 6\0g\ 2\0|\ 2\0d\v\0\19j\a\0\83\0\0d
++\0 \83\ 2\0\ 1|\ 2\0j\ 2\0d\ 2\0d\f\0\83\ 2\0\ 1|\ 2\0j\v\0\83\0\0}\ 6\0g\0\0|\ 6\0D]\10\0}\a\0|\a\0d
++\0 ^\ 2\0qX\ 1}\ 6\0|\0\0j\ 4\0d\ e\0d\ f\0d\10\0g\ 3\0|\ 6\0\83\ 2\0\ 1|\0\0j\f\0|\ 2\0\83\ 1\0\ 1|\ 2\0j\v\0\83\0\0}\ 6\0g\0\0|\ 6\0D]\10\0}\a\0|\a\0d
++\0 ^\ 2\0\ 1}\ 6\0|\0\0j\ 4\0d\11\0g\ 1\0|\ 6\0\83\ 2\0\ 1d\0\0S(\12\0\0\0Ns\f\0\0\0Pyfile17.meds\10\0\0\0Pyfile17_bis.medi\ 2\0\0\0i\ 1\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 6\0\0\0t\16\0\0\0MeasureOfMesh_Extrudediÿÿÿÿg{\14®Gáz\84?i\0\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\r\0\0\0R'\0\0\0R(\0\0\0R\v\0\0\0t\13\0\0\0MEDFileFieldMultiTSR+\0\0\0Ry\0\0\0t  \0\0\0enumerateRº\0\0\0t\ 4\0\0\0typeRà\0\0\0RC\0\0\0t\f\0\0\0getTimeStepsRò\0\0\0(\b\0\0\0R        \0\0\0R\86\0\0\0\0\0\0t
++\0\0\0tsExpectedt\ 3\0\0\0post\ 4\0\0\0f1tst\ 2\0\0\0tst\ 3\0\0\0elt(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testMEDField1Â\ 1\0\0s,\0\0\0\0\ 1\ f\ 1\10\ 1\f\ 1!\ 1\16\ 1\19\ 1\1e\ 1\16\ 1\ 4\ 1\16\ 1$\ 1$\ 1$\ 1\10\ 2\f\0\1d\ 1\19\ 1\r\ 1\f\0\1d\ 1\13\ 1c\ 1\0\0\0\ 3\0\0\0\ 5\0\0\0C\0\0\0sa\0\0\0t\0\0j\ 1\0d\ 1\0\83\ 1\0}\ 1\0|\ 1\0j\ 2\0d\ 2\0d\ 3\0\83\ 2\0\ 1t\ 3\0j\ 1\0d\ 1\0\83\ 1\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 4\0\83\ 2\0\ 1|\0\0j\ 4\0d
++\0d\v\0g\ 2\0t\ 5\0d\ 2\0d        \0\83\ 2\0\83\ 2\0\ 1d\0\0S(\f\0\0\0Ns\f\0\0\0Pyfile19.meds\10\0\0\0Pyfile19_bis.medi\ 2\0\0\0i\0\0\0\0t\ 4\0\0\0tytyR\86\0\0\0t\ 4\0\0\0uiopt\ 2\0\0\0MWt\r\0\0\0VFieldOnNodes(\ 2\0\0\0\0\0\0s\ 2\0\0\0mm(\ 2\0\0\0Rÿ\0\0\0R\0\ 1\0\0(\ 6\0\0\0R'\0\0\0R(\0\0\0R\v\0\0\0\0\0\0R+\0\0\0t\19\0\0\0GetComponentsNamesOfField(\ 3\0\0\0R    \0\0\0R\86\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testMEDField2Ú\ 1\0\0s\f\0\0\0\0\ 1\ f\ 1\10\ 1\ f\ 1\10\ 1\1f\ 1c\ 1\0\0\0     \0\0\0\a\0\0\0C\0\0\0s#\ 1\0\0t\0\0j\ 1\0d\ 1\0\83\ 1\0}\ 1\0|\ 1\0j\ 2\0d\ 2\0d\ 3\0\83\ 2\0\ 1t\ 3\0j\ 1\0d\ 1\0d\ 4\0\83\ 2\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 5\0\83\ 2\0\ 1t\ 4\0j\ 1\0d\ 1\0d\ 4\0d\ 6\0d\a\0\83\ 4\0}\ 2\0|\ 2\0j\ 5\0t\ 6\0d\ 5\0\83\ 2\0}\ 3\0t\a\0d\ 1\0d\b\0d\ 5\0d\ 4\0d\ 6\0d\a\0\83\ 6\0}\ 4\0|\0\0j\b\0|\ 3\0j        \0|\ 4\0d   \0d      \0\83\ 3\0\83\ 1\0\ 1t\ 4\0j\ 1\0d\ 1\0d\ 4\0\83\ 2\0}\ 5\0|\ 5\0j\ 5\0t\ 6\0d\ 5\0\83\ 2\0}\ 6\0|\0\0j\b\0|\ 3\0j  \0|\ 6\0d   \0d      \0\83\ 3\0\83\ 1\0\ 1t\ 4\0j\ 1\0d\ 1\0\83\ 1\0}\a\0|\a\0j\ 5\0t\ 6\0d\ 5\0\83\ 2\0}\b\0|\0\0j\b\0|\ 3\0j     \0|\b\0d   \0d      \0\83\ 3\0\83\ 1\0\ 1d\0\0S(
++\0\0\0Ns\f\0\0\0Pyfile13.meds\10\0\0\0Pyfile13_bis.medi\ 2\0\0\0t\18\0\0\0MyFirstFieldOnGaussPointi\0\0\0\0i\ 1\0\0\0i\ 5\0\0\0t\b\0\0\02DMesh_2g\11ê-\81\99\97q=(
++\0\0\0R'\0\0\0R(\0\0\0R\v\0\0\0\0\0\0\0\0\0t\ f\0\0\0getFieldAtLevelt\v\0\0\0ON_GAUSS_PTt\ e\0\0\0ReadFieldGaussR0\0\0\0R1\0\0\0(        \0\0\0R    \0\0\0R\86\0\0\0\0\0\0R\b\0\0\0\0\0\0t\ 3\0\0\0ff3t\ 2\0\0\0f3t\ 3\0\0\0ff4t\ 2\0\0\0f4(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testMEDField3ã\ 1\0\0s\1e\0\0\0\0\ 1\ f\ 1\10\ 1\12\ 1\10\ 1\18\ 1\12\ 1\e\ 1\1c\ 1\12\ 1\12\ 1\1c\ 1\ f\ 1\12\ 1\1c\ 1c\ 1\0\0\0\ 5\0\0\0\a\0\0\0C\0\0\0\0\0\0t\0\0j\ 1\0d\ 1\0\83\ 1\0}\ 1\0|\ 1\0j\ 2\0d\ 2\0d\ 3\0\83\ 2\0\ 1t\ 3\0j\ 1\0d\ 1\0d\ 4\0\83\ 2\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 5\0\83\ 2\0\ 1t\ 4\0j\ 1\0d\ 1\0d\ 4\0d\ 6\0d\a\0\83\ 4\0}\ 2\0|\ 2\0j\ 5\0t\ 6\0d\ 5\0\83\ 2\0}\ 3\0t\a\0d\ 1\0d\b\0d\ 5\0d\ 4\0d\ 6\0d\a\0\83\ 6\0}\ 4\0|\0\0j\b\0|\ 3\0j  \0|\ 4\0d   \0d      \0\83\ 3\0\83\ 1\0\ 1d\0\0S(
++\0\0\0Ns\f\0\0\0Pyfile14.meds\10\0\0\0Pyfile14_bis.medi\ 2\0\0\0t\10\0\0\0MyFieldOnGaussNEi\0\0\0\0i\ 1\0\0\0i\ 5\0\0\0R\ 5\ 1\0\0g\11ê-\81\99\97q=(
++\0\0\0R'\0\0\0R(\0\0\0R\v\0\0\0\0\0\0\0\0\0R\ 6\ 1\0\0t\v\0\0\0ON_GAUSS_NEt\10\0\0\0ReadFieldGaussNER0\0\0\0R1\0\0\0(\ 5\0\0\0R        \0\0\0R\86\0\0\0\0\0\0R\b\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testMEDField4õ\ 1\0\0s\12\0\0\0\0\ 1\ f\ 1\10\ 1\12\ 1\10\ 1\18\ 1\12\ 1\e\ 1\1c\ 1c\ 1\0\0\0\ 4\0\0\0\a\0\0\0C\0\0\0\ 1\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0\83\ 4\0}\ 1\0|\ 1\0j\ 2\0t\ 3\0d\ 5\0\83\ 2\0}\ 2\0t\ 4\0d\ 1\0d\ 6\0d\ 5\0d\ 2\0d\ 3\0d\ 4\0\83\ 6\0}\ 3\0|\0\0j\ 5\0|\ 2\0j\ 6\0\83\0\0j\a\0\83\0\0j\b\0|\ 3\0j\ 6\0\83\0\0j\a\0\83\0\0d\a\0\83\ 2\0\83\ 1\0\ 1|\ 2\0j\ 6\0\83\0\0j    \0|\ 3\0j\ 6\0\83\0\0d\a\0\83\ 2\0\ 1|\ 2\0j
++\0|\ 3\0j\ 6\0\83\0\0d\b\0d\a\0\83\ 3\0\ 1|\0\0j\ 5\0|\ 2\0j\b\0|\ 3\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|\ 1\0j\ 2\0t\ 3\0d\ 5\0d\ 3\0\83\ 3\0}\ 2\0t\ 4\0d\ 1\0d\ 6\0d\ 5\0d\ 2\0d\ 3\0d\ 4\0\83\ 6\0}\ 3\0|\0\0j\ 5\0|\ 2\0j\b\0|\ 3\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|\ 1\0j\ 2\0t\ 3\0d\ 5\0d     \0\83\ 3\0}\ 2\0|\0\0j\ 5\0|\ 2\0j\b\0|\ 3\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|\ 1\0j\ 2\0t\ 3\0d\ 5\0d\ 4\0\83\ 3\0}\ 2\0|\0\0j\ 5\0|\ 2\0j\b\0|\ 3\0d\a\0d\a\0\83\ 3\0\f\83\ 1\0\ 1|\ 2\0j
++\0|\ 3\0j\ 6\0\83\0\0d
++\0d\a\0\83\ 3\0\ 1|\0\0j\ 5\0|\ 2\0j\b\0|\ 3\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\v\0\0\0Ns\f\0\0\0Pyfile17.medRó\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\0\0\0\0t\b\0\0\0Extrudedg\11ê-\81\99\97q=i\16\0\0\0i\ 3\0\0\0i\f\0\0\0(\v\0\0\0\0\0\0R(\0\0\0R\ 6\ 1\0\0t\b\0\0\0ON_CELLSt\r\0\0\0ReadFieldCellR0\0\0\0\0\0\0\0\0\0R1\0\0\0t\14\0\0\0tryToShareSameCoordst\14\0\0\0changeUnderlyingMesh(\ 4\0\0\0R       \0\0\0\0\0\0R\b\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testMEDField5\ 1\ 2\0\0s"\0\0\0\0\ 1\18\ 1\12\ 1\e\ 11\ 1\1c\ 1\19\ 1\1c\ 2\15\ 1\e\ 1\1c\ 1\15\ 1\1c\ 1\15\ 1\1d\ 1\19\ 1\1c\ 1c\ 1\0\0\0\ 5\0\0\0\b\0\0\0C\0\0\0\ 1\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0|\ 1\0j\ 2\0\83\0\0}\ 2\0|\0\0j\ 3\0t\ 4\0|\ 1\0j\ 5\0t\ 6\0|\ 2\0d\ 3\0\19d\ 3\0\19|\ 2\0d\ 3\0\19d\ 4\0\19d\ 3\0\83\ 6\0\ 1|\ 1\0j\ 5\0t\a\0|\ 2\0d\ 3\0\19d\ 3\0\19|\ 2\0d\ 3\0\19d\ 4\0\19d\ 3\0\83\ 4\0}\ 3\0t\b\0d\ 1\0d\ 5\0d\ 3\0d\ 2\0|\ 2\0d\ 3\0\19d\ 3\0\19|\ 2\0d\ 3\0\19d\ 4\0\19\83\ 6\0}\ 4\0|\0\0j     \0|\ 3\0j
++\0|\ 4\0d\ 6\0d\ 6\0\83\ 3\0\83\ 1\0\ 1t\0\0j\ 1\0d\a\0d\b\0\83\ 2\0}\ 1\0|\ 1\0j\ 2\0\83\0\0}\ 2\0|\ 1\0j\ 5\0t\a\0|\ 2\0d\ 3\0\19d\ 3\0\19|\ 2\0d\ 3\0\19d\ 4\0\19d\ 3\0\83\ 4\0}\ 3\0t\b\0d\a\0d        \0d\ 3\0d\b\0|\ 2\0d\ 3\0\19d\ 3\0\19|\ 2\0d\ 3\0\19d\ 4\0\19\83\ 6\0}\ 4\0|\0\0\0|\ 3\0j
++\0|\ 4\0d\ 6\0d\ 6\0\83\ 3\0\83\ 1\0\ 1|\0\0j\ 3\0t\ 4\0|\ 1\0j\ 5\0t\ 6\0|\ 2\0d\ 3\0\19d\ 3\0\19|\ 2\0d\ 3\0\19d\ 4\0\19d\ 3\0\83\ 6\0\ 1|\0\0j\ 3\0t\ 4\0|\ 1\0j\ 5\0t\a\0|\ 2\0d\ 3\0\19d\ 3\0\19|\ 2\0d\ 3\0\19d\ 4\0\19d\ 3\0d\ 4\0\83\a\0\ 1d\0\0S(
++\0\0\0Ns\v\0\0\0Pyfile7.medt\12\0\0\0VectorFieldOnNodesi\0\0\0\0i\ 1\0\0\0t\f\0\0\03DSurfMesh_1g\11ê-\81\99\97q=s\f\0\0\0Pyfile19.medR\ 1\ 1\0\0t\b\0\0\02DMesh_1(\v\0\0\0\0\0\0R(\0\0\0t\r\0\0\0getIterationsR)\0\0\0R*\0\0\0R\ 6\ 1\0\0R\13\ 1\0\0t\b\0\0\0ON_NODESt\r\0\0\0ReadFieldNodeR0\0\0\0R1\0\0\0(\ 5\0\0\0R        \0\0\0\0\0\0t\ 3\0\0\0itsR\b\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testMEDField6\16\ 2\0\0s\1c\0\0\0\0\ 1\12\ 1\f\ 1/\ 1(\ 1+\ 1\1c\ 1\12\ 1\f\ 1(\ 1+\ 1\1c\ 1/\ 12\ 1c\ 1\0\0\0\ 5\0\0\0\b\0\0\0C\0\0\0s\91\0\0\0t\0\0j\ 1\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0|\ 1\0j\ 2\0\83\0\0}\ 2\0|\ 1\0j\ 3\0t\ 4\0|\ 2\0d\ 3\0\19d\ 3\0\19|\ 2\0d\ 3\0\19d\ 4\0\19d\ 3\0\83\ 4\0}\ 3\0t\ 5\0d\ 1\0d\ 5\0d\ 3\0d\ 2\0|\ 2\0d\ 3\0\19d\ 3\0\19|\ 2\0d\ 3\0\19d\ 4\0\19\83\ 6\0}\ 4\0|\0\0j\ 6\0|\ 3\0j\a\0|\ 4\0d\ 6\0d\ 6\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\a\0\0\0Ns\f\0\0\0Pyfile12.medt\12\0\0\0VectorFieldOnCellsi\0\0\0\0i\ 1\0\0\0t\b\0\0\03DMesh_1g\11ê-\81\99\97q=(\b\0\0\0\0\0\0R(\0\0\0R\e\ 1\0\0R\ 6\ 1\0\0R\13\ 1\0\0R\14\ 1\0\0R0\0\0\0R1\0\0\0(\ 5\0\0\0R     \0\0\0\0\0\0R\1e\ 1\0\0R\b\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testMEDField7'\ 2\0\0s\f\0\0\0\0\ 1\12\ 1\f\ 1(\ 1+\ 1\1c\ 1c\ 1\0\0\0\12\0\0\0\r\0\0\0C\0\0\0\a\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0\83\0\0}\ 3\0t\ 3\0j\ 4\0\83\0\0}\ 4\0|\ 4\0j\ 5\0|\ 3\0j\ 6\0\83\0\0\83\ 1\0\ 1|\ 4\0j\a\0d\ 2\0|\ 3\0\83\ 2\0\ 1|\ 4\0j\b\0|\ 3\0j   \0\83\0\0\83\ 1\0\ 1|\ 4\0j
++\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\v\0j\ 4\0\83\0\0}\ 5\0|\ 5\0j\f\0|\ 2\0\83\ 1\0\ 1|\ 5\0j
++\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\r\0|\ 1\0|\ 2\0j\ 2\0\83\0\0j   \0\83\0\0d\ 2\0|\ 2\0j     \0\83\0\0|\ 2\0j\ e\0\83\0\0d\ 4\0\19|\ 2\0j\ e\0\83\0\0d\ 3\0\19\83\ 6\0}\ 6\0|\ 5\0j\ e\0\83\0\0\\ 3\0}\a\0}\b\0\0|\0\0j\ f\0d\ 2\0|\a\0\83\ 2\0\ 1|\0\0j\ f\0d\ 4\0|\b\0\83\ 2\0\ 1|\0\0j\10\0d\ 5\0|     \0d\ 6\0\83\ 3\0\ 1|\0\0j\11\0|\ 2\0j\12\0|\ 6\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|\ 5\0j\13\0d\b\0d  \0d
++\0\83\ 3\0\ 1|\ 5\0j\ e\0\83\0\0\\ 3\0}\a\0}\b\0}      \0|\0\0j\ f\0d\b\0|\a\0\83\ 2\0\ 1|\0\0j\ f\0d        \0|\b\0\83\ 2\0\ 1|\0\0j\10\0d
++\0|    \0d\ 6\0\83\ 3\0\ 1|\ 2\0j\13\0d\v\0d\f\0d\r\0\83\ 3\0\ 1|\ 5\0j\14\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\ e\0\83\0\0\\ 3\0}\a\0}\b\0}     \0|\0\0j\ f\0d\f\0|\a\0\83\ 2\0\ 1|\0\0j\ f\0d\r\0|\b\0\83\ 2\0\ 1|\0\0j\10\0d\v\0|     \0d\ 6\0\83\ 3\0\ 1|\ 5\0j\15\0\83\0\0\\ 2\0}
++\0}\v\0|\ 6\0j\16\0\83\0\0j\b\0|
++\0j    \0\83\0\0\83\ 1\0\ 1|\0\0j\11\0|
++\0j\12\0|\ 6\0j\16\0\83\0\0d\a\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ f\0d\1d\0d\1e\0f\ 2\0d\1f\0\0f\ 2\0d!\0d"\0f\ 2\0d#\0d$\0f\ 2\0g\ 4\0|\v\0\83\ 2\0\ 1d\10\0}\ 1\0t\0\0j\17\0\83\0\0}\ 2\0|\ 2\0j\ 2\0\83\0\0}\ 3\0t\ 3\0j\ 4\0\83\0\0}\ 4\0|\ 4\0j\ 5\0|\ 3\0j\ 6\0\83\0\0\83\ 1\0\ 1|\ 4\0j\a\0d\ 2\0|\ 3\0\83\ 2\0\ 1|\ 4\0j\b\0|\ 3\0j    \0\83\0\0\83\ 1\0\ 1|\ 4\0j
++\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\v\0j\ 4\0\83\0\0}\ 5\0|\ 5\0j\f\0|\ 2\0\83\ 1\0\ 1d\11\0}\f\0|\ 5\0j\18\0\83\0\0j\19\0d\ 2\0d\ 2\0|\f\0\83\ 3\0}
++\0|\ 5\0j
++\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\1a\0|\ 1\0|\ 2\0j\ 2\0\83\0\0j   \0\83\0\0d\ 2\0|\ 2\0j     \0\83\0\0|\ 2\0j\ e\0\83\0\0d\ 4\0\19|\ 2\0j\ e\0\83\0\0d\ 3\0\19\83\ 6\0}\ 6\0|\0\0j\11\0|\ 2\0j\12\0|\ 6\0d\a\0d\a\0\83\ 3\0\f\83\ 1\0\ 1|\ 2\0j\16\0\83\0\0j\19\0d\ 2\0d\ 2\0|\f\0\83\ 3\0\ 1|\0\0j\11\0|\ 2\0j\12\0|\ 6\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1d\12\0}\ 1\0t\0\0j\e\0\83\0\0}\ 2\0|\ 2\0j\ 2\0\83\0\0}\ 3\0t\ 3\0j\ 4\0\83\0\0}\ 4\0|\ 4\0j\ 5\0|\ 3\0j\ 6\0\83\0\0\83\ 1\0\ 1|\ 4\0j\a\0d\ 2\0|\ 3\0\83\ 2\0\ 1|\ 4\0j\b\0|\ 3\0j   \0\83\0\0\83\ 1\0\ 1|\ 4\0j
++\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\v\0j\ 4\0\83\0\0}\ 5\0|\ 5\0j\f\0|\ 2\0\83\ 1\0\ 1|\ 5\0j
++\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\1c\0|\ 1\0|\ 2\0j\ 2\0\83\0\0j   \0\83\0\0d\ 2\0|\ 2\0j     \0\83\0\0|\ 2\0j\ e\0\83\0\0d\ 4\0\19|\ 2\0j\ e\0\83\0\0d\ 3\0\19\83\ 6\0}\ 6\0|\0\0j\11\0|\ 2\0j\12\0|\ 6\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|\ 5\0j\15\0\83\0\0\\ 2\0}
++\0}\v\0|\ 6\0j\16\0\83\0\0j\b\0|
++\0j    \0\83\0\0\83\ 1\0\ 1|\0\0j\11\0|
++\0j\12\0|\ 6\0j\16\0\83\0\0d\a\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ f\0d%\0d&\0f\ 2\0d'\0d(\0f\ 2\0d)\0d*\0f\ 2\0g\ 3\0|\v\0\83\ 2\0\ 1d\14\0}\ 1\0t\0\0j\1d\0\83\0\0}\ 2\0|\ 2\0j\1e\0\83\0\0}\r\0|\r\0j\1f\0\0\83\0\0\83\ 1\0\ 1|\ 2\0j\1e\0\83\0\0}\ e\0|\ e\0j\1f\0\0\83\0\0\83\ 1\0\ 1|\ 2\0j\ 2\0\83\0\0}\ 3\0t\ 3\0j\ 4\0\83\0\0}\ 4\0|\ 4\0j\ 5\0|\ 3\0j\ 6\0\83\0\0\83\ 1\0\ 1|\ 4\0j\a\0d\ 2\0|\ 3\0\83\ 2\0\ 1|\ 4\0j\b\0|\ 3\0j     \0\83\0\0\83\ 1\0\ 1|\ 4\0j
++\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\v\0j\ 4\0\83\0\0}\ 5\0|\0\0j!\0t"\0|\ 5\0j\f\0|\r\0\83\ 3\0\ 1|\ e\0j#\0\83\0\0j$\0|\ 2\0j#\0\83\0\0j%\0\83\0\0\83\ 1\0\ 1|\0\0j!\0t"\0|\ 5\0j\f\0|\ e\0\83\ 3\0\ 1|\ 5\0j\f\0|\ 2\0\83\ 1\0\ 1|\ 5\0j
++\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\v\0j\ 4\0|\ 1\0|\ 2\0j      \0\83\0\0|\ 2\0j\ e\0\83\0\0d\ 4\0\19|\ 2\0j\ e\0\83\0\0d\ 3\0\19\83\ 4\0}\ f\0|\ f\0j&\0t'\0d\ 2\0\83\ 2\0}\ 6\0|\0\0j\11\0|\ 2\0j\12\0|\ 6\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|\ f\0j(\0\83\0\0}\10\0|\ f\0j)\0d\15\0\83\ 1\0}\11\0|\0\0j\ f\0d\15\0|\11\0j      \0\83\0\0\83\ 2\0\ 1|\0\0j\ f\0d+\0|\11\0j*\0\83\0\0\83\ 2\0\ 1|\0\0j\ f\0d\ e\0|\11\0j+\0\83\0\0\83\ 2\0\ 1|\0\0j\ f\0d\b\0|\11\0j,\0\83\0\0\83\ 2\0\ 1|\0\0j\ f\0d\ 3\0|\11\0j-\0\83\0\0\83\ 2\0\ 1|\ f\0j\15\0\83\0\0\\ 2\0}
++\0}\v\0|\ 6\0j\16\0\83\0\0j\b\0|
++\0j    \0\83\0\0\83\ 1\0\ 1|\0\0j\11\0|
++\0j\12\0|\ 6\0j\16\0\83\0\0d\a\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ f\0d\17\0|
++\0j.\0\83\0\0\83\ 2\0\ 1|\0\0j\ f\0d,\0d-\0f\ 2\0d.\0d/\0f\ 2\0d0\0d1\0f\ 2\0d2\0d3\0f\ 2\0d4\0d5\0f\ 2\0d6\0d7\0f\ 2\0g\ 6\0|\v\0\83\ 2\0\ 1d\0\0S(8\0\0\0Ns\f\0\0\0Pyfile25.medi\0\0\0\0i\ 2\0\0\0i\ 1\0\0\0g\0\0\0\0\0\0\0@i\ e\0\0\0g\11ê-\81\99\97q=i\ 3\0\0\0i\ 4\0\0\0gffffff\ 2@g\0\0\0\0\0\0\16@i\a\0\0\0i\b\0\0\0i\ 6\0\0\0i\ 5\0\0\0s\f\0\0\0Pyfile26.medg\0\0\0\0\0À\96@s\f\0\0\0Pyfile27.medi\14\0\0\0s\f\0\0\0Pyfile28.medt(\0\0\0Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_5iÿÿÿÿi5\0\0\0i\12\0\0\0i\1e\0\0\0i$\0\0\0i*\0\0\0i,\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 2\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 6\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\ 5\0\0\0(\ 2\0\0\0i\ 5\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 6\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 6\0\0\0i\ e\0\0\0(\ 2\0\0\0i\ 6\0\0\0i\0\0\0\0(\ 2\0\0\0i\ e\0\0\0i\14\0\0\0(\f\0\0\0iÿÿÿÿi\ 1\0\0\0iÿÿÿÿiÿÿÿÿi\ 1\0\0\0iÿÿÿÿiÿÿÿÿi\0\0\0\0i\0\0\0\0iÿÿÿÿi\0\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\12\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\12\0\0\0i\1e\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\1e\0\0\0i$\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\0\0\0\0(\ 2\0\0\0i$\0\0\0i*\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\ 1\0\0\0(\ 2\0\0\0i*\0\0\0i,\0\0\0(\ 2\0\0\0i\ 6\0\0\0i\0\0\0\0(\ 2\0\0\0i,\0\0\0i5\0\0\0(/\0\0\0R\ 4\0\0\0t\16\0\0\0buildVecFieldOnCells_1R¹\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0RB\0\0\0RC\0\0\0R\v\0\0\0\0\0\0t\14\0\0\0setFieldNoProfileSBTR\14\ 1\0\0\0\0\0R+\0\0\0t\11\0\0\0assertAlmostEqualR0\0\0\0R1\0\0\0\0\0\0t\10\0\0\0copyTimeInfoFromt\1a\0\0\0getUndergroundDataArrayExtt\b\0\0\0getArrayt\16\0\0\0buildVecFieldOnNodes_1t\17\0\0\0getUndergroundDataArrayR\9f\0\0\0R\1d\ 1\0\0t\18\0\0\0buildVecFieldOnGaussNE_1R\10\ 1\0\0t\1e\0\0\0buildVecFieldOnGauss_2_SimplerRq\0\0\0t\11\0\0\0setDiscretizationt#\0\0\0MEDCouplingFieldDiscretizationGaussR)\0\0\0R*\0\0\0t\11\0\0\0getDiscretizationt\11\0\0\0setArrayOfDiscIdst\11\0\0\0getArrayOfDiscIdsR\ 6\ 1\0\0R\a\ 1\0\0t\16\0\0\0getFieldSplitedByType2t\ f\0\0\0getLocalizationt\f\0\0\0getRefCoordst\18\0\0\0getNumberOfPointsInCellst\16\0\0\0getNumberOfGaussPointst\f\0\0\0getDimensionR¨\0\0\0(\12\0\0\0R    \0\0\0t\ 5\0\0\0fnameRã\0\0\0R\84\0\0\0t\ 3\0\0\0mm1t\ 3\0\0\0ff1Râ\0\0\0t\ 3\0\0\0ittt\ 3\0\0\0orrt\ 2\0\0\0tiR¼\0\0\0t\ 5\0\0\0infost\ 2\0\0\0nvt\f\0\0\0f1InvalidCpyt\r\0\0\0f1InvalidCpy2t\ 3\0\0\0ff2t\ 3\0\0\0sbtt\ 4\0\0\0loc1(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testMEDField80\ 2\0\0\0\0\0\0\ 1\ 6\ 1\f\ 1\f\ 1\f\ 1\13\ 1\10\ 1\13\ 1\10\ 1\f\ 1\r\ 1\10\ 1A\ 1\15\ 1\10\0\10\0\13\ 1\1c\ 1\13\ 1\15\ 1\10\0\10\0\13\ 1\13\ 1\r\ 1\15\ 1\10\0\10\0\13\ 1\12\ 1\19\ 1\1f\ 14\ 2\ 6\ 1\f\ 1\f\ 1\f\ 1\13\ 1\10\ 1\13\ 1\10\ 1\f\ 1\r\ 1\ 6\ 1\e\ 1\10\ 1A\ 1\1d\ 1\19\ 1\1c\ 2\ 6\ 1\f\ 1\f\ 1\f\ 1\13\ 1\10\ 1\13\ 1\10\ 1\f\ 1\r\ 1\10\ 1A\ 1\1c\ 1\12\ 1\19\ 1\1f\ 1+\ 2\ 6\ 1\f\ 1\f\ 1\10\ 1\f\ 1\10\ 1\f\ 1\f\ 1\13\ 1\10\ 1\13\ 1\10\ 1\f\ 1\16\ 1\1f\ 1\16\ 1\r\ 1\10\ 12\ 1\12\ 1\1c\ 1\f\ 1\ f\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1\12\ 1\19\ 1\1f\ 1\16\ 1F\ 2c\ 1\0\0\0\17\0\0\0\ 4\0\0\0C\0\0\0\ 4\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0t\ 2\0j\ 3\0\83\0\0}\ 3\0t\ 4\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 5\0|\ 3\0j\ 6\0\83\0\0\83\ 1\0\ 1|\ 4\0j\a\0d\ 2\0|\ 3\0\83\ 2\0\ 1|\ 4\0j\b\0|\ 3\0\0\83\0\0\83\ 1\0\ 1t
++\0j\ 1\0\83\0\0}\ 5\0|\ 5\0j\v\0|\ 4\0\83\ 1\0\ 1t\ 2\0j\f\0\83\0\0}\ 6\0t\ 4\0j\ 1\0\83\0\0}\a\0|\a\0j\ 5\0|\ 6\0j\ 6\0\83\0\0\83\ 1\0\ 1|\a\0j\a\0d\ 2\0|\ 6\0\83\ 2\0\ 1|\a\0j\b\0|\ 6\0j  \0\83\0\0\83\ 1\0\ 1t
++\0j\ 1\0\83\0\0}\b\0|\b\0j\v\0|\a\0\83\ 1\0\ 1t\r\0j\ 1\0\83\0\0}     \0|      \0j\ e\0d\ 2\0|\ 4\0\83\ 2\0\ 1\0j\ e\0d\ 3\0|\a\0\83\ 2\0\ 1|\ 2\0j\ f\0|   \0\83\ 1\0\ 1xO\0t\10\0d\ 4\0d\ 5\0g\ 2\0|   \0\83\ 2\0D]8\0\\ 2\0}
++\0}\v\0|\0\0j\11\0|
++\0|\v\0\0\83\0\0\83\ 2\0\ 1|\0\0j\11\0t\12\0|\v\0\83\ 1\0t\ 4\0\83\ 2\0\ 1q/\ 1W|\0\0j\11\0d\14\0|\ 2\0j\13\0\83\0\0j\14\0\83\0\0\83\ 2\0\ 1t\15\0j\ 1\0\83\0\0}\f\0t\15\0j\ 1\0\83\0\0}\r\0t\15\0j\ 1\0\83\0\0}\ e\0|\ 3\0j\16\0t\17\0\83\ 1\0}\ f\0|\ f\0j\b\0d\ 6\0\83\ 1\0\ 1|\ f\0j\18\0t\19\0t\1a\0\83\ 2\0}\ f\0|\ f\0j\e\0\83\0\0j\1c\0d\ 2\0d\a\0\83\ 2\0\ 1|\f\0j\1d\0|\ f\0\83\ 1\0\ 1|\ 6\0j\16\0t\17\0\83\ 1\0}\10\0|\10\0j\b\0d\b\0\83\ 1\0\ 1|\10\0j\18\0t\19\0t\1a\0\83\ 2\0}\10\0|\10\0j\e\0\83\0\0j\1c\0d\ 2\0d       \0\83\ 2\0\ 1|\r\0j\1d\0|\10\0\83\ 1\0\ 1|\10\0j\1e\0\83\0\0}\11\0|\11\0j\b\0d
++\0\83\ 1\0\ 1|\11\0j\18\0t\19\0t\1a\0\83\ 2\0}\11\0|\11\0j\1f\0d\v\0d\f\0\83\ 2\0\ 1|\11\0j\e\0\83\0\0j\1c\0d\ 2\0d\r\0\83\ 2\0\ 1|\11\0j\e\0\83\0\0j\1c\0d\ 3\0d\ e\0\83\ 2\0\ 1|\ e\0j\1d\0|\11\0\83\ 1\0\ 1\0j\ 1\0\83\0\0}\12\0|\12\0j!\0|\f\0\83\ 1\0\ 1|\12\0j!\0|\r\0\83\ 1\0\ 1|\12\0j!\0|\ e\0\83\ 1\0\ 1x<\0t\10\0d\ 6\0d\b\0d
++\0g\ 3\0|\12\0\83\ 2\0D]"\0\\ 2\0}
++\0}\13\0|\0\0j\11\0|
++\0|\13\0\0\83\0\0\83\ 2\0\ 1q\r\ 3W|\ 2\0j"\0|\12\0\83\ 1\0\ 1d\ f\0}\14\0|\ 2\0j#\0|\14\0d\v\0\83\ 2\0\ 1t\0\0j\ 1\0|\14\0\83\ 1\0}\15\0|\0\0j\11\0d\v\0|\15\0j$\0\83\0\0\83\ 2\0\ 1|\0\0j\11\0d\10\0|\15\0j%\0\83\0\0\83\ 2\0\ 1|\0\0j&\0t'\0|\15\0j\13\0\83\0\0j(\0d\ 2\0\83\ 1\0t\ 4\0\83\ 2\0\83\ 1\0\ 1|\0\0j&\0t'\0|\15\0j\13\0\83\0\0d\ 2\0\19t\ 4\0\83\ 2\0\83\ 1\0\ 1|\0\0j&\0t'\0|\15\0j\13\0\83\0\0d\ 5\0\19t\ 4\0\83\ 2\0\83\ 1\0\ 1|\15\0j\13\0\83\0\0j(\0d\ 2\0\83\ 1\0j)\0d\ 2\0\83\ 1\0}\16\0|\0\0j&\0|\ 3\0j*\0|\16\0d\11\0\83\ 2\0\83\ 1\0\ 1|\0\0j\11\0d\15\0|\15\0j+\0\83\0\0j,\0\83\0\0\83\ 2\0\ 1|\0\0j\11\0d\16\0g\ 1\0|\15\0j+\0\83\0\0j-\0d\v\0\83\ 1\0j.\0\83\0\0\83\ 2\0\ 1|\0\0j\11\0d\17\0g\ 1\0|\15\0j+\0\83\0\0d\v\0\19j.\0\83\0\0\83\ 2\0\ 1|\0\0j\11\0d\18\0g\ 1\0|\15\0j+\0\83\0\0j/\0d\b\0\83\ 1\0j.\0\83\0\0\83\ 2\0\ 1|\0\0j\11\0d\19\0g\ 1\0|\15\0j+\0\83\0\0d\b\0\19j.\0\83\0\0\83\ 2\0\ 1d\0\0S(\1a\0\0\0Ns\f\0\0\0Pyfile29.medi\0\0\0\0i\ 1\0\0\0t\b\0\0\01DMesh_1t\r\0\0\02DCurveMesh_1Rã\0\0\0s
++\0\0\0power [kW]t\ 3\0\0\0f21s\b\0\0\0sta [mm]t\ 3\0\0\0f22i\ 2\0\0\0s\11\0\0\03*x*IVec+2*x*JVecs\r\0\0\0distance [km]s\11\0\0\0displacement [cm]s\ e\0\0\0Pyfile29_2.medi\ 3\0\0\0g\11ê-\81\99\97q=iÿÿÿÿg\0\0\0\0\0\0\0\0(\ 2\0\0\0s\b\0\0\01DMesh_1s\r\0\0\02DCurveMesh_1(\ 3\0\0\0s\ 2\0\0\0f1s\ 3\0\0\0f21s\ 3\0\0\0f22(\ 3\0\0\0iÿÿÿÿiÿÿÿÿg\0\0\0\0\0\0\0\0(\ 3\0\0\0iÿÿÿÿiÿÿÿÿg\0\0\0\0\0\0\0\0(\ 3\0\0\0iÿÿÿÿiÿÿÿÿg\0\0\0\0\0\0\0\0(\ 3\0\0\0iÿÿÿÿiÿÿÿÿg\0\0\0\0\0\0\0\0(0\0\0\0t\v\0\0\0MEDFileDataR(\0\0\0R\ 4\0\0\0t\r\0\0\0build1DMesh_1R>\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0RB\0\0\0RC\0\0\0t\12\0\0\0MEDFileMeshMultiTSt\ e\0\0\0setOneTimeStept\12\0\0\0build2DCurveMesh_1t\r\0\0\0MEDFileMeshest\f\0\0\0setMeshAtPost      \0\0\0setMeshest\ 3\0\0\0zipR+\0\0\0\0\0\0\0\0\0getMeshest\ e\0\0\0getMeshesNamesRô\0\0\0t\ f\0\0\0getMeasureFieldR.\0\0\0t\18\0\0\0buildNewTimeReprFromThist\b\0\0\0ONE_TIMERN\0\0\0R)\ 1\0\0R\97\0\0\0t\17\0\0\0appendFieldNoProfileSBTRq\0\0\0t        \0\0\0applyFunct\r\0\0\0MEDFileFieldst \0\0\0pushFieldt   \0\0\0setFieldsR\v\0\0\0t\11\0\0\0getNumberOfMeshest\11\0\0\0getNumberOfFieldsR0\0\0\0Rt\0\0\0t\f\0\0\0getMeshAtPosR}\0\0\0R1\0\0\0t     \0\0\0getFieldst\ e\0\0\0getFieldsNamest\r\0\0\0getFieldAtPosR÷\0\0\0t\10\0\0\0getFieldWithName(\17\0\0\0R       \0\0\0R9\ 1\0\0t\ 1\0\0\0dR\84\0\0\0R:\ 1\0\0t\ 4\0\0\0mmm1R\85\0\0\0\0\0\0t\ 4\0\0\0mmm2R­\0\0\0t\ 4\0\0\0namet\ 3\0\0\0mmmR;\ 1\0\0t\ 4\0\0\0ff21t\ 4\0\0\0ff22Rã\0\0\0RI\ 1\0\0RJ\ 1\0\0t\ 2\0\0\0fst\ 4\0\0\0fmtst\ 6\0\0\0fname2t\ 2\0\0\0d2t\ 5\0\0\0m1bis(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\10\0\0\0testMEDFileData1\94\ 2\0\0s\8a\0\0\0\0\ 1\ 6\ 1\f\ 2\f\ 1\f\0\13\0\10\0\13\ 1\f\ 1\r\ 1\f\ 1\f\0\13\0\10\0\13\ 1\f\0\r\ 1\f\0\10\0\10\ 1\r\ 1"\ 1\16\ 1\16\ 1\ 4\ 1\1c\ 2\f\ 1\f\ 1\f\ 1\ f\0\r\0\12\ 1\16\ 1\r\ 1\ f\0\r\0\12\ 1\16\ 1\r\ 1\f\0\r\0\12\ 1\10\ 1\16\0\16\ 1\r\ 1\f\ 1\r\0\r\0\r\ 1%\ 1\16\ 1\ 4\ 1\r\ 2\ 6\ 1\10\ 2\ f\ 1\16\ 1\16\ 1%\ 1 \ 1 \ 1\1e\ 1\19\ 1\1c\ 1(\ 1#\ 1(\ 1#\ 1c\ 1\0\0\0\r\0\0\0\r\0\0\0C\0\0\0\ 3\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0t\ 2\0j\ 3\0\83\0\0}\ 3\0|\ 3\0j\ 4\0|\ 2\0j\ 5\0\83\0\0\83\ 1\0\ 1|\ 3\0j\ 6\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\ 3\0j\a\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\b\0j\ 3\0\83\0\0}\ 4\0t      \0j\ 3\0t
++\0t\v\0\83\ 2\0}\ 5\0|\ 5\0j\f\0d\ 4\0\83\ 1\0\ 1t\r\0j\ 3\0\83\0\0}\ 6\0|\ 6\0j\ e\0d#\0d\ 6\0\83\ 2\0\ 1|\ 6\0j\ f\0d\a\0\83\ 1\0\ 1|\ 6\0j\10\0d\ 3\0\83\ 1\0\ 1|\ 6\0j\11\0d\ 2\0d\b\0\83\ 2\0\ 1|\ 6\0j\11\0d\ 6\0d       \0\83\ 2\0\ 1|\ 5\0j\12\0|\ 6\0\83\ 1\0\ 1t\13\0j\ 3\0\83\0\0}\a\0|\a\0j\ e\0d\ 5\0d\ 6\0\83\ 2\0\ 1|\a\0j\ f\0d\ 2\0\83\ 1\0\ 1|\a\0j\f\0d
++\0\83\ 1\0\ 1|\ 4\0j\14\0|\ 5\0|\ 3\0d\ 2\0|\a\0\83\ 4\0\ 1|\ 4\0j\15\0d\v\0g\ 1\0d\f\0f\ 2\0g\ 1\0\83\ 1\0\ 1|\ 4\0j\16\0\83\0\0}\ 4\0|\ 4\0j\a\0|\ 1\0d\ 2\0\83\ 2\0\ 1|\ 4\0j\17\0t
++\0d\ 2\0|\ 3\0\83\ 3\0\\ 2\0}\b\0}     \0|\b\0j\f\0d\r\0\83\ 1\0\ 1|\0\0j\18\0|   \0j\19\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\18\0|\b\0j\1a\0|\ 6\0d\ e\0\83\ 2\0\83\ 1\0\ 1t\b\0j\ 3\0|\ 1\0|\ 5\0j\e\0\83\0\0d\ f\0d\ f\0\83\ 4\0}
++\0t\b\0j\ 3\0|\ 1\0|\ 5\0j\e\0\83\0\0d\ f\0d\ f\0\83\ 4\0}\v\0|
++\0j\1c\0|\v\0\83\ 1\0\ 1|
++\0j\1d\0\83\0\0}\f\0|\0\0j\1e\0d\10\0|\f\0d\ 2\0\19d\ 2\0\19\83\ 2\0\ 1|\0\0j\1e\0d\ 2\0|\f\0d\ 2\0\19d\ 6\0\19d\ 2\0\19d\ 2\0\19\83\ 2\0\ 1|\0\0j\1e\0d\r\0|\f\0d\ 2\0\19d\ 6\0\19d\ 2\0\19d\ 3\0\19\83\ 2\0\ 1|\0\0j\1e\0d\11\0d\12\0d\ 5\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0g\f\0|\f\0d\ 2\0\19d\ 6\0\19d\ 2\0\19d\ 6\0\19j\1f\0\83\0\0\83\ 2\0\ 1|\0\0j\1e\0d\1c\0|\f\0d\ 6\0\19d\ 2\0\19\83\ 2\0\ 1|\0\0j\1e\0d\ 2\0|\f\0d\ 6\0\19d\ 6\0\19d\ 2\0\19d\ 2\0\19\83\ 2\0\ 1|\0\0j\1e\0d\f\0|\f\0d\ 6\0\19d\ 6\0\19d\ 2\0\19d\ 3\0\19\83\ 2\0\ 1|\0\0j\1e\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\ 6\0|\f\0d\ 6\0\19d\ 6\0\19d\ 2\0\19d\ 6\0\19j\1f\0\83\0\0\83\ 2\0\ 1|\0\0j\1e\0d\ 2\0g\ 1\0|
++\0\0\83\0\0\83\ 2\0\ 1|
++\0j\17\0t
++\0d\ 2\0|\ 3\0\83\ 3\0\\ 2\0}\b\0}     \0|\b\0j\f\0d\r\0\83\ 1\0\ 1|\0\0j\18\0|   \0j\19\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\18\0|\b\0j\1a\0|\ 6\0d\ e\0\83\ 2\0\83\ 1\0\ 1d\0\0S($\0\0\0Ns\f\0\0\0Pyfile30.medi\0\0\0\0i\ 2\0\0\0t\ 2\0\0\0F1i    \0\0\0i\ 1\0\0\0g\0\0\0\0\0\0\1c@s
++\0\0\0sigX [MPa]s
++\0\0\0sigY [GPa]t\ 4\0\0\0sup1t\ f\0\0\0sup1_NORM_QUAD4t\a\0\0\0ForV650R&\0\0\0g\9b\86\9b\84\ 6=iÿÿÿÿi\ 3\0\0\0i\a\0\0\0i\b\0\0\0i
++\0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0i\ e\0\0\0i\ f\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0i\ 4\0\0\0i\13\0\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\12\0\0\0(!\0\0\0R\ 4\0\0\0t\r\0\0\0build2DMesh_3R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0R\v\0\0\0\0\0\0t\16\0\0\0MEDCouplingFieldDoubleR\13\ 1\0\0RX\ 1\0\0RB\0\0\0RY\0\0\0t\ 5\0\0\0alloct\ 4\0\0\0iotat \0\0\0rearrangeR\97\0\0\0t\b\0\0\0setArrayRk\0\0\0t\ f\0\0\0setFieldProfilet\ f\0\0\0changePflsNamesRq\0\0\0t\13\0\0\0getFieldWithProfileR0\0\0\0t\1c\0\0\0isEqualWithoutConsideringStrR1\0\0\0RC\0\0\0t\f\0\0\0deepCpyGlobsR3\ 1\0\0R+\0\0\0RH\0\0\0t\18\0\0\0getTypesOfFieldAvailable(\r\0\0\0R     \0\0\0R9\ 1\0\0R\84\0\0\0R:\ 1\0\0R;\ 1\0\0\0\0\0Re\ 1\0\0\0\0\0t\ 4\0\0\0valst\ 3\0\0\0pflRC\ 1\0\0R   \ 1\0\0RD\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testMEDField9Í\ 2\0\0s\\0\0\0\0\ 2\ 6\ 1\f\ 1\f\0\13\0\10\ 1\10\ 1\f\ 1\12\0\r\ 1\f\0\10\0\r\0\r\0\10\0\10\ 1\r\ 1\f\0\10\0\r\0\r\ 2\16\ 1\19\ 1\f\ 1\10\ 2\e\0\r\ 1\16\ 1\19\ 2\1e\ 1\1e\ 1\r\ 1\f\ 1\18\ 1 \ 1 \ 1J\ 1\18\ 1 \ 1 \ 18\ 1\19\ 1\e\0\r\ 1\16\ 1\19\ 1c\ 1\0\0\0\f\0\0\0\a\0\0\0C\0\0\0s|\ 3\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 6\0t\ 3\0\83\ 2\0\ 1t\ 4\0j\ 5\0\83\0\0}\ 3\0|\ 3\0j\ 6\0|\ 2\0j\a\0\83\0\0\83\ 1\0\ 1|\ 3\0j\b\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\ 3\0j  \0|\ 2\0j
++\0\83\0\0\83\ 1\0\ 1|\ 3\0j\v\0|\ 1\0d\ 5\0\83\ 2\0\ 1t\f\0j\ 5\0\83\0\0}\ 4\0t\r\0j\ 5\0t\ e\0t\ f\0\83\ 2\0}\ 5\0|\ 5\0j    \0d\b\0\83\ 1\0\ 1t\10\0j\ 5\0\83\0\0}\ 6\0|\ 6\0j\11\0d\13\0d\ 3\0\83\ 2\0\ 1|\ 6\0j\12\0d     \0\83\ 1\0\ 1|\ 6\0j\13\0d\ 5\0\83\ 1\0\ 1|\ 6\0j\14\0d\ 2\0d
++\0\83\ 2\0\ 1|\ 6\0j\14\0d\ 3\0d\v\0\83\ 2\0\ 1|\ 5\0j\15\0|\ 6\0\83\ 1\0\ 1t\16\0j\ 5\0\83\0\0}\a\0|\a\0j\17\0d\ 2\0d\ 3\0d\ 5\0d\ 4\0g\ 4\0d\ 4\0d\ 3\0\83\ 3\0\ 1|\a\0j     \0d\f\0\83\ 1\0\ 1|\ 4\0j\18\0|\ 5\0|\ 3\0d\ 2\0|\a\0\83\ 4\0\ 1|\ 5\0j\19\0d\r\0d\ 3\0d\ 5\0\83\ 3\0\ 1|\ 6\0j\1a\0d\ e\0\83\ 1\0}\b\0|\b\0j\e\0|\ 6\0\83\ 1\0\ 1|\ 5\0j\15\0|\b\0\83\ 1\0\ 1|\ 4\0j\18\0|\ 5\0|\ 3\0d\ 2\0|\a\0\83\ 4\0\ 1|\ 4\0j\1c\0\83\0\0}\ 4\0|\ 4\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1|\ 4\0j\1d\0t\ e\0d\ 3\0d\ 5\0d\ 2\0|\ 3\0\83\ 5\0\\ 2\0}        \0}
++\0|    \0j      \0d\ f\0\83\ 1\0\ 1|\0\0j\1e\0|
++\0j\1f\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1e\0\0\0|\b\0d\10\0\83\ 2\0\83\ 1\0\ 1|\ 4\0j\1d\0t\ e\0d\11\0d\11\0d\ 2\0|\ 3\0\83\ 5\0\\ 2\0}   \0}
++\0|    \0j      \0d\ f\0\83\ 1\0\ 1|\0\0j\1e\0|
++\0j\1f\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1e\0\0\0|\ 6\0d\10\0\83\ 2\0\83\ 1\0\ 1t\f\0j\ 5\0|\ 1\0|\ 5\0j
++\0\83\0\0\83\ 2\0}\v\0|\0\0j!\0d\14\0d\15\0g\ 2\0|\v\0j"\0\83\0\0\83\ 2\0\ 1|\v\0j\1d\0t\ e\0d\ 3\0d\ 5\0d\ 2\0|\ 3\0\83\ 5\0\\ 2\0}    \0}
++\0|    \0j      \0d\ f\0\83\ 1\0\ 1|\0\0j\1e\0|
++\0j\1f\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1e\0\0\0|\b\0d\10\0\83\ 2\0\83\ 1\0\ 1|\v\0j\1d\0t\ e\0d\11\0d\11\0d\ 2\0|\ 3\0\83\ 5\0\\ 2\0}   \0}
++\0|    \0j      \0d\ f\0\83\ 1\0\ 1|\0\0j\1e\0|
++\0j\1f\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1e\0\0\0|\ 6\0d\10\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\16\0\0\0Ns\f\0\0\0Pyfile31.medi\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0t\ 2\0\0\0F2g\0\0\0\0\0\0\1c@s
++\0\0\0sigX [MPa]s
++\0\0\0sigY [GPa]t\ 4\0\0\0sup2g333333ó?s\ 3\0\0\02*xR&\0\0\0g\9b\86\9b\84\ 6=iÿÿÿÿg\0\0\0\0\0\0\0\0i\b\0\0\0(\ 3\0\0\0iÿÿÿÿiÿÿÿÿg\0\0\0\0\0\0\0\0(\ 3\0\0\0i\ 1\0\0\0i\ 2\0\0\0g333333ó?(#\0\0\0R\ 4\0\0\0t\r\0\0\0build2DMesh_1t\r\0\0\0renumberCellsRN\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0RB\0\0\0RC\0\0\0R\v\0\0\0\0\0\0Rw\ 1\0\0R\13\ 1\0\0RX\ 1\0\0RY\0\0\0Rx\ 1\0\0Ry\ 1\0\0Rz\ 1\0\0R\97\0\0\0R{\ 1\0\0Rk\0\0\0RZ\0\0\0t\12\0\0\0appendFieldProfileR°\0\0\0RZ\ 1\0\0t\12\0\0\0copyStringInfoFromRq\0\0\0R~\ 1\0\0R0\0\0\0R\7f\ 1\0\0R1\0\0\0R+\0\0\0\0\0\0(\f\0\0\0R      \0\0\0R9\ 1\0\0R\84\0\0\0R:\ 1\0\0R;\ 1\0\0\0\0\0Re\ 1\0\0\0\0\0R\ 2\0\0\0R\82\ 1\0\0R\83\ 1\0\0RC\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ e\0\0\0testMEDField10ô\ 2\0\0s`\0\0\0\0\ 1\ 6\ 1\f\ 1"\ 1\f\0\13\0\10\0\13\ 1\10\ 1\f\ 1\12\0\r\ 1\f\0\10\0\r\0\r\0\10\0\10\ 1\r\ 1\f\0\1f\0\r\ 2\16\ 1\13\0\ f\0\r\0\r\ 1\16\ 1\f\ 1\10\ 2!\0\r\ 1\16\ 1\19\ 1!\0\r\ 1\16\ 1\19\ 2\18\ 1\1c\ 1!\0\r\ 1\16\ 1\19\ 1!\0\r\ 1\16\ 1\19\ 1c\ 1\0\0\0\v\0\0\0\a\0\0\0C\0\0\0sQ\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 6\0t\ 3\0\83\ 2\0\ 1t\ 4\0j\ 5\0\83\0\0}\ 3\0|\ 3\0j\ 6\0|\ 2\0j\a\0\83\0\0\83\ 1\0\ 1|\ 3\0j\b\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\ 3\0j   \0|\ 1\0d\ 5\0\83\ 2\0\ 1t
++\0j\ 5\0\83\0\0}\ 4\0t\v\0j\ 5\0t\f\0t\r\0\83\ 2\0}\ 5\0|\ 5\0j\ e\0d\b\0\83\ 1\0\ 1t\ f\0j\ 5\0\83\0\0}\ 6\0|\ 6\0j\10\0d\13\0d\ 3\0\83\ 2\0\ 1|\ 6\0j\11\0d
++\0\83\ 1\0\ 1|\ 6\0j\12\0d\ 5\0\83\ 1\0\ 1|\ 6\0j\13\0d\ 2\0d\v\0\83\ 2\0\ 1|\ 6\0j\13\0d\ 3\0d\f\0\83\ 2\0\ 1|\ 5\0j\14\0|\ 6\0\83\ 1\0\ 1t\15\0j\ 5\0\83\0\0}\a\0|\a\0j\16\0d\ 3\0d\ 5\0d\ 4\0d\a\0d\r\0d\ e\0g\ 6\0d       \0d\ 3\0\83\ 3\0\ 1|\a\0j\ e\0d\ f\0\83\ 1\0\ 1|\ 4\0j\17\0|\ 5\0|\ 3\0d\ 2\0|\a\0\83\ 4\0\ 1|\0\0j\18\0|\ 4\0j\19\0\83\0\0d\10\0g\0\0f\ 2\0\83\ 2\0\ 1|\ 4\0j     \0|\ 1\0d\ 2\0\83\ 2\0\ 1|\ 4\0j\1a\0t\f\0d\ 2\0|\ 3\0\83\ 3\0\\ 2\0}\b\0}    \0|\b\0j\ e\0d\11\0\83\ 1\0\ 1|\0\0j\e\0|   \0j\1c\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\e\0|\b\0j\1d\0|\ 6\0d\12\0\83\ 2\0\83\ 1\0\ 1t
++\0j\ 5\0|\ 1\0|\ 5\0j\1e\0\83\0\0d\10\0d\10\0\83\ 4\0}
++\0|
++\0j\1a\0t\f\0d\ 2\0|\ 3\0\83\ 3\0\\ 2\0}\b\0}       \0|\b\0j\ e\0d\11\0\83\ 1\0\ 1|\0\0j\e\0|   \0j\1c\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\e\0|\b\0j\1d\0|\ 6\0d\12\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\14\0\0\0Ns\f\0\0\0Pyfile32.medi\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0t\ 6\0\0\0F1Nodei\ 6\0\0\0g\0\0\0\0\0\0\1c@s
++\0\0\0sigX [MPa]s
++\0\0\0sigY [GPa]i\a\0\0\0i\b\0\0\0t\b\0\0\0sup1NodeiÿÿÿÿR&\0\0\0g\9b\86\9b\84\ 6=i\f\0\0\0(\1f\0\0\0R\ 4\0\0\0R\87\ 1\0\0R\88\ 1\0\0RN\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0R\v\0\0\0\0\0\0Rw\ 1\0\0R\1c\ 1\0\0RX\ 1\0\0RB\0\0\0RY\0\0\0Rx\ 1\0\0Ry\ 1\0\0Rz\ 1\0\0R\97\0\0\0R{\ 1\0\0Rk\0\0\0RZ\0\0\0R|\ 1\0\0R+\0\0\0R,\0\0\0R~\ 1\0\0R0\0\0\0R\7f\ 1\0\0R1\0\0\0RC\0\0\0(\v\0\0\0R    \0\0\0R9\ 1\0\0R\84\0\0\0R:\ 1\0\0R;\ 1\0\0\0\0\0Re\ 1\0\0\0\0\0R\82\ 1\0\0R\83\ 1\0\0RC\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ e\0\0\0testMEDField11\18\ 3\0\0sB\0\0\0\0\ 1\ 6\ 1\f\ 1"\ 1\f\0\13\0\10\ 1\10\ 1\f\ 1\12\0\r\ 1\f\0\10\0\r\0\r\0\10\0\10\ 1\r\ 1\f\0%\0\r\ 2\16\ 1\1c\ 1\10\ 2\e\0\r\ 1\16\ 1\19\ 2\1e\ 1\e\0\r\ 1\16\ 1\19\ 1c\ 1\0\0\0\f\0\0\0\a\0\0\0C\0\0\0sG\ 3\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 6\0t\ 3\0\83\ 2\0\ 1t\ 4\0j\ 5\0\83\0\0}\ 3\0|\ 3\0j\ 6\0|\ 2\0j\a\0\83\0\0\83\ 1\0\ 1|\ 3\0j\b\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\ 3\0j      \0|\ 1\0d\ 5\0\83\ 2\0\ 1t
++\0j\ 5\0\83\0\0}\ 4\0t\v\0j\ 5\0t\f\0t\r\0\83\ 2\0}\ 5\0|\ 5\0j\ e\0d\b\0\83\ 1\0\ 1t\ f\0j\ 5\0\83\0\0}\ 6\0|\ 6\0j\10\0d\15\0d\ 3\0\83\ 2\0\ 1|\ 6\0j\11\0d
++\0\83\ 1\0\ 1|\ 6\0j\12\0d\ 5\0\83\ 1\0\ 1|\ 6\0j\13\0d\ 2\0d\v\0\83\ 2\0\ 1|\ 6\0j\13\0d\ 3\0d\f\0\83\ 2\0\ 1|\ 5\0j\14\0|\ 6\0\83\ 1\0\ 1t\15\0j\ 5\0\83\0\0}\a\0|\a\0j\16\0d\ 3\0d\ 5\0d\ 4\0d\a\0d\r\0d\ e\0g\ 6\0d       \0d\ 3\0\83\ 3\0\ 1|\a\0j\ e\0d\ f\0\83\ 1\0\ 1|\ 4\0j\17\0|\ 5\0|\ 3\0d\ 2\0|\a\0\83\ 4\0\ 1|\ 5\0j\18\0d\10\0d\ 3\0d\ 5\0\83\ 3\0\ 1|\ 6\0j\19\0d\11\0\83\ 1\0}\b\0|\b\0j\1a\0|\ 6\0\83\ 1\0\ 1|\ 5\0j\14\0|\b\0\83\ 1\0\ 1|\ 4\0j\17\0|\ 5\0|\ 3\0d\ 2\0|\a\0\83\ 4\0\ 1|\ 4\0j       \0|\ 1\0d\ 2\0\83\ 2\0\ 1|\ 4\0j\e\0t\f\0d\ 3\0d\ 5\0d\ 2\0|\ 3\0\83\ 5\0\\ 2\0\0}
++\0|    \0j\ e\0d\12\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j\1d\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1c\0\0j\1e\0|\b\0d\13\0\83\ 2\0\83\ 1\0\ 1|\ 4\0j\e\0t\f\0d\14\0d\14\0d\ 2\0|\ 3\0\83\ 5\0\\ 2\0}   \0}
++\0|    \0j\ e\0d\12\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j\1d\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1c\0\0j\1e\0|\ 6\0d\13\0\83\ 2\0\83\ 1\0\ 1t
++\0j\ 5\0|\ 1\0|\ 5\0j\1f\0\83\0\0\83\ 2\0}\v\0|\v\0j\e\0t\f\0d\ 3\0d\ 5\0d\ 2\0|\ 3\0\83\ 5\0\\ 2\0}    \0}
++\0|    \0j\ e\0d\12\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j\1d\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1c\0\0j\1e\0|\b\0d\13\0\83\ 2\0\83\ 1\0\ 1|\v\0j\e\0t\f\0d\14\0d\14\0d\ 2\0|\ 3\0\83\ 5\0\\ 2\0}   \0}
++\0|    \0j\ e\0d\12\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j\1d\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1c\0\0j\1e\0|\ 6\0d\13\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\16\0\0\0Ns\f\0\0\0Pyfile33.medi\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0R\8c\ 1\0\0i\ 6\0\0\0g\0\0\0\0\0\0\1c@s
++\0\0\0sigX [MPa]s
++\0\0\0sigY [GPa]i\a\0\0\0i\b\0\0\0R\8d\ 1\0\0g333333ó?s\ 3\0\0\02*xR&\0\0\0g\9b\86\9b\84\ 6=iÿÿÿÿi\f\0\0\0\0\0\0R\ 4\0\0\0R\87\ 1\0\0R\88\ 1\0\0RN\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0R\v\0\0\0\0\0\0Rw\ 1\0\0R\1c\ 1\0\0RX\ 1\0\0RB\0\0\0RY\0\0\0Rx\ 1\0\0Ry\ 1\0\0Rz\ 1\0\0R\97\0\0\0R{\ 1\0\0Rk\0\0\0RZ\0\0\0R\89\ 1\0\0\0\0\0RZ\ 1\0\0R\8a\ 1\0\0R~\ 1\0\0R0\0\0\0R\7f\ 1\0\0R1\0\0\0RC\0\0\0(\f\0\0\0R      \0\0\0R9\ 1\0\0R\84\0\0\0R:\ 1\0\0R;\ 1\0\0\0\0\0Re\ 1\0\0\0\0\0R\ 2\0\0\0R\82\ 1\0\0R\83\ 1\0\0RC\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ e\0\0\0testMEDField122\ 3\0\0sZ\0\0\0\0\ 1\ 6\ 1\f\ 1"\ 1\f\0\13\0\10\ 1\10\ 1\f\ 1\12\0\r\ 1\f\0\10\0\r\0\r\0\10\0\10\ 1\r\ 1\f\0%\0\r\ 2\16\ 1\13\0\ f\0\r\0\r\ 1\16\ 1\10\ 2!\0\r\ 1\16\ 1\19\ 1!\0\r\ 1\16\ 1\19\ 2\18\ 1!\0\r\ 1\16\ 1\19\ 1!\0\r\ 1\16\ 1\19\ 1c\ 1\0\0\0\f\0\0\0\a\0\0\0C\0\0\0sc\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 6\0t\ 3\0\83\ 2\0\ 1|\ 2\0j\ 4\0\83\0\0}\ 3\0|\ 2\0j\ 5\0t\ 6\0t\a\0d\a\0\83\ 1\0\83\ 1\0t\b\0\83\ 2\0}\ 2\0|\ 2\0j      \0|\ 3\0\83\ 1\0\ 1t
++\0j\v\0\83\0\0}\ 4\0|\ 4\0j\f\0|\ 2\0j\r\0\83\0\0\83\ 1\0\ 1|\ 4\0j\ e\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\ 4\0j\ f\0|\ 1\0d\ 5\0\83\ 2\0\ 1t\10\0j\v\0\83\0\0}\ 5\0t\11\0j\v\0t\12\0t\13\0\83\ 2\0}\ 6\0|\ 6\0j       \0d\b\0\83\ 1\0\ 1t\14\0j\v\0\83\0\0}\a\0|\a\0j\15\0d\11\0d\ 3\0\83\ 2\0\ 1|\a\0j\16\0d
++\0\83\ 1\0\ 1|\a\0j\17\0d\ 5\0\83\ 1\0\ 1|\a\0j\18\0d\ 2\0d\v\0\83\ 2\0\ 1|\a\0j\18\0d\ 3\0d\f\0\83\ 2\0\ 1|\ 6\0j\19\0|\a\0\83\ 1\0\ 1t\1a\0j\v\0\83\0\0}\b\0|\b\0j\e\0d\ 2\0d\ 5\0d\ 6\0g\ 3\0d\ 6\0d\ 3\0\83\ 3\0\ 1|\b\0j   \0d\r\0\83\ 1\0\ 1|\ 5\0j\1c\0|\ 6\0|\ 4\0d\ 2\0|\b\0\83\ 4\0\ 1|\ 5\0j\ f\0|\ 1\0d\ 2\0\83\ 2\0\ 1|\ 5\0j\1d\0t\12\0d\ 2\0|\ 4\0\83\ 3\0\\ 2\0}    \0}
++\0|    \0j      \0d\ e\0\83\ 1\0\ 1|\0\0j\1e\0|
++\0j\1f\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1e\0\0\0|\a\0d\ f\0\83\ 2\0\83\ 1\0\ 1t\10\0j\v\0|\ 1\0|\ 6\0j\ 4\0\83\0\0d\10\0d\10\0\83\ 4\0}\v\0|\v\0j\1d\0t\12\0d\ 2\0|\ 4\0\83\ 3\0\\ 2\0}   \0}
++\0|    \0j      \0d\ e\0\83\ 1\0\ 1|\0\0j\1e\0|
++\0j\1f\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1e\0\0\0|\a\0d\ f\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\12\0\0\0Ns\f\0\0\0Pyfile34.medi\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0t\ 6\0\0\0F3Nodei\v\0\0\0g\0\0\0\0\0\0\1c@s
++\0\0\0sigX [MPa]s
++\0\0\0sigY [GPa]t\v\0\0\0sup1NodeEltR&\0\0\0g\9b\86\9b\84\ 6=iÿÿÿÿi\16\0\0\0(!\0\0\0R\ 4\0\0\0R\87\ 1\0\0R\88\ 1\0\0RN\0\0\0RC\0\0\0t\11\0\0\0buildPartOfMySelfRm\0\0\0Rn\0\0\0R.\0\0\0RB\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0R\v\0\0\0\0\0\0Rw\ 1\0\0R\ f\ 1\0\0RX\ 1\0\0RY\0\0\0Rx\ 1\0\0Ry\ 1\0\0Rz\ 1\0\0R\97\0\0\0R{\ 1\0\0Rk\0\0\0RZ\0\0\0R|\ 1\0\0R~\ 1\0\0R0\0\0\0R\7f\ 1\0\0R1\0\0\0(\f\0\0\0R        \0\0\0R9\ 1\0\0R\84\0\0\0t\ 3\0\0\0tmpR:\ 1\0\0R;\ 1\0\0\0\0\0Re\ 1\0\0\0\0\0R\82\ 1\0\0R\83\ 1\0\0RC\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ e\0\0\0testMEDField13S\ 3\0\0sF\0\0\0\0\ 1\ 6\ 1\f\ 1"\ 1\f\ 1\1e\0\r\ 1\f\0\13\0\10\ 1\10\ 1\f\ 1\12\0\r\ 1\f\0\10\0\r\0\r\0\10\0\10\ 1\r\ 1\f\0\1c\0\r\ 2\16\ 1\10\ 2\e\0\r\ 1\16\ 1\19\ 2\1e\ 1\e\0\r\ 1\16\ 1\19\ 1c\ 1\0\0\0\r\0\0\0\a\0\0\0C\0\0\0s\97\ 3\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 6\0t\ 3\0\83\ 2\0\ 1|\ 2\0j\ 4\0\83\0\0}\ 3\0|\ 2\0j\ 5\0t\ 6\0t\a\0d\a\0\83\ 1\0\83\ 1\0t\b\0\83\ 2\0}\ 2\0|\ 2\0j       \0|\ 3\0\83\ 1\0\ 1t
++\0j\v\0\83\0\0}\ 4\0|\ 4\0j\f\0|\ 2\0j\r\0\83\0\0\83\ 1\0\ 1|\ 4\0j\ e\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\ 4\0j\ f\0|\ 1\0d\ 5\0\83\ 2\0\ 1t\10\0j\v\0\83\0\0}\ 5\0t\11\0j\v\0t\12\0t\13\0\83\ 2\0}\ 6\0|\ 6\0j       \0d\b\0\83\ 1\0\ 1t\14\0j\v\0\83\0\0}\a\0|\a\0j\15\0d\13\0d\ 3\0\83\ 2\0\ 1|\a\0j\16\0d
++\0\83\ 1\0\ 1|\a\0j\17\0d\ 5\0\83\ 1\0\ 1|\a\0j\18\0d\ 2\0d\v\0\83\ 2\0\ 1|\a\0j\18\0d\ 3\0d\f\0\83\ 2\0\ 1|\ 6\0j\19\0|\a\0\83\ 1\0\ 1t\1a\0j\v\0\83\0\0}\b\0|\b\0j\e\0d\ 2\0d\ 5\0d\ 6\0g\ 3\0d\ 6\0d\ 3\0\83\ 3\0\ 1|\b\0j   \0d\r\0\83\ 1\0\ 1|\ 5\0j\1c\0|\ 6\0|\ 4\0d\ 2\0|\b\0\83\ 4\0\ 1|\ 6\0j\1d\0d\ e\0d\ 3\0d\ 5\0\83\ 3\0\ 1|\a\0j\1e\0d\ f\0\83\ 1\0}  \0|      \0j\1f\0|\a\0\83\ 1\0\ 1|\ 6\0j\19\0|      \0\83\ 1\0\ 1|\ 5\0j\1c\0|\ 6\0|\ 4\0d\ 2\0|\b\0\83\ 4\0\ 1|\ 5\0j\ f\0|\ 1\0d\ 2\0\83\ 2\0\ 1|\ 5\0\0t\12\0d\10\0d\10\0d\ 2\0|\ 4\0\83\ 5\0\\ 2\0}
++\0}\v\0|
++\0j    \0d\11\0\83\ 1\0\ 1|\0\0j!\0|\v\0j"\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j!\0|
++\0j#\0|\a\0d\12\0\83\ 2\0\83\ 1\0\ 1|\ 5\0\0t\12\0d\ 3\0d\ 5\0d\ 2\0|\ 4\0\83\ 5\0\\ 2\0}
++\0}\v\0|
++\0j    \0d\11\0\83\ 1\0\ 1|\0\0j!\0|\v\0j"\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j!\0|
++\0j#\0\0d\12\0\83\ 2\0\83\ 1\0\ 1|\0\0j$\0d\ 6\0g\ 1\0d\ 6\0g\ 1\0g\ 2\0|\ 5\0j%\0\83\0\0\83\ 2\0\ 1t\10\0j\v\0|\ 1\0|\ 6\0j\ 4\0\83\0\0\83\ 2\0}\f\0|\ 5\0\0t\12\0d\10\0d\10\0d\ 2\0|\ 4\0\83\ 5\0\\ 2\0}
++\0}\v\0|
++\0j    \0d\11\0\83\ 1\0\ 1|\0\0j!\0|\v\0j"\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j!\0|
++\0j#\0|\a\0d\12\0\83\ 2\0\83\ 1\0\ 1|\ 5\0\0t\12\0d\ 3\0d\ 5\0d\ 2\0|\ 4\0\83\ 5\0\\ 2\0}
++\0}\v\0|
++\0j    \0d\11\0\83\ 1\0\ 1|\0\0j!\0|\v\0j"\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j!\0|
++\0j#\0\0d\12\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\14\0\0\0Ns\f\0\0\0Pyfile35.medi\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0t\ 6\0\0\0F4Nodei\v\0\0\0g\0\0\0\0\0\0\1c@s
++\0\0\0sigX [MPa]s
++\0\0\0sigY [GPa]R\91\ 1\0\0g333333ó?s\ 3\0\0\02*xiÿÿÿÿR&\0\0\0g\9b\86\9b\84\ 6=i\16\0\0\0(&\0\0\0R\ 4\0\0\0R\87\ 1\0\0R\88\ 1\0\0RN\0\0\0RC\0\0\0R\92\ 1\0\0Rm\0\0\0Rn\0\0\0R.\0\0\0RB\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0R\v\0\0\0\0\0\0Rw\ 1\0\0R\ f\ 1\0\0RX\ 1\0\0RY\0\0\0Rx\ 1\0\0Ry\ 1\0\0Rz\ 1\0\0R\97\0\0\0R{\ 1\0\0Rk\0\0\0RZ\0\0\0R\89\ 1\0\0\0\0\0RZ\ 1\0\0R\8a\ 1\0\0R~\ 1\0\0R0\0\0\0R\7f\ 1\0\0R1\0\0\0R+\0\0\0R\81\ 1\0\0(\r\0\0\0R  \0\0\0R9\ 1\0\0R\84\0\0\0R\93\ 1\0\0R:\ 1\0\0R;\ 1\0\0\0\0\0Re\ 1\0\0\0\0\0R\ 2\0\0\0R\82\ 1\0\0R\83\ 1\0\0RC\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ e\0\0\0testMEDField14n\ 3\0\0sb\0\0\0\0\ 1\ 6\ 1\f\ 1"\ 1\f\ 1\1e\0\r\ 1\f\0\13\0\10\ 1\10\ 1\f\ 1\12\0\r\ 1\f\0\10\0\r\0\r\0\10\0\10\ 1\r\ 1\f\0\1c\0\r\ 2\16\ 1\13\0\ f\0\r\0\r\ 1\16\ 1\10\ 2!\0\r\ 1\16\ 1\19\ 1!\0\r\ 1\16\ 1\19\ 1"\ 2\18\ 1!\0\r\ 1\16\ 1\19\ 1!\0\r\ 1\16\ 1\19\ 1c\ 1\0\0\0\f\0\0\0        \0\0\0C\0\0\0sV\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 6\0t\ 3\0\83\ 2\0\ 1|\ 2\0j\ 4\0\83\0\0}\ 3\0|\ 2\0j\ 5\0d\ 2\0d\ 3\0d\ 3\0d\ 5\0d\ 6\0d\ 6\0d\ 4\0d\ 4\0g\b\0t\ 6\0\83\ 2\0}\ 4\0|\ 4\0j\a\0|\ 3\0\83\ 1\0\ 1t\b\0\0\83\0\0}\ 5\0|\ 5\0j
++\0|\ 4\0j\v\0\83\0\0\83\ 1\0\ 1|\ 5\0j\f\0d\ 2\0|\ 4\0\83\ 2\0\ 1t\r\0j    \0\83\0\0}\ 6\0t\ e\0j     \0t\ f\0t\10\0\83\ 2\0}\a\0|\a\0j\a\0d\b\0\83\ 1\0\ 1t\11\0j  \0\83\0\0}\b\0|\b\0j\12\0d\11\0d\ 3\0\83\ 2\0\ 1|\b\0j\13\0d
++\0\83\ 1\0\ 1|\b\0j\14\0d\ 5\0\83\ 1\0\ 1|\b\0j\15\0d\ 2\0d\v\0\83\ 2\0\ 1|\b\0j\15\0d\ 3\0d\f\0\83\ 2\0\ 1|\a\0j\16\0|\b\0\83\ 1\0\ 1t\17\0j   \0\83\0\0}   \0|      \0j\18\0d\ 2\0d\ 3\0d\ 6\0d\ 4\0d\r\0g\ 5\0d\a\0d\ 3\0\83\ 3\0\ 1|       \0j\a\0d\ e\0\83\ 1\0\ 1|\ 6\0j\19\0|\a\0|\ 5\0d\ 2\0|     \0\83\ 4\0\ 1|\ 2\0j\ 5\0t\1a\0t\e\0d\a\0\83\ 1\0\83\ 1\0t\ 6\0\83\ 2\0}\ 4\0|\ 4\0j\a\0|\ 3\0\83\ 1\0\ 1|\ 5\0j\f\0d\ 2\0|\ 4\0\83\ 2\0\ 1|\ 5\0j\1c\0|\ 1\0d\ 5\0\83\ 2\0\ 1|\ 6\0j\1c\0|\ 1\0d\ 2\0\83\ 2\0\ 1|\ 6\0j\1d\0t\ f\0|\ 4\0d\ 2\0\83\ 3\0}\a\0|\ 6\0j\1e\0t\ f\0d\ 2\0|\ 5\0\83\ 3\0\\ 2\0}
++\0}\v\0|
++\0j\a\0d\ f\0\83\ 1\0\ 1|\0\0j\1f\0|\v\0\0d\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1f\0|\a\0j!\0\83\0\0j"\0|
++\0d\10\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\12\0\0\0Ns\f\0\0\0Pyfile36.medi\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0R\95\ 1\0\0i\14\0\0\0g\0\0\0\0\0\0\1c@s
++\0\0\0sigX [MPa]s
++\0\0\0sigY [GPa]i\ 6\0\0\0R\91\ 1\0\0R&\0\0\0g\11ê-\81\99\97q=i(\0\0\0(#\0\0\0R\ 4\0\0\0R\87\ 1\0\0R\88\ 1\0\0RN\0\0\0RC\0\0\0R\92\ 1\0\0R.\0\0\0RB\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0\0\0\0Rw\ 1\0\0R\ f\ 1\0\0RX\ 1\0\0RY\0\0\0Rx\ 1\0\0Ry\ 1\0\0Rz\ 1\0\0R\97\0\0\0R{\ 1\0\0Rk\0\0\0RZ\0\0\0R|\ 1\0\0Rm\0\0\0Rn\0\0\0R\v\0\0\0t\15\0\0\0getFieldOnMeshAtLevelR~\ 1\0\0R0\0\0\0t\ 6\0\0\0isIotaR)\ 1\0\0R1\0\0\0(\f\0\0\0R       \0\0\0R9\ 1\0\0\0\0\0R\93\ 1\0\0R\84\0\0\0R:\ 1\0\0R;\ 1\0\0\0\0\0Re\ 1\0\0\0\0\0\0\0\0t\ 2\0\0\0p1(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ e\0\0\0testMEDField15\94\ 3\0\0sD\0\0\0\0\ 1\ 6\ 1\f\ 1"\ 1\f\ 1*\0\r\ 1\f\0\13\0\10\ 1\f\ 1\12\0\r\ 1\f\0\10\0\r\0\r\0\10\0\10\ 1\r\ 1\f\0"\0\r\ 2\16\ 1\1e\0\r\0\10\ 1\10\ 1\10\ 1\15\ 1\e\0\r\ 1\16\ 1\1f\ 1c\ 1\0\0\0\v\0\0\0\ 5\0\0\0C\0\0\0\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0\83\0\0}\ 3\0t\ 3\0j\ 4\0\83\0\0}\ 4\0|\ 4\0j\ 5\0|\ 3\0j\ 6\0\83\0\0\83\ 1\0\ 1|\ 4\0j\a\0d\ 2\0|\ 3\0\83\ 2\0\ 1|\ 4\0j\b\0|\ 3\0j     \0\83\0\0\83\ 1\0\ 1t
++\0j\ 4\0\83\0\0}\ 5\0|\ 5\0j\v\0|\ 2\0\83\ 1\0\ 1|\ 3\0j\f\0\83\0\0d\ 2\0\19}\ 6\0|\ 6\0j\r\0\83\0\0\ 1|\ 6\0j\b\0|\ 3\0j   \0\83\0\0\83\ 1\0\ 1|\ 4\0j\a\0d\ 3\0|\ 6\0\83\ 2\0\ 1|\ 4\0j\ e\0|\ 1\0d\ 4\0\83\ 2\0\ 1|\ 6\0j\ f\0t\10\0\83\ 1\0}\a\0t\11\0j\ 4\0\83\0\0}\b\0|\b\0j\12\0|\a\0j\13\0\83\0\0j\14\0\83\0\0d\ 5\0\83\ 2\0\ 1|\a\0j\13\0\83\0\0|\b\0d\0\0d\0\0\85\ 2\0d\ 2\0f\ 2\0<d\ 4\0|\a\0j\13\0\83\0\0\14|\b\0d\0\0d\0\0\85\ 2\0d\ 6\0f\ 2\0<d\ 5\0|\a\0j\13\0\83\0\0\14|\b\0d\0\0d\0\0\85\ 2\0d\ 4\0f\ 2\0<|\a\0j\15\0t\16\0t\17\0\83\ 2\0}\a\0|\a\0j\18\0|\b\0\83\ 1\0\ 1|\a\0j\19\0|\ 2\0\83\ 1\0\ 1|\a\0j\1a\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\v\0|\a\0\83\ 1\0\ 1|\ 5\0j\ e\0|\ 1\0d\ 2\0\83\ 2\0\ 1t
++\0j\ 4\0|\ 1\0|\a\0j   \0\83\0\0d\ 2\0d\ 6\0\83\ 4\0}  \0|      \0j\e\0t\1c\0d\ 2\0\83\ 2\0}
++\0|\0\0j\1d\0|\ 2\0j\1e\0|
++\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|       \0j\e\0t\1c\0d\ 3\0\83\ 2\0}
++\0|\0\0j\1d\0|\a\0j\1e\0|
++\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|       \0j\1f\0t\1c\0\83\ 1\0}
++\0|\0\0j\1d\0|\ 2\0j\1e\0|
++\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1d\b\0}\ 1\0|\ 4\0j\ e\0|\ 1\0d\ 4\0\83\ 2\0\ 1t
++\0j\ 4\0\83\0\0}\ 5\0|\ 5\0j\v\0|\a\0\83\ 1\0\ 1|\ 5\0j\ e\0|\ 1\0d\ 2\0\83\ 2\0\ 1t
++\0j\ 4\0|\ 1\0|\a\0j   \0\83\0\0d\ 2\0d\ 6\0\83\ 4\0}  \0|      \0j\1f\0t\1c\0\83\ 1\0}
++\0|\0\0j\1d\0|\a\0j\1e\0|
++\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1d\0\0S(   \0\0\0Ns\f\0\0\0Pyfile37.medi\0\0\0\0iÿÿÿÿi\ 2\0\0\0i\ 3\0\0\0i\ 1\0\0\0g\11ê-\81\99\97q=s\f\0\0\0Pyfile38.med( \0\0\0R\ 4\0\0\0R$\ 1\0\0\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0RB\0\0\0RC\0\0\0\0\0\0R%\ 1\0\0t\e\0\0\0buildDescendingConnectivityt\16\0\0\0sortCellsInMEDFileFrmtR\v\0\0\0RV\ 1\0\0R.\0\0\0RY\0\0\0Rx\ 1\0\0R)\ 1\0\0\0\0\0RW\ 1\0\0RX\ 1\0\0RN\0\0\0R{\ 1\0\0t\13\0\0\0copyTinyStringsFromt\10\0\0\0copyTinyAttrFromR\ 6\ 1\0\0R\13\ 1\0\0R0\0\0\0R1\0\0\0t\12\0\0\0getFieldAtTopLevel(\v\0\0\0R       \0\0\0R9\ 1\0\0\0\0\0R\84\0\0\0R:\ 1\0\0R;\ 1\0\0R\85\0\0\0\0\0\0t\ 2\0\0\0ddRC\ 1\0\0t\ 5\0\0\0f1bis(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ e\0\0\0testMEDField16«\ 3\0\0sT\0\0\0\0\ 1\ 6\ 1\f\ 1\f\ 1\f\ 1\13\ 1\10\ 1\13\ 1\f\ 1\r\ 1\10\ 1
++\ 1\13\ 1\10\ 1\10\ 1\ f\ 1\f\ 1\1c\ 1\1c\ 1 \ 1 \ 1\12\ 1\r\ 1\r\ 1\r\ 1\r\ 1\10\ 2\1e\ 1\12\ 1\1c\ 1\12\ 1\1c\ 1\ f\ 1\1c\ 2\ 6\ 1\10\ 1\f\ 1\r\ 1\10\ 1\1e\ 1\ f\ 1\1c\ 1c\ 1\0\0\0\r\0\0\0\a\0\0\0C\0\0\0sU\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 6\0t\ 3\0\83\ 2\0\ 1t\ 4\0j\ 5\0\83\0\0}\ 3\0|\ 3\0j\ 6\0|\ 2\0j\a\0\83\0\0\83\ 1\0\ 1|\ 3\0j\b\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\ 3\0j    \0|\ 2\0j
++\0\83\0\0\83\ 1\0\ 1|\ 3\0j\v\0|\ 1\0d\ 5\0\83\ 2\0\ 1t\f\0j\ 5\0\83\0\0}\ 4\0t\r\0j\ 5\0\83\0\0}\ 5\0t\ e\0j\ 5\0t\ f\0t\10\0\83\ 2\0}\ 6\0|\ 6\0j        \0d\b\0\83\ 1\0\ 1t\11\0j\ 5\0\83\0\0}\a\0|\a\0j\12\0d\10\0d\ 3\0\83\ 2\0\ 1|\a\0j\13\0d     \0\83\ 1\0\ 1|\a\0j\14\0d\ 5\0\83\ 1\0\ 1|\a\0j\15\0d\ 2\0d
++\0\83\ 2\0\ 1|\a\0j\15\0d\ 3\0d\v\0\83\ 2\0\ 1|\ 6\0j\16\0|\a\0\83\ 1\0\ 1t\17\0j\ 5\0\83\0\0}\b\0|\b\0j\18\0d\ 2\0d\ 3\0d\ 5\0d\ 4\0g\ 4\0d\ 4\0d\ 3\0\83\ 3\0\ 1|\b\0j     \0d\f\0\83\ 1\0\ 1|\ 5\0j\19\0|\ 6\0|\ 3\0d\ 2\0|\b\0\83\ 4\0\ 1|\ 6\0j\1a\0d\r\0d\ 3\0d\ 5\0\83\ 3\0\ 1|\a\0j\e\0d\ e\0\83\ 1\0}  \0|      \0j\1c\0|\a\0\83\ 1\0\ 1|\ 6\0j\16\0|      \0\83\ 1\0\ 1|\ 5\0j\19\0|\ 6\0|\ 3\0d\ 2\0|\b\0\83\ 4\0\ 1|\ 4\0j\1d\0d\ 3\0\83\ 1\0\ 1|\ 4\0j\1e\0d\ 2\0|\ 5\0\83\ 2\0\ 1|\ 4\0j\1f\0\83\0\0}\ 4\0|\ 4\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\f\0j\ 5\0|\ 1\0\83\ 1\0}
++\0|
++\0\0d\ 2\0\83\ 1\0}\v\0|\v\0j!\0t\ f\0d\ 3\0d\ 5\0\83\ 3\0}\f\0|\0\0j"\0|\f\0j#\0\83\0\0j$\0|\ 6\0j#\0\83\0\0d\ f\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\11\0\0\0Ns\f\0\0\0Pyfile39.medi\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0R\85\ 1\0\0g\0\0\0\0\0\0\1c@s
++\0\0\0sigX [MPa]s
++\0\0\0sigY [GPa]R\86\ 1\0\0g333333ó?s\ 3\0\0\02*xg\11ê-\81\99\97q=i\b\0\0\0(%\0\0\0R\ 4\0\0\0R\87\ 1\0\0R\88\ 1\0\0RN\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0RB\0\0\0RC\0\0\0R\v\0\0\0R[\ 1\0\0\0\0\0Rw\ 1\0\0R\13\ 1\0\0RX\ 1\0\0RY\0\0\0Rx\ 1\0\0Ry\ 1\0\0Rz\ 1\0\0R\97\0\0\0R{\ 1\0\0Rk\0\0\0RZ\0\0\0R\89\ 1\0\0\0\0\0RZ\ 1\0\0R\8a\ 1\0\0t\ 6\0\0\0resizet\r\0\0\0setFieldAtPosRq\0\0\0Rc\ 1\0\0R\9f\ 1\0\0R0\0\0\0R)\ 1\0\0R1\0\0\0(\r\0\0\0R      \0\0\0R9\ 1\0\0R\84\0\0\0R:\ 1\0\0t\ 3\0\0\0ffsR;\ 1\0\0\0\0\0Re\ 1\0\0\0\0\0R\ 2\0\0\0t\ 4\0\0\0ffsrR   \ 1\0\0R\f\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ e\0\0\0testMEDField17Ú\ 3\0\0sJ\0\0\0\0\ 1\ 6\ 1\f\ 1"\ 1\f\0\13\0\10\0\13\ 1\10\ 1\f\ 1\f\ 1\12\0\r\ 1\f\0\10\0\r\0\r\0\10\0\10\ 1\r\ 1\f\0\1f\0\r\ 2\16\ 1\13\0\ f\0\r\0\r\ 1\16\ 1\r\ 1\10\ 1\f\ 1\10\ 2\ f\ 1\ f\ 1\15\ 1%\ 1c\ 1\0\0\0\r\0\0\0\a\0\0\0C\0\0\0s9\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 6\0t\ 3\0\83\ 2\0\ 1t\ 4\0j\ 5\0\83\0\0}\ 3\0|\ 3\0j\ 6\0|\ 2\0j\a\0\83\0\0\83\ 1\0\ 1|\ 3\0j\b\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\ 3\0j   \0|\ 2\0j
++\0\83\0\0\83\ 1\0\ 1|\ 3\0j\v\0|\ 1\0d\ 5\0\83\ 2\0\ 1t\f\0j\ 5\0\83\0\0}\ 4\0t\r\0j\ 5\0\83\0\0}\ 5\0t\ e\0j\ 5\0t\ f\0t\10\0\83\ 2\0}\ 6\0|\ 6\0j        \0d\b\0\83\ 1\0\ 1t\11\0j\ 5\0\83\0\0}\a\0|\a\0j\12\0d\10\0d\ 3\0\83\ 2\0\ 1|\a\0j\13\0d     \0\83\ 1\0\ 1|\a\0j\14\0d\ 5\0\83\ 1\0\ 1|\a\0j\15\0d\ 2\0d
++\0\83\ 2\0\ 1|\a\0j\15\0d\ 3\0d\v\0\83\ 2\0\ 1|\ 6\0j\16\0|\a\0\83\ 1\0\ 1t\17\0j\ 5\0\83\0\0}\b\0|\b\0j\18\0d\ 2\0d\ 3\0d\ 5\0d\ 4\0g\ 4\0d\ 4\0d\ 3\0\83\ 3\0\ 1|\b\0j     \0d\f\0\83\ 1\0\ 1|\ 5\0j\19\0|\ 6\0|\ 3\0d\ 2\0|\b\0\83\ 4\0\ 1|\ 6\0j\1a\0d\r\0d\ 3\0d\ 5\0\83\ 3\0\ 1|\a\0j\e\0d\ e\0\83\ 1\0}  \0|      \0j\1c\0|\a\0\83\ 1\0\ 1|\ 6\0j\16\0|      \0\83\ 1\0\ 1|\ 5\0j\19\0|\ 6\0|\ 3\0d\ 2\0|\b\0\83\ 4\0\ 1|\ 4\0j\1d\0|\ 5\0\83\ 1\0\ 1|\ 4\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\f\0j\ 5\0|\ 1\0\83\ 1\0}
++\0|
++\0j\1e\0d\ 2\0\83\ 1\0}\v\0|\v\0j\1f\0t\ f\0d\ 3\0d\ 5\0\83\ 3\0}\f\0|\0\0\0|\f\0j!\0\83\0\0j"\0|\ 6\0j!\0\83\0\0d\ f\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\11\0\0\0Ns\f\0\0\0Pyfile40.medi\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 5\0\0\0R\85\ 1\0\0g\0\0\0\0\0\0\1c@s
++\0\0\0sigX [MPa]s
++\0\0\0sigY [GPa]R\86\ 1\0\0g333333ó?s\ 3\0\0\02*xg\11ê-\81\99\97q=i\b\0\0\0(#\0\0\0R\ 4\0\0\0R\87\ 1\0\0R\88\ 1\0\0RN\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0RB\0\0\0RC\0\0\0R\v\0\0\0R[\ 1\0\0\0\0\0Rw\ 1\0\0R\13\ 1\0\0RX\ 1\0\0RY\0\0\0Rx\ 1\0\0Ry\ 1\0\0Rz\ 1\0\0R\97\0\0\0R{\ 1\0\0Rk\0\0\0RZ\0\0\0R\89\ 1\0\0\0\0\0RZ\ 1\0\0R\8a\ 1\0\0R\\ 1\0\0Rc\ 1\0\0R\9f\ 1\0\0R0\0\0\0R)\ 1\0\0R1\0\0\0(\r\0\0\0R   \0\0\0R9\ 1\0\0R\84\0\0\0R:\ 1\0\0\ 1\0\0R;\ 1\0\0\0\0\0Re\ 1\0\0\0\0\0R\ 2\0\0\0\ 1\0\0R  \ 1\0\0R\f\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ e\0\0\0testMEDField18ö\ 3\0\0sF\0\0\0\0\ 1\ 6\ 1\f\ 1"\ 1\f\0\13\0\10\0\13\ 1\10\ 1\f\ 1\f\ 1\12\0\r\ 1\f\0\10\0\r\0\r\0\10\0\10\ 1\r\ 1\f\0\1f\0\r\ 2\16\ 1\13\0\ f\0\r\0\r\ 1\16\ 1\r\ 1\10\ 2\ f\ 1\ f\ 1\15\ 1%\ 1c\ 1\0\0\0\ 3\0\0\0\ 4\0\0\0C\0\0\0s>\0\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0|\ 1\0\83\ 1\0}\ 2\0|\0\0j\ 2\0d\ 6\0|\ 2\0j\ 3\0\83\0\0j\ 4\0d\ 5\0\83\ 1\0j\ 5\0\83\0\0\83\ 2\0\ 1d\0\0S(\a\0\0\0Ns\f\0\0\0Pyfile13.medt)\0\0\0Loc_MyFirstFieldOnGaussPoint_NORM_QUAD4_1t(\0\0\0Loc_MyFirstFieldOnGaussPoint_NORM_TRI3_0t(\0\0\0Loc_MyFirstFieldOnGaussPoint_NORM_TRI6_2i\0\0\0\0(\ 3\0\0\0\ 1\0\0\ 1\0\0\ 1\0\0(\ 6\0\0\0RK\ 1\0\0R(\0\0\0R+\0\0\0Ra\ 1\0\0Rc\ 1\0\0t\a\0\0\0getLocs(\ 3\0\0\0R        \0\0\0R9\ 1\0\0Re\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\10\0\0\0testMEDFieldBug1\ f\ 4\0\0s\b\0\0\0\0\ 1\ 6\ 1\ f\ 1%\ 1c\ 1\0\0\0\a\0\0\0\ 5\0\0\0C\0\0\0sf\ 3\0\0t\0\0j\ 1\0\83\0\0}\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1t\ 3\0j\ 4\0\83\0\0}\ 2\0|\ 2\0j\ 5\0d\ 1\0|\ 1\0\83\ 2\0\ 1t\ 6\0j\ 4\0\83\0\0}\ 3\0|\ 3\0j\a\0d\ 1\0d\ 2\0g\ 2\0d\ 2\0d\ 3\0\83\ 3\0\ 1|\ 3\0j\b\0d\ 4\0\83\ 1\0\ 1t\ 6\0j\ 4\0\83\0\0}\ 4\0|\ 4\0j\a\0d\ 3\0d\ 5\0g\ 2\0d\ 2\0d\ 3\0\83\ 3\0\ 1|\ 4\0j\b\0d\ 6\0\83\ 1\0\ 1t\ 6\0j\ 4\0\83\0\0}\ 5\0|\ 5\0j\a\0d\ 3\0d\ 2\0d\ 5\0g\ 3\0d\ 5\0d\ 3\0\83\ 3\0\ 1|\ 5\0j\b\0d\a\0\83\ 1\0\ 1|\ 2\0j      \0d\ 1\0|\ 3\0|\ 4\0g\ 2\0t
++\0\83\ 3\0\ 1|\0\0j\v\0d\ e\0|\ 2\0j\f\0\83\0\0\83\ 2\0\ 1|\0\0j\v\0d\ f\0|\ 2\0j\r\0\83\0\0\83\ 2\0\ 1|\0\0j\v\0d\10\0|\ 2\0j\ e\0d\ 4\0\83\ 1\0\83\ 2\0\ 1|\0\0j\v\0d\11\0|\ 2\0j\ e\0d\ 6\0\83\ 1\0\83\ 2\0\ 1|\ 2\0j\ f\0\83\0\0\ 1|\0\0j\v\0d\12\0|\ 2\0j\f\0\83\0\0\83\ 2\0\ 1|\0\0j\v\0d\13\0|\ 2\0j\r\0\83\0\0\83\ 2\0\ 1|\0\0j\v\0d\14\0|\ 2\0j\ e\0d\ 4\0\83\ 1\0\83\ 2\0\ 1|\0\0j\v\0d\15\0|\ 2\0j\ e\0d\ 6\0\83\ 1\0\83\ 2\0\ 1t\ 3\0j\ 4\0\83\0\0}\ 2\0|\ 2\0j\ 5\0d\ 1\0|\ 1\0\83\ 2\0\ 1|\ 2\0j   \0d\ 1\0|\ 3\0|\ 4\0|\ 5\0g\ 3\0t
++\0\83\ 3\0\ 1|\0\0j\v\0d\16\0|\ 2\0j\f\0\83\0\0\83\ 2\0\ 1|\0\0j\v\0d\17\0|\ 2\0j\r\0\83\0\0\83\ 2\0\ 1|\0\0j\v\0d\18\0|\ 2\0j\ e\0d\ 4\0\83\ 1\0\83\ 2\0\ 1|\0\0j\v\0d\19\0|\ 2\0j\ e\0d\ 6\0\83\ 1\0\83\ 2\0\ 1|\0\0j\v\0d\1a\0|\ 2\0j\ e\0d\a\0\83\ 1\0\83\ 2\0\ 1|\ 2\0j\ f\0\83\0\0\ 1|\0\0j\v\0d\e\0|\ 2\0j\f\0\83\0\0\83\ 2\0\ 1|\0\0j\v\0d\1c\0|\ 2\0j\r\0\83\0\0\83\ 2\0\ 1|\0\0j\v\0d\1d\0|\ 2\0j\ e\0d\ 4\0\83\ 1\0\83\ 2\0\ 1|\0\0j\v\0d\1e\0|\ 2\0j\ e\0d\ 6\0\83\ 1\0\83\ 2\0\ 1|\0\0j\v\0d\1f\0|\ 2\0j\ e\0d\a\0\83\ 1\0\83\ 2\0\ 1|\ 2\0j\10\0d\f\0d\r\0\83\ 2\0\ 1|\ 2\0j\11\0d\ 1\0d\a\0\83\ 2\0}\ 6\0|\0\0j\12\0|\ 6\0j\13\0|\ 5\0\83\ 1\0\83\ 1\0\ 1|\ 2\0j\11\0d\ 1\0d\ 6\0\83\ 2\0}\ 6\0|\0\0j\12\0|\ 6\0j\13\0|\ 4\0\83\ 1\0\83\ 1\0\ 1|\ 2\0j\11\0d\ 1\0d\ 4\0\83\ 2\0}\ 6\0|\0\0j\12\0|\ 6\0j\13\0|\ 3\0\83\ 1\0\83\ 1\0\ 1d\0\0S( \0\0\0Ni\0\0\0\0i\ 2\0\0\0i\ 1\0\0\0t\ 2\0\0\0g1i\ 3\0\0\0t\ 2\0\0\0g2t\ 2\0\0\0g3s     \0\0\0Family_-2s   \0\0\0Family_-3s   \0\0\0Family_-4s   \0\0\0Family_-5i\ 5\0\0\0i\ 6\0\0\0(\ 2\0\0\0s\ 2\0\0\0g1s\ 2\0\0\0g2(\ 2\0\0\0\0\0\0Family_-2s   \0\0\0Family_-3(\ 1\0\0\0s      \0\0\0Family_-2(\ 1\0\0\0s      \0\0\0Family_-3(\ 2\0\0\0s\ 2\0\0\0g1s\ 2\0\0\0g2(\ 2\0\0\0s\ 2\0\0\0g1s\ 2\0\0\0g2(\ 1\0\0\0s\ 2\0\0\0g1(\ 1\0\0\0s\ 2\0\0\0g2(\ 3\0\0\0s\ 2\0\0\0g1s\ 2\0\0\0g2s\ 2\0\0\0g3(\ 3\0\0\0s      \0\0\0Family_-2s   \0\0\0Family_-4s   \0\0\0Family_-5(\ 2\0\0\0s      \0\0\0Family_-2s   \0\0\0Family_-4(\ 1\0\0\0s      \0\0\0Family_-5(\ 2\0\0\0s      \0\0\0Family_-4s   \0\0\0Family_-5(\ 3\0\0\0s\ 2\0\0\0g1s\ 2\0\0\0g2s\ 2\0\0\0g3(\ 3\0\0\0s    \0\0\0Family_-2s   \0\0\0Family_-4s   \0\0\0Family_-5(\ 2\0\0\0s      \0\0\0Family_-2s   \0\0\0Family_-4(\ 1\0\0\0s      \0\0\0Family_-5(\ 2\0\0\0s      \0\0\0Family_-4s   \0\0\0Family_-5(\14\0\0\0R\ 4\0\0\0RL\ 1\0\0t\1d\0\0\0convertQuadraticCellsToLinearR>\0\0\0R(\0\0\0Rj\0\0\0Rk\0\0\0RZ\0\0\0RB\0\0\0Rl\0\0\0RN\0\0\0R+\0\0\0t\ e\0\0\0getGroupsNamest\10\0\0\0getFamiliesNamesR\9a\0\0\0t\1d\0\0\0assignFamilyNameWithGroupNamet\ e\0\0\0changeFamilyIdRG\0\0\0R0\0\0\0R1\0\0\0(\a\0\0\0R       \0\0\0R\83\0\0\0R\86\0\0\0\ 1\0\0\ 1\0\0\ 1\0\0t\ 1\0\0\0g(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\f\0\0\0testMEDMesh8\15\ 4\0\0sZ\0\0\0\0\ 1\f\ 1
++\ 1\f\ 1\10\ 1\f\0\19\0\r\ 1\f\0\19\0\r\ 1\f\0\1c\0\r\ 1\19\ 1\16\ 1\16\ 1\19\ 1\19\ 1
++\ 1\16\ 1\16\ 1\19\ 1\19\ 2\f\ 1\10\ 1\1c\ 1\16\ 1\16\ 1\19\ 1\19\ 1\19\ 1
++\ 1\16\ 1\16\ 1\19\ 1\19\ 1\19\ 1\10\ 1\12\ 1\16\ 1\12\ 1\16\ 1\12\ 1\16\ 1c\ 1\0\0\0\f\0\0\0\a\0\0\0C\0\0\0\ 1\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0\83\0\0}\ 3\0t\ 3\0j\ 4\0\83\0\0}\ 4\0|\ 4\0j\ 5\0|\ 3\0j\ 6\0\83\0\0\83\ 1\0\ 1|\ 4\0j\a\0d\ 2\0|\ 3\0\83\ 2\0\ 1|\ 4\0j\b\0|\ 1\0d\ 3\0\83\ 2\0\ 1\0j\ 4\0\83\0\0}\ 5\0|\ 5\0j
++\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\b\0|\ 1\0d\ 2\0\83\ 2\0\ 1|\ 2\0j\v\0\83\0\0}\ 6\0|\ 6\0j\ 2\0\83\0\0}\a\0|\a\0j\f\0d\ 4\0d\ 5\0d\ 6\0g\ 3\0\83\ 1\0\ 1|\a\0j\r\0d\a\0\83\ 1\0\ 1|\ 6\0j\ e\0\83\0\0\ 4\1ed\b\09\ 2(|\ 6\0j\r\0d   \0\83\ 1\0\ 1t\ 3\0j\ 4\0\83\0\0}\b\0|\b\0j\ 5\0|\a\0j\ 6\0\83\0\0\83\ 1\0\ 1|\b\0j\a\0d\ 2\0|\a\0\83\ 2\0\ 1|\b\0j\b\0|\ 1\0d\ 2\0\83\ 2\0\ 1t   \0j\ 4\0\83\0\0}        \0|      \0j
++\0|\ 6\0\83\ 1\0\ 1|     \0j\b\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\ f\0|\ 1\0d
++\0d\ 2\0d\v\0d\ 2\0d\f\0\83\ 6\0}
++\0|\0\0j\10\0|
++\0j\11\0|\ 2\0d\r\0d\r\0\83\ 3\0\83\ 1\0\ 1t\ f\0|\ 1\0d\a\0d\ 2\0d     \0d\ 2\0d\f\0\83\ 6\0}\v\0|\0\0j\10\0|\v\0j\11\0|\ 6\0d\r\0d\r\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\ e\0\0\0Ns\f\0\0\0Pyfile41.medi\0\0\0\0i\ 2\0\0\0g\0\0\0\0\0\0à?g333333ã?gffffffæ?t\f\0\0\03DSurfMesh_2g\0\0\0\0\0\0\0@t\13\0\0\0VectorFieldOnCells2R\19\ 1\0\0\ 1\0\0i\ 1\0\0\0g\11ê-\81\99\97q=(\12\0\0\0R\ 4\0\0\0R$\ 1\0\0\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0R\v\0\0\0\0\0\0R%\ 1\0\0Rq\0\0\0t   \0\0\0translateRB\0\0\0R)\ 1\0\0R\14\ 1\0\0R0\0\0\0R1\0\0\0(\f\0\0\0R     \0\0\0R9\ 1\0\0\0\0\0R\84\0\0\0R:\ 1\0\0R;\ 1\0\0\0\0\0R\85\0\0\0\0\0\0RC\ 1\0\0R
++\ 1\0\0R\f\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt4\0\0\0testMEDLoaderMEDLoaderNSReadFieldDoubleDataInMedFile@\ 4\0\0s8\0\0\0\0\ 1\ 6\ 1\f\ 1\f\ 1\f\ 1\13\ 1\10\ 1\10\ 1\f\ 1\r\ 1\10\ 2\f\ 1\f\ 1\16\ 1\r\ 1\11\ 1\r\ 1\f\ 1\13\ 1\10\ 1\10\ 1\f\ 1\r\ 1\10\ 2\e\ 1\1c\ 1\e\ 1\1c\ 1c\ 1\0\0\0\1a\0\0\0\ e\0\0\0C\0\0\0s\19\ 6\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0\\ e\0}\ 2\0}\ 3\0}\ 4\0}\ 5\0}\ 6\0}\a\0}\b\0}    \0}
++\0}\v\0}\f\0}\r\0}\ e\0}\ f\0t\ 2\0j\ 3\0\83\0\0}\10\0|\10\0j\ 4\0|\ 2\0j\ 5\0\83\0\0\83\ 1\0\ 1|\10\0j\ 6\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\10\0j\ 6\0d\ 3\0|\ 3\0\83\ 2\0\ 1|\10\0j\ 6\0d\ 4\0|\ 4\0\83\ 2\0\ 1|\10\0j\a\0|\ 1\0d\ 5\0\83\ 2\0\ 1d\ 6\0}\11\0d\a\0d\b\0d  \0g\ 3\0}\12\0t\b\0j\ 3\0\83\0\0}\13\0t    \0j\ 3\0\83\0\0}\14\0|\14\0j
++\0|\ 2\0j\v\0\83\0\0t\f\0|\12\0\83\ 1\0\14d
++\0\83\ 2\0\ 1|\14\0j\r\0d\v\0\83\ 1\0\ 1|\14\0j\ e\0t\f\0|\12\0\83\ 1\0\83\ 1\0\ 1|\14\0j\ f\0|\12\0\83\ 1\0\ 1t\10\0j\ 3\0t\11\0t\12\0\83\ 2\0}\ 5\0|\ 5\0j\13\0|\11\0\83\ 1\0\ 1|\ 5\0j\14\0|\14\0\83\ 1\0\ 1|\ 5\0j\15\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\16\0\83\0\0\ 1|\13\0j\17\0|\ 5\0\83\ 1\0\ 1|\0\0j\18\0|\13\0j\19\0\83\0\0d\ 5\0d\ 2\0g\ 1\0f\ 2\0\83\ 2\0\ 1t    \0j\ 3\0\83\0\0}\15\0|\15\0j
++\0|\ 4\0j\v\0\83\0\0t\f\0|\12\0\83\ 1\0\14d
++\0\83\ 2\0\ 1|\15\0j\r\0d\f\0\83\ 1\0\ 1|\15\0j\ e\0t\f\0|\12\0\83\ 1\0\83\ 1\0\ 1|\15\0j\ f\0|\12\0\83\ 1\0\ 1t\10\0j\ 3\0t\11\0t\12\0\83\ 2\0}\a\0|\a\0j\13\0|\11\0\83\ 1\0\ 1|\a\0j\14\0|\15\0\83\ 1\0\ 1|\a\0j\15\0|\ 4\0\83\ 1\0\ 1|\a\0j\16\0\83\0\0\ 1|\13\0j\17\0|\a\0\83\ 1\0\ 1|\0\0j\18\0|\13\0j\19\0\83\0\0d\ 5\0d\ 2\0d\ 4\0g\ 2\0f\ 2\0\83\ 2\0\ 1\0j\ 3\0\83\0\0}\16\0|\16\0j
++\0|\ 3\0j\v\0\83\0\0t\f\0|\12\0\83\ 1\0\14d
++\0\83\ 2\0\ 1|\16\0j\r\0d\r\0\83\ 1\0\ 1|\16\0j\ e\0t\f\0|\12\0\83\ 1\0\83\ 1\0\ 1|\16\0j\ f\0|\12\0\83\ 1\0\ 1t\10\0j\ 3\0t\11\0t\12\0\83\ 2\0}\ 6\0|\ 6\0j\13\0|\11\0\83\ 1\0\ 1|\ 6\0j\14\0|\16\0\83\ 1\0\ 1|\ 6\0j\15\0|\ 3\0\83\ 1\0\ 1|\ 6\0j\16\0\83\0\0\ 1|\13\0j\17\0|\ 6\0\83\ 1\0\ 1|\0\0j\18\0|\13\0j\19\0\83\0\0d\ 5\0d\ 2\0d\ 3\0d\ 4\0g\ 3\0f\ 2\0\83\ 2\0\ 1|\13\0j\a\0|\ 1\0d\ 2\0\83\ 2\0\ 1d\ e\0}\17\0d\ f\0d\10\0g\ 2\0}\18\0t\b\0j\ 3\0\83\0\0}\19\0t        \0j\ 3\0\83\0\0}\15\0|\15\0j
++\0|\ 4\0j\v\0\83\0\0d\ 5\0\14d
++\0\83\ 2\0\ 1|\15\0j\r\0d\11\0\83\ 1\0\ 1|\15\0j\ e\0d\ 5\0\83\ 1\0\ 1|\15\0j\ f\0|\18\0\83\ 1\0\ 1t\10\0j\ 3\0t\11\0t\12\0\83\ 2\0}\a\0|\a\0j\13\0|\17\0\83\ 1\0\ 1|\a\0j\14\0|\15\0\83\ 1\0\ 1|\a\0j\15\0|\ 4\0\83\ 1\0\ 1|\a\0j\16\0\83\0\0\ 1|\19\0j\17\0|\a\0\83\ 1\0\ 1|\0\0j\18\0|\19\0j\19\0\83\0\0d\ 2\0d\ 2\0g\ 1\0f\ 2\0\83\ 2\0\ 1t  \0j\ 3\0\83\0\0}\16\0|\16\0j
++\0|\ 3\0j\v\0\83\0\0t\f\0|\18\0\83\ 1\0\14d
++\0\83\ 2\0\ 1|\16\0j\r\0d\12\0\83\ 1\0\ 1|\16\0j\ e\0t\f\0|\18\0\83\ 1\0\83\ 1\0\ 1|\16\0j\ f\0|\18\0\83\ 1\0\ 1t\10\0j\ 3\0t\11\0t\12\0\83\ 2\0}\ 6\0|\ 6\0j\13\0|\17\0\83\ 1\0\ 1|\ 6\0j\14\0|\16\0\83\ 1\0\ 1|\ 6\0j\15\0|\ 3\0\83\ 1\0\ 1|\ 6\0j\16\0\83\0\0\ 1|\19\0j\17\0|\ 6\0\83\ 1\0\ 1|\0\0j\18\0|\19\0j\19\0\83\0\0d
++\0d\ 2\0d\ 3\0g\ 2\0f\ 2\0\83\ 2\0\ 1|\19\0j\a\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\b\0j\ 3\0|\ 1\0|\11\0d\ 3\0d\ 3\0\83\ 4\0}\13\0|\0\0j\18\0|\13\0j\19\0\83\0\0d\ 5\0d\ 2\0d\ 3\0d\ 4\0g\ 3\0f\ 2\0\83\ 2\0\ 1|\0\0j\18\0|\13\0j\1a\0\83\0\0d\ 2\0d\ 2\0d\19\0d\14\0d\14\0f\ 4\0g\ 1\0f\ 2\0d
++\0d\ 2\0d\1a\0d\14\0d\14\0f\ 4\0g\ 1\0f\ 2\0d\16\0d\ 2\0d\e\0d\14\0d\14\0f\ 4\0g\ 1\0f\ 2\0d\13\0d\ 2\0d\1c\0d\14\0d\14\0f\ 4\0g\ 1\0f\ 2\0g\ 4\0\83\ 2\0\ 1t\b\0j\ 3\0|\ 1\0|\17\0d\ 3\0d\ 3\0\83\ 4\0}\19\0|\0\0j\18\0|\19\0j\19\0\83\0\0d
++\0d\ 2\0d\ 3\0g\ 2\0f\ 2\0\83\ 2\0\ 1|\0\0j\18\0|\19\0j\1a\0\83\0\0d\ 2\0d\ 2\0d\1d\0d\14\0d\14\0f\ 4\0g\ 1\0f\ 2\0d
++\0d\ 2\0d\1e\0d\14\0d\14\0f\ 4\0g\ 1\0f\ 2\0g\ 2\0\83\ 2\0\ 1d\0\0S(\1f\0\0\0Ns\f\0\0\0Pyfile42.medi\0\0\0\0iÿÿÿÿiþÿÿÿi\ 2\0\0\0t\ 6\0\0\0Field1t\ 5\0\0\0comp1t\ 5\0\0\0comp2t\ 5\0\0\0comp3i\ 1\0\0\0g\0\0\0\0\0\0\1c@g\0\0\0\0\0Àg@g\0\0\0\0\0\80V@t\ 6\0\0\0Field2t\ 6\0\0\0comp11t\ 6\0\0\0comp22g\0\0\0\0\0ÀgÀg\0\0\0\0\0\80VÀi\ 4\0\0\0R&\0\0\0iT\0\0\0i\ 3\0\0\0i\94\0\0\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 4\0\0\0iT\0\0\0(\ 2\0\0\0iT\0\0\0i\94\0\0\0(\ 2\0\0\0i\94\0\0\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 4\0\0\0iT\0\0\0(\e\0\0\0R\ 4\0\0\0\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0R\v\0\0\0\0\0\0RY\0\0\0Rx\ 1\0\0\0\0\0Ry\0\0\0Ry\ 1\0\0Rz\ 1\0\0t\13\0\0\0setInfoOnComponentsRw\ 1\0\0R\13\ 1\0\0RX\ 1\0\0RB\0\0\0R{\ 1\0\0\0\0\0Rd\0\0\0R%\ 1\0\0R+\0\0\0R,\0\0\0t\15\0\0\0getFieldSplitedByType(\1a\0\0\0R    \0\0\0R9\ 1\0\0R\85\0\0\0R\84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\83\0\0\0t
++\0\0\0FieldName1t
++\0\0\0compNames1R;\ 1\0\0t\ 3\0\0\0da2t\ 3\0\0\0da0R©\0\0\0t
++\0\0\0FieldName2t
++\0\0\0compNames2RC\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt!\0\0\0testMEDLoaderMultiLevelCellField1`\ 4\0\0\0\0\0\0\ 1\ 6\ 16\ 1\f\ 1\13\ 1\10\ 1\10\ 1\10\ 1\10\ 2\ 6\ 1\ f\ 1\f\ 1\f\ 1 \ 1\r\ 1\13\ 1\r\ 1\12\0\r\0\r\0\r\0
++\ 1\r\ 1\1f\ 1\f\ 1 \ 1\r\ 1\13\ 1\r\ 1\12\0\r\0\r\0\r\0
++\ 1\r\ 1"\ 1\f\ 1 \ 1\r\ 1\13\ 1\r\ 1\12\0\r\0\r\0\r\0
++\ 1\r\ 1%\ 2\10\ 2\ 6\ 1\f\ 1\f\ 1\f\ 1\1a\ 1\r\ 1\r\ 1\r\ 1\12\0\r\0\r\0\r\0
++\ 1\r\ 1\1f\ 1\f\ 1 \ 1\r\ 1\13\ 1\r\ 1\12\0\r\0\r\0\r\0
++\ 1\r\ 1"\ 2\10\ 2\18\ 1%\ 1v\ 1\18\ 1"\ 1F\ 1c\ 1\0\0\0\1e\0\0\0\ e\0\0\0C\0\0\0\a\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0\\ e\0}\ 2\0}\ 3\0}\ 4\0}\ 5\0}\ 6\0}\a\0}\b\0}     \0}
++\0}\v\0}\f\0}\r\0}\ e\0}\ f\0t\ 2\0j\ 3\0\83\0\0}\10\0|\10\0j\ 4\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\10\0j\ 4\0d\ 3\0|\ 3\0\83\ 2\0\ 1|\10\0j\ 4\0d\ 4\0|\ 4\0\83\ 2\0\ 1t\ 5\0j\ 3\0\83\0\0}\11\0t\ 6\0j\ 3\0t\a\0t\b\0\83\ 2\0}\12\0|\12\0j        \0d\ 5\0\83\ 1\0\ 1t
++\0j\ 3\0\83\0\0}\13\0|\13\0j\v\0d\ 6\0d\a\0d\b\0d    \0d
++\0d\v\0g\ 6\0d\f\0d\r\0\83\ 3\0\ 1|\12\0j\f\0|\13\0\83\ 1\0\ 1t\r\0j\ 3\0\83\0\0}\14\0|\14\0j\v\0d\f\0d\r\0g\ 2\0d\f\0d\ e\0\83\ 3\0\ 1|\14\0j       \0d\ f\0\83\ 1\0\ 1|\11\0j\ e\0|\12\0|\10\0d\ 4\0|\14\0\83\ 4\0\ 1|\11\0j\ f\0t\a\0d\ 3\0|\10\0\83\ 3\0}\15\0|\0\0j\10\0t\a\0|\15\0j\11\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ e\0|\15\0j\12\0\83\0\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ e\0|\15\0j\12\0\83\0\0j\14\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\f\0|\15\0j\12\0\83\0\0j\15\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ e\0d\ 2\0d\ e\0g\ 3\0|\15\0j\12\0\83\0\0j\16\0\83\0\0j\17\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ 2\0d\r\0g\ 2\0|\15\0j\12\0\83\0\0j\18\0\83\0\0j\17\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\f\0|\15\0j\19\0\83\0\0j\1a\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\r\0|\15\0j\19\0\83\0\0j\e\0\83\0\0\83\ 2\0\ 1d\ 6\0d\a\0d\b\0d      \0d
++\0d\v\0g\ 6\0}\16\0d\a\0d\10\0d\11\0g\ 3\0}\17\0d\a\0d\12\0d\11\0g\ 3\0}\18\0xh\0t\1c\0d\r\0\83\ 1\0D]Z\0}\19\0|\0\0j\1d\0|\17\0|\19\0\19|\15\0j\12\0\83\0\0j\1e\0d\ 2\0\83\ 1\0|\19\0\19d\13\0\83\ 3\0\ 1|\0\0j\1d\0|\18\0|\19\0\19|\15\0j\12\0\83\0\0j\1e\0d\ e\0\83\ 1\0|\19\0\19d\13\0\83\ 3\0\ 1qv\ 2Wx=\0t\1c\0d\14\0\83\ 1\0D]/\0}\19\0|\0\0j\1d\0|\16\0|\19\0\19|\15\0j\19\0\83\0\0j\1f\0d\ 2\0|\19\0\83\ 2\0d\13\0\83\ 3\0\ 1\ 2W~\15\0|\11\0j\ f\0t\a\0d\ e\0|\10\0\83\ 3\0}\1a\0|\0\0j\10\0\0|\1a\0j\11\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ 2\0|\1a\0j\12\0\83\0\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\f\0|\1a\0j\12\0\83\0\0j\14\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\15\0|\1a\0j\12\0\83\0\0j\15\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ 2\0d\f\0d\ 2\0d\r\0g\ 4\0|\1a\0j\12\0\83\0\0j\16\0\83\0\0j\17\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ 2\0d\f\0d\16\0g\ 3\0|\1a\0j\12\0\83\0\0j\18\0\83\0\0j\17\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\f\0|\1a\0j\19\0\83\0\0j\1a\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\r\0|\1a\0j\19\0\83\0\0j\e\0\83\0\0\83\ 2\0\ 1x=\0t\1c\0d\14\0\83\ 1\0D]/\0}\19\0|\0\0j\1d\0|\16\0|\19\0\19|\1a\0j\19\0\83\0\0j\1f\0d\ 2\0|\19\0\83\ 2\0d\13\0\83\ 3\0\ 1q4\ 4W|\10\0j!\0|\ 1\0d\f\0\83\ 2\0\ 1|\11\0j!\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\r\0j\ 3\0\83\0\0}\14\0|\14\0j\v\0d\r\0d\f\0g\ 2\0d\f\0d\ e\0\83\ 3\0\ 1|\14\0j       \0d\ f\0\83\ 1\0\ 1t\ 5\0j\ 3\0\83\0\0}\11\0|\11\0j\ e\0|\12\0|\10\0d\ 4\0|\14\0\83\ 4\0\ 1|\11\0j\ f\0t\a\0d\ 3\0|\10\0\83\ 3\0}\e\0|\0\0j\10\0t\a\0|\e\0j\11\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ e\0|\e\0j\12\0\83\0\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ e\0|\e\0j\12\0\83\0\0j\14\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\f\0|\e\0j\12\0\83\0\0j\15\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ e\0d\ 2\0d\ e\0g\ 3\0|\e\0j\12\0\83\0\0j\16\0\83\0\0j\17\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ 2\0d\r\0g\ 2\0|\e\0j\12\0\83\0\0j\18\0\83\0\0j\17\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\f\0|\e\0j\19\0\83\0\0j\1a\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\r\0|\e\0j\19\0\83\0\0j\e\0\83\0\0\83\ 2\0\ 1d   \0d
++\0d\v\0d\ 6\0d\a\0d\b\0g\ 6\0}\1c\0xh\0t\1c\0d\r\0\83\ 1\0D]Z\0}\19\0|\0\0j\1d\0|\17\0|\19\0\19|\e\0j\12\0\83\0\0j\1e\0d\ 2\0\83\ 1\0|\19\0\19d\13\0\83\ 3\0\ 1|\0\0j\1d\0|\18\0|\19\0\19|\e\0j\12\0\83\0\0j\1e\0d\ e\0\83\ 1\0|\19\0\19d\13\0\83\ 3\0\ 1q
++\ 6Wx=\0t\1c\0d\14\0\83\ 1\0D]/\0}\19\0|\0\0j\1d\0|\1c\0|\19\0\19|\e\0j\19\0\83\0\0j\1f\0d\ 2\0|\19\0\83\ 2\0d\13\0\83\ 3\0\ 1qu\ 6W|\11\0j\ f\0t\a\0d\ e\0|\10\0\83\ 3\0}\1d\0|\0\0j\10\0\0|\1d\0j\11\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ 2\0|\1d\0j\12\0\83\0\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\f\0|\1d\0j\12\0\83\0\0j\14\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\15\0|\1d\0j\12\0\83\0\0j\15\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ 2\0d\r\0d\ 2\0d\f\0g\ 4\0|\1d\0j\12\0\83\0\0j\16\0\83\0\0j\17\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ 2\0d\f\0d\16\0g\ 3\0|\1d\0j\12\0\83\0\0j\18\0\83\0\0j\17\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\f\0|\1d\0j\19\0\83\0\0j\1a\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\r\0|\1d\0j\19\0\83\0\0j\e\0\83\0\0\83\ 2\0\ 1x=\0t\1c\0d\14\0\83\ 1\0D]/\0}\19\0|\0\0j\1d\0|\16\0|\19\0\19|\1d\0j\19\0\83\0\0j\1f\0d\ 2\0|\19\0\83\ 2\0d\13\0\83\ 3\0\ 1\aWd\0\0S(\17\0\0\0Ns\f\0\0\0Pyfile43.medi\0\0\0\0iÿÿÿÿiþÿÿÿt\f\0\0\0NodeFieldPflg\0\0\0\0\0\0ð?g\0\0\0\0\0\0$@g\0\0\0\0\0\0Y@g\0\0\0\0\0\0\0@g\0\0\0\0\0\04@g\0\0\0\0\0\0i@i\ 2\0\0\0i\ 3\0\0\0i\ 1\0\0\0t\a\0\0\0PflNodeg\0\0\0\0\0\0\ 4@g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\ e@i\r\0\0\0i\ 6\0\0\0i\87\0\0\0i\ 4\0\0\0("\0\0\0R\ 4\0\0\0\0\0\0R>\0\0\0R(\0\0\0Rj\0\0\0\0\0\0Rw\ 1\0\0R\1c\ 1\0\0RX\ 1\0\0RB\0\0\0RY\0\0\0RZ\0\0\0R{\ 1\0\0Rk\0\0\0R|\ 1\0\0R\97\ 1\0\0R+\0\0\0t\ e\0\0\0getTypeOfFieldR¹\0\0\0t\10\0\0\0getMeshDimensionR§\0\0\0t\10\0\0\0getNumberOfNodesRv\0\0\0RH\0\0\0Rw\0\0\0R)\ 1\0\0\0\0\0t\15\0\0\0getNumberOfComponentsRn\0\0\0R&\ 1\0\0t\14\0\0\0getCoordinatesOfNodet\ 5\0\0\0getIJR\13\ 1\0\0R\v\0\0\0(\1e\0\0\0R        \0\0\0R9\ 1\0\0R\85\0\0\0R\84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\83\0\0\0R\b\0\0\0\0\0\0t\ 3\0\0\0arrR\83\ 1\0\0t\ 4\0\0\0tes0R½\0\0\0t\14\0\0\0nodeCoordsWithValue1t\14\0\0\0nodeCoordsWithValue2Rî\0\0\0t\ 4\0\0\0tes1t\ 4\0\0\0tes2t      \0\0\0expected2t\ 4\0\0\0tes3(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt#\0\0\0testFieldOnPflRetrieveOnMdimRelMax1¦\ 4\0\0\0\0\0\0\ 1\ 6\ 16\ 1\f\ 1\10\ 1\10\ 1\10\ 1\f\ 1\12\ 1\r\ 1\f\0%\ 1\r\ 1\f\0\19\0\r\ 1\16\ 1\15\ 1\16\ 1\1c\ 1\1c\ 1\1c\ 1+\ 1(\ 1\1c\ 1\1c\ 1\18\ 1\ f\ 1\ f\ 1\13\ 1*\ 1*\ 1\ 4\ 1\13\ 1)\ 1\ 4\ 1\ 3\ 2\15\ 1\16\ 1\1c\ 1\1c\ 1\1c\ 1.\ 1+\ 1\1c\ 1\1c\ 1\13\ 1)\ 1\ 4\ 1\10\ 1\10\ 2\f\0\19\0\r\ 1\f\ 1\16\ 1\15\ 1\16\ 1\1c\ 1\1c\ 1\1c\ 1+\ 1(\ 1\1c\ 1\1c\ 1\18\ 1\13\ 1*\ 1*\ 1\ 4\ 1\13\ 1)\ 1\ 4\ 2\15\ 1\16\ 1\1c\ 1\1c\ 1\1c\ 1.\ 1+\ 1\1c\ 1\1c\ 1\13\ 1)\ 1\ 4\ 1c\ 1\0\0\0\12\0\0\0\15\0\0\0C\0\0\0s-\ 6\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0t\ 3\0j\ 1\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0g\ 6\0\83\ 1\0\83\ 2\0\ 1|\ 2\0j\ 2\0d    \0t\ 3\0j\ 1\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 5\0\83\ 1\0\83\ 2\0\ 1|\ 2\0j\ 4\0\83\0\0}\ 2\0|\ 2\0j\ 5\0d
++\0\83\ 1\0\ 1|\ 2\0j\ 6\0\83\0\0j\a\0d\v\0d\f\0g\ 2\0\83\ 1\0\ 1|\ 2\0j\b\0\83\0\0d\ 2\0\19d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0g\11\0\19}\ 3\0|\ 3\0j\ 5\0|\ 2\0j       \0\83\0\0\83\ 1\0\ 1t
++\0j\ 1\0d\1e\0d\1f\0d\r\0g\ 3\0\83\ 1\0}\ 4\0|\ 4\0j\ 5\0\0\83\ 1\0\ 1t
++\0j\ 1\0d!\0d"\0g\ 2\0\83\ 1\0}\ 5\0|\ 5\0j\ 5\0d#\0\83\ 1\0\ 1t\v\0j\ 1\0\83\0\0}\ 6\0|\ 6\0j\f\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\ 6\0j\f\0d$\0|\ 3\0\83\ 2\0\ 1|\ 6\0j\r\0d$\0|\ 4\0|\ 5\0g\ 2\0\83\ 2\0\ 1t
++\0j\ 1\0d\1e\0d\11\0d\13\0g\ 3\0\83\ 1\0}\a\0|\a\0j\ 5\0d%\0\83\ 1\0\ 1|\ 6\0j\r\0d    \0|\a\0g\ 1\0\83\ 2\0\ 1d\1e\0d&\0d\ f\0d\10\0d\11\0d\1e\0d"\0d&\0d\11\0d\12\0d\1e\0d'\0d"\0d\12\0d\13\0g\ f\0}\b\0d\1e\0d!\0d\r\0d\ f\0d&\0d\1e\0d(\0d!\0d&\0d"\0d\1e\0d\ e\0d(\0d"\0d'\0g\ f\0\0d\1e\0d!\0d\r\0d\ f\0d)\0d\1e\0d(\0d!\0d)\0d\17\0d\1e\0d\ e\0d(\0d\17\0d\18\0g\ f\0}
++\0|\0\0j\ e\0d)\0|\ 6\0j\ f\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0|\b\0|\ 6\0j\10\0d\ 2\0\83\ 1\0d*\0d+\0d\ f\0g\ 3\0\19j\11\0\83\0\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0|      \0|\ 6\0j\10\0d\ 2\0\83\ 1\0d,\0d\r\0d!\0g\ 3\0\19j\11\0\83\0\0j\12\0\83\0\0\83\ 2\0\ 1|\ 6\0j\13\0\0\83\ 1\0\\ 3\0}\v\0}\f\0}\r\0|\0\0j\ e\0d&\0d"\0d'\0g\ 3\0|\v\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d,\0d\r\0d!\0g\ 3\0|\f\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d*\0d+\0d\ f\0g\ 3\0|\r\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d\19\0|\ 6\0j\ f\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d\1e\0d\1f\0d\r\0g\ 3\0|\ 6\0j\14\0d$\0\0\83\ 2\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d!\0d"\0g\ 2\0|\ 6\0j\14\0d$\0d#\0\83\ 2\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d\1e\0d\11\0d\13\0g\ 3\0|\ 6\0j\14\0d       \0d%\0\83\ 2\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d'\0d-\0d.\0g\ 3\0|\ 6\0j\14\0d$\0d/\0\83\ 2\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0|\b\0|\ 6\0j\10\0d\ 2\0\83\ 1\0d*\0d+\0d\ f\0g\ 3\0\19j\11\0\83\0\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0|
++\0|\ 6\0j\10\0d\ 2\0\83\ 1\0d,\0d\r\0d!\0g\ 3\0\19j\11\0\83\0\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\15\0t\16\0|\ 6\0j\17\0d$\0d/\0\83\ 2\0j\18\0|\ 6\0j\17\0d$\0\0\83\ 2\0d0\0d1\0\83\ 5\0\ 1|\ 6\0j\17\0d$\0d/\0\83\ 2\0j\18\0|\ 6\0j\17\0d$\0\0\83\ 2\0d*\0d1\0\83\ 3\0\ 1t\ 3\0j\ 1\0d2\0d3\0d4\0d5\0d6\0d3\0d7\0d8\0d9\0d:\0d4\0d8\0d;\0d<\0d=\0d5\0d9\0d<\0d>\0d?\0g\14\0\83\ 1\0}\ e\0|\ 6\0j\10\0d\ 2\0\83\ 1\0j\19\0t\1a\0\83\ 1\0j\e\0\83\0\0}\ f\0|\ f\0|\ e\0\18}\10\0|\10\0j\1c\0\83\0\0\ 1|\0\0j\1d\0|\10\0j\1e\0\83\0\0d\ 2\0\19d1\0k\0\0\83\ 1\0\ 1|\ 6\0j\ 6\0\83\0\0t\1f\0|\v\0\83\ 1\0\vc\ 2\0\1fd\ 3\0d@\0g\ 2\07\ 3)|\0\0j\15\0t\16\0|\ 6\0j\17\0d$\0d/\0\83\ 2\0j\18\0|\ 6\0j\17\0d$\0\0\83\ 2\0d*\0d1\0\83\ 5\0\ 1|\ e\0\1e}\11\0dA\0dB\0dC\0g\ 3\0|\11\0d,\0d(\0+|\ 6\0j\10\0d\ 2\0\83\ 1\0j\19\0t\1a\0\83\ 1\0j\e\0\83\0\0}\ f\0|\ f\0|\11\0\18}\10\0|\10\0j\1c\0\83\0\0\ 1|\0\0j\1d\0|\10\0j\1e\0\83\0\0d\ 2\0\19d1\0k\0\0\83\ 1\0\ 1|\ 6\0\0|\ 1\0d0\0\83\ 2\0\ 1d\0\0S(D\0\0\0Ns\f\0\0\0Pyfile44.medi\0\0\0\0g\0\0\0\0\0\0\0\0g\9a\99\99\99\99\99ñ?gffffff\ 2@gÍÌÌÌÌÌ\f@g\0\0\0\0\0\0\14@g\0\0\0\0\0\0\1a@i\ 1\0\0\0t\10\0\0\0AnthonyDuplicates\ 6\0\0\0X [km]s\ 6\0\0\0Z [mm]i\b\0\0\0i\v\0\0\0i\ e\0\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\19\0\0\0i\1a\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i#\0\0\0i$\0\0\0i%\0\0\0i\ 4\0\0\0i\ 6\0\0\0t\ 3\0\0\0Grpi  \0\0\0i\10\0\0\0t\ 4\0\0\0Grp2iÿÿÿÿt\a\0\0\0GrpNodei\ f\0\0\0i\11\0\0\0i
++\0\0\0i\1e\0\0\0i\f\0\0\0i\r\0\0\0i\a\0\0\0i\12\0\0\0i\13\0\0\0t\a\0\0\0Grp_dupi\ 2\0\0\0g\11ê-\81\99\97q=g\\8fÂõ(\ó?g\1f\85ëQ¸\1eõ?gáz\14®Gáö?g¤p=
++×£ø?gffffffú?g
++ףp=
++÷?gö(\\8fÂõø?gáz\14®Gáú?gÍÌÌÌÌÌü?g
++ףp=
++û?g\1f\85ëQ¸\1eý?g333333ÿ?g\\8fÂõ(\ÿ?gÍÌÌÌÌÌ\0@g333333Ó¿g×£p=
++×õ?g)\\8fÂõ(ô?g\9a\99\99\99\99\99õ?(!\0\0\0\0\0\0R(\0\0\0\0\0\0RY\0\0\0t\11\0\0\0buildUnstructuredRB\0\0\0\0\0\0\ 1\0\0R\9b\ 1\0\0RC\0\0\0Rk\0\0\0R>\0\0\0Rj\0\0\0Rl\0\0\0R+\0\0\0\ 1\0\0R}\0\0\0Rv\0\0\0RH\0\0\0t\1e\0\0\0buildInnerBoundaryAlongM1GroupRG\0\0\0R)\0\0\0R*\0\0\0R?\0\0\0t\13\0\0\0checkGeoEquivalWithRV\ 1\0\0R.\0\0\0R)\ 1\0\0t\ 3\0\0\0absR0\0\0\0t\v\0\0\0getMaxValueRy\0\0\0R\v\0\0\0(\12\0\0\0\0\0\0R9\ 1\0\0R\83\0\0\0R\85\0\0\0t\ 3\0\0\0grpt\ 4\0\0\0grp2R\86\0\0\0t\a\0\0\0grpNodet\ 4\0\0\0ref0t\ 4\0\0\0ref1t\ 4\0\0\0ref2t\ 5\0\0\0nodest\ 5\0\0\0cellst\ 6\0\0\0cells2t \0\0\0refValuest
++\0\0\0valsToTestt\ 5\0\0\0deltat
++\0\0\0refValues2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt#\0\0\0testBuildInnerBoundaryAlongM1Group1û\ 4\0\0sl\0\0\0\0\ 1\ 6\ 1\f\ 1+\ 1(\ 1\f\0\r\ 1\19\ 1G\ 1\13\ 1\18\0\r\ 1\15\0\r\ 1\f\ 1\10\ 1\10\ 1\16\ 1\18\0\r\ 1\13\ 13\ 13\ 13\ 2\16\ 12\ 12\ 2\18\ 1\1f\ 1\1f\ 1\1f\ 1\16\ 1+\ 1(\ 1+\ 1+\ 12\ 12\ 14\ 1+\ 1K\ 1\1e\0
++\0
++\ 1\1d\ 2#\ 14\ 1\a\0\16\ 1\1e\0
++\0
++\ 1\1d\ 1\10\ 1c\ 1\0\0\0\12\0\0\0\15\0\0\0C\0\0\0\ 5\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0t\ 3\0j\ 1\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0g\ 6\0\83\ 1\0\83\ 2\0\ 1|\ 2\0j\ 2\0d       \0t\ 3\0j\ 1\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 5\0\83\ 1\0\83\ 2\0\ 1|\ 2\0j\ 4\0\83\0\0}\ 2\0|\ 2\0j\ 5\0d
++\0\83\ 1\0\ 1|\ 2\0j\ 6\0\83\0\0j\a\0d\v\0d\f\0g\ 2\0\83\ 1\0\ 1|\ 2\0j\b\0\83\0\0d\ 2\0\19d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0g\11\0\19}\ 3\0|\ 3\0j\ 5\0|\ 2\0j       \0\83\0\0\83\ 1\0\ 1t
++\0j\ 1\0d\1e\0d\1f\0g\ 2\0\83\ 1\0}\ 4\0|\ 4\0j\ 5\0\0\83\ 1\0\ 1t
++\0j\ 1\0d!\0d"\0g\ 2\0\83\ 1\0}\ 5\0|\ 5\0j\ 5\0d#\0\83\ 1\0\ 1t\v\0j\ 1\0\83\0\0}\ 6\0|\ 6\0j\f\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\ 6\0j\f\0d$\0|\ 3\0\83\ 2\0\ 1|\ 6\0j\r\0d$\0|\ 4\0|\ 5\0g\ 2\0\83\ 2\0\ 1t
++\0j\ 1\0d\1e\0d\11\0d\13\0g\ 3\0\83\ 1\0}\a\0|\a\0j\ 5\0d%\0\83\ 1\0\ 1|\ 6\0j\r\0d    \0|\a\0g\ 1\0\83\ 2\0\ 1d\1e\0d&\0d\ f\0d\10\0d\11\0d\1e\0d"\0d&\0d\11\0d\12\0d\1e\0d'\0d"\0d\12\0d\13\0g\ f\0}\b\0d\1e\0d!\0d\r\0d\ f\0d&\0d\1e\0d(\0d!\0d&\0d"\0g
++\0}    \0d\1e\0d!\0d\r\0d\ f\0d)\0d\1e\0d(\0d!\0d)\0d"\0g
++\0}
++\0|\0\0j\ e\0d)\0|\ 6\0j\ f\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0|\b\0|\ 6\0j\10\0d\ 2\0\83\ 1\0d*\0d+\0d\ f\0g\ 3\0\19j\11\0\83\0\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0|      \0|\ 6\0j\10\0d\ 2\0\83\ 1\0d,\0d\r\0g\ 2\0\19j\11\0\83\0\0j\12\0\83\0\0\83\ 2\0\ 1|\ 6\0j\13\0\0\83\ 1\0\\ 3\0}\v\0}\f\0}\r\0|\0\0j\ e\0d&\0g\ 1\0|\v\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d,\0d\r\0g\ 2\0|\f\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d*\0d+\0g\ 2\0|\r\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d\17\0|\ 6\0j\ f\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d\1e\0d\1f\0g\ 2\0|\ 6\0j\14\0d$\0\0\83\ 2\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d!\0d"\0g\ 2\0|\ 6\0j\14\0d$\0d#\0\83\ 2\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d\1e\0d\11\0d\13\0g\ 3\0|\ 6\0j\14\0\0d%\0\83\ 2\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d'\0d-\0g\ 2\0|\ 6\0j\14\0d$\0d.\0\83\ 2\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0|\b\0|\ 6\0j\10\0d\ 2\0\83\ 1\0d*\0d+\0d\ f\0g\ 3\0\19j\11\0\83\0\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0|
++\0|\ 6\0j\10\0d\ 2\0\83\ 1\0d,\0d\r\0g\ 2\0\19j\11\0\83\0\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\15\0t\16\0|\ 6\0j\17\0d$\0d.\0\83\ 2\0j\18\0|\ 6\0j\17\0d$\0\0\83\ 2\0d/\0d0\0\83\ 5\0\ 1|\ 6\0j\17\0d$\0d.\0\83\ 2\0j\18\0|\ 6\0j\17\0d$\0\0\83\ 2\0d*\0d0\0\83\ 3\0\ 1t\ 3\0j\ 1\0d1\0d2\0d3\0d4\0d5\0d2\0d6\0d7\0d8\0d9\0d3\0d7\0d:\0d;\0d<\0d4\0d8\0d;\0d=\0d>\0g\14\0\83\ 1\0}\ e\0|\ 6\0j\10\0d\ 2\0\83\ 1\0j\19\0t\1a\0\83\ 1\0j\e\0\83\0\0}\ f\0|\ f\0|\ e\0\18}\10\0|\10\0j\1c\0\83\0\0\ 1|\0\0j\1d\0|\10\0j\1e\0\83\0\0d\ 2\0\19d0\0k\0\0\83\ 1\0\ 1|\ 6\0j\ 6\0\83\0\0t\1f\0|\v\0\83\ 1\0\vc\ 2\0\1fd\ 3\0d?\0g\ 2\07\ 3)|\0\0j\15\0t\16\0|\ 6\0j\17\0d$\0d.\0\83\ 2\0j\18\0|\ 6\0j\17\0d$\0\0\83\ 2\0d*\0d0\0\83\ 5\0\ 1|\ e\0\1e}\11\0d@\0dA\0g\ 2\0|\11\0d,\0d!\0+|\ 6\0j\10\0d\ 2\0\83\ 1\0j\19\0t\1a\0\83\ 1\0j\e\0\83\0\0}\ f\0|\ f\0|\11\0\18}\10\0|\10\0j\1c\0\83\0\0\ 1|\0\0j\1d\0|\10\0j\1e\0\83\0\0d\ 2\0\19d0\0k\0\0\83\ 1\0\ 1|\ 6\0\0|\ 1\0d/\0\83\ 2\0\ 1d\0\0S(B\0\0\0Ns\f\0\0\0Pyfile45.medi\0\0\0\0g\0\0\0\0\0\0\0\0g\9a\99\99\99\99\99ñ?gffffff\ 2@gÍÌÌÌÌÌ\f@g\0\0\0\0\0\0\14@g\0\0\0\0\0\0\1a@i\ 1\0\0\0\ 1\0\0s\ 6\0\0\0X [km]s\ 6\0\0\0Z [mm]i\b\0\0\0i\v\0\0\0i\ e\0\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\19\0\0\0i\1a\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i#\0\0\0i$\0\0\0i%\0\0\0i\ 4\0\0\0i\ 6\0\0\0\ 1\0\0i   \0\0\0i\10\0\0\0\ 1\0\0iÿÿÿÿRà\ 1\0\0i\ f\0\0\0i\11\0\0\0i
++\0\0\0i\1e\0\0\0i\f\0\0\0i\r\0\0\0i\a\0\0\0i\12\0\0\0\ 1\0\0i\ 2\0\0\0g\11ê-\81\99\97q=g\\8fÂõ(\ó?g\1f\85ëQ¸\1eõ?gáz\14®Gáö?g¤p=
++×£ø?gffffffú?g
++ףp=
++÷?gö(\\8fÂõø?gáz\14®Gáú?gÍÌÌÌÌÌü?g
++ףp=
++û?g\1f\85ëQ¸\1eý?g333333ÿ?g\\8fÂõ(\ÿ?gÍÌÌÌÌÌ\0@g333333Ó¿g×£p=
++×õ?g\85ëQ¸\1e\85÷?(!\0\0\0\0\0\0R(\0\0\0\0\0\0RY\0\0\0\ 1\0\0RB\0\0\0\0\0\0\ 1\0\0R\9b\ 1\0\0RC\0\0\0Rk\0\0\0R>\0\0\0Rj\0\0\0Rl\0\0\0R+\0\0\0\ 1\0\0R}\0\0\0Rv\0\0\0RH\0\0\0\ 1\0\0RG\0\0\0R)\0\0\0R*\0\0\0R?\0\0\0\ 1\0\0RV\ 1\0\0R.\0\0\0R)\ 1\0\0\ 1\0\0R0\0\0\0\ 1\0\0Ry\0\0\0R\v\0\0\0(\12\0\0\0R  \0\0\0R9\ 1\0\0R\83\0\0\0R\85\0\0\0\ 1\0\0\ 1\0\0R\86\0\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt#\0\0\0testBuildInnerBoundaryAlongM1Group2-\ 5\0\0sl\0\0\0\0\ 1\ 6\ 1\f\ 1+\ 1(\ 1\f\0\r\ 1\19\ 1G\ 1\13\ 1\15\0\r\ 1\15\0\r\ 1\f\ 1\10\ 1\10\ 1\16\ 1\18\0\r\ 1\13\ 13\ 1$\ 1$\ 2\16\ 12\ 1/\ 2\18\ 1\19\ 1\1c\ 1\1c\ 1\16\ 1(\ 1(\ 1+\ 1(\ 12\ 1/\ 14\ 1+\ 1K\ 1\1e\0
++\0
++\ 1\1d\ 2#\ 14\ 1\a\0\13\ 1\1e\0
++\0
++\ 1\1d\ 1\10\ 1c\ 1\0\0\0\ f\0\0\0
++\0\0\0C\0\0\0s\ f\ 4\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0t\ 3\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 5\0\83\ 1\0\83\ 2\0\ 1|\ 2\0j\ 2\0d\b\0t\ 3\0d\ 3\0d   \0d
++\0g\ 3\0\83\ 1\0\83\ 2\0\ 1|\ 2\0j\ 4\0\83\0\0}\ 2\0|\ 2\0j\ 5\0d\v\0\83\ 1\0\ 1|\ 2\0j\ 6\0\83\0\0d\ 2\0\19}\ 3\0|\ 3\0j\ 5\0|\ 2\0j\a\0\83\0\0\83\ 1\0\ 1t\b\0d\f\0d\r\0g\ 2\0\83\ 1\0}\ 4\0|\ 4\0j\ 5\0d\ e\0\83\ 1\0\ 1t       \0j\ 1\0\83\0\0}\ 5\0|\ 5\0j
++\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\ 5\0j
++\0d\ f\0|\ 3\0\83\ 2\0\ 1|\ 5\0j\v\0d\ f\0|\ 4\0g\ 1\0\83\ 2\0\ 1|\ 5\0j\f\0d\ e\0\83\ 1\0\\ 3\0}\ 6\0}\a\0}\b\0|\0\0j\r\0d\b\0d\10\0g\ 2\0|\ 6\0j\ e\0\83\0\0\83\ 2\0\ 1|\0\0j\r\0d\ 2\0d\11\0g\ 2\0|\a\0j\ e\0\83\0\0\83\ 2\0\ 1|\0\0j\r\0d\b\0d\12\0g\ 2\0|\b\0j\ e\0\83\0\0\83\ 2\0\ 1|\0\0j\r\0d\13\0|\ 5\0j\ f\0\83\0\0\83\ 2\0\ 1|\0\0j\r\0d\f\0d\r\0g\ 2\0|\ 5\0j\10\0d\ f\0d\ e\0\83\ 2\0j\ e\0\83\0\0\83\ 2\0\ 1|\0\0j\r\0d\14\0d\15\0g\ 2\0|\ 5\0j\10\0d\ f\0d\16\0\83\ 2\0j\ e\0\83\0\0\83\ 2\0\ 1d\17\0d\18\0d\ 2\0d\19\0d\11\0d\17\0d\1a\0d\12\0d\e\0d\1c\0g
++\0}    \0d\17\0d\1d\0d\b\0d\11\0d\12\0d\17\0d\1e\0d\1a\0d\10\0d\1f\0g
++\0}
++\0|\0\0j\r\0|      \0|\ 5\0j\11\0d\ 2\0\83\ 1\0d\ 2\0d\11\0g\ 2\0\19j\12\0\83\0\0j\ e\0\83\0\0\83\ 2\0\ 1|\0\0j\r\0|
++\0|\ 5\0j\11\0d\ 2\0\83\ 1\0d\b\0d\12\0g\ 2\0\19j\12\0\83\0\0j\ e\0\83\0\0\83\ 2\0\ 1|\0\0j\13\0t\14\0|\ 5\0j\15\0d\ f\0d\16\0\83\ 2\0j\16\0|\ 5\0j\15\0d\ f\0d\ e\0\83\ 2\0d\1d\0\0\83\ 5\0\ 1|\ 5\0j\15\0d\ f\0d\16\0\83\ 2\0j\16\0|\ 5\0j\15\0d\ f\0d\ e\0\83\ 2\0d\e\0\0\83\ 3\0\ 1t\ 3\0d\ 4\0d!\0d"\0d#\0d\ 4\0d!\0d"\0d#\0g\b\0\83\ 1\0}\v\0|\ 5\0j\11\0d\ 2\0\83\ 1\0j\17\0t\18\0\83\ 1\0j\19\0\83\0\0}\f\0|\f\0|\v\0\18}\r\0|\r\0j\1a\0\83\0\0\ 1|\0\0j\e\0|\r\0j\1c\0\83\0\0d\ 2\0\19d$\0k\0\0\83\ 1\0\ 1|\ 5\0j\1d\0\83\0\0t\1e\0|\ 6\0\83\ 1\0\vc\ 2\0\1fd\ 3\0d%\0g\ 2\07\ 3)|\0\0j\13\0t\14\0|\ 5\0j\15\0d\ f\0d\16\0\83\ 2\0j\16\0|\ 5\0j\15\0d\ f\0d\ e\0\83\ 2\0d\e\0\0\83\ 5\0\ 1|\v\0\1e}\ e\0d&\0|\ e\0d\ 2\0<d'\0|\ e\0d\11\0<|\ 5\0j\11\0d\ 2\0\83\ 1\0j\17\0t\18\0\83\ 1\0j\19\0\83\0\0}\f\0|\f\0|\ e\0\18}\r\0|\r\0j\1a\0\83\0\0\ 1|\0\0j\e\0|\r\0j\1c\0\83\0\0d\ 2\0\19\0k\0\0\83\ 1\0\ 1|\ 5\0j\1f\0|\ 1\0d\1d\0\83\ 2\0\ 1d(\0S()\0\0\0s@\0\0\0 Test buildInnerBoundaryAlongM1Group() with *non-connex* cracks s\f\0\0\0Pyfile73.medi\0\0\0\0g\0\0\0\0\0\0\0\0g\9a\99\99\99\99\99ñ?gffffff\ 2@gÍÌÌÌÌÌ\f@g\0\0\0\0\0\0\14@i\ 1\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@t\ 6\0\0\0simplei\ 3\0\0\0i\13\0\0\0\ 1\0\0iÿÿÿÿi\r\0\0\0i\ 6\0\0\0i\a\0\0\0i\11\0\0\0i\16\0\0\0i\17\0\0\0\ 1\0\0i\ 4\0\0\0i\ f\0\0\0i\ 5\0\0\0i\b\0\0\0i\f\0\0\0i\10\0\0\0i\ 2\0\0\0i      \0\0\0i\ e\0\0\0g\11ê-\81\99\97q=g333333ó?gÍÌÌÌÌÌô?gffffffö?g»½×Ùß|Û=g333333Ó¿g=
++×£p=ô?g®Gáz\14®ñ?N( \0\0\0\0\0\0R(\0\0\0\0\0\0RY\0\0\0\ 1\0\0RB\0\0\0R\9b\ 1\0\0RC\0\0\0Rk\0\0\0R>\0\0\0Rj\0\0\0Rl\0\0\0\ 1\0\0R+\0\0\0RH\0\0\0\ 1\0\0RG\0\0\0R}\0\0\0Rv\0\0\0R)\0\0\0R*\0\0\0R?\0\0\0\ 1\0\0RV\ 1\0\0R.\0\0\0R)\ 1\0\0\ 1\0\0R0\0\0\0\ 1\0\0\0\0\0Ry\0\0\0R\v\0\0\0(\ f\0\0\0R   \0\0\0R9\ 1\0\0R\83\0\0\0R\85\0\0\0t\ 6\0\0\0grpSegR\86\0\0\0\ 1\0\0t\b\0\0\0cellsModt\v\0\0\0cellsNotModRê\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt#\0\0\0testBuildInnerBoundaryAlongM1Group3_\ 5\0\0sT\0\0\0\0\ 2\ 6\ 1\f\ 1%\ 1\1f\ 1\f\0\r\ 1\10\ 1\13\ 3\12\0\r\ 2\f\ 1\10\ 1\10\ 1\13\ 1\18\ 1\1c\ 1\1c\ 1\1c\ 1\16\ 1(\ 1(\ 1$\ 1$\ 1/\ 1/\ 14\ 1+\ 2$\ 1\1e\0
++\0
++\ 1\1d\ 2#\ 14\ 1\a\0
++\0
++\ 1\1e\0
++\0
++\ 1\1d\ 1c\ 1\0\0\0\14\0\0\00\0\0\0C\0\0\0s\1e\ 5\0\0t\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 4\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 4\0d\ 2\0d\ 1\0d\ 3\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0g\18\0d\ 5\0d\ 6\0\83\ 3\0}\ 1\0d\a\0d\b\0d    \0d
++\0d\a\0d
++\0d    \0d\v\0d\a\0d\v\0d\f\0d\r\0d\a\0d\v\0d\r\0d\ e\0d\a\0d\ 6\0d\ e\0d\ f\0d\a\0d\ 6\0d\ f\0d\a\0d\a\0d        \0d\10\0d\f\0d\a\0d     \0d\f\0d\v\0d\a\0d
++\0d\v\0d\ e\0d\a\0d
++\0d\ e\0d\ 6\0d\a\0d\ e\0d\r\0d\11\0d\a\0d\ e\0d\11\0d\ f\0g0\0}\ 2\0t\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0d\12\0d
++\0\83\ 2\0\ 1|\ 3\0j\ 3\0\83\0\0\ 1|\ 3\0d   \09}\ 3\0t\ 4\0d\13\0d\ 6\0\83\ 2\0}\ 4\0|\ 4\0j\ 5\0|\ 1\0\83\ 1\0\ 1|\ 4\0j\ 6\0t\ 1\0|\ 2\0\83\ 1\0|\ 3\0\83\ 2\0\ 1|\ 4\0j\a\0\83\0\0\ 1|\ 4\0j\b\0\83\0\0\\ 5\0}\ 5\0}\ 6\0}\ 6\0}\ 6\0}\ 6\0t\ 1\0d\f\0d\11\0g\ 2\0\83\ 1\0}\a\0|\a\0j      \0d\14\0\83\ 1\0\ 1t\ 1\0d\b\0d
++\0g\ 2\0\83\ 1\0}\b\0|\b\0j        \0d\15\0\83\ 1\0\ 1t
++\0\83\0\0\0|      \0j\v\0d\b\0|\ 4\0\83\ 2\0\ 1\0j\v\0d\16\0|\ 5\0\83\ 2\0\ 1\0j\f\0d\16\0|\a\0|\b\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\r\0\83\0\0}
++\0|    \0j\ e\0d\14\0\83\ 1\0\\ 3\0}\v\0}\f\0}\r\0\0j\ f\0d\b\0\83\ 1\0}\ e\0|\ e\0j\a\0\83\0\0\ 1|        \0j\ f\0d\16\0\83\ 1\0}\ f\0|\ f\0j\a\0\83\0\0\ 1|\0\0j\10\0|
++\0d\ 6\0\17|        \0j\r\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0|
++\0d\ 6\0\17|\ e\0j\r\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0|
++\0d\ 6\0\17|\ f\0j\r\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ e\0d\ f\0g\ 2\0|\v\0j\11\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ 3\0d\ 2\0d\ 4\0d\ 2\0g\ 4\0|\ e\0j\12\0\83\0\0|
++\0\1fj\11\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0t\13\0d\a\0d\r\0d\11\0g\ 3\0\83\ 1\0t\13\0|\f\0j\11\0\83\0\0\83\ 1\0\83\ 2\0\ 1|\0\0j\10\0t\13\0d\10\0d\f\0d       \0d\v\0g\ 4\0\83\ 1\0t\13\0|\r\0j\11\0\83\0\0\83\ 1\0\83\ 2\0\ 1|\0\0j\10\0d\f\0d\11\0g\ 2\0|   \0j\14\0d\16\0d\14\0\83\ 2\0j\11\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\17\0d\18\0g\ 2\0\0j\14\0d\16\0d\19\0\83\ 2\0j\11\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\b\0d
++\0g\ 2\0\0j\14\0d\16\0d\15\0\83\ 2\0j\11\0\83\0\0\83\ 2\0\ 1d\a\0d\v\0d\r\0d\ 5\0d\a\0d\ 5\0d\r\0d\11\0d\a\0d\ 5\0d\11\0d\12\0g\f\0}\10\0d\a\0d\ 6\0d\ e\0d\ f\0d\a\0d\ 6\0d\ f\0d\a\0d\a\0d
++\0d\v\0d\ e\0d\a\0d
++\0d\ e\0d\ 6\0g\10\0}\11\0|\0\0j\10\0|\10\0|       \0j\ f\0d\b\0\83\ 1\0d\a\0d\r\0d\11\0g\ 3\0\19j\15\0\83\0\0j\11\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0|\11\0|       \0j\ f\0d\b\0\83\ 1\0d     \0d\v\0d\10\0d\f\0g\ 4\0\19j\15\0\83\0\0j\11\0\83\0\0\83\ 2\0\ 1|\0\0j\16\0t\17\0|        \0j\18\0d\16\0d\19\0\83\ 2\0j\19\0|       \0j\18\0d\16\0d\14\0\83\ 2\0d\ 6\0d\1a\0\83\ 5\0\ 1|        \0j\18\0d\16\0d\19\0\83\ 2\0j\19\0|       \0j\18\0d\16\0d\14\0\83\ 2\0d\ 5\0d\1a\0\83\ 3\0\ 1|        \0j\ f\0d\16\0\83\ 1\0}\12\0|\12\0j\b\0\83\0\0\\ 5\0}\13\0}\ 6\0}\ 6\0}\ 6\0}\ 6\0|\12\0j\1a\0\0j\ f\0d\16\0\83\ 1\0d\ 6\0d\e\0\83\ 3\0\ 1d\1c\0S(\1d\0\0\0sr\0\0\0 Test case where cells touch the M1 group on some nodes only and not on full edges (triangle mesh for ex)
++        g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@i\f\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\0\0\0\0i\ 4\0\0\0i\ 1\0\0\0i\ 5\0\0\0i      \0\0\0i
++\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i\v\0\0\0i\r\0\0\0t\ 2\0\0\02Dt\ 5\0\0\0groupt\ 6\0\0\0group2iÿÿÿÿi\17\0\0\0i\18\0\0\0t      \0\0\0group_dupg\11ê-\81\99\97q=g­\ 1¥üÿÿ#@N(\e\0\0\0RY\0\0\0Rk\0\0\0Rx\ 1\0\0Ry\ 1\0\0R[\0\0\0Rc\0\0\0t\ f\0\0\0setConnectivityt\10\0\0\0checkConsistencyR\9b\ 1\0\0RB\0\0\0R>\0\0\0Rj\0\0\0Rl\0\0\0\ 1\0\0\ 1\0\0R}\0\0\0R+\0\0\0RH\0\0\0\0\0\0t\ 3\0\0\0setRG\0\0\0Rv\0\0\0R)\0\0\0R*\0\0\0R?\0\0\0\ 1\0\0t\1f\0\0\0checkDeepEquivalOnSameNodesWith(\14\0\0\0R      \0\0\0t\ 3\0\0\0coot\ 4\0\0\0connt\ 5\0\0\0connIR\85\0\0\0R\84\0\0\0t\ 1\0\0\0_t\ 6\0\0\0grpIdst\a\0\0\0grpIds2t\ 3\0\0\0mfut\ 4\0\0\0nNodt\b\0\0\0nodesDupt\ 6\0\0\0cells1Rï\ 1\0\0t\ 6\0\0\0m2_bist\ 6\0\0\0m1_bisRê\ 1\0\0\ 1\0\0t\ 6\0\0\0m_bis0t\ 6\0\0\0m_desc(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt#\0\0\0testBuildInnerBoundaryAlongM1Group4\89\ 5\0\0sf\0\0\0\0\ 3\e\ 1\18\ 1'\ 1\18\ 1\18\ 1\18\ 1\18\ 1\18\ 1\1e\ 2        \ 1\10\0
++\0
++\ 1\ f\ 1\r\ 1\16\ 1
++\ 1\e\ 1\12\0\r\ 1\12\0\r\ 1   \ 1\10\ 1\10\ 1\16\ 1\f\ 1\18\ 1\ f\ 1
++\ 1\ f\ 1
++\ 1\1a\ 1\1a\ 1\1a\ 1\1c\ 1,\ 1+\ 1.\ 1(\ 1(\ 1(\ 2*\ 16\ 12\ 15\ 14\ 1+\ 1\ f\ 1\e\ 1c\ 1\0\0\0\12\0\0\0®\ 1\0\0C\0\0\0
++\0\0t\0\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 2\0d\ 3\0d\ 1\0d\ 1\0d\ 3\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 1\0d\ 2\0d\ 4\0d\ 1\0d\ 5\0d\ 1\0d\ 1\0d\ 6\0d\ 1\0d\ 1\0d\ 1\0d\ 4\0d\ 1\0d\ 5\0d\ 2\0d\ 1\0d\ 6\0d\ 2\0d\ 1\0d\ 2\0d\ 4\0d\ 2\0d\ 5\0d\ 1\0d\ 2\0d\ 6\0d\ 1\0d\ 2\0d\ 1\0d\ 4\0d\ 2\0d\ 5\0d\ 2\0d\ 2\0d\ 6\0d\ 2\0d\ 2\0d\ 1\0d\ 1\0d\a\0d\ 2\0d\ 1\0d\b\0d\ 1\0d\ 2\0d\a\0d\ 2\0d\ 2\0d\b\0d    \0d\ 1\0d\ 1\0d\ 3\0d
++\0d\ 1\0d\v\0d\ 2\0d\ 1\0d\v\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 2\0d\v\0d\ 2\0d\ 2\0d\ 3\0d\ 1\0d\f\0d\ 3\0d\ 2\0d\r\0d\ e\0d\ f\0d\ 1\0d\10\0d\11\0d\ 2\0d\12\0d\ 1\0d\13\0d\14\0d\ 2\0d\15\0d\ 1\0d\16\0d\17\0d\ 2\0d\18\0d\19\0d\1a\0d\e\0d\ 2\0d\1c\0d\ 2\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0d#\0g\8a\0d$\0d%\0\83\ 3\0}\ 1\0d&\0d'\0d(\0d)\0d*\0d&\0d+\0d,\0d-\0d.\0d&\0d/\0d0\0d1\0d.\0d&\0d2\0d3\0d4\0d5\0d&\0d,\0d0\0d.\0d1\0d&\0d)\0d-\0d6\0d.\0d&\0d,\0d3\0d1\0d7\0d&\0d+\0d,\0d.\0d1\0d&\0d8\0d9\0d/\0d1\0d&\0d)\0d'\0d:\0d;\0d&\0d/\0d+\0d.\0d1\0d&\0d&\0d<\0d6\0d.\0d&\0d3\0d,\0d1\0d5\0d&\0d9\0d=\0d>\0d?\0d&\0d,\0d0\0d1\0d5\0d&\0d.\0d&\0d<\0d0\0d&\0d.\0d@\0d/\0d:\0d&\0d)\0d:\0d@\0d.\0d&\0d,\0d.\0d&\0d6\0d&\0d/\0d+\0d1\0d?\0d&\0d)\0dA\0d'\0d*\0d&\0d9\0d?\0d/\0d1\0d&\0d@\0d:\0d)\0d%\0d&\0d9\0d=\0d?\0d1\0d&\0d/\0d0\0d.\0dB\0d&\0d)\0d:\0d.\0d;\0d&\0d/\0d+\0d?\0d@\0d&\0d+\0d,\0d1\0d7\0d&\0d3\0d4\0d5\0d1\0d&\0dC\0d:\0dD\0d'\0d&\0d,\0d0\0d5\0d&\0d&\0d4\0d0\0d5\0d1\0d&\0d-\0d.\0d)\0d+\0d&\0d8\0d0\0d4\0d1\0d&\0d/\0d0\0dB\0d8\0d&\0d.\0d-\0d6\0d,\0d&\0d9\0d8\0d4\0d1\0d&\0d:\0d<\0dB\0d.\0d&\0d7\0d=\0d1\0d+\0d&\0d;\0d'\0d:\0d<\0d&\0d+\0d,\0d7\0d-\0d&\0dB\0d<\0d:\0dE\0d&\0d/\0d0\0d8\0d1\0d&\0d6\0d)\0d.\0d;\0d&\0d8\0dF\0d9\0d4\0d&\0d?\0d=\0d+\0d1\0d&\0d)\0d(\0d'\0d6\0d&\0d.\0d;\0d<\0d6\0d&\0d6\0d'\0d<\0dG\0d&\0d.\0d;\0d:\0d<\0d&\0d6\0d-\0d)\0dH\0d&\0d,\0d0\0d&\0d.\0d&\0d/\0d+\0d@\0d.\0d&\0d'\0d(\0d*\0dI\0d&\0d3\0d=\0d7\0dJ\0d&\0d0\0d.\0dB\0d<\0d&\0d3\0d7\0d=\0d1\0d&\0d6\0d<\0d&\0dK\0d&\0d'\0d6\0dL\0dG\0d&\0dM\0d'\0dC\0dD\0d&\0dB\0d.\0d/\0d:\0d&\0d.\0d@\0d)\0d+\0d&\0dC\0d'\0dN\0d<\0d&\0d'\0dM\0dA\0dD\0d&\0dC\0d<\0d:\0d'\0d&\0d(\0d)\0dH\0d6\0d&\0dA\0dM\0dI\0dO\0d&\0dN\0d'\0dL\0dG\0d&\0dI\0d'\0dL\0dN\0d&\0d'\0d(\0dI\0dL\0d&\0dA\0d:\0d'\0dD\0d&\0d'\0d(\0dL\0d6\0d&\0dA\0d:\0d)\0d'\0d&\0dP\0dC\0dM\0dN\0d&\0dA\0dM\0d'\0dI\0d&\0dA\0d'\0d*\0dI\0d&\0dI\0dQ\0dL\0d(\0d&\0d)\0d:\0dA\0d%\0d&\0dM\0d'\0dI\0dN\0d&\0dN\0dL\0dR\0dG\0d&\0d<\0d'\0d6\0d;\0d&\0dN\0d'\0dG\0d<\0d&\0d)\0d6\0d'\0d;\0d&\0d6\0d<\0dK\0dG\0d&\0dM\0d'\0dN\0dC\0d&\0d:\0d<\0dC\0dE\0\ 1}\ 2\0dH\0d2\0dO\0d<\0d-\0d3\0dC\0dM\0d;\0d'\0dS\0dT\0dU\0dV\0dW\0dX\0dY\0dZ\0d[\0d\\0d]\0d^\0d_\0d`\0da\0db\0dc\0dd\0de\0df\0dg\0dh\0di\0dj\0dk\0dl\0dm\0dn\0do\0dp\0dq\0dr\0ds\0dt\0du\0dv\0dw\0dx\0dy\0dz\0d{\0d|\0d}\0d~\0d\7f\0d\80\0d\81\0d\82\0d\83\0d\84\0d\85\0d\86\0d\87\0d\88\0d\89\0d\8a\0d\8b\0d\8c\0d\8d\0d\8e\0d\8f\0d\90\0d\91\0d\92\0d\93\0d\94\0d\95\0d\96\0d\97\0d\98\0d\99\0d\9a\0d\9b\0d\9c\0d\9d\0d\9e\0d\9f\0gW\0}\ 3\0t\ 1\0\0d%\0\83\ 2\0}\ 4\0|\ 4\0j\ 2\0|\ 1\0\83\ 1\0\ 1|\ 4\0j\ 3\0t\ 4\0|\ 2\0\83\ 1\0t\ 4\0|\ 3\0\83\ 1\0\83\ 2\0\ 1|\ 4\0j\ 5\0\83\0\0\ 1|\ 4\0j\ 6\0\83\0\0\\ 5\0}\ 5\0}\ 6\0}\ 6\0}\ 6\0}\ 6\0t\ 4\0d0\0\0g\ 2\0\83\ 1\0}\a\0|\a\0j\a\0\0\83\ 1\0\ 1t\b\0\83\0\0}\b\0|\b\0j       \0dH\0|\ 4\0\83\ 2\0\ 1|\b\0\0\0|\ 5\0\83\ 2\0\ 1t\ 4\0dH\0dK\0g\ 2\0\83\ 1\0}     \0|      \0j\a\0\0\83\ 1\0\ 1|\b\0j
++\0dH\0\0g\ 1\0\83\ 2\0\ 1|\b\0j
++\0\0|\a\0g\ 1\0\83\ 2\0\ 1|\ 4\0j\v\0\83\0\0}
++\0|\b\0j\f\0\0\83\ 1\0\\ 3\0}\v\0}\f\0}\r\0|\b\0j\r\0dH\0\83\ 1\0}\ e\0|\ e\0j\ 5\0\83\0\0\ 1|\b\0j\r\0\0\83\ 1\0}\ f\0|\ f\0j\ 5\0\83\0\0\ 1|\0\0j\ e\0|
++\0dK\0\17|\b\0j\v\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0|
++\0dK\0\17|\ e\0j\v\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0|
++\0dK\0\17|\ f\0j\v\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0d%\0g\ 1\0|\v\0j\ f\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0|\ e\0j\10\0\83\0\0d%\0\19j\ f\0\83\0\0|\ e\0j\10\0\83\0\0|
++\0\1fj\ f\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0t\11\0d?\0g\ 1\0\83\ 1\0t\11\0|\f\0j\ f\0\83\0\0\83\ 1\0\83\ 2\0\ 1|\0\0j\ e\0t\11\0\0g\ 1\0\83\ 1\0t\11\0|\r\0j\ f\0\83\0\0\83\ 1\0\83\ 2\0\ 1|\0\0j\ e\0d0\0\0g\ 2\0|\b\0j\12\0\0\0\83\ 2\0j\ f\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0dH\0dK\0g\ 2\0|\b\0j\12\0dH\0\0\83\ 2\0j\ f\0\83\0\0\83\ 2\0\ 1|\0\0j\ e\0\0g\ 1\0|\b\0j\12\0\0\0\83\ 2\0j\ f\0\83\0\0\83\ 2\0\ 1|\b\0j\r\0\0\83\ 1\0}\10\0|\10\0j\ 6\0\83\0\0\\ 5\0}\11\0}\ 6\0}\ 6\0}\ 6\0}\ 6\0|\10\0j\13\0|\b\0j\r\0\0\83\ 1\0dE\0\0\83\ 3\0\ 1\0S(ª\0\0\0\0\0\0 Full 3D test with tetras only. In this case a tri from the group is not duplicated because it is made only
++        of non duplicated nodes. The tri in question is hence not part of the final new "dup" group. g\0\0\0\0\0\0i@g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0y@g\v\0\0\0\0\0Y@g§õ\1aÒu\93O@gåQA@wÎ`@gü ìü\\ 1Y@g\88cjµ\99\0Y@g\1dá Üä´r@gRÀË\97\95«X@g¢xÏ   Gîr@g#<©úG£X@g\ f\16ÛDb\ 1Y@g¢µî]=ÔX@g\80ÿóÿÿÿX@gö\82â^=ÔX@g+Im\0\0\0Y@gîÇ5^=ÔX@gèlÖ*S\0Y@gîô5^=ÔX@gMnÖ*S\0Y@gü
++ÓÿÿÿX@g\19Ù"Â\9b\0Y@gÞÚ\93ÿÿÿX@g\1a·Ï\99D\0Y@gðÝ[o¦Ôr@gÂ\ 3
++\0\0\0Y@g\fÌlo¦Ôr@g¯ü¾ë\9c\0Y@g\v\÷Éé\90a@g\19)}þÿÿX@g¶\80³jS\0Y@g\7fD}n\v\9er@glL[e¸JX@g¬8Þ$\88KX@i.\0\0\0i\ 3\0\0\0i\ e\0\0\0i-\0\0\0i\1f\0\0\0i\15\0\0\0i*\0\0\0i%\0\0\0i&\0\0\0i\14\0\0\0i,\0\0\0i'\0\0\0i$\0\0\0i)\0\0\0i\ 5\0\0\0i\19\0\0\0i\f\0\0\0i\r\0\0\0i\18\0\0\0i\13\0\0\0i\10\0\0\0i\e\0\0\0i\1a\0\0\0i(\0\0\0i\ f\0\0\0i\12\0\0\0i\ 6\0\0\0i\16\0\0\0i\17\0\0\0i!\0\0\0i\11\0\0\0i\1e\0\0\0i+\0\0\0i\ 2\0\0\0i\a\0\0\0i\1c\0\0\0i\0\0\0\0\0\0\0i\ 4\0\0\0i\ 1\0\0\0i"\0\0\0i#\0\0\0i\1d\0\0\0i
++\0\0\0i\v\0\0\0i\b\0\0\0i        \0\0\0i2\0\0\0i7\0\0\0i<\0\0\0iA\0\0\0iF\0\0\0iK\0\0\0iP\0\0\0iU\0\0\0iZ\0\0\0i_\0\0\0id\0\0\0ii\0\0\0in\0\0\0is\0\0\0ix\0\0\0i}\0\0\0i\82\0\0\0i\87\0\0\0i\8c\0\0\0i\91\0\0\0i\96\0\0\0i\9b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0iÿ\0\0\0i\ 4\ 1\0\0i     \ 1\0\0i\ e\ 1\0\0i\13\ 1\0\0i\18\ 1\0\0i\1d\ 1\0\0i"\ 1\0\0i'\ 1\0\0i,\ 1\0\0i1\ 1\0\0i6\ 1\0\0i;\ 1\0\0i@\ 1\0\0iE\ 1\0\0iJ\ 1\0\0iO\ 1\0\0iT\ 1\0\0iY\ 1\0\0i^\ 1\0\0ic\ 1\0\0ih\ 1\0\0im\ 1\0\0ir\ 1\0\0iw\ 1\0\0i|\ 1\0\0i\81\ 1\0\0i\86\ 1\0\0i\8b\ 1\0\0i\90\ 1\0\0i\95\ 1\0\0i\9a\ 1\0\0i\9f\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0t\ 2\0\0\03DiJ\0\0\0\ 1\0\0iÿÿÿÿt\b\0\0\0group_3diM\0\0\0\0\0\0\ 1\0\0\ 1¥üÿÿ#@N(\14\0\0\0RY\0\0\0R[\0\0\0Rc\0\0\0Rÿ\ 1\0\0Rk\0\0\0R\0\ 2\0\0R\9b\ 1\0\0RB\0\0\0R>\0\0\0Rj\0\0\0Rl\0\0\0\ 1\0\0\ 1\0\0R}\0\0\0R+\0\0\0RH\0\0\0\0\0\0R\ 1\ 2\0\0RG\0\0\0R\ 2\ 2\0\0(\12\0\0\0R     \0\0\0R\ 3\ 2\0\0t\ 2\0\0\0c0t\ 3\0\0\0cI0t\ 2\0\0\0m3R\85\0\0\0R\ 6\ 2\0\0R\a\ 2\0\0R  \ 2\0\0t\b\0\0\0grpIds3DR
++\ 2\0\0R\v\ 2\0\0R\f\ 2\0\0\ 1\0\0t\ 6\0\0\0m3_bisR\r\ 2\0\0R\ f\ 2\0\0R\10\ 2\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\17\0\0\0testBuildInnerBoundary5¾\ 5\0\0st\0\0\0\0\ 3H\ 1<\ 1-\ 13\ 1*\ 10\ 1$\ 1\1e\ 1\e\ 1\15\ 1\81\ 1\81\ 1\84\ 1\81\ 1\81\ 1\81\ 1\81\ 1~\ 1~\ 1~\ 1\f\ 1r\ 1f\ 13\ 1\ f\ 1\r\ 1\1c\ 1
++\ 1\e\ 1\12\0\r\ 1       \ 1\10\ 1\10\ 1\12\0\r\ 1\13\ 1\13\ 1\f\ 1\18\ 1\ f\ 1
++\ 1\ f\ 1
++\ 1\1a\ 1\1a\ 1\1a\ 1\19\ 10\ 1%\ 1%\ 1(\ 1(\ 1%\ 1\ f\ 1\e\ 1\1c\ 1c\ 1\0\0\0\ 3\0\0\0\a\0\0\0C\0\0\0s\ 3\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0|\ 1\0\83\ 1\0}\ 2\0t\0\0j\ 1\0|\ 1\0d\ 2\0d\ 3\0d\ 3\0\83\ 4\0}\ 2\0t\0\0j\ 1\0|\ 1\0\83\ 1\0}\ 2\0t\ 2\0|\ 1\0d\ 2\0d\ 3\0d\ 3\0\83\ 4\0}\ 2\0t\ 2\0|\ 1\0\83\ 1\0}\ 2\0t\ 2\0\83\0\0}\ 2\0|\0\0j\ 3\0\83\0\0\ 1t\ 4\0d\ 4\0\83\ 1\0}\ 2\0t\ 4\0d\ 4\0d\ 5\0d\ 3\0d\ 3\0\83\ 4\0}\ 2\0t\ 4\0\83\0\0}\ 2\0t\ 5\0\83\0\0}\ 2\0t\ 5\0|\ 1\0\83\ 1\0}\ 2\0t\ 5\0|\ 1\0d\ 2\0\83\ 2\0}\ 2\0t\ 6\0\83\0\0}\ 2\0t\ 6\0|\ 1\0\83\ 1\0}\ 2\0t\a\0\83\0\0}\ 2\0t\a\0|\ 1\0d\ 6\0d\a\0d\b\0\83\ 4\0}\ 2\0t\b\0\83\0\0}\ 2\0t\b\0|\ 1\0d\ 6\0\83\ 2\0}\ 2\0t   \0\83\0\0}\ 2\0t        \0|\ 1\0\83\ 1\0}\ 2\0t
++\0\83\0\0}\ 2\0t
++\0|\ 1\0\83\ 1\0}\ 2\0t\v\0\83\0\0}\ 2\0t\v\0d       \0d\a\0\83\ 2\0}\ 2\0t\v\0d
++\0d    \0d\v\0d\f\0d\a\0d\r\0g\ 6\0d\f\0d\a\0\83\ 3\0}\ 2\0t\f\0\83\0\0}\ 2\0t\f\0d       \0d\a\0\83\ 2\0}\ 2\0t\f\0d
++\0d    \0d\v\0d\f\0d\a\0d\r\0g\ 6\0d\f\0d\a\0\83\ 3\0}\ 2\0t\r\0d\ e\0d\a\0\83\ 2\0}\ 2\0t\r\0\83\0\0}\ 2\0t\ e\0\83\0\0}\ 2\0t\ f\0t\10\0t\11\0\83\ 2\0}\ 2\0t\12\0t\13\0\83\ 1\0}\ 2\0t\14\0g\0\0\83\ 1\0}\ 2\0t\15\0g\0\0\83\ 1\0}\ 2\0d\0\0S(\ f\0\0\0Ns\f\0\0\0Pyfile18.medR%\0\0\0iÿÿÿÿs\10\0\0\0MEDFileMesh5.medR«\0\0\0t\13\0\0\0FieldOnFacesShufflei\ 2\0\0\0i\a\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\ 4\0\0\0i\ 3\0\0\0i\ 1\0\0\0t\ 3\0\0\0jjj(\16\0\0\0R'\0\0\0R(\0\0\0R>\0\0\0R¿\0\0\0\0\0\0RM\ 1\0\0RP\ 1\0\0\0\0\0\0\0\0R[\ 1\0\0RK\ 1\0\0Rk\0\0\0RY\0\0\0R[\0\0\0\0\0\0Rw\ 1\0\0R\13\ 1\0\0RX\ 1\0\0t\18\0\0\0MEDCouplingFieldTemplateR\1c\ 1\0\0t\16\0\0\0MEDCouplingMultiFieldst\18\0\0\0MEDCouplingFieldOverTime(\ 3\0\0\0R       \0\0\0R9\ 1\0\0R\83\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\15\0\0\0testBasicConstructorsú\ 5\0\0sL\0\0\0\0\ 1\ 6\ 1\ f\ 1\18\ 1\ f\ 1\15\ 1\f\ 1        \ 1
++\ 1\f\ 1\15\ 1 \ 1       \ 1\f\ 1\ f\ 1   \ 1\f\ 1     \ 1\15\ 1     \ 1\ f\ 1     \ 1\f\ 1     \ 1\f\ 2     \0\ f\0$\ 1   \0\ f\0$\ 1\ f\0 \ 1       \ 1\ f\ 1\f\ 1\f\ 1\f\ 1c\ 1\0\0\0\v\0\0\0\b\0\0\0C\0\0\0\ 1\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0d\ 2\0 }\ 2\0|\ 2\0j\ 2\0d\ 3\0\83\ 1\0\ 1|\ 2\0j\ 3\0t\ 4\0\83\ 1\0}\ 3\0|\ 3\0j\ 5\0t\ 6\0t\ 4\0\83\ 2\0}\ 3\0|\ 3\0j\a\0d\ 4\0d\ 5\0d\ 6\0\83\ 3\0\ 1|\ 3\0j\ 2\0d\a\0\83\ 1\0\ 1|\ 3\0d\b\0 }\ 4\0|\ 4\0j\b\0\83\0\0j\ 2\0|\ 2\0j     \0\83\0\0\83\ 1\0\ 1|\ 3\0d\b\0\1f}\ 5\0|\ 5\0j\b\0\83\0\0j\ 2\0|\ 2\0j      \0\83\0\0\83\ 1\0\ 1t
++\0j\v\0\83\0\0}\ 6\0|\ 6\0j\f\0d     \0|\ 2\0\83\ 2\0\ 1t\r\0j\v\0\83\0\0}\a\0|\a\0j\ e\0|\ 4\0|\ 6\0d       \0t\ f\0j\10\0d        \0d\b\0d
++\0\83\ 3\0\83\ 4\0\ 1|\ 6\0j\11\0|\ 1\0d\v\0\83\ 2\0\ 1|\a\0j\11\0|\ 1\0d    \0\83\ 2\0\ 1t\r\0j\v\0|\ 1\0|\ 3\0j      \0\83\0\0|\ 3\0j\12\0\83\0\0d
++\0\19|\ 3\0j\12\0\83\0\0d\v\0\19\83\ 4\0}\b\0|\b\0j\13\0t\14\0d       \0|\ 6\0\83\ 3\0}        \0|\b\0j\15\0t\14\0d     \0\83\ 2\0}
++\0|    \0j\16\0\83\0\0\ 1|
++\0j\16\0\83\0\0\ 1|\0\0j\17\0|       \0j\18\0|\ 4\0d\f\0d\f\0\83\ 3\0\83\ 1\0\ 1|\0\0j\17\0|
++\0j\18\0|\ 4\0d\f\0d\f\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\r\0\0\0Ns\f\0\0\0Pyfile46.medi
++\0\0\0t\ 4\0\0\0meshg\0\0\0\0\0\0\16@i\ 3\0\0\0i\ 4\0\0\0t\10\0\0\0SemiPartialFieldi\ 6\0\0\0i\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0g\11ê-\81\99\97q=(\19\0\0\0R\ 4\0\0\0Rv\ 1\0\0RB\0\0\0RV\ 1\0\0RN\0\0\0RW\ 1\0\0RX\ 1\0\0\0\0\0\0\0\0RC\0\0\0R>\0\0\0R(\0\0\0Rj\0\0\0\0\0\0R|\ 1\0\0Rk\0\0\0t\ 5\0\0\0RangeR\v\0\0\0\0\0\0R\97\ 1\0\0R\13\ 1\0\0R\ 6\ 1\0\0Rd\0\0\0R0\0\0\0R1\0\0\0(\v\0\0\0R        \0\0\0R9\ 1\0\0R\83\0\0\0R\b\0\0\0\0\0\0\0\0\0R\86\0\0\0\0\0\0RC\ 1\0\0t\ 5\0\0\0freadt\ 6\0\0\0fread2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\17\0\0\0testBugSemiPartialField\1f\ 6\0\0s4\0\0\0\0\ 1\ 6\ 1\f\ 1
++\0\r\ 1\ f\ 1\12\ 1\13\ 1\r\ 2
++\0\19\ 1
++\0\19\ 2\f\ 1\10\ 1\f\ 1%\ 1\10\ 1\10\ 22\ 1\15\ 1\12\ 2
++\ 1
++\ 1\1c\ 1\1c\ 1c\ 1\0\0\0\ 4\0\0\0&\0\0\0C\0\0\0\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0|\0\0\83\ 1\0}\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 2\0d\ 4\0d\ 3\0d\ 3\0d\ 2\0d\ 5\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0g&\0}\ 3\0|\0\0j\ 2\0|\ 3\0|\ 2\0j\ 3\0d\ 6\0\83\ 1\0j\ 4\0\83\0\0\83\ 2\0\ 1|\0\0j\ 2\0|\ 2\0j\ 5\0\83\0\0d\a\0 t\ 6\0d\a\0d\b\0d  \0g\ 3\0d
++\0d\a\0d\b\0g\ 3\0d\v\0d
++\0d\v\0g\ 3\0d\ 3\0d\b\0d\f\0g\ 3\0d\r\0d\a\0d\ e\0g\ 3\0d\ f\0d\b\0d\ 3\0g\ 3\0g\ 6\0d\a\0d\a\0\0g\ 3\0d
++\0d\a\0d\a\0g\ 3\0d\v\0d\a\0d\10\0g\ 3\0d\ 3\0d\a\0d\f\0g\ 3\0d\r\0d\a\0d\ 4\0g\ 3\0d\11\0d\ 6\0d\ 5\0g\ 3\0g\ 6\0f\ 3\0\83\ 2\0\ 1|\ 2\0j\a\0|\ 1\0d\b\0\83\ 2\0\ 1|\0\0j\ 2\0|\ 2\0j\b\0d     \0d\12\0\83\ 2\0j\ 4\0\83\0\0d  \0d\ 6\0d\b\0d\10\0g\ 4\0\83\ 2\0\ 1|\0\0j\ 2\0|\ 2\0j\b\0d  \0d\13\0\83\ 2\0j\ 4\0\83\0\0d\ 6\0d\a\0d
++\0d\v\0d\10\0g\ 5\0\83\ 2\0\ 1|\0\0j\ 2\0|\ 2\0j\b\0d\14\0d\15\0\83\ 2\0j\ 4\0\83\0\0d\ 6\0d\b\0d\a\0d
++\0d\v\0g\ 5\0\83\ 2\0\ 1|\0\0j\ 2\0|\ 2\0j\b\0d\14\0d\16\0\83\ 2\0j\ 4\0\83\0\0d\a\0d
++\0d\v\0d\10\0g\ 4\0\83\ 2\0\ 1|\0\0j\ 2\0|\ 2\0j\b\0d\14\0d\17\0\83\ 2\0j\ 4\0\83\0\0d\b\0d\10\0d\18\0d\19\0g\ 4\0\83\ 2\0\ 1|\0\0j\ 2\0|\ 2\0j\b\0d\ 6\0d\1a\0\83\ 2\0j\ 4\0\83\0\0d      \0d\ e\0d\ 5\0d\r\0g\ 4\0\83\ 2\0\ 1|\0\0j\ 2\0|\ 2\0j\b\0d\ 6\0d\e\0\83\ 2\0j\ 4\0\83\0\0d\ 6\0d\b\0d\ 2\0d\ 3\0d\r\0g\ 5\0\83\ 2\0\ 1|\0\0j\ 2\0|\ 2\0j\ 3\0d\ 6\0\83\ 1\0j\ 4\0\83\0\0|\ 3\0\83\ 2\0\ 1|\ 2\0j   \0d      \0d\0\0\83\ 2\0\ 1|\ 2\0j\v\0d\14\0d\0\0\83\ 2\0\ 1d\0\0S(\1c\0\0\0Ns\f\0\0\0Pyfile47.medi\r\0\0\0i\ e\0\0\0i\f\0\0\0i\ f\0\0\0i\ 1\0\0\0i\ 3\0\0\0i\ 2\0\0\0i\0\0\0\0i\ 4\0\0\0i\ 5\0\0\0i  \0\0\0i\10\0\0\0i\v\0\0\0i\1f\0\0\0i\ 6\0\0\0i\12\0\0\0t\a\0\0\0grp0_L0t\a\0\0\0grp1_L0iÿÿÿÿt\b\0\0\0grp0_LM1t\b\0\0\0grp1_LM1t\b\0\0\0grp2_LM1i\a\0\0\0i\b\0\0\0t     \0\0\0grp0_Nodet   \0\0\0grp1_Node(\f\0\0\0R\ 4\0\0\0t\13\0\0\0buildMLMeshUnPolyzeR+\0\0\0R\9e\0\0\0RH\0\0\0t\b\0\0\0unPolyzeR.\0\0\0R\v\0\0\0RG\0\0\0R\98\0\0\0t\ 4\0\0\0NoneR¶\0\0\0(\ 4\0\0\0R      \0\0\0R9\ 1\0\0R\86\0\0\0t\ 3\0\0\0ref(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testUnPolyze1<\ 6\0\0s"\0\0\0\0\ 1\ 6\ 1\ f\ 1x\ 1\1f\ 1³\ 1\10\ 1.\ 11\ 11\ 1.\ 1.\ 1.\ 11\ 1\1f\ 2\10\ 1\10\ 1c\ 1\0\0\0\13\0\0\0-\0\0\0C\0\0\0\b\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0t\ 2\0j\ 3\0|\0\0\83\ 1\0}\ 3\0t\ 4\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 5\0|\ 3\0\83\ 1\0\ 1|\ 2\0j\ 6\0|\ 4\0\83\ 1\0\ 1t\a\0j\ 1\0\83\0\0}\ 5\0|\ 2\0j\b\0|\ 5\0\83\ 1\0\ 1t     \0j\ 1\0\83\0\0}\ 6\0|\ 5\0j
++\0|\ 6\0\83\ 1\0\ 1t\v\0j\ 1\0t\f\0t\r\0\83\ 2\0}\a\0|\a\0j\ e\0d\ 2\0\83\ 1\0\ 1|\a\0j\ f\0d\ 3\0d\ 4\0d\ 5\0\83\ 3\0\ 1t\10\0j\ 1\0dT\0\83\ 1\0}\b\0|\b\0j\11\0d\b\0\83\ 1\0\ 1|\b\0j\12\0d\a\0\83\ 1\0\ 1|\b\0j\13\0d    \0d
++\0g\ 2\0\83\ 1\0\ 1|\a\0j\14\0|\b\0\83\ 1\0\ 1|\a\0j\15\0|\ 3\0j\16\0d\v\0\83\ 1\0\83\ 1\0\ 1|\ 6\0j\17\0|\a\0\83\ 1\0\ 1|\ 6\0j\18\0d\v\0\83\ 1\0\0t\v\0j\ 1\0t\19\0t\r\0\83\ 2\0}
++\0|
++\0j\ e\0d\ 2\0\83\ 1\0\ 1|
++\0j\ f\0d\ 3\0d\ 4\0d\ 5\0\83\ 3\0\ 1t\1a\0j\ 1\0d\f\0d\ 5\0d\r\0d\ e\0g\ 4\0\83\ 1\0}\v\0|\v\0j\ e\0d\ f\0\83\ 1\0\ 1|
++\0j\15\0|\ 3\0j\16\0d\v\0\83\ 1\0|\v\0\19\83\ 1\0\ 1t\10\0j\ 1\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0g\b\0d\ 5\0d\a\0\83\ 3\0}\b\0|\b\0j\13\0d  \0d
++\0g\ 2\0\83\ 1\0\ 1|
++\0j\14\0|\b\0\83\ 1\0\ 1|  \0j\e\0|
++\0|\ 3\0d\v\0|\v\0\83\ 4\0\ 1t\v\0j\ 1\0t\19\0t\r\0\83\ 2\0}\f\0|\f\0j\ e\0d\ 2\0\83\ 1\0\ 1|\f\0j\ f\0d\ 3\0d\ 4\0d\ 5\0\83\ 3\0\ 1t\1a\0j\ 1\0d\v\0d\f\0d\a\0d\ 4\0d\ 5\0d\r\0d\ e\0d\18\0g\b\0\83\ 1\0}\r\0|\r\0j\ e\0d\19\0\83\ 1\0\ 1t\10\0j\ 1\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0d#\0d$\0d%\0d&\0d'\0d(\0d)\0g\10\0d\18\0d\a\0\83\ 3\0}\b\0|\b\0j\13\0d      \0d
++\0g\ 2\0\83\ 1\0\ 1|\f\0j\15\0|\ 3\0j\16\0d*\0\83\ 1\0|\r\0\19\83\ 1\0\ 1|\f\0j\14\0|\b\0\83\ 1\0\ 1|      \0j\e\0|\f\0|\ 3\0d*\0|\r\0\83\ 4\0\ 1|\ 2\0j\1c\0\83\0\0j\1d\0|       \0\83\ 1\0\ 1|\ 2\0j\1e\0\83\0\0\ 1|\ 2\0j\1c\0\83\0\0d\v\0\19}\ e\0|\0\0j\1f\0|\ e\0\0\83\0\0d\f\0\83\ 2\0\ 1|\0\0j\1f\0|\ e\0j!\0\83\0\0dU\0g\ 1\0\83\ 2\0\ 1|\ e\0j"\0d\ 4\0d\ 5\0\83\ 2\0\\ 2\0}\ f\0}\10\0|\0\0j\1f\0|\10\0dV\0dW\0f\ 2\0dX\0dY\0f\ 2\0dZ\0d[\0f\ 2\0d\\0d]\0f\ 2\0d^\0d_\0f\ 2\0d`\0da\0f\ 2\0db\0dc\0f\ 2\0g\a\0\83\ 2\0\ 1|\0\0j#\0|\ f\0d\ 6\0d+\0!j$\0t\10\0d\1a\0d\e\0d\1c\0d\1d\0g\ 4\0d\a\0d\a\0\83\ 3\0d4\0\83\ 2\0\83\ 1\0\ 1|\0\0j#\0|\ f\0d+\0d,\0!j$\0t\10\0d\1e\0d\1f\0\0d!\0d"\0d#\0g\ 6\0d\ 4\0d\a\0\83\ 3\0d4\0\83\ 2\0\83\ 1\0\ 1|\0\0j#\0|\ f\0d,\0d-\0!j$\0t\10\0d$\0d%\0d&\0d'\0d(\0d)\0g\ 6\0d\ 4\0d\a\0\83\ 3\0d4\0\83\ 2\0\83\ 1\0\ 1|\0\0j#\0|\ f\0d-\0d/\0!j$\0t\10\0d\10\0d\11\0d\14\0d\15\0g\ 4\0d\a\0d\a\0\83\ 3\0d4\0\83\ 2\0\83\ 1\0\ 1|\0\0j#\0|\ f\0d/\0d1\0!j$\0t\10\0d\12\0d\13\0g\ 2\0d\f\0d\a\0\83\ 3\0d4\0\83\ 2\0\83\ 1\0\ 1|\0\0j#\0|\ f\0d1\0d3\0!j$\0t\10\0d\16\0d\17\0g\ 2\0d\f\0d\a\0\83\ 3\0d4\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1f\0dd\0|\ e\0j%\0\83\0\0\83\ 2\0\ 1|\0\0j\1f\0d\ 4\0d\v\0de\0d5\0d8\0f\ 4\0g\ 1\0f\ 2\0d\ 5\0d\v\0df\0d8\0d8\0f\ 4\0g\ 1\0f\ 2\0d\r\0d\v\0dg\0d8\0d8\0f\ 4\0g\ 1\0f\ 2\0d.\0d\v\0dh\0d6\0d8\0f\ 4\0g\ 1\0f\ 2\0d0\0d\v\0di\0d7\0d8\0f\ 4\0g\ 1\0f\ 2\0d2\0d\v\0dj\0d8\0d8\0f\ 4\0g\ 1\0f\ 2\0d+\0d\f\0dk\0d8\0d8\0f\ 4\0g\ 1\0f\ 2\0g\a\0|\ e\0j&\0d\ 4\0d\ 5\0\83\ 2\0\83\ 2\0\ 1|\0\0j\1f\0|\ e\0j'\0d5\0\83\ 1\0j(\0\83\0\0d\v\0d\f\0g\ 2\0\83\ 2\0\ 1|\0\0j\1f\0|\ e\0j'\0d6\0\83\ 1\0j(\0\83\0\0d\f\0d\a\0g\ 2\0\83\ 2\0\ 1|\0\0j\1f\0|\ e\0j'\0d7\0\83\ 1\0j(\0\83\0\0d\a\0g\ 1\0\83\ 2\0\ 1|\ e\0j)\0t\19\0d\ 4\0d\ 5\0d\v\0|\ 2\0j*\0\83\0\0d\v\0\19\83\ 5\0}\11\0|\0\0j#\0|\11\0j+\0\83\0\0j$\0t\10\0d\10\0d\11\0d\14\0d\15\0d\12\0d\13\0d\16\0d\17\0g\b\0d\ 5\0d\a\0\83\ 3\0d4\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1f\0|\11\0j,\0\83\0\0j-\0\83\0\0j(\0\83\0\0d.\0d\ 5\0d\r\0d\ e\0d9\0d.\0d:\0d;\0d<\0d=\0d0\0d>\0d?\0d@\0dA\0dB\0dC\0d2\0dD\0dE\0dF\0dG\0dH\0dI\0dJ\0dK\0g\1a\0\83\ 2\0\ 1|\0\0j\1f\0|\11\0j,\0\83\0\0j.\0\83\0\0j(\0\83\0\0d\v\0d\r\0dL\0dM\0d:\0g\ 5\0\83\ 2\0\ 1|\ e\0j)\0t\19\0d\ 4\0d\ 5\0d*\0|\ 2\0j*\0\83\0\0d\v\0\19\83\ 5\0}\12\0|\0\0j#\0|\12\0j+\0\83\0\0j$\0t\10\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0d#\0d$\0d%\0d&\0d'\0d(\0d)\0g\10\0\83\ 1\0d4\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1f\0|\12\0j,\0\83\0\0j-\0\83\0\0j(\0\83\0\0d\ 4\0d\v\0d\f\0d\a\0d\ 4\0d\ 4\0d\ 5\0d\r\0d\ 5\0d\ e\0d9\0d\18\0dN\0d\ 5\0dL\0dO\0dP\0dQ\0d\ 5\0d.\0dR\0d0\0dM\0d\r\0d2\0dS\0d>\0d?\0d@\0d\r\0dA\0dB\0dC\0d:\0d;\0d\r\0dE\0dF\0dG\0dH\0dI\0dJ\0dK\0g+\0\83\ 2\0\ 1|\0\0j\1f\0|\12\0j,\0\83\0\0j.\0\83\0\0j(\0\83\0\0d\v\0d\ 5\0d\18\0dQ\0d2\0dA\0d=\0dI\0d,\0g        \0\83\ 2\0\ 1|\ 2\0j/\0|\ 1\0d\a\0\83\ 2\0\ 1d\0\0S(l\0\0\0Ns\f\0\0\0Pyfile48.medRä\0\0\0g\0\0\0\0\0\0#@i\ 3\0\0\0i\ 4\0\0\0i&\0\0\0i\ 2\0\0\0g\0\0\0\0\0\0\18@s
++\0\0\0Power [MW]s\10\0\0\0Density [kg/m^3]i\0\0\0\0i\ 1\0\0\0i\ 5\0\0\0i\ 6\0\0\0t\a\0\0\0pfltestg\0\0\0\0\0ä\95@g\0\0\0\0\90Áø@g\0\0\0\0\0\b\99@g\0\0\0\0 Îø@g\0\0\0\0\08¨@g\0\0\0\0À+ù@g\0\0\0\0\0:¨@g\0\0\0\0Ð+ù@i\b\0\0\0t      \0\0\0pfltestM1g\0\0\0\0\0Àr@g\0\0\0\0À|ø@g\0\0\0\0\0Ðr@g\0\0\0\0Ð|ø@g\0\0\0\0\0\0y@g\0\0\0\0\0\83ø@g\0\0\0\0\0\10y@g\0\0\0\0\10\83ø@g\0\0\0\0\0 y@g\0\0\0\0 \83ø@g\0\0\0\0\0\0©@g\0\0\0\0\02ù@g\0\0\0\0\0\ 2©@g\0\0\0\0\102ù@g\0\0\0\0\0\ 6©@g\0\0\0\002ù@iÿÿÿÿi(\0\0\0i+\0\0\0i.\0\0\0i\ e\0\0\0i0\0\0\0i\10\0\0\0i1\0\0\0i\12\0\0\0i2\0\0\0g:\8c\8eyE>t\b\0\0\0NewPfl_0t\b\0\0\0NewPfl_1t\b\0\0\0NewPfl_2R&\0\0\0i\a\0\0\0i\1a\0\0\0i\e\0\0\0i\1c\0\0\0i\1d\0\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\19\0\0\0i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i#\0\0\0i$\0\0\0i%\0\0\0i
++\0\0\0i\11\0\0\0i     \0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0i\ f\0\0\0i\13\0\0\0iL\0\0\0(\ 3\0\0\0i\ 3\0\0\0i\ 4\0\0\0g\0\0\0\0\0\0#@(\ 2\0\0\0i\ 3\0\0\0i\0\0\0\0(\ 2\0\0\0i&\0\0\0i(\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\0\0\0\0(\ 2\0\0\0i(\0\0\0i+\0\0\0(\ 2\0\0\0i\ 5\0\0\0i\0\0\0\0(\ 2\0\0\0i+\0\0\0i.\0\0\0(\ 2\0\0\0i\ e\0\0\0i\0\0\0\0(\ 2\0\0\0i.\0\0\0i0\0\0\0(\ 2\0\0\0i\10\0\0\0i\0\0\0\0(\ 2\0\0\0i0\0\0\0i1\0\0\0(\ 2\0\0\0i\12\0\0\0i\0\0\0\0(\ 2\0\0\0i1\0\0\0i2\0\0\0(\ 2\0\0\0i(\0\0\0i\0\0\0\0(\ 2\0\0\0i\0\0\0\0i&\0\0\0(\ 3\0\0\0R4\ 2\0\0R5\ 2\0\0R6\ 2\0\0(\ 2\0\0\0i&\0\0\0i(\0\0\0(\ 2\0\0\0i(\0\0\0i+\0\0\0(\ 2\0\0\0i+\0\0\0i.\0\0\0(\ 2\0\0\0i.\0\0\0i0\0\0\0(\ 2\0\0\0i0\0\0\0i1\0\0\0(\ 2\0\0\0i1\0\0\0i2\0\0\0(\ 2\0\0\0i\0\0\0\0i&\0\0\0(0\0\0\0RK\ 1\0\0R(\0\0\0R\ 4\0\0\0R-\ 2\0\0RP\ 1\0\0t\b\0\0\0pushMeshRR\ 1\0\0R[\ 1\0\0R]\ 1\0\0\0\0\0R\\ 1\0\0Rw\ 1\0\0R\1c\ 1\0\0RX\ 1\0\0RB\0\0\0\0\0\0RY\0\0\0Ry\ 1\0\0Rz\ 1\0\0\ 1\0\0R{\ 1\0\0\0\0\0R}\0\0\0RY\ 1\0\0t\10\0\0\0getTimeStepAtPosR\13\ 1\0\0Rk\0\0\0R|\ 1\0\0Ra\ 1\0\0t\ f\0\0\0shallowCpyGlobst\ e\0\0\0unPolyzeMeshesR+\0\0\0t\r\0\0\0getNumberOfTSR÷\0\0\0R(\ 1\0\0R0\0\0\0R\7f\ 1\0\0t\11\0\0\0getPflsReallyUsedRÄ\ 1\0\0t
++\0\0\0getProfileRH\0\0\0R\97\ 1\0\0RT\ 1\0\0R)\ 1\0\0\0\0\0Rv\0\0\0Rw\0\0\0R\v\0\0\0(\13\0\0\0R   \0\0\0R9\ 1\0\0t\ 3\0\0\0mfdR\86\0\0\0t\ 6\0\0\0meshest\ 6\0\0\0fieldsRñ\0\0\0t\ 4\0\0\0f0_0R¼\0\0\0t\ 3\0\0\0ff0t\ 4\0\0\0f0_1R\83\ 1\0\0t\ 4\0\0\0f0_2t\ 4\0\0\0pfl2Rm\ 1\0\0\ 1\0\0t\ 5\0\0\0entryt\ 6\0\0\0ftest0t\ 6\0\0\0ftest1(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testUnPolyze2P\ 6\0\0s\8a\0\0\0\0\ 1\ 6\ 1\f\ 1\ f\ 1\f\ 1\r\ 1\r\ 1\f\ 1\r\ 1\f\ 1\r\ 2\12\0\r\ 1\13\ 1\ f\0\r\0\r\0\13\ 1\r\ 1\16\ 1\r\ 1\ f\ 1\12\0\r\ 1\13\ 1\e\0\r\ 1\1a\ 1-\0\13\ 1\r\ 1\16\ 1\12\0\r\ 1\13\ 1'\0\r\ 1E\0\13\ 1\1a\ 1\r\ 1\16\ 1\13\ 2
++\ 2\10\ 1\16\ 1\19\ 1\18\ 1O\ 18\ 1>\ 1>\ 18\ 12\ 12\ 1\16\ 1Ä\ 1%\ 1%\ 1"\ 1%\ 1C\ 1p\ 11\ 1%\ 1U\ 1£\ 1=\ 2\10\ 1c\ 1\0\0\0\1e\0\0\0\15\0\0\0C\0\0\0sÿ\10\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 4\0d\ 4\0d\ 4\0d\ 3\0d\ 3\0d\ 5\0d\ 5\0d\ 4\0d\ 4\0d\ 5\0d\ 5\0d\ 3\0g\10\0d\ 6\0d\a\0\83\ 3\0}\ 3\0t\ 1\0d\b\0d\a\0\83\ 2\0}\ 4\0|\ 4\0j\ 2\0|\ 3\0\83\ 1\0\ 1|\ 4\0j\ 3\0d    \0\83\ 1\0\ 1|\ 4\0j\ 4\0t\ 5\0t\ 6\0t\a\0d\ 6\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\ 4\0j\b\0\83\0\0\ 1t\ 1\0d\b\0d\a\0\83\ 2\0}\ 5\0|\ 5\0j\ 2\0|\ 3\0\83\ 1\0\ 1|\ 5\0j\ 3\0d  \0\83\ 1\0\ 1|\ 5\0j\ 4\0t    \0t\ 6\0t\a\0d
++\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\ 5\0j\b\0\83\0\0\ 1t\ 1\0d\b\0d\a\0\83\ 2\0}\ 6\0|\ 6\0j\ 2\0|\ 3\0\83\ 1\0\ 1|\ 6\0j\ 3\0d      \0\83\ 1\0\ 1|\ 6\0j\ 4\0t
++\0t\ 6\0t\a\0d\v\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\ 6\0j\b\0\83\0\0\ 1d\ 3\0d\f\0g\ 2\0d\r\0d\f\0g\ 2\0d\f\0d\f\0g\ 2\0d\ e\0d\f\0g\ 2\0d\ f\0d\f\0g\ 2\0d\10\0d\f\0g\ 2\0d\11\0d\f\0g\ 2\0d\12\0d\f\0g\ 2\0d\13\0d\f\0g\ 2\0d\14\0d\f\0g\ 2\0d\15\0d\f\0g\ 2\0d\ 3\0d\ 3\0g\ 2\0d\r\0d\ 3\0g\ 2\0d\ 3\0d\r\0g\ 2\0d\r\0d\r\0g\ 2\0d\f\0d\r\0g\ 2\0d\ e\0d\r\0g\ 2\0d\ f\0d\r\0g\ 2\0d\10\0d\r\0g\ 2\0d\11\0d\r\0g\ 2\0g\14\0}\a\0d\16\0|\ 6\0g\ 1\0\14d\a\0|\ 5\0g\ 1\0\14\17d\17\0|\ 4\0g\ 1\0\14\17}\b\0d\18\0\84\0\0|\b\0D\83\ 1\0|\b\0(x3\0t\v\0|\b\0|\a\0\83\ 2\0D]"\0\\ 2\0}   \0}
++\0|    \0j\f\0\83\0\0}\v\0|\v\0|
++\07}\v\0q9\ 2Wt\ 1\0j\r\0|\b\0\83\ 1\0}        \0|      \0j\ e\0d\19\0\83\ 1\0\ 1|    \0d\1a\0 }\f\0|\f\0j\ e\0\0j\ f\0\83\0\0\83\ 1\0\ 1t\10\0j\11\0t\12\0t\13\0\83\ 2\0}\r\0|\r\0j\14\0|\f\0\83\ 1\0\ 1|\r\0j\15\0d\e\0d    \0d\a\0\83\ 3\0\ 1t\0\0d\1c\0\83\ 1\0}\ e\0|\ e\0j\16\0d\1d\0\83\ 1\0\ 1|\r\0j\17\0|\ e\0\83\ 1\0\ 1|\r\0j\ e\0d\1e\0\83\ 1\0\ 1|\r\0j\18\0\83\0\0}\ f\0|\r\0j\19\0d\1f\0d       \0d\a\0d\v\0d
++\0\0d!\0d\17\0d\ 6\0g        \0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0g\ 6\0d"\0d"\0d#\0d#\0g\ 4\0d$\0d%\0g\ 2\0\83\ 4\0\ 1|\r\0j\19\0d&\0d'\0g\ 2\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0g\ 6\0d"\0d"\0d#\0d#\0d$\0d$\0g\ 6\0d$\0d(\0d)\0g\ 3\0\83\ 4\0\ 1|\r\0j\19\0d\16\0d*\0g\ 2\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 3\0d\ 4\0g\b\0d"\0d"\0d#\0d#\0d$\0d$\0d$\0d$\0d$\0d$\0g
++\0d$\0d(\0d+\0d,\0d-\0g\ 5\0\83\ 4\0\ 1|\r\0j\1a\0\83\0\0\ 1|\ f\0j\18\0\83\0\0}\10\0|\10\0j\e\0\83\0\0j\1c\0|\r\0j\e\0\83\0\0j\1d\0\83\0\0\83\ 1\0\ 1t\1e\0\83\0\0}\11\0|\11\0j\1f\0d\1f\0|       \0\83\ 2\0\ 1|\11\0\0|\ 1\0d\a\0\83\ 2\0\ 1t!\0j\11\0\83\0\0}\12\0t"\0t\ 6\0t\a\0d\1a\0\83\ 1\0\83\ 1\0\83\ 1\0}\13\0|\13\0j\ e\0d.\0\83\ 1\0\ 1|\0\0j#\0t$\0|\12\0j%\0|\ f\0|\11\0d\1f\0|\13\0\83\ 6\0\ 1|\0\0j#\0t$\0|\12\0j%\0|\10\0|\11\0d\1f\0|\13\0\83\ 6\0\ 1|\12\0j%\0|\r\0|\11\0d\1f\0|\13\0\83\ 4\0\ 1|\12\0\0|\ 1\0d\1f\0\83\ 2\0\ 1|\0\0j&\0|\12\0j'\0\83\0\0dH\0\83\ 2\0\ 1|\0\0j&\0|\12\0j(\0\83\0\0dI\0\83\ 2\0\ 1t"\0d\1f\0d   \0d\a\0d\v\0d
++\0\0d!\0d\17\0d\ 6\0g        \0\83\ 1\0}\14\0|\14\0j\ e\0d/\0\83\ 1\0\ 1|\0\0j)\0|\12\0j*\0d/\0\83\ 1\0j+\0|\14\0\83\ 1\0\83\ 1\0\ 1t"\0d&\0d'\0g\ 2\0\83\ 1\0}\14\0|\14\0j\ e\0d0\0\83\ 1\0\ 1|\0\0j)\0|\12\0j*\0d0\0\83\ 1\0j+\0|\14\0\83\ 1\0\83\ 1\0\ 1|\0\0j&\0|\12\0j,\0\83\0\0dJ\0\83\ 2\0\ 1|\0\0j&\0|\12\0j-\0\83\0\0dK\0\83\ 2\0\ 1t.\0j\11\0|\ 1\0\83\ 1\0}\15\0|\15\0j/\0\83\0\0d\1f\0\19}\16\0|\15\0j0\0\83\0\0d\1f\0\19d\1f\0\19}\17\0|\17\0j1\0t\12\0d\1f\0|\16\0\83\ 3\0\ 1|\17\0j1\0t\12\0d\1f\0|\16\0\83\ 3\0}\18\0|\0\0j)\0|\r\0j+\0|\18\0d4\0d4\0\83\ 3\0\83\ 1\0\ 1t2\0|\ 1\0|     \0j\ f\0\83\0\0d\1f\0|\r\0j\ f\0\83\0\0|\r\0j3\0\83\0\0d   \0\19|\r\0j3\0\83\0\0d\a\0\19\83\ 6\0}\19\0|\19\0j\1a\0\83\0\0\ 1|\0\0j)\0|\r\0j+\0|\19\0d4\0d4\0\83\ 3\0\83\ 1\0\ 1t4\0|\ 2\0|\r\0t5\0\83\ 3\0\ 1t2\0|\ 2\0|      \0j\ f\0\83\0\0d\1f\0|\r\0j\ f\0\83\0\0|\r\0j3\0\83\0\0d   \0\19|\r\0j3\0\83\0\0d\a\0\19\83\ 6\0}\1a\0|\0\0j)\0|\r\0j+\0|\1a\0d4\0d4\0\83\ 3\0\83\ 1\0\ 1t\10\0j\11\0t\12\0t\13\0\83\ 2\0}\r\0t"\0\0d\a\0\0d!\0d\ 6\0d&\0d5\0d6\0d7\0d8\0g
++\0\83\ 1\0}\13\0|\13\0j\ e\0d9\0\83\ 1\0\ 1\0|\13\0\19}\f\0|\f\0j\ e\0\0j\ f\0\83\0\0\83\ 1\0\ 1|\r\0j\14\0|\f\0\83\ 1\0\ 1|\r\0j\15\0d\e\0d      \0d\a\0\83\ 3\0\ 1t\0\0d:\0\83\ 1\0}\ e\0|\ e\0j\16\0d\1d\0\83\ 1\0\ 1|\r\0j\17\0|\ e\0\83\ 1\0\ 1|\r\0j\ e\0d;\0\83\ 1\0\ 1|\r\0j\19\0d\1f\0d   \0d\v\0g\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0g\ 6\0d"\0d"\0d#\0d#\0g\ 4\0d$\0d%\0g\ 2\0\83\ 4\0\ 1|\r\0j\19\0d\a\0d
++\0\0g\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0g\ 6\0d"\0d"\0d#\0d#\0d$\0d$\0g\ 6\0d$\0d(\0d)\0g\ 3\0\83\ 4\0\ 1|\r\0j\19\0d!\0d\17\0d\ 6\0d&\0g\ 4\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 3\0d\ 4\0d\ 5\0d\ 3\0d\ 4\0d\ 5\0d\ 5\0d\ 4\0d\ 3\0d\ 5\0g\10\0d"\0d"\0d#\0d#\0d$\0d$\0d$\0d$\0d$\0d$\0g
++\0d$\0d(\0d+\0d,\0d-\0g\ 5\0\83\ 4\0\ 1|\r\0j\1a\0\83\0\0\ 1t\1e\0\83\0\0}\11\0|\11\0j\1f\0d\1f\0|  \0\83\ 2\0\ 1|\11\0\0|\ 1\0d\a\0\83\ 2\0\ 1t!\0j\11\0\83\0\0}\12\0|\12\0j%\0|\r\0|\11\0d\1f\0|\13\0\83\ 4\0\ 1|\0\0j&\0|\12\0j'\0\83\0\0dL\0\83\ 2\0\ 1|\0\0j&\0|\12\0j*\0d<\0\83\ 1\0j6\0\83\0\0d  \0d\a\0d!\0g\ 3\0\83\ 2\0\ 1|\0\0j&\0|\12\0j*\0d=\0\83\ 1\0j6\0\83\0\0\0d\ 6\0d&\0g\ 3\0\83\ 2\0\ 1|\0\0j&\0|\12\0j*\0d>\0\83\ 1\0j6\0\83\0\0d\a\0d\v\0d
++\0\0g\ 4\0\83\ 2\0\ 1|\12\0\0|\ 1\0d\1f\0\83\ 2\0\ 1t.\0j\11\0|\ 1\0\83\ 1\0}\15\0|\15\0j/\0\83\0\0d\1f\0\19}\16\0|\15\0j0\0\83\0\0d\1f\0\19d\1f\0\19}\17\0|\17\0j1\0t\12\0d\1f\0|\16\0\83\ 3\0\ 1|\17\0j1\0t\12\0d\1f\0|\16\0\83\ 3\0}\e\0|\e\0j7\0d\1f\0d      \0d\v\0d\a\0d
++\0\0d!\0d\17\0d\ 6\0d&\0g
++\0\83\ 1\0\ 1|\0\0j)\0|\r\0j+\0|\e\0d4\0d4\0\83\ 3\0\83\ 1\0\ 1t2\0|\ 1\0|      \0j\ f\0\83\0\0d\1f\0|\r\0j\ f\0\83\0\0|\r\0j3\0\83\0\0d   \0\19|\r\0j3\0\83\0\0d\a\0\19\83\ 6\0}\1c\0|\1c\0j7\0d\1f\0\0d\v\0d\a\0d
++\0\0d!\0d\17\0d\ 6\0d&\0g
++\0\83\ 1\0\ 1|\0\0j)\0|\r\0j+\0|\1c\0d4\0d4\0\83\ 3\0\83\ 1\0\ 1t4\0|\ 2\0|\r\0t5\0\83\ 3\0\ 1t2\0|\ 2\0|      \0j\ f\0\83\0\0d\1f\0|\r\0j\ f\0\83\0\0|\r\0j3\0\83\0\0d   \0\19|\r\0j3\0\83\0\0d\a\0\19\83\ 6\0}\1d\0|\1d\0j7\0d\1f\0\0d\v\0d\a\0d
++\0\0d!\0d\17\0d\ 6\0d&\0g
++\0\83\ 1\0\ 1|\0\0j)\0|\r\0j+\0|\1d\0d4\0d4\0\83\ 3\0\83\ 1\0\ 1t\10\0j\11\0t\12\0t\13\0\83\ 2\0}\r\0|\r\0j\14\0|    \0\83\ 1\0\ 1|\r\0j\15\0d\e\0\0d\a\0\83\ 3\0\ 1t\0\0d?\0\83\ 1\0}\ e\0|\ e\0j\16\0d\1d\0\83\ 1\0\ 1|\r\0j\17\0|\ e\0\83\ 1\0\ 1|\r\0j\ e\0d@\0\83\ 1\0\ 1|\r\0j\19\0d\1f\0d   \0d\a\0d\v\0d
++\0\0d!\0d\17\0d\ 6\0g        \0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0g\ 6\0d"\0d"\0d#\0d#\0g\ 4\0d$\0d%\0g\ 2\0\83\ 4\0\ 1|\r\0j\19\0d&\0d'\0g\ 2\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0g\ 6\0d"\0d"\0d#\0d#\0d$\0d$\0g\ 6\0d$\0d(\0d)\0g\ 3\0\83\ 4\0\ 1|\r\0j\19\0d\16\0d*\0g\ 2\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 3\0d\ 4\0g\b\0d"\0d"\0d#\0d#\0d$\0d$\0d$\0d$\0d$\0d$\0g
++\0d$\0d(\0d+\0d,\0d-\0g\ 5\0\83\ 4\0\ 1|\r\0j\19\0d\1a\0dA\0d5\0d7\0d8\0g\ 5\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 3\0d\ 4\0d\ 5\0d\ 3\0d\ 4\0d\ 5\0d\ 5\0d\ 4\0d\ 3\0d\ 5\0g\10\0d"\0d"\0d#\0d#\0d$\0d$\0d$\0d$\0g\b\0d$\0d+\0dB\0d(\0g\ 4\0\83\ 4\0\ 1|\r\0j\19\0d6\0dC\0g\ 2\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 3\0d\ 4\0d\ 5\0d\ 3\0d\ 4\0d\ 5\0d\ 5\0d\ 4\0d\ 3\0d\ 5\0g\10\0d"\0d"\0d#\0d#\0d$\0d$\0g\ 6\0d$\0d+\0d+\0g\ 3\0\83\ 4\0\ 1|\r\0j\1a\0\83\0\0\ 1t\1e\0\83\0\0}\11\0|\11\0j\1f\0d\1f\0|  \0\83\ 2\0\ 1t!\0j\11\0\83\0\0}\12\0|\12\0j8\0|\r\0\83\ 1\0\ 1|\0\0j&\0|\12\0j'\0\83\0\0dM\0\83\ 2\0\ 1|\0\0j&\0|\12\0j*\0dD\0\83\ 1\0j6\0\83\0\0d\1f\0d        \0d\a\0d\v\0d
++\0\0d!\0d\17\0d\ 6\0g        \0\83\ 2\0\ 1|\0\0j&\0|\12\0j*\0dE\0\83\ 1\0j6\0\83\0\0d&\0d'\0g\ 2\0\83\ 2\0\ 1|\0\0j&\0|\12\0j*\0dF\0\83\ 1\0j6\0\83\0\0d\1f\0d  \0d\a\0d
++\0\0g\ 5\0\83\ 2\0\ 1|\0\0j&\0|\12\0j*\0dG\0\83\ 1\0j6\0\83\0\0d\v\0d!\0g\ 2\0\83\ 2\0\ 1|\11\0\0|\ 1\0d\a\0\83\ 2\0\ 1|\12\0\0|\ 1\0d\1f\0\83\ 2\0\ 1t.\0j\11\0|\ 1\0\83\ 1\0}\15\0|\15\0j/\0\83\0\0d\1f\0\19}\16\0|\15\0j0\0\83\0\0d\1f\0\19d\1f\0\19}\17\0|\17\0j1\0t\12\0d\1f\0|\16\0\83\ 3\0}\e\0|\e\0j7\0d\1f\0d    \0d\a\0d\v\0d
++\0\0d!\0d\17\0d\ 6\0d&\0d'\0d\16\0d*\0d\1a\0dA\0d5\0d7\0d8\0d6\0dC\0g\14\0\83\ 1\0\ 1|\0\0j)\0|\r\0j+\0|\e\0d4\0d4\0\83\ 3\0\83\ 1\0\ 1t2\0|\ 1\0|      \0j\ f\0\83\0\0d\1f\0|\r\0j\ f\0\83\0\0|\r\0j3\0\83\0\0d   \0\19|\r\0j3\0\83\0\0d\a\0\19\83\ 6\0}\1c\0|\1c\0j7\0d\1f\0\0d\a\0d\v\0d
++\0\0d!\0d\17\0d\ 6\0d&\0d'\0d\16\0d*\0d\1a\0dA\0d5\0d7\0d8\0d6\0dC\0g\14\0\83\ 1\0\ 1|\0\0j)\0|\r\0j+\0|\1c\0d4\0d4\0\83\ 3\0\83\ 1\0\ 1t4\0|\ 2\0|\r\0t5\0\83\ 3\0\ 1t2\0|\ 2\0|      \0j\ f\0\83\0\0d\1f\0|\r\0j\ f\0\83\0\0|\r\0j3\0\83\0\0d   \0\19|\r\0j3\0\83\0\0d\a\0\19\83\ 6\0}\1d\0|\1d\0j7\0d\1f\0\0d\a\0d\v\0d
++\0\0d!\0d\17\0d\ 6\0d&\0d'\0d\16\0d*\0d\1a\0dA\0d5\0d7\0d8\0d6\0dC\0g\14\0\83\ 1\0\ 1|\0\0j)\0|\r\0j+\0|\1d\0d4\0d4\0\83\ 3\0\83\ 1\0\ 1d\0\0S(N\0\0\0Ns\f\0\0\0Pyfile49.meds\f\0\0\0Pyfile50.medg\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0à?i\b\0\0\0i\ 2\0\0\0R&\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 3\0\0\0g\0\0\0\0\0\0\10@g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\18@g\0\0\0\0\0\0 @g\0\0\0\0\0\0$@g\0\0\0\0\0\0(@g\0\0\0\0\0\0,@g\0\0\0\0\0\00@g\0\0\0\0\0\02@g\0\0\0\0\0\04@i\v\0\0\0i\a\0\0\0c\ 1\0\0\0\ 2\0\0\0\ 2\0\0\0s\0\0\0s\e\0\0\0|\0\0]\11\0}\ 1\0|\ 1\0j\0\0\83\0\0V\ 1q\ 3\0d\0\0S(\ 1\0\0\0N(\ 1\0\0\0Rq\0\0\0(\ 2\0\0\0t\ 2\0\0\0.0Rü\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pys       \0\0\0<genexpr>¤\ 6\0\0s\ 2\0\0\0\ 6\0\ 2\0\0i\r\0\0\0g\0\0\0\0\0\0\12@i"\0\0\0g\0\0\0\0\0\0\b@t\18\0\0\0fieldCellOnPflWithoutPfli\0\0\0\0i\ 5\0\0\0i\ 6\0\0\0g333333Ó?gffffffæ?g\9a\99\99\99\99\99é?g\9a\99\99\99\99\99É?i       \0\0\0i
++\0\0\0gìQ¸\1e\85ë±?g¤p=
++×£À?i\f\0\0\0g\9a\99\99\99\99\99¹?g{\14®Gáz\84?g{\14®Gáz\94?R\83\ 1\0\0t\13\0\0\0pfl_NORM_TRI3_loc_0t\13\0\0\0pfl_NORM_TRI3_loc_1t(\0\0\0Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_0t(\0\0\0Loc_fieldCellOnPflWithoutPfl_NORM_TRI3_1t)\0\0\0Loc_fieldCellOnPflWithoutPfl_NORM_QUAD4_2g\11ê-\81\99\97q=i\ f\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0RE\ 2\0\0i#\0\0\0t\19\0\0\0fieldCellOnPflWithoutPfl2t\14\0\0\0pfl2_NORM_TRI3_loc_0t\14\0\0\0pfl2_NORM_TRI3_loc_1t\15\0\0\0pfl2_NORM_QUAD8_loc_2i<\0\0\0t\13\0\0\0fieldCellWithoutPfli\ e\0\0\0\1e\85ëQ¸\9e?i\13\0\0\0t#\0\0\0Pfl_fieldCellWithoutPfl_NORM_TRI3_0t#\0\0\0Pfl_fieldCellWithoutPfl_NORM_TRI3_1t$\0\0\0Pfl_fieldCellWithoutPfl_NORM_QUAD8_3t$\0\0\0Pfl_fieldCellWithoutPfl_NORM_QUAD8_4(\ 2\0\0\0RL\ 2\0\0RM\ 2\0\0(\ 2\0\0\0RL\ 2\0\0RM\ 2\0\0(\ 3\0\0\0RN\ 2\0\0RO\ 2\0\0RP\ 2\0\0(\ 3\0\0\0RN\ 2\0\0RO\ 2\0\0RP\ 2\0\0(\ 3\0\0\0RR\ 2\0\0RS\ 2\0\0RT\ 2\0\0(\ 4\0\0\0RV\ 2\0\0RW\ 2\0\0RX\ 2\0\0RY\ 2\0\0(9\0\0\0RY\0\0\0R[\0\0\0Rc\0\0\0R]\0\0\0R^\0\0\0t
++\0\0\0NORM_QUAD8Rm\0\0\0Rn\0\0\0Rb\0\0\0R`\0\0\0R_\0\0\0RS\ 1\0\0\0\0\0t\f\0\0\0MergeUMeshesRB\0\0\0RC\0\0\0Rw\ 1\0\0R(\0\0\0R\a\ 1\0\0RX\ 1\0\0\0\0\0\0\0\0Ry\ 1\0\0R{\ 1\0\0Rq\0\0\0t\e\0\0\0setGaussLocalizationOnCellsRd\0\0\0R0\ 1\0\0R1\ 1\0\0R2\ 1\0\0R>\0\0\0Rj\0\0\0R\v\0\0\0\0\0\0Rk\0\0\0R)\0\0\0R*\0\0\0R|\ 1\0\0R+\0\0\0t\a\0\0\0getPflsR<\ 2\0\0R0\0\0\0R=\ 2\0\0R1\0\0\0\ 1\0\0t\11\0\0\0getLocsReallyUsedRK\ 1\0\0RT\ 1\0\0Ra\ 1\0\0R\97\ 1\0\0R\b\ 1\0\0\0\0\0t
++\0\0\0WriteFieldR.\0\0\0RH\0\0\0R\88\ 1\0\0R%\ 1\0\0(\1e\0\0\0R       \0\0\0R9\ 1\0\0Rn\ 1\0\0R\81\0\0\0t\ 3\0\0\0mQ8t\ 3\0\0\0mQ4t\ 3\0\0\0mT3t\ 2\0\0\0trR­\0\0\0R\83\0\0\0R\8c\0\0\0Re\ 1\0\0R\85\0\0\0R\b\0\0\0\0\0\0t\b\0\0\0fInvalidt      \0\0\0fInvalid2R\86\0\0\0\0\0\0R\83\ 1\0\0\0\0\0t\b\0\0\0dataReadt\ 5\0\0\0mReadt\b\0\0\0f1tsReadRâ\0\0\0t\ 6\0\0\0f2_bist\ 6\0\0\0f2_terR
++\ 1\0\0t\ 6\0\0\0f3_bist\ 6\0\0\0f3_ter(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\14\0\0\0testGaussWriteOnPfl1\91\ 6\0\0s0\ 1\0\0\0\ 1\ 6\ 1\ 6\ 1B\ 1\ f\0\r\ 1\r\ 1\1c\ 1
++\ 1\ f\0\r\ 1\r\ 1\1c\ 1
++\ 1\ f\0\r\ 1\r\ 1\1c\ 1
++\ 2º\ 1#\ 1\11\ 1\1c\ 1\f\0
++\ 1\ 4\ 1\ f\ 1\r\ 1
++\0\13\ 3\12\ 1\r\ 1\13\ 1\f\0\r\ 1\r\ 1\r\ 1\f\ 1U\ 1I\ 1a\ 1
++\ 1\f\ 1\1f\ 2 \ 1\10\ 1\10\ 2\f\ 1\18\0\r\ 1\1f\ 1\1f\ 1\16\ 1\10\ 2\16\ 1\16\ 1'\0\r\ 1\1f\ 1\12\0\r\ 1\1f\ 1\16\ 1\16\ 2\ f\ 1\10\ 1\14\ 1\13\ 1\15\ 1\1c\ 1;\ 1
++\ 1\1c\ 2\10\ 1;\ 1\1c\ 2\12\ 1*\0\r\ 1
++\0\13\ 1\r\ 1\13\ 1\f\0\r\ 1\r\ 1\r\ 1C\ 1L\ 1\7f\ 1
++\ 2     \ 1\10\ 1\10\ 1\f\ 1\16\ 1\16\ 1(\ 1(\ 1+\ 1\10\ 1\ f\ 1\10\ 1\14\ 1\13\ 1\15\ 1+\ 1\1c\ 1;\ 1+\ 1\1c\ 2\10\ 1;\ 1+\ 1\1c\ 2\12\ 1\r\ 1\13\ 1\f\0\r\ 1\r\ 1\r\ 1U\ 1I\ 1a\ 1y\ 1g\ 1
++\ 1     \ 1\10\ 1\f\ 1\r\ 1\16\ 1:\ 1%\ 1.\ 1%\ 1\10\ 1\10\ 2\ f\ 1\10\ 1\14\ 1\15\ 1I\ 1\1c\ 1;\ 1I\ 1\1c\ 2\10\ 1;\ 1I\ 1\1c\ 1c\ 1\0\0\0\1f\0\0\0\13\0\0\0C\0\0\0s@\a\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 4\0d\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 2\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 4\0g\12\0d\ 5\0d\ 6\0\83\ 3\0}\ 2\0t\ 1\0d\a\0d\ 6\0\83\ 2\0}\ 3\0|\ 3\0j\ 2\0d\b\0\83\ 1\0\ 1|\ 3\0j\ 3\0t\ 4\0d       \0d
++\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 4\0d
++\0d\b\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 5\0d\v\0d\f\0d
++\0d    \0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 5\0d\f\0d\r\0d\ e\0d
++\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 5\0d
++\0d\ e\0d\ f\0d\b\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 6\0\83\0\0\ 1|\ 3\0j\a\0|\ 2\0\83\ 1\0\ 1t\ 1\0|\ 3\0j\b\0\83\0\0\0\83\ 2\0}\ 4\0|\ 4\0j\ 2\0d\ 5\0\83\ 1\0\ 1d\v\0d        \0d\v\0d\f\0d\f\0d
++\0d
++\0d    \0d\b\0d
++\0d\ 6\0d
++\0d    \0d\ 6\0d\f\0d\r\0d\b\0d\ f\0g\12\0}\ 5\0x7\0t      \0d\ 5\0\83\ 1\0D])\0}\ 6\0|\ 4\0j\ 3\0t
++\0|\ 5\0d\ 6\0|\ 6\0\14d\ 6\0|\ 6\0\14d\ 6\0\17!\83\ 2\0\ 1qr\ 1W|\ 4\0j\ 6\0\83\0\0\ 1|\ 4\0j\a\0|\ 2\0\83\ 1\0\ 1t\v\0\83\0\0}\a\0|\a\0j\f\0d\v\0|\ 3\0\83\ 2\0\ 1|\a\0j\f\0d\10\0|\ 4\0\83\ 2\0\ 1d\f\0}\b\0d\ 6\0}     \0d\11\0}
++\0t\r\0t\ e\0t\ f\0\83\ 2\0}\v\0|\v\0j\10\0d\12\0\83\ 1\0\ 1|\v\0j\11\0|
++\0|\b\0\0\83\ 3\0\ 1t\12\0d\v\0d    \0d\ 6\0d\f\0d
++\0g\ 5\0\83\ 1\0}\f\0|\f\0j\10\0d\13\0\83\ 1\0\ 1t\0\0d\14\0d\15\0d\16\0d\17\0d\18\0g\ 5\0\83\ 1\0}\r\0|\v\0j\13\0|\r\0\83\ 1\0\ 1t\14\0\83\0\0}\ e\0|\ e\0j\15\0|\v\0|\a\0d\v\0|\f\0\83\ 4\0\ 1|\a\0j\16\0|\ 1\0d\ 6\0\83\ 2\0\ 1|\ e\0j\16\0|\ 1\0d\v\0\83\ 2\0\ 1t\r\0t\ e\0t\ f\0\83\ 2\0}\ f\0|\ f\0j\10\0d\19\0\83\ 1\0\ 1|\ f\0j\11\0|
++\0|\b\0\0\83\ 3\0\ 1t\12\0d\v\0d    \0d\ 6\0d\f\0d
++\0d\b\0d\r\0g\a\0\83\ 1\0}\10\0|\10\0j\10\0d\1a\0\83\ 1\0\ 1t\0\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0g\a\0\83\ 1\0}\11\0|\ f\0j\13\0|\11\0\83\ 1\0\ 1t\14\0\83\0\0}\12\0|\12\0j\15\0|\ f\0|\a\0d\10\0|\10\0\83\ 4\0\ 1|\12\0j\16\0|\ 1\0d\v\0\83\ 2\0\ 1~\a\0~\ e\0~\ 3\0~\ 4\0~\12\0t\17\0j\18\0|\ 1\0\83\ 1\0}\a\0|\a\0j\19\0d\v\0\83\ 1\0}\ 3\0|\ 3\0j\1a\0\83\0\0}\13\0|\13\0d\v\0d\ 6\0g\ 2\0\19}\13\0|\13\0j\10\0|\a\0j\b\0\83\0\0\83\ 1\0\ 1|\13\0j\e\0\83\0\0\ 1|\v\0j\1c\0|\13\0\83\ 1\0\ 1t\14\0j\18\0|\ 1\0|\v\0j\b\0\83\0\0|\b\0|   \0\83\ 4\0}\ e\0|\ e\0j\1d\0t\ e\0|\ 3\0\83\ 2\0}\14\0|\14\0j\1e\0\83\0\0\ 1|\0\0j\1f\0|\14\0\0|\v\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1|\ e\0j!\0t\ e\0d\v\0\83\ 2\0}\15\0|\15\0j\1e\0\83\0\0\ 1|\0\0j\1f\0|\15\0\0|\v\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1|\ e\0j\1d\0t\ e\0d\v\0|\a\0\83\ 3\0}\16\0|\16\0j\1e\0\83\0\0\ 1|\0\0j\1f\0|\16\0\0|\v\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1t"\0|\ 1\0|\a\0j\b\0\83\0\0d\v\0|\v\0j\b\0\83\0\0|\b\0|       \0\83\ 6\0}\17\0|\17\0j\1e\0\83\0\0\ 1|\0\0j\1f\0|\17\0\0|\v\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1t\14\0j\18\0|\ 1\0|\ f\0j\b\0\83\0\0|\b\0|     \0\83\ 4\0}\12\0|\a\0j\19\0d\10\0\83\ 1\0}\ 4\0|\ 4\0j\1a\0\83\0\0}\18\0|\18\0d\v\0d       \0d\ 6\0d\f\0d
++\0d\b\0d\r\0d\ e\0g\b\0\19}\18\0|\18\0j\10\0|\a\0j\b\0\83\0\0\83\ 1\0\ 1|\18\0j\e\0\83\0\0\ 1|\ f\0j\1c\0|\18\0\83\ 1\0\ 1|\12\0j\1d\0t\ e\0|\ 4\0\83\ 2\0}\19\0|\19\0j\1e\0\83\0\0\ 1|\0\0j\1f\0|\19\0\0|\ f\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1|\12\0j!\0t\ e\0d\10\0\83\ 2\0}\1a\0|\1a\0j\1e\0\83\0\0\ 1|\0\0j\1f\0|\1a\0\0|\ f\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1|\12\0j\1d\0t\ e\0d\10\0|\a\0\83\ 3\0}\e\0|\e\0j\1e\0\83\0\0\ 1|\0\0j\1f\0|\e\0\0|\ f\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1t"\0|\ 1\0|\a\0j\b\0\83\0\0d\10\0|\ f\0j\b\0\83\0\0|\b\0\0\83\ 6\0}\1c\0|\1c\0j\1e\0\83\0\0\ 1|\0\0j\1f\0|\1c\0j#\0\83\0\0\0|\18\0d"\0\83\ 2\0\83\ 1\0\ 1|\0\0j$\0t%\0|\12\0j\1d\0t\ e\0|\ 3\0\83\ 4\0\ 1|\0\0j$\0t%\0|\12\0j!\0t\ e\0d\v\0\83\ 4\0\ 1|\0\0j$\0t%\0|\12\0j\1d\0t\ e\0d\v\0|\a\0\83\ 5\0\ 1|\12\0j&\0t\ e\0d\10\0|\a\0\83\ 3\0\\ 2\0}\1d\0}\1e\0|\1d\0j\10\0|\ f\0j'\0\83\0\0j\b\0\83\0\0\83\ 1\0\ 1|\0\0j\1f\0|\1d\0\0|\ f\0j'\0\83\0\0d"\0\83\ 2\0\83\ 1\0\ 1|\1e\0j\10\0|\10\0j\b\0\83\0\0\83\ 1\0\ 1|\0\0j\1f\0|\1e\0\0|\10\0\83\ 1\0\83\ 1\0\ 1d\0\0S(#\0\0\0Ns\f\0\0\0Pyfile51.medg\0\0\0\0\0\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0ð?i       \0\0\0i\ 2\0\0\0t\ 4\0\0\0Meshi\ 5\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\0\0\0\0i\ 3\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0iÿÿÿÿg\0\0\0\0\0\0\12@t
++\0\0\0fieldNode0t\f\0\0\0PflIdentity0i
++\0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0i\ e\0\0\0t
++\0\0\0fieldNode1t\f\0\0\0PflIdentity1i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\19\0\0\0i\1a\0\0\0g\11ê-\81\99\97q=((\0\0\0RY\0\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0Rb\0\0\0Rc\0\0\0RC\0\0\0Rn\0\0\0Re\0\0\0R>\0\0\0Rj\0\0\0Rw\ 1\0\0R\1c\ 1\0\0RX\ 1\0\0RB\0\0\0\0\0\0Rk\0\0\0R{\ 1\0\0\0\0\0R|\ 1\0\0R\v\0\0\0R'\0\0\0R(\0\0\0R}\0\0\0Rq\0\0\0t       \0\0\0zipCoordsR³\0\0\0R\97\ 1\0\0Rd\0\0\0R0\0\0\0R1\0\0\0R\ 6\ 1\0\0R\1d\ 1\0\0\0\0\0R)\0\0\0R*\0\0\0R~\ 1\0\0R)\ 1\0\0(\1f\0\0\0R  \0\0\0R9\ 1\0\0R\ 3\ 2\0\0\0\0\0R\84\0\0\0t\ 5\0\0\0conn1Rî\0\0\0R\83\0\0\0t\ 2\0\0\0dtt\ 2\0\0\0itt\ 3\0\0\0timRo\ 2\0\0t\ 4\0\0\0pfl0RÔ\ 1\0\0\0\0\0Rq\ 2\0\0t\ 4\0\0\0pfl1t\ 4\0\0\0arr1Rã\0\0\0t\ 3\0\0\0m00t\ 5\0\0\0ff0_1t\ 5\0\0\0ff0_2t\ 5\0\0\0ff0_3t\ 5\0\0\0ff0_4t\ 3\0\0\0m10t\ 5\0\0\0ff1_1t\ 5\0\0\0ff1_2t\ 5\0\0\0ff1_3t\ 5\0\0\0ff1_4t\ 5\0\0\0arr_rt\ 6\0\0\0pfl1_r(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\16\0\0\0testMEDFieldPflOnNode1-\a\0\0\0\0\0\0\ 1\ 6\ 1H\ 1\ f\ 1\r\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1\1c\ 1
++\ 1\r\ 1\15\ 1\r\ 1<\ 1\13\ 1#\ 1\ 4\ 1
++\ 1\r\ 2   \ 1\10\ 1\10\ 2\ 6\0\ 6\0\ 6\ 1\ f\ 1\r\ 1\13\ 1\e\0\r\ 1\e\ 1\r\ 1       \ 1\16\ 1\10\0\10\ 1\ f\ 1\r\ 1\13\ 1!\0\r\ 1!\ 1\r\ 1   \ 1\16\ 1\10\ 1\ f\ 2\ f\ 1\ f\ 1\f\0\10\0\13\0
++\ 1\r\ 1\1e\ 1\12\ 1
++\ 1\1c\ 1\12\ 1
++\ 1\1c\ 1\15\ 1
++\ 1\1c\ 1'\ 1
++\ 1\1c\ 1\1e\ 1\ f\ 1\f\0"\0\13\0
++\ 1\r\ 1\12\ 1
++\ 1\1c\ 1\12\ 1
++\ 1\1c\ 1\15\ 1
++\ 1\1c\ 1'\ 1
++\ 1\1f\ 1\19\ 1\19\ 1\1c\ 1\e\ 1\19\ 1\1f\ 1\13\ 1\16\ 1c\ 1\0\0\0\1f\0\0\0\13\0\0\0C\0\0\0s\ 2\a\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 4\0d\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 2\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 4\0g\12\0d\ 5\0d\ 6\0\83\ 3\0}\ 2\0t\ 1\0d\a\0d\ 6\0\83\ 2\0}\ 3\0|\ 3\0j\ 2\0d\b\0\83\ 1\0\ 1|\ 3\0j\ 3\0t\ 4\0\0d
++\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 4\0d
++\0d\b\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 5\0d\v\0d\f\0d
++\0d    \0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 5\0d\f\0d\r\0d\ e\0d
++\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 5\0d
++\0d\ e\0d\ f\0d\b\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 6\0\83\0\0\ 1|\ 3\0j\a\0|\ 2\0\83\ 1\0\ 1t\ 1\0|\ 3\0j\b\0\83\0\0\0\83\ 2\0}\ 4\0|\ 4\0j\ 2\0d\ 5\0\83\ 1\0\ 1d\v\0d        \0d\v\0d\f\0d\f\0d
++\0d
++\0d    \0d\b\0d
++\0d\ 6\0d
++\0d    \0d\ 6\0d\f\0d\r\0d\b\0d\ f\0g\12\0}\ 5\0x7\0t      \0d\ 5\0\83\ 1\0D])\0}\ 6\0|\ 4\0j\ 3\0t
++\0|\ 5\0d\ 6\0|\ 6\0\14d\ 6\0|\ 6\0\14d\ 6\0\17!\83\ 2\0\ 1qr\ 1W|\ 4\0j\ 6\0\83\0\0\ 1|\ 4\0j\a\0|\ 2\0\83\ 1\0\ 1t\v\0\83\0\0}\a\0|\a\0j\f\0d\v\0|\ 3\0\83\ 2\0\ 1|\a\0j\f\0d\10\0|\ 4\0\83\ 2\0\ 1d\f\0}\b\0d\ 6\0}     \0d\11\0}
++\0t\r\0t\ e\0t\ f\0\83\ 2\0}\v\0|\v\0j\10\0d\12\0\83\ 1\0\ 1|\v\0j\11\0|
++\0|\b\0\0\83\ 3\0\ 1t\12\0d\v\0d    \0d\ 6\0g\ 3\0\83\ 1\0}\f\0|\f\0j\10\0d\13\0\83\ 1\0\ 1t\0\0d\14\0d\15\0d\16\0g\ 3\0\83\ 1\0}\r\0|\v\0j\13\0|\r\0\83\ 1\0\ 1t\14\0\83\0\0}\ e\0|\ e\0j\15\0|\v\0|\a\0d\v\0|\f\0\83\ 4\0\ 1|\a\0j\16\0|\ 1\0d\ 6\0\83\ 2\0\ 1|\ e\0j\16\0|\ 1\0d\v\0\83\ 2\0\ 1t\r\0t\ e\0t\ f\0\83\ 2\0}\ f\0|\ f\0j\10\0d\17\0\83\ 1\0\ 1|\ f\0j\11\0|
++\0|\b\0\0\83\ 3\0\ 1t\12\0d\v\0d    \0d\ 6\0d\f\0d
++\0d\b\0d\r\0g\a\0\83\ 1\0}\10\0|\10\0j\10\0d\18\0\83\ 1\0\ 1t\0\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0g\a\0\83\ 1\0}\11\0|\ f\0j\13\0|\11\0\83\ 1\0\ 1t\14\0\83\0\0}\12\0|\12\0j\15\0|\ f\0|\a\0d\10\0|\10\0\83\ 4\0\ 1|\12\0j\16\0|\ 1\0d\v\0\83\ 2\0\ 1~\a\0~\ e\0~\ 3\0~\ 4\0~\12\0t\17\0j\18\0|\ 1\0\83\ 1\0}\a\0|\a\0j\19\0d\v\0\83\ 1\0}\ 3\0|\ 3\0j\1a\0\83\0\0}\13\0|\13\0|\f\0\19}\13\0|\13\0j\10\0|\a\0j\b\0\83\0\0\83\ 1\0\ 1|\v\0j\e\0|\13\0\83\ 1\0\ 1t\14\0j\18\0|\ 1\0|\v\0j\b\0\83\0\0|\b\0|   \0\83\ 4\0}\ e\0|\ e\0j\1c\0t\ e\0|\ 3\0\83\ 2\0}\14\0|\14\0j\1d\0\83\0\0\ 1|\0\0j\1e\0|\14\0j\1f\0|\v\0\0\0\83\ 3\0\83\ 1\0\ 1|\ e\0\0t\ e\0d\v\0\83\ 2\0}\15\0|\15\0j\1d\0\83\0\0\ 1|\0\0j\1e\0|\15\0j\1f\0|\v\0\0\0\83\ 3\0\83\ 1\0\ 1|\ e\0j\1c\0t\ e\0d\v\0|\a\0\83\ 3\0}\16\0|\16\0j\1d\0\83\0\0\ 1|\0\0j\1e\0|\16\0j\1f\0|\v\0\0\0\83\ 3\0\83\ 1\0\ 1t!\0|\ 1\0|\a\0j\b\0\83\0\0d\v\0|\v\0j\b\0\83\0\0|\b\0|       \0\83\ 6\0}\17\0|\17\0j\1d\0\83\0\0\ 1|\0\0j\1e\0|\17\0j\1f\0|\v\0\0\0\83\ 3\0\83\ 1\0\ 1t\14\0j\18\0|\ 1\0|\ f\0j\b\0\83\0\0|\b\0|     \0\83\ 4\0}\12\0|\a\0j\19\0d\10\0\83\ 1\0}\ 4\0|\ 4\0j\1a\0\83\0\0}\18\0|\18\0|\10\0\19}\18\0|\18\0j\10\0|\a\0j\b\0\83\0\0\83\ 1\0\ 1|\ f\0j\e\0|\18\0\83\ 1\0\ 1|\12\0j\1c\0t\ e\0|\ 4\0\83\ 2\0}\19\0|\19\0j\1d\0\83\0\0\ 1|\0\0j\1e\0|\19\0j\1f\0|\ f\0\0\0\83\ 3\0\83\ 1\0\ 1|\12\0\0t\ e\0d\10\0\83\ 2\0}\1a\0|\1a\0j\1d\0\83\0\0\ 1|\0\0j\1e\0|\1a\0j\1f\0|\ f\0\0\0\83\ 3\0\83\ 1\0\ 1|\12\0j\1c\0t\ e\0d\10\0|\a\0\83\ 3\0}\e\0|\e\0j\1d\0\83\0\0\ 1|\0\0j\1e\0|\e\0j\1f\0|\ f\0\0\0\83\ 3\0\83\ 1\0\ 1t!\0|\ 1\0|\a\0j\b\0\83\0\0d\10\0|\ f\0j\b\0\83\0\0|\b\0|  \0\83\ 6\0}\1c\0|\1c\0j\1d\0\83\0\0\ 1|\0\0j\1e\0|\1c\0j"\0\83\0\0j\1f\0|\18\0\0\83\ 2\0\83\ 1\0\ 1|\0\0j#\0t$\0|\12\0j\1c\0t\ e\0|\ 3\0\83\ 4\0\ 1|\0\0j#\0t$\0|\12\0\0t\ e\0d\v\0\83\ 4\0\ 1|\0\0j#\0t$\0|\12\0j\1c\0t\ e\0d\v\0|\a\0\83\ 5\0\ 1|\12\0j%\0t\ e\0d\10\0|\a\0\83\ 3\0\\ 2\0}\1d\0}\1e\0|\1d\0j\10\0|\ f\0j&\0\83\0\0j\b\0\83\0\0\83\ 1\0\ 1|\0\0j\1e\0|\1d\0j\1f\0|\ f\0j&\0\83\0\0\0\83\ 2\0\83\ 1\0\ 1|\1e\0j\10\0|\10\0j\b\0\83\0\0\83\ 1\0\ 1|\0\0j\1e\0|\1e\0j\1f\0|\10\0\83\ 1\0\83\ 1\0\ 1d\0\0S(!\0\0\0Ns\f\0\0\0Pyfile52.medg\0\0\0\0\0\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0ð?i       \0\0\0i\ 2\0\0\0Rn\ 2\0\0i\ 5\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\0\0\0\0i\ 3\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0iÿÿÿÿg\0\0\0\0\0\0\12@t
++\0\0\0fieldCell0Rp\ 2\0\0i
++\0\0\0i\v\0\0\0i\f\0\0\0t
++\0\0\0fieldCell1Rr\ 2\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\19\0\0\0i\1a\0\0\0g\11ê-\81\99\97q=('\0\0\0RY\0\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0Rb\0\0\0Rc\0\0\0RC\0\0\0Rn\0\0\0Re\0\0\0R>\0\0\0Rj\0\0\0Rw\ 1\0\0R\13\ 1\0\0RX\ 1\0\0RB\0\0\0\0\0\0Rk\0\0\0R{\ 1\0\0\0\0\0R|\ 1\0\0R\v\0\0\0R'\0\0\0R(\0\0\0R}\0\0\0Rq\0\0\0\0\0\0R\97\ 1\0\0Rd\0\0\0R0\0\0\0R1\0\0\0R\ 6\ 1\0\0R\14\ 1\0\0\0\0\0R)\0\0\0R*\0\0\0R~\ 1\0\0R)\ 1\0\0(\1f\0\0\0R  \0\0\0R9\ 1\0\0R\ 3\ 2\0\0\0\0\0R\84\0\0\0Rt\ 2\0\0\0\0\0R\83\0\0\0Ru\ 2\0\0Rv\ 2\0\0Rw\ 2\0\0R\88\ 2\0\0Rx\ 2\0\0\ 1\0\0\0\0\0R\89\ 2\0\0Ry\ 2\0\0Rz\ 2\0\0\0\0\0R{\ 2\0\0R|\ 2\0\0R}\ 2\0\0R~\ 2\0\0R\7f\ 2\0\0R\80\ 2\0\0R\81\ 2\0\0R\82\ 2\0\0R\83\ 2\0\0R\84\ 2\0\0R\85\ 2\0\0R\86\ 2\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\16\0\0\0testMEDFieldPflOnCell1\87\a\0\0\0\0\0\0\ 1\ 6\ 1H\ 1\ f\ 1\r\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1\1c\ 1
++\ 1\r\ 1\15\ 1\r\ 1<\ 1\13\ 1#\ 1\ 4\ 1
++\ 1\r\ 2   \ 1\10\ 1\10\ 2\ 6\0\ 6\0\ 6\ 1\ f\ 1\r\ 1\13\ 1\15\0\r\ 1\15\ 1\r\ 1       \ 1\16\ 1\10\0\10\ 1\ f\ 1\r\ 1\13\ 1!\0\r\ 1!\ 1\r\ 1   \ 1\16\ 1\10\ 1\ f\ 2\ f\ 1\ f\ 1\f\0
++\0\13\ 1\r\ 1\1e\ 1\12\ 1
++\ 1\1c\ 1\12\ 1
++\ 1\1c\ 1\15\ 1
++\ 1\1c\ 1'\ 1
++\ 1\1c\ 1\1e\ 1\ f\ 1\f\0
++\0\13\ 1\r\ 1\12\ 1
++\ 1\1c\ 1\12\ 1
++\ 1\1c\ 1\15\ 1
++\ 1\1c\ 1'\ 1
++\ 1\1f\ 1\19\ 1\19\ 1\1c\ 1\e\ 1\19\ 1\1f\ 1\13\ 1\16\ 1c\ 1\0\0\0
++\0\0\0\12\0\0\0C\0\0\0s\ 5\ 5\0\0t\0\0\83\0\0}\ 1\0t\ 1\0d\ 1\0\83\ 1\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0\83\ 1\0\ 1|\ 2\0j\ 3\0d\ 3\0\83\ 1\0\ 1|\ 2\0j\ 4\0d\ 4\0d\ 5\0d\ 6\0g\ 3\0\83\ 1\0\ 1t\ 5\0d\a\0d\b\0\83\ 2\0}\ 3\0|\ 3\0j\ 6\0d   \0\83\ 1\0\ 1|\ 3\0j\a\0t\b\0d
++\0d\b\0d\ 3\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\a\0\0d\b\0d\v\0d\ 3\0d\v\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\a\0t
++\0d
++\0d\f\0d\f\0d\f\0d\b\0g\ 5\0\83\ 2\0\ 1t\ 5\0d\a\0d
++\0\83\ 2\0}\ 4\0|\ 4\0j\ 6\0d        \0\83\ 1\0\ 1|\ 4\0j\a\0t\v\0d
++\0d\f\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\a\0t\v\0d\r\0d\ 3\0g\ 2\0\83\ 2\0\ 1t\ 5\0d\a\0d      \0\83\ 2\0}\ 5\0|\ 5\0j\ 6\0d  \0\83\ 1\0\ 1|\ 5\0j\a\0t\f\0d\b\0g\ 1\0\83\ 2\0\ 1|\ 5\0j\a\0t\f\0d\f\0g\ 1\0\83\ 2\0\ 1|\ 5\0j\a\0t\f\0d\ e\0g\ 1\0\83\ 2\0\ 1|\ 3\0j\r\0|\ 2\0\83\ 1\0\ 1|\ 1\0j\ e\0d      \0|\ 3\0\83\ 2\0\ 1|\ 4\0j\r\0|\ 2\0\83\ 1\0\ 1|\ 1\0j\ e\0d\ f\0|\ 4\0\83\ 2\0\ 1|\ 5\0j\r\0|\ 2\0\83\ 1\0\ 1|\ 1\0j\ e\0d\10\0|\ 5\0\83\ 2\0\ 1t\ f\0d\11\0\83\ 1\0}\ 6\0|\ 6\0j\ 2\0d\ 3\0\83\ 1\0\ 1|\ 1\0j\10\0d
++\0|\ 6\0\83\ 2\0\ 1t\ f\0d\11\0\83\ 1\0}\a\0|\a\0j\ 2\0d\v\0\83\ 1\0\ 1|\ 1\0j\11\0d
++\0|\a\0\83\ 2\0\ 1t\ f\0d\12\0d\ 1\0d\13\0g\ 3\0\83\ 1\0}\b\0|\ 1\0j\10\0d  \0|\b\0\83\ 2\0\ 1t\ f\0d\14\0d\15\0d\16\0g\ 3\0\83\ 1\0}\b\0|\ 1\0j\11\0d    \0|\b\0\83\ 2\0\ 1t\ f\0d\17\0d\18\0g\ 2\0\83\ 1\0}\b\0|\ 1\0j\10\0d\ f\0|\b\0\83\ 2\0\ 1t\ f\0d\19\0d\1a\0g\ 2\0\83\ 1\0}\b\0|\ 1\0j\11\0d\ f\0|\b\0\83\ 2\0\ 1t\ f\0d\e\0d\1c\0d\1d\0g\ 3\0\83\ 1\0}\b\0|\ 1\0j\10\0d\10\0|\b\0\83\ 2\0\ 1t\ f\0d\1e\0d\1f\0\0g\ 3\0\83\ 1\0}\b\0|\ 1\0j\11\0d\10\0|\b\0\83\ 2\0\ 1|\ 1\0j\12\0\83\0\0}        \0|\0\0j\13\0|        \0j\14\0t\ f\0d\ f\0d     \0d
++\0d\b\0d\ 3\0d\ f\0d\v\0d!\0d\f\0d\ f\0g
++\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 1\0j\15\0d
++\0\83\ 1\0j\14\0t\ f\0d\v\0d!\0d\f\0d\r\0d"\0d\11\0d#\0g\a\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 1\0j\16\0d
++\0\83\ 1\0j\14\0t\ f\0d!\0d\f\0d\r\0d\ e\0d\11\0d#\0d$\0g\a\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 1\0j\17\0d     \0\83\ 1\0j\18\0\83\0\0j\14\0t\ f\0d\ 3\0d    \0d
++\0d\b\0d\v\0d
++\0d\ 3\0d\b\0d\ 3\0d!\0d        \0d\v\0d\v\0d\v\0d
++\0g\ f\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 1\0j\17\0d   \0\83\ 1\0j\19\0\83\0\0j\14\0t\ f\0d       \0d\v\0d"\0d%\0g\ 4\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 1\0j\17\0d\ f\0\83\ 1\0j\18\0\83\0\0j\14\0t\ f\0d
++\0d    \0d\v\0d
++\0d!\0d\b\0g\ 6\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 1\0j\17\0d\ f\0\83\ 1\0j\19\0\83\0\0j\14\0t\ f\0d   \0d\ 3\0d\f\0g\ 3\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 1\0j\17\0d\10\0\83\ 1\0j\18\0\83\0\0j\14\0t\ f\0d     \0d
++\0d    \0d\v\0d   \0d\f\0g\ 6\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 1\0j\17\0d\10\0\83\ 1\0j\19\0\83\0\0j\14\0t\ f\0d        \0d\b\0d\v\0d\f\0g\ 4\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1d\0\0S(&\0\0\0Ni\1e\0\0\0g\0\0\0\0\0\0ð?i\ 3\0\0\0s\a\0\0\0aaa [b]s\a\0\0\0cc [dd]s\a\0\0\0e [fff]t\ 4\0\0\0totoi\ 2\0\0\0i\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0iÿÿÿÿiþÿÿÿi
++\0\0\0i\14\0\0\0i(\0\0\0\0\0\0i,\ 1\0\0i\90\ 1\0\0i2\0\0\0i<\0\0\0\ 1\0\0iX\ 2\0\0iF\0\0\0iP\0\0\0iZ\0\0\0\ 2\0\0\ 3\0\0i\84\ 3\0\0i\ 5\0\0\0i  \0\0\0i\v\0\0\0i\f\0\0\0i\ f\0\0\0(\1a\0\0\0R>\0\0\0RY\0\0\0Ry\ 1\0\0Rz\ 1\0\0\ 1\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0Ra\0\0\0Re\0\0\0Rg\0\0\0Rc\0\0\0Rj\0\0\0Rk\0\0\0R\98\0\0\0\0\0\0Rs\ 2\0\0R0\0\0\0R1\0\0\0t\15\0\0\0getNumberFieldAtLevelR\9e\0\0\0R}\0\0\0Rv\0\0\0Rw\0\0\0(
++\0\0\0R  \0\0\0R\83\0\0\0R\ 3\ 2\0\0\0\0\0R\84\0\0\0R\85\0\0\0t\ 6\0\0\0numCoot\ 6\0\0\0famCooR¼\0\0\0t\ 3\0\0\0o2n(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testMEDFileUMeshZipCoords1à\a\0\0sl\0\0\0\0\ 1     \ 1\f\0\r\0\r\0\16\ 1\ f\0\r\0\19\0\1c\0\1f\ 1\ f\0\r\0\16\0\16\ 1\ f\0\r\0\13\0\13\0\13\ 1\r\0\10\ 1\r\0\10\ 1\r\0\10\ 1\f\0\r\0\10\ 1\f\0\r\0\10\ 1\15\0\10\0\15\0\10\ 1\12\0\10\0\12\0\10\ 1\15\0\10\0\15\0\10\ 1\f\ 1:\ 1:\ 1:\ 1X\ 17\ 1=\ 14\ 1=\ 17\ 1c\ 1\0\0\0\13\0\0\0\10\0\0\0C\0\0\0\a\0\0d\ 1\0}\ 1\0t\0\0\83\0\0}\ 2\0t\ 1\0d\ 2\0\83\ 1\0}\ 3\0|\ 3\0j\ 2\0d\ 3\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\ 4\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\ 5\0d\ 6\0d\a\0g\ 3\0\83\ 1\0\ 1t\ 5\0d\b\0d       \0\83\ 2\0}\ 4\0|\ 4\0j\ 6\0d
++\0\83\ 1\0\ 1|\ 4\0j\a\0t\b\0d\v\0d    \0d\ 4\0g\ 3\0\83\ 2\0\ 1|\ 4\0j\a\0t      \0d      \0d\f\0d\ 4\0d\f\0g\ 4\0\83\ 2\0\ 1|\ 4\0j\a\0t
++\0d\v\0d\r\0d\r\0d\r\0d        \0g\ 5\0\83\ 2\0\ 1t\ 5\0d\b\0d\v\0\83\ 2\0}\ 5\0|\ 5\0j\ 6\0d
++\0\83\ 1\0\ 1|\ 5\0j\a\0t\v\0d\v\0d\r\0g\ 2\0\83\ 2\0\ 1|\ 5\0j\a\0t\v\0d\ e\0d\ 4\0g\ 2\0\83\ 2\0\ 1t\ 5\0d\b\0d
++\0\83\ 2\0}\ 6\0|\ 6\0j\ 6\0d
++\0\83\ 1\0\ 1|\ 6\0j\a\0t\f\0d       \0g\ 1\0\83\ 2\0\ 1|\ 6\0j\a\0t\f\0d\r\0g\ 1\0\83\ 2\0\ 1|\ 6\0j\a\0t\f\0d\ f\0g\ 1\0\83\ 2\0\ 1|\ 4\0j\r\0|\ 3\0\83\ 1\0\ 1|\ 2\0j\ e\0d
++\0|\ 4\0\83\ 2\0\ 1|\ 5\0j\r\0|\ 3\0\83\ 1\0\ 1|\ 2\0j\ e\0d\10\0|\ 5\0\83\ 2\0\ 1|\ 6\0j\r\0|\ 3\0\83\ 1\0\ 1|\ 2\0j\ e\0d\11\0|\ 6\0\83\ 2\0\ 1|\ 2\0j\ f\0\83\0\0}\a\0t\10\0d
++\0d    \0d
++\0d\ 4\0\0d
++\0d\10\0d
++\0d
++\0d
++\0d
++\0d\10\0d\ 4\0g\r\0\83\ 1\0}\b\0|\a\0j\11\0d\v\0|\b\0\83\ 2\0\ 1t\10\0d
++\0d
++\0d
++\0g\ 3\0\83\ 1\0}      \0|\a\0j\11\0d
++\0|    \0\83\ 2\0\ 1t\10\0d
++\0d\ 4\0g\ 2\0\83\ 1\0}
++\0|\a\0j\11\0d\10\0|
++\0\83\ 2\0\ 1t\10\0d
++\0d
++\0d
++\0g\ 3\0\83\ 1\0}\v\0|\a\0j\11\0d\11\0|\v\0\83\ 2\0\ 1|\a\0j\12\0d\12\0d  \0\83\ 2\0\ 1|\a\0j\12\0d\13\0d\ 4\0\83\ 2\0\ 1|\a\0j\12\0d\14\0d\10\0\83\ 2\0\ 1|\a\0j\13\0d\15\0d\13\0g\ 1\0\83\ 2\0\ 1|\a\0j\13\0d\16\0d\14\0g\ 1\0\83\ 2\0\ 1|\0\0j\14\0|\a\0j\15\0d\12\0d\13\0g\ 2\0\83\ 1\0j\16\0t\10\0d\v\0d\ 4\0d\f\0d\17\0g\ 4\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1t\10\0d\v\0d\ 4\0d\f\0d\r\0d\18\0d\19\0d\17\0g\a\0\83\ 1\0}\f\0|\f\0j\17\0d\1a\0\83\ 1\0\ 1|\a\0j\18\0|\f\0\83\ 1\0\ 1|\0\0j\14\0|\a\0j\19\0|\f\0j\1a\0\83\0\0\83\ 1\0j\16\0|\f\0\83\ 1\0\83\ 1\0\ 1|\0\0j\14\0|\a\0j\e\0d\1a\0d\16\0g\ 2\0\83\ 1\0j\16\0t\10\0d\v\0d\ 4\0d\f\0d\r\0d\18\0d\19\0d\e\0d\17\0g\b\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1t\10\0d\v\0d\f\0g\ 2\0\83\ 1\0}\r\0|\r\0j\17\0d\12\0\83\ 1\0\ 1|\0\0j\14\0|\a\0j\1c\0|\r\0j\1a\0\83\0\0\83\ 1\0j\16\0|\r\0\83\ 1\0\83\ 1\0\ 1|\0\0j\14\0|\a\0j\1d\0d\v\0|\f\0j\1a\0\83\0\0\83\ 2\0j\16\0|\f\0\83\ 1\0\83\ 1\0\ 1|\0\0j\14\0|\a\0j\1e\0d\v\0\83\ 1\0j\16\0t\10\0d\r\0d   \0d\r\0d\ f\0d        \0d\r\0d\1c\0d\r\0d\r\0d\ e\0d\ e\0d\f\0d\ f\0g\r\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1xN\0d
++\0|    \0f\ 2\0d\10\0|
++\0f\ 2\0d\11\0|\v\0f\ 2\0g\ 3\0D]+\0\\ 2\0}\ e\0}\ f\0|\0\0j\14\0|\a\0j\1e\0|\ e\0\83\ 1\0j\16\0|\ f\0\83\ 1\0\83\ 1\0\ 1qt\ 4W|\0\0j\1f\0|\a\0\0\83\0\0d"\0\83\ 2\0\ 1|\0\0j\1f\0|\a\0j!\0\83\0\0d#\0\83\ 2\0\ 1|\0\0j\1f\0|\a\0j"\0d\ 4\0\83\ 1\0d\13\0\83\ 2\0\ 1|\0\0j\1f\0|\a\0j"\0d    \0\83\ 1\0d\12\0\83\ 2\0\ 1x9\0d$\0d%\0d&\0d'\0g\ 4\0D]%\0\\ 2\0}\10\0}\11\0|\0\0j\1f\0|\a\0j"\0|\11\0\83\ 1\0|\10\0\83\ 2\0\ 1q\14\ 5W|\0\0j\1f\0|\a\0j#\0d\15\0\83\ 1\0d(\0\83\ 2\0\ 1t\10\0d\ 4\0d\17\0g\ 2\0\83\ 1\0}\12\0|\12\0j\17\0d\15\0\83\ 1\0\ 1|\0\0j\14\0|\a\0j\1d\0d\v\0d\15\0\83\ 2\0j\16\0|\12\0\83\ 1\0\83\ 1\0\ 1|\12\0j$\0d\v\0g\ 1\0\83\ 1\0\ 1|\0\0j\14\0|\a\0j\1d\0d\10\0d\15\0\83\ 2\0j\16\0|\12\0\83\ 1\0\83\ 1\0\ 1|\a\0j%\0|\ 1\0d   \0\83\ 2\0\ 1t&\0j'\0|\ 1\0\83\ 1\0}\a\0|\0\0j\14\0|\a\0j\1d\0d\v\0|\f\0j\1a\0\83\0\0\83\ 2\0j\16\0|\f\0\83\ 1\0\83\ 1\0\ 1|\0\0j\14\0|\a\0j\1e\0d\v\0\83\ 1\0j\16\0t\10\0d\r\0d        \0d\r\0d\ f\0d        \0d\r\0d\1c\0d\r\0d\r\0d\ e\0d\ e\0d\f\0d\ f\0g\r\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1xN\0d
++\0|    \0f\ 2\0d\10\0|
++\0f\ 2\0d\11\0|\v\0f\ 2\0g\ 3\0D]+\0\\ 2\0}\ e\0}\ f\0|\0\0j\14\0|\a\0j\1e\0|\ e\0\83\ 1\0j\16\0|\ f\0\83\ 1\0\83\ 1\0\ 1q~\ 6W|\0\0j\1f\0|\a\0\0\83\0\0d)\0\83\ 2\0\ 1|\0\0j\1f\0|\a\0j!\0\83\0\0d*\0\83\ 2\0\ 1|\0\0j\1f\0|\a\0j"\0d\ 4\0\83\ 1\0d\13\0\83\ 2\0\ 1|\0\0j\1f\0|\a\0j"\0d    \0\83\ 1\0d\12\0\83\ 2\0\ 1x9\0d+\0d,\0d-\0d.\0g\ 4\0D]%\0\\ 2\0}\10\0}\11\0|\0\0j\1f\0|\a\0j"\0|\11\0\83\ 1\0|\10\0\83\ 2\0\ 1q\1e\aW|\0\0j\1f\0|\a\0j#\0d\15\0\83\ 1\0d/\0\83\ 2\0\ 1t\10\0d\ 4\0d\17\0g\ 2\0\83\ 1\0}\12\0|\12\0j\17\0d\15\0\83\ 1\0\ 1|\0\0j\14\0|\a\0j\1d\0d\v\0d\15\0\83\ 2\0j\16\0|\12\0\83\ 1\0\83\ 1\0\ 1|\12\0j$\0d\v\0g\ 1\0\83\ 1\0\ 1|\0\0j\14\0|\a\0j\1d\0d\10\0d\15\0\83\ 2\0j\16\0|\12\0\83\ 1\0\83\ 1\0\ 1d\0\0S(0\0\0\0Ns\f\0\0\0Pyfile53.medi'\0\0\0g\0\0\0\0\0\0ð?i\ 3\0\0\0s\a\0\0\0aaa [b]s\a\0\0\0cc [dd]s\a\0\0\0e [fff]R\8b\ 2\0\0i\ 2\0\0\0i\0\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0iÿÿÿÿiþÿÿÿt\ 5\0\0\0MyFamt
++\0\0\0MyOtherFams        \0\0\0MyOther-1t\ 4\0\0\0grp0t\ 4\0\0\0grpAi\f\0\0\0i    \0\0\0i
++\0\0\0t\ 4\0\0\0grp1i\v\0\0\0i\ 5\0\0\0t\b\0\0\0Family_4t\b\0\0\0Family_5t\b\0\0\0Family_7t\b\0\0\0Family_8t\f\0\0\0FAMILLE_ZERO(\a\0\0\0R\96\ 2\0\0R\97\ 2\0\0R\98\ 2\0\0R\99\ 2\0\0R\91\ 2\0\0s    \0\0\0MyOther-1R\92\ 2\0\0(\ 3\0\0\0s\ 4\0\0\0grp0s\ 4\0\0\0grp1R\94\ 2\0\0(\ 2\0\0\0R\96\ 2\0\0i\ 4\0\0\0(\ 2\0\0\0R\97\ 2\0\0i\ 5\0\0\0(\ 2\0\0\0R\98\ 2\0\0i\a\0\0\0(\ 2\0\0\0R\99\ 2\0\0i\b\0\0\0(\ 2\0\0\0R\92\ 2\0\0R\99\ 2\0\0(\b\0\0\0s\f\0\0\0FAMILLE_ZEROR\96\ 2\0\0R\97\ 2\0\0R\98\ 2\0\0R\99\ 2\0\0R\91\ 2\0\0s        \0\0\0MyOther-1R\92\ 2\0\0(\ 3\0\0\0s\ 4\0\0\0grp0s\ 4\0\0\0grp1R\94\ 2\0\0(\ 2\0\0\0R\96\ 2\0\0i\ 4\0\0\0(\ 2\0\0\0R\97\ 2\0\0i\ 5\0\0\0(\ 2\0\0\0R\98\ 2\0\0i\a\0\0\0(\ 2\0\0\0R\99\ 2\0\0i\b\0\0\0(\ 2\0\0\0R\99\ 2\0\0R\92\ 2\0\0((\0\0\0R>\0\0\0RY\0\0\0Ry\ 1\0\0Rz\ 1\0\0\ 1\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0Ra\0\0\0Re\0\0\0Rg\0\0\0Rc\0\0\0Rj\0\0\0Rq\0\0\0Rk\0\0\0\0\0\0\0\0\0t\12\0\0\0setFamiliesOnGroupR0\0\0\0t\12\0\0\0getNodeFamiliesArrR1\0\0\0RB\0\0\0t\f\0\0\0addNodeGroupt\ f\0\0\0getNodeGroupArrRC\0\0\0t\10\0\0\0getNodeGroupsArrRM\0\0\0RG\0\0\0R\9e\0\0\0R+\0\0\0\ 1\0\0\ 1\0\0RL\0\0\0R\9a\0\0\0RZ\0\0\0R\v\0\0\0R'\0\0\0R(\0\0\0(\13\0\0\0R      \0\0\0R9\ 1\0\0R\83\0\0\0R\ 3\ 2\0\0\0\0\0R\84\0\0\0R\85\0\0\0R\86\0\0\0R\8e\ 2\0\0\ 1\0\0\0\0\0\ 1\0\0t\ 6\0\0\0daTestt\a\0\0\0expect1R¥\0\0\0\ 1\0\0t\a\0\0\0famNamet\ 5\0\0\0famIdR¼\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\19\0\0\0testMEDUMeshAddNodeGroup1ú\a\0\0\0\0\0\0\ 1\ 6\ 1     \ 1\f\0\r\0\r\0\16\ 1\ f\0\r\0\19\0\1c\0\1f\ 1\ f\0\r\0\16\0\16\ 1\ f\0\r\0\13\0\13\0\13\ 1\r\0\10\ 1\r\0\10\ 1\r\0\10\ 2\f\ 13\0\10\ 1\15\0\10\ 1\12\0\10\ 1\15\0\10\ 1\10\ 1\10\ 1\10\ 1\13\ 1\13\ 27\ 2!\0\r\ 1\r\ 1%\ 1C\ 2\12\0\r\ 1%\ 2(\ 1L\ 1.\ 1\1f\ 1\ 4\ 1\16\ 1\16\ 1\19\ 1\19\ 1\1f\ 1\19\ 1\ 4\ 1\19\ 1\12\0\r\ 1"\ 1\10\ 1"\ 1\10\ 1\ f\ 1(\ 1L\ 1.\ 1\1f\ 1\ 4\ 1\16\ 1\16\ 1\19\ 1\19\ 1\1f\ 1\19\ 1\ 4\ 1\19\ 1\12\0\r\ 1"\ 1\10\ 1"\ 1c\ 1\0\0\0\13\0\0\0\10\0\0\0C\0\0\0s?\a\0\0d\ 1\0}\ 1\0t\0\0\83\0\0}\ 2\0t\ 1\0d\ 2\0\83\ 1\0}\ 3\0|\ 3\0j\ 2\0d\ 3\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\ 4\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\ 5\0d\ 6\0d\a\0g\ 3\0\83\ 1\0\ 1t\ 5\0d\b\0d     \0\83\ 2\0}\ 4\0|\ 4\0j\ 6\0d
++\0\83\ 1\0\ 1x-\0t\a\0d\v\0\83\ 1\0D]\1f\0}\ 5\0|\ 4\0j\b\0t       \0d\f\0d   \0d\f\0g\ 3\0\83\ 2\0\ 1qt\0Wx0\0t\a\0d\r\0\83\ 1\0D]"\0}\ 5\0|\ 4\0j\b\0t
++\0d\f\0d\f\0d      \0d
++\0g\ 4\0\83\ 2\0\ 1\0Wx6\0t\a\0d   \0\83\ 1\0D](\0}\ 5\0|\ 4\0j\b\0t\v\0d
++\0d
++\0d\f\0d\f\0d      \0d      \0g\ 6\0\83\ 2\0\ 1\0Wt\ 5\0d\b\0d\f\0\83\ 2\0}\ 6\0|\ 6\0j\ 6\0d
++\0\83\ 1\0\ 1|\ 6\0j\b\0t\f\0d\f\0d\ e\0g\ 2\0\83\ 2\0\ 1|\ 6\0j\b\0t\f\0d\v\0d\ 4\0g\ 2\0\83\ 2\0\ 1t\ 5\0d\b\0d
++\0\83\ 2\0}\a\0|\a\0j\ 6\0d
++\0\83\ 1\0\ 1|\a\0j\b\0t\r\0d       \0g\ 1\0\83\ 2\0\ 1|\a\0j\b\0t\r\0d\ e\0g\ 1\0\83\ 2\0\ 1|\a\0j\b\0t\r\0d\ f\0g\ 1\0\83\ 2\0\ 1|\ 4\0j\ e\0|\ 3\0\83\ 1\0\ 1|\ 2\0j\ f\0d
++\0|\ 4\0\83\ 2\0\ 1|\ 6\0j\ e\0|\ 3\0\83\ 1\0\ 1|\ 2\0j\ f\0d\10\0|\ 6\0\83\ 2\0\ 1|\a\0j\ e\0|\ 3\0\83\ 1\0\ 1|\ 2\0j\ f\0d\11\0|\a\0\83\ 2\0\ 1|\ 2\0j\10\0\83\0\0}\b\0t\11\0d
++\0d    \0d
++\0d\ 4\0\0d
++\0d\10\0d
++\0d
++\0d
++\0d
++\0d\10\0d\ 4\0g\r\0\83\ 1\0}        \0|\b\0j\12\0d
++\0|    \0\83\ 2\0\ 1t\11\0d
++\0d
++\0d
++\0g\ 3\0\83\ 1\0}
++\0|\b\0j\12\0d\f\0|
++\0\83\ 2\0\ 1t\11\0d
++\0d\ 4\0g\ 2\0\83\ 1\0}\v\0|\b\0j\12\0d\10\0|\v\0\83\ 2\0\ 1t\11\0d
++\0d
++\0d
++\0g\ 3\0\83\ 1\0}\f\0|\b\0j\12\0d\11\0|\f\0\83\ 2\0\ 1|\b\0j\13\0d\12\0d  \0\83\ 2\0\ 1|\b\0j\13\0d\13\0d\ 4\0\83\ 2\0\ 1|\b\0j\13\0d\14\0d\10\0\83\ 2\0\ 1|\b\0j\14\0d\15\0d\13\0g\ 1\0\83\ 2\0\ 1|\b\0j\14\0d\16\0d\14\0g\ 1\0\83\ 2\0\ 1t\11\0d\f\0d\ 4\0d\r\0d\ e\0d\ 2\0d\17\0d\18\0g\a\0\83\ 1\0}\r\0|\r\0j\15\0d\19\0\83\ 1\0\ 1|\b\0j\16\0d
++\0|\r\0\83\ 2\0\ 1|\0\0j\17\0|\b\0j\18\0d
++\0|\r\0j\19\0\83\0\0\83\ 2\0j\1a\0|\r\0\83\ 1\0\83\ 1\0\ 1|\0\0j\17\0|\b\0j\e\0d
++\0\83\ 1\0j\1a\0t\11\0d\1a\0d        \0d\1a\0d\e\0d        \0d\1a\0d\1c\0d\1a\0d\1a\0d\1d\0d\1d\0d\1e\0d\e\0g\r\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1xN\0d\f\0|
++\0f\ 2\0d\10\0|\v\0f\ 2\0d\11\0|\f\0f\ 2\0g\ 3\0D]+\0\\ 2\0}\ e\0}\ f\0|\0\0j\17\0|\b\0j\e\0|\ e\0\83\ 1\0j\1a\0|\ f\0\83\ 1\0\83\ 1\0\ 1\ 3W|\0\0j\1c\0|\b\0j\1d\0\83\0\0d$\0\83\ 2\0\ 1|\0\0j\1c\0|\b\0j\1e\0\83\0\0d%\0\83\ 2\0\ 1|\0\0j\1c\0|\b\0j\1f\0d\ 4\0\83\ 1\0d\13\0\83\ 2\0\ 1|\0\0j\1c\0|\b\0j\1f\0d   \0\83\ 1\0d\12\0\83\ 2\0\ 1x9\0d&\0d'\0d(\0d)\0g\ 4\0D]%\0\\ 2\0}\10\0}\11\0|\0\0j\1c\0|\b\0j\1f\0|\11\0\83\ 1\0|\10\0\83\ 2\0\ 1q|\ 4W|\0\0j\1c\0|\b\0\0d\15\0\83\ 1\0d*\0\83\ 2\0\ 1t\11\0d\ 4\0d\18\0g\ 2\0\83\ 1\0}\12\0|\12\0j\15\0d\15\0\83\ 1\0\ 1|\0\0j\17\0|\b\0j\18\0d
++\0d\15\0\83\ 2\0j\1a\0|\12\0\83\ 1\0\83\ 1\0\ 1|\12\0j!\0d\f\0g\ 1\0\83\ 1\0\ 1|\0\0j\17\0|\b\0j\18\0d\10\0d\15\0\83\ 2\0j\1a\0|\12\0\83\ 1\0\83\ 1\0\ 1|\b\0j"\0|\ 1\0d      \0\83\ 2\0\ 1t#\0j$\0|\ 1\0\83\ 1\0}\b\0|\0\0j\17\0|\b\0j\18\0d
++\0|\r\0j\19\0\83\0\0\83\ 2\0j\1a\0|\r\0\83\ 1\0\83\ 1\0\ 1|\0\0j\17\0|\b\0j\e\0d
++\0\83\ 1\0j\1a\0t\11\0d\1a\0d        \0d\1a\0d\e\0d        \0d\1a\0d\1c\0d\1a\0d\1a\0d\1d\0d\1d\0d\1e\0d\e\0g\r\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1xN\0d\f\0|
++\0f\ 2\0d\10\0|\v\0f\ 2\0d\11\0|\f\0f\ 2\0g\ 3\0D]+\0\\ 2\0}\ e\0}\ f\0|\0\0j\17\0|\b\0j\e\0|\ e\0\83\ 1\0j\1a\0|\ f\0\83\ 1\0\83\ 1\0\ 1\ 5W|\0\0j\1c\0|\b\0j\1d\0\83\0\0d+\0\83\ 2\0\ 1|\0\0j\1c\0|\b\0j\1e\0\83\0\0d,\0\83\ 2\0\ 1|\0\0j\1c\0|\b\0j\1f\0d\ 4\0\83\ 1\0d\13\0\83\ 2\0\ 1|\0\0j\1c\0|\b\0j\1f\0d   \0\83\ 1\0d\12\0\83\ 2\0\ 1x9\0d-\0d.\0d/\0d0\0g\ 4\0D]%\0\\ 2\0}\10\0}\11\0|\0\0j\1c\0|\b\0j\1f\0|\11\0\83\ 1\0|\10\0\83\ 2\0\ 1q\86\ 6W|\0\0j\1c\0|\b\0\0d\15\0\83\ 1\0d1\0\83\ 2\0\ 1t\11\0d\ 4\0d\18\0g\ 2\0\83\ 1\0}\12\0|\12\0j\15\0d\15\0\83\ 1\0\ 1|\0\0j\17\0|\b\0j\18\0d
++\0d\15\0\83\ 2\0j\1a\0|\12\0\83\ 1\0\83\ 1\0\ 1|\12\0j!\0d\f\0g\ 1\0\83\ 1\0\ 1|\0\0j\17\0|\b\0j\18\0d\10\0d\15\0\83\ 2\0j\1a\0|\12\0\83\ 1\0\83\ 1\0\ 1d\0\0S(2\0\0\0Ns\f\0\0\0Pyfile54.medi    \0\0\0g\0\0\0\0\0\0ð?i\ 3\0\0\0s\a\0\0\0aaa [b]s\a\0\0\0cc [dd]s\a\0\0\0e [fff]R\8b\ 2\0\0i\ 2\0\0\0i\0\0\0\0i\a\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\ 6\0\0\0i\b\0\0\0iÿÿÿÿiþÿÿÿR\91\ 2\0\0R\92\ 2\0\0s      \0\0\0MyOther-1R\93\ 2\0\0R\94\ 2\0\0i
++\0\0\0i\f\0\0\0R\95\ 2\0\0iúÿÿÿiøÿÿÿiûÿÿÿiùÿÿÿiüÿÿÿs       \0\0\0Family_-4s   \0\0\0Family_-5s   \0\0\0Family_-7s   \0\0\0Family_-8R\9a\ 2\0\0(\a\0\0\0\0\0\0Family_-4s   \0\0\0Family_-5s   \0\0\0Family_-7s   \0\0\0Family_-8s\ 5\0\0\0MyFams \0\0\0MyOther-1s
++\0\0\0MyOtherFam(\ 3\0\0\0s\ 4\0\0\0grp0s\ 4\0\0\0grp1s\ 4\0\0\0grpA(\ 2\0\0\0s   \0\0\0Family_-4iüÿÿÿ(\ 2\0\0\0\0\0\0Family_-5iûÿÿÿ(\ 2\0\0\0\0\0\0Family_-7iùÿÿÿ(\ 2\0\0\0\0\0\0Family_-8iøÿÿÿ(\ 2\0\0\0s
++\0\0\0MyOtherFams        \0\0\0Family_-8(\b\0\0\0s\f\0\0\0FAMILLE_ZEROs     \0\0\0Family_-4s   \0\0\0Family_-5s   \0\0\0Family_-7s   \0\0\0Family_-8s\ 5\0\0\0MyFams \0\0\0MyOther-1s
++\0\0\0MyOtherFam(\ 3\0\0\0s\ 4\0\0\0grp0s\ 4\0\0\0grp1s\ 4\0\0\0grpA(\ 2\0\0\0s   \0\0\0Family_-4iüÿÿÿ(\ 2\0\0\0\0\0\0Family_-5iûÿÿÿ(\ 2\0\0\0\0\0\0Family_-7iùÿÿÿ(\ 2\0\0\0\0\0\0Family_-8iøÿÿÿ(\ 2\0\0\0\0\0\0Family_-8s
++\0\0\0MyOtherFam(%\0\0\0R>\0\0\0RY\0\0\0Ry\ 1\0\0Rz\ 1\0\0\ 1\0\0R[\0\0\0R]\0\0\0Rn\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0Ra\0\0\0Re\0\0\0Rg\0\0\0Rc\0\0\0Rj\0\0\0Rq\0\0\0Rk\0\0\0\0\0\0\0\0\0R\9b\ 2\0\0RB\0\0\0t\b\0\0\0addGroupR0\0\0\0RG\0\0\0RC\0\0\0R1\0\0\0R\9e\0\0\0R+\0\0\0\ 1\0\0\ 1\0\0RL\0\0\0R\9a\0\0\0RZ\0\0\0R\v\0\0\0R'\0\0\0R(\0\0\0(\13\0\0\0R     \0\0\0R9\ 1\0\0R\83\0\0\0R\ 3\ 2\0\0\0\0\0\0\0\0R\84\0\0\0R\85\0\0\0R\86\0\0\0R\8e\ 2\0\0\ 1\0\0\0\0\0\ 1\0\0\ 2\0\0\0\0\0\ 1\0\0\ 2\0\0\ 2\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\15\0\0\0testMEDUMeshAddGroup1@\b\0\0\0\0\0\0\ 1\ 6\ 1  \ 1\f\0\r\0\r\0\16\ 1\ f\0\r\ 1\13\ 1\19\ 1\ 4\ 1\13\ 1\1c\ 1\ 4\ 1\13\ 1"\ 1\ 4\ 1\ f\0\r\0\16\0\16\ 1\ f\0\r\0\13\0\13\0\13\ 1\r\0\10\ 1\r\0\10\ 1\r\0\10\ 2\f\ 13\0\10\ 1\15\0\10\ 1\12\0\10\ 1\15\0\10\ 1\10\ 1\10\ 1\10\ 1\13\ 1\13\ 2!\0\r\ 1\10\ 1(\ 1L\ 1.\ 1\1f\ 1\ 4\ 1\16\ 1\16\ 1\19\ 1\19\ 1\1f\ 1\19\ 1\ 4\ 1\19\ 1\12\0\r\ 1"\ 1\10\ 1"\ 1\10\ 1\ f\ 1(\ 1L\ 1.\ 1\1f\ 1\ 4\ 1\16\ 1\16\ 1\19\ 1\19\ 1\1f\ 1\19\ 1\ 4\ 1\19\ 1\12\0\r\ 1"\ 1\10\ 1"\ 1c\ 1\0\0\0\f\0\0\0\b\0\0\0C\0\0\0s)\ 3\0\0t\0\0\83\0\0}\ 1\0|\ 1\0j\ 1\0\83\0\0}\ 2\0|\ 1\0j\ 2\0d\ 1\0d\ 2\0\83\ 2\0\ 1|\ 1\0j\ 1\0\83\0\0|\ 2\0\18}\ 3\0~\ 1\0~\ 2\0t\ 3\0\83\0\0}\ 4\0t\ 4\0d\ 3\0d\ 2\0\83\ 2\0}\ 5\0|\ 5\0j\ 5\0d\ 1\0\83\ 1\0\ 1|\ 4\0j\ 6\0|\ 5\0|\ 5\0\83\ 2\0\ 1|\ 4\0j\a\0\83\0\0}\ 4\0|\ 4\0j\b\0d\ 4\0\83\ 1\0\ 1|\ 4\0j  \0t
++\0\83\ 1\0}\ 6\0|\0\0j\v\0|\ 4\0j\ 1\0\83\0\0t\f\0t\r\0d$\0d%\0d\a\0|\ 3\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\0\0j\v\0|\ 6\0j\ 1\0\83\0\0t\f\0t\r\0d&\0d'\0d      \0|\ 3\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1t\ e\0\83\0\0}\a\0|\a\0j\ f\0d\ 1\0|\ 4\0\83\ 2\0\ 1|\0\0j\v\0|\a\0j\ 1\0\83\0\0t\f\0t\r\0d(\0d)\0d\ 3\0|\ 3\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1t\10\0\83\0\0}\b\0|\b\0j\11\0|\ 6\0\83\ 1\0\ 1|\0\0j\v\0|\b\0j\ 1\0\83\0\0t\f\0t\r\0d*\0d+\0d,\0|\ 3\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1t\12\0\83\0\0}        \0|      \0j\13\0|\ 6\0\83\ 1\0\ 1|\0\0j\v\0|      \0j\ 1\0\83\0\0t\f\0t\r\0d-\0d.\0d/\0|\ 3\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\ 6\0j\14\0d\16\0d\ 1\0d\17\0\83\ 3\0\ 1|       \0j\13\0|\ 6\0\83\ 1\0\ 1|\0\0j\v\0|      \0j\ 1\0\83\0\0t\f\0t\r\0d0\0d1\0d2\0|\ 3\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\0\0j\v\0|    \0d3\0\19j\ 1\0\83\0\0t\f\0t\r\0d4\0d5\0d6\0|\ 3\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\ 6\0d\11\0 }
++\0|
++\0j\14\0d\1c\0d\ 2\0d\17\0\83\ 3\0\ 1t\0\0j\15\0d\ 1\0d\11\0d\ 2\0\83\ 3\0}\v\0|\v\0j\b\0d\1d\0\83\ 1\0\ 1|  \0j\16\0|
++\0|\a\0d\ 1\0|\v\0\83\ 4\0\ 1|\0\0j\v\0\0j\ 1\0\83\0\0t\f\0t\r\0d7\0d8\0d9\0|\ 3\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\0\0j\v\0|    \0j\17\0d\1d\0\83\ 1\0j\ 1\0\83\0\0t\f\0t\r\0d:\0d;\0d\15\0|\ 3\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\0\0j\v\0|   \0d<\0\19j\ 1\0\83\0\0t\f\0t\r\0d=\0d>\0d\a\0|\ 3\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1d\0\0S(?\0\0\0Ni\0\0\0\0i\ 1\0\0\0i
++\0\0\0R\86\0\0\0\r\0\0id\0\0\0i\ 4\0\0\0iw\10\0\0i\b\0\0\0i1\ f\0\0i\81\10\0\0i\ 3\ 3\0\0i(\0\0\0ig\ 3\0\0i\15\0\0\0i/\ 3\0\0i2\0\0\0i\93\ 3\0\0i\1e\0\0\0i\ 6\0\0\0i\ 2\0\0\0g\0\0\0\0\0\0ð?iÿÿÿÿi:\ 6\0\0iZ\0\0\0i\ 2\a\0\0i\14\0\0\0g\0\0\0\0\0\0\0@R\83\ 1\0\0i,       \0\0i\82\0\0\0i0
++\0\0\0\0\0\ 2\0\0iF\ 3\0\0i|\r\0\0iD\ e\0\0i\13\10\0\0\10\0\0\ e\0\0\10\0\0\ 2\0\0i|\ 3\0\0i\ 5\0\0\0\ 2\0\0\ 3\0\0i\b\0\0\0\ 5\0\0i4\a\0\0i\v\0\0\0(\ 2\0\0\0i\0\0\0\0iÿÿÿÿiÛ\ 2\0\0i{\ 3\0\0i\ 5\0\0\0\b\0\0i\94
++\0\0i\f\0\0\0\0\0\0\0\0\0(\ 2\0\0\0i\ 1\0\0\0iÿÿÿÿi°\ 2\0\0id\ 3\0\0(\18\0\0\0Rk\0\0\0t\11\0\0\0getHeapMemorySizeRx\ 1\0\0\0\0\0RY\0\0\0Ry\ 1\0\0Rc\0\0\0\ 1\0\0RB\0\0\0RV\ 1\0\0RN\0\0\0t\b\0\0\0assertInRm\0\0\0Rn\0\0\0R>\0\0\0Rj\0\0\0\0\0\0R%\ 1\0\0\0\0\0RY\ 1\0\0\0\0\0R"\ 2\0\0R\89\ 1\0\0R=\ 2\0\0(\f\0\0\0R        \0\0\0t\ 1\0\0\0at\ 2\0\0\0aat       \0\0\0strMulFacR\83\0\0\0\ 1\0\0R\b\0\0\0R\86\0\0\0\0\0\0t\ 3\0\0\0fffRâ\0\0\0R\83\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\f\0\0\0testHeapMem1\87\b\0\0sJ\0\0\0\0\ 1   \0\f\ 1\10\ 1\10\0\ 3\0\ 3\ 2     \ 1\ f\0\r\ 1\10\ 1\f\ 1\r\ 1\ f\ 1-\ 1-\ 2       \ 1\10\ 1-\ 1   \ 1\r\ 1-\ 2   \ 1\r\ 1-\ 1\13\ 1\r\ 1-\ 11\ 1
++\ 1\13\ 1\15\0\r\ 1\16\ 1-\ 16\ 11\ 1c\ 1\0\0\0\v\0\0\0\ 5\0\0\0C\0\0\0si\ 2\0\0d\ 1\0}\ 1\0t\0\0\83\0\0}\ 2\0|\ 2\0j\ 1\0d\ 2\0d\ 3\0d\ 4\0\83\ 3\0\ 1|\ 2\0j\ 2\0d\ 5\0\83\ 1\0\ 1|\ 2\0j\ 3\0d\ 6\0\83\ 1\0\ 1|\ 2\0j\ 4\0d\a\0\83\ 1\0\ 1t\ 5\0d\14\0d
++\0\83\ 2\0}\ 3\0|\ 3\0j\ 6\0d\v\0\83\ 1\0\ 1|\ 3\0j\a\0d\b\0\83\ 1\0\ 1|\ 2\0j\b\0|\ 3\0\83\ 1\0\ 1|\ 2\0j    \0d\ 3\0d\ 4\0g\ 2\0\83\ 1\0\ 1|\ 2\0j
++\0\83\0\0\ 1t\v\0\83\0\0}\ 4\0|\ 4\0j\f\0|\ 2\0\83\ 1\0\ 1t\r\0d       \0\83\ 1\0}\ 5\0|\ 5\0j\ 6\0d\ 3\0\83\ 1\0\ 1|\ 4\0j\ e\0d
++\0|\ 5\0\83\ 2\0\ 1t\r\0d  \0\83\ 1\0}\ 6\0|\ 6\0j\ 6\0d\f\0\83\ 1\0\ 1|\ 4\0j\ f\0d
++\0|\ 6\0\83\ 2\0\ 1t\r\0d\r\0\83\ 1\0}\a\0|\a\0j\ 6\0d\ e\0\83\ 1\0\ 1|\ 4\0j\ e\0d\ f\0|\a\0\83\ 2\0\ 1t\r\0d\10\0\83\ 1\0}\b\0|\b\0j\ 6\0d\11\0\83\ 1\0\ 1|\0\0j\10\0t\11\0|\ 4\0j\ f\0d
++\0|\b\0\83\ 4\0\ 1|\b\0j\12\0\83\0\0\ 1|\ 4\0j\ f\0d
++\0|\b\0\83\ 2\0\ 1|\ 4\0j\13\0|\ 1\0d\12\0\83\ 2\0\ 1t\v\0|\ 1\0\83\ 1\0}    \0|      \0j\14\0\83\0\0}
++\0|\0\0j\15\0|
++\0j\16\0|\ 2\0d\13\0\83\ 2\0\83\ 1\0\ 1|\0\0j\17\0|
++\0j\18\0\83\0\0d\b\0\83\ 2\0\ 1|\0\0j\17\0|
++\0j\19\0\83\0\0d\12\0\83\ 2\0\ 1t\1a\0j\e\0|\ 1\0\83\ 1\0}   \0|\0\0j\15\0t\1c\0|     \0t\v\0\83\ 2\0\83\ 1\0\ 1|\0\0j\15\0t\1c\0|   \0j\1d\0\83\0\0t\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\15\0t\1f\0|     \0j\1d\0\83\0\0\83\ 1\0d\ f\0k\ 3\0\83\ 1\0\ 1|\0\0j\15\0|     \0j\14\0\83\0\0j\16\0|\ 2\0d\13\0\83\ 2\0\83\ 1\0\ 1d\0\0S(\15\0\0\0Ns\f\0\0\0Pyfile55.medgffffff\ 2@i\ 4\0\0\0i\ 5\0\0\0t\ 2\0\0\0uss\e\0\0\0Example of Cuve linear mesht\v\0\0\0buildCLMeshi\ 3\0\0\0i\14\0\0\0i\ 1\0\0\0g\0\0\0\0\0\0\1c@i\90\ 1\0\0i\f\0\0\0i(\0\0\0i\0\0\0\0i\15\0\0\0\ f\0\0i\ 2\0\0\0g\11ê-\81\99\97q=i<\0\0\0\0\0\0t\1a\0\0\0MEDCouplingCurveLinearMeshR°\0\0\0\0\0\0RB\0\0\0Ri\0\0\0RY\0\0\0Ry\ 1\0\0Rz\ 1\0\0Rc\0\0\0t\14\0\0\0setNodeGridStructureRd\0\0\0t\16\0\0\0MEDFileCurveLinearMeshR³\0\0\0Rk\0\0\0\0\0\0R\98\0\0\0R)\0\0\0R*\0\0\0t\r\0\0\0popBackSilentR\v\0\0\0\0\0\0R0\0\0\0R1\0\0\0R+\0\0\0t\11\0\0\0getSpaceDimensiont\1d\0\0\0getSpaceDimensionOnNodeStructR'\0\0\0R(\0\0\0Rt\0\0\0R{\0\0\0R|\0\0\0Ry\0\0\0(\v\0\0\0\0\0\0R9\ 1\0\0\ 2\0\0t\ 2\0\0\0a1R\83\0\0\0Re\ 1\0\0t\ 2\0\0\0d3Ro\ 1\0\0t\ 2\0\0\0d4R\84\0\0\0R\86\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\14\0\0\0testCurveLinearMesh1¬\b\0\0sP\0\0\0\0\ 1\ 6\ 1     \ 1\13\ 1\r\ 1\r\ 1\r\ 1\ f\ 1\r\0\r\ 1\r\ 1\13\ 1
++\ 2     \ 1\r\ 1\f\0\r\ 1\10\ 1\f\0\r\ 1\10\ 1\f\0\r\ 1\10\ 1\f\0\r\ 1\19\ 1
++\ 1\10\ 1\10\ 2\f\ 1\f\ 1\19\ 1\16\ 1\16\ 2\ f\ 1\16\ 1\1c\ 1\1f\ 1\1f\ 1c\ 1\0\0\0\11\0\0\0\ 5\0\0\0C\0\0\0s\97\ 4\0\0d\ 1\0}\ 1\0t\0\0\83\0\0}\ 2\0t\ 1\0d\ 2\0d\ 3\0d\ 4\0g\ 3\0\83\ 1\0}\ 3\0|\ 2\0j\ 2\0|\ 3\0|\ 3\0\83\ 2\0\ 1|\ 2\0j\ 3\0d\ 5\0\83\ 1\0\ 1t\ 4\0\83\0\0}\ 4\0|\ 4\0j\ 5\0|\ 2\0\83\ 1\0\ 1t\ 6\0\83\0\0}\ 5\0|\ 5\0j\a\0|\ 4\0\83\ 1\0\ 1t\b\0\83\0\0}\ 6\0t        \0\83\0\0}\a\0|\ 6\0j
++\0|\a\0\83\ 1\0\ 1|\ 6\0j\v\0|\ 5\0\83\ 1\0\ 1t\f\0\83\0\0}\b\0|\b\0j\ 3\0d\ 6\0\83\ 1\0\ 1|\b\0j\r\0d\a\0\83\ 1\0\ 1|\b\0j\ e\0d\b\0\83\ 1\0\ 1|\b\0j\ f\0d  \0d
++\0d\v\0d\f\0\83\ 4\0\ 1|\b\0j\ f\0d
++\0d\r\0d\ e\0d\ f\0\83\ 4\0\ 1|\b\0j\10\0\83\0\0}      \0|      \0j\ 3\0d\10\0\83\ 1\0\ 1|    \0j\r\0d\11\0\83\ 1\0\ 1|\a\0j\11\0|\b\0\83\ 1\0\ 1|\a\0j\11\0\0\83\ 1\0\ 1|\ 6\0j\12\0|\ 1\0d
++\0\83\ 2\0\ 1t        \0|\ 1\0\83\ 1\0}
++\0|\0\0j\13\0|\a\0j\14\0|
++\0d\12\0\83\ 2\0d\13\0\19\83\ 1\0\ 1|\0\0j\15\0|\a\0d     \0\19d\15\0\19j\16\0\83\0\0d\f\0d\14\0\83\ 3\0\ 1|\a\0j\10\0\83\0\0}\v\0|     \0j\10\0\83\0\0}\f\0|     \0j\10\0\83\0\0}\r\0|\0\0j\13\0|\r\0j\14\0\0d\12\0\83\ 2\0d\13\0\19\83\ 1\0\ 1|        \0j\17\0d\13\0g\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\r\0j\14\0|     \0d\12\0\83\ 2\0d\13\0\19\f\83\ 1\0\ 1|\r\0d\v\0g\ 1\0=|\0\0j\13\0|\r\0j\14\0\0d\12\0\83\ 2\0d\13\0\19\83\ 1\0\ 1|\0\0j\18\0t\19\0|\a\0d    \0\19j\1a\0d\16\0\83\ 3\0\ 1|\0\0j\18\0t\19\0|\a\0d\10\0\19j\1a\0d\17\0\83\ 3\0\ 1|\0\0j\15\0|\a\0d\13\0\19d\18\0\19j\16\0\83\0\0d\f\0d\14\0\83\ 3\0\ 1|\0\0j\15\0|\a\0d\ 6\0\19d\19\0\19j\16\0\83\0\0d\f\0d\14\0\83\ 3\0\ 1|\v\0}\a\0|\0\0j\13\0|\a\0j\14\0|
++\0d\12\0\83\ 2\0d\13\0\19\83\ 1\0\ 1|\0\0j\13\0|
++\0d\10\0\19j\14\0|\b\0d\12\0\83\ 2\0d\13\0\19\83\ 1\0\ 1|\0\0j\13\0|
++\0d\10\0\19j\14\0|     \0d\12\0\83\ 2\0d\13\0\19\f\83\ 1\0\ 1|\0\0j\15\0|
++\0d\13\0\19d\1a\0\19j\16\0\83\0\0d\f\0d\14\0\83\ 3\0\ 1|\0\0j\e\0|\a\0j\1c\0\83\0\0d\e\0\83\ 2\0\ 1t\f\0|\ 1\0d\10\0\83\ 2\0}\ e\0|\0\0j\13\0|\ e\0j\14\0|\f\0d\12\0\83\ 2\0d\13\0\19\83\ 1\0\ 1t\f\0|\ 1\0\83\ 1\0}\ e\0|\0\0j\13\0|\ e\0j\14\0|\b\0d\12\0\83\ 2\0d\13\0\19\83\ 1\0\ 1t\1d\0|\ 1\0\83\ 1\0}\ f\0|\0\0j\e\0|\ f\0j\1e\0\83\0\0d\ 6\0\83\ 2\0\ 1|\0\0j\15\0|\ f\0j\16\0\83\0\0d\f\0d\14\0\83\ 3\0\ 1t\1d\0|\ 1\0d\10\0\83\ 2\0}\ f\0|\0\0j\e\0|\ f\0j\1e\0\83\0\0d\10\0\83\ 2\0\ 1|\0\0j\15\0|\ f\0j\16\0\83\0\0d\f\0d\14\0\83\ 3\0\ 1t\1d\0|\ 1\0d\10\0d
++\0d\r\0\83\ 4\0}\ f\0|\0\0j\e\0|\ f\0j\1e\0\83\0\0d\10\0\83\ 2\0\ 1|\0\0j\15\0|\ f\0j\16\0\83\0\0d\ f\0d\14\0\83\ 3\0\ 1t\b\0|\ 1\0\83\ 1\0}\10\0|\0\0j\e\0d
++\0|\10\0j\1f\0\83\0\0\83\ 2\0\ 1|\0\0j\15\0|\10\0\0\83\0\0d\10\0\19d\1c\0\19j\16\0\83\0\0d\f\0d\14\0\83\ 3\0\ 1d\0\0S(\1d\0\0\0Ns\f\0\0\0Pyfile56.medg\0\0\0\0\0\0\0\0g333333ó?g\0\0\0\0\0\0\f@R \ 2\0\0t\ 1\0\0\0As\17\0\0\0An example of parameterR­\0\0\0i\ 1\0\0\0i\ 2\0\0\0g333333\v@g\85ëQ¸\1e¿\81@i\ 3\0\0\0gffffff\16@gD\8blçû8\8f@t\ 1\0\0\0Bs\10\0\0\0A second exampleg\9b\86\9b\84\ 6=i\0\0\0\0i\r\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0\ 2\0\0\ 2\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(!\0\0\0\0\0\0RY\0\0\0Rc\0\0\0RB\0\0\0\0\0\0\0\0\0RP\ 1\0\0R7\ 2\0\0RK\ 1\0\0t\11\0\0\0MEDFileParameterst     \0\0\0setParamsRR\ 1\0\0t\17\0\0\0MEDFileParameterMultiTSRi\0\0\0\0\0\0t\v\0\0\0appendValueRq\0\0\0t   \0\0\0pushParamR\v\0\0\0R0\0\0\0R1\0\0\0R&\ 1\0\0t\b\0\0\0getValuet\10\0\0\0eraseTimeStepIdsR)\0\0\0R*\0\0\0t\v\0\0\0__getitem__R+\0\0\0t\ e\0\0\0getParamsNamest\19\0\0\0MEDFileParameterDouble1TSRC\0\0\0t\11\0\0\0getNumberOfParamst  \0\0\0getParams(\11\0\0\0R      \0\0\0R9\ 1\0\0R\83\0\0\0\ 1\0\0R\86\0\0\0\0\0\0t\ 4\0\0\0dataRå\0\0\0t\ 3\0\0\0ptst\ 4\0\0\0pts2t\ 2\0\0\0p2t\ 2\0\0\0p3t\ 4\0\0\0pts4t\ 4\0\0\0pts3t\ 4\0\0\0ptsrt\ 5\0\0\0p1tsrt\ 5\0\0\0data2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ f\0\0\0testParameters1Ô\b\0\0s~\0\0\0\0\ 1\ 6\ 1     \0\15\0\10\0\r\ 1 \0\r\ 1     \0\r\ 1     \ 1       \ 1\r\0\r\ 1   \ 1\r\0\r\0\r\ 1\16\ 1\16\ 1\f\0\r\0\r\ 1\r\0\r\ 1\10\ 1\f\ 1\1d\ 1!\ 1\f\ 1\f\ 1\f\ 1\1d\ 1\10\ 1\1e\ 1
++\ 1\1d\ 1\1a\ 1\1a\ 1!\ 1!\ 1\ 6\ 1\1d\ 1!\ 1"\ 1!\ 1\16\ 1\ f\ 1\1d\ 1\f\ 1\1d\ 1\f\ 1\16\ 1\19\ 1\ f\ 1\16\ 1\19\ 1\15\ 1\16\ 1\19\ 1\f\ 1\16\ 1'\ 1c\ 1\0\0\0\11\0\0\0\a\0\0\0C\0\0\0\ 5\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0\83\0\0d\ 3\0\19}\ 4\0|\ 4\0j\ 3\0\83\0\0\ 1t\ 4\0\83\0\0}\ 5\0|\ 5\0j\ 5\0d\ 3\0|\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0d\ 4\0|\ 4\0\83\ 2\0\ 1t\ 6\0d\ 5\0d\ 6\0\83\ 2\0}\ 6\0g\0\0t\a\0d\ 5\0\83\ 1\0D]\10\0}\a\0d\a\0|\a\0\16^\ 2\0qw\0|\ 6\0(|\ 5\0j\b\0d\ 3\0|\ 6\0\83\ 2\0\ 1t\ 6\0j       \0|\ 6\0|\ 6\0|\ 6\0j
++\0d\b\0\83\ 1\0g\ 3\0\83\ 1\0}\b\0g\0\0t\a\0d\ 6\0\83\ 1\0D]\10\0}\a\0d  \0|\a\0\16^\ 2\0\0|\b\0(|\ 5\0j\b\0d\ 4\0|\b\0\83\ 2\0\ 1|\b\0j
++\0d
++\0d\ 6\0\83\ 2\0}      \0g\0\0t\a\0d\v\0\83\ 1\0D]\10\0}\a\0d\f\0|\a\0\16^\ 2\0q\12\ 1|      \0(|\ 5\0j\b\0d\r\0|    \0\83\ 2\0\ 1|\ 5\0j\v\0|\ 1\0d\b\0\83\ 2\0\ 1t\f\0j\r\0|\ 1\0\83\ 1\0}
++\0|\0\0j\ e\0|\ 5\0j\ f\0d\ 3\0\83\ 1\0j\10\0t\ 6\0g\0\0t\a\0d\ 5\0\83\ 1\0D]\10\0}\a\0d\a\0|\a\0\16^\ 2\0q}\ 1\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ e\0|\ 5\0j\ f\0d\ 4\0\83\ 1\0j\10\0t\ 6\0g\0\0t\a\0d\ 6\0\83\ 1\0D]\10\0}\a\0d       \0|\a\0\16^\ 2\0q¿\ 1\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ e\0|\ 5\0j\ f\0d\r\0\83\ 1\0j\10\0t\ 6\0g\0\0t\a\0d\v\0\83\ 1\0D]\10\0}\a\0d\f\0|\a\0\16^\ 2\0q\ 1\ 2\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ e\0|\ 5\0j\10\0|
++\0d\ e\0\83\ 2\0d\ 3\0\19\83\ 1\0\ 1|
++\0j\ f\0d\r\0\83\ 1\0j\11\0d\ 3\0d\ 3\0d\ f\0\83\ 3\0\ 1|\0\0j\ e\0|\ 5\0j\10\0|
++\0d\ e\0\83\ 2\0d\ 3\0\19\f\83\ 1\0\ 1|
++\0j\ f\0d\r\0\83\ 1\0j\11\0d\ 3\0d\ 3\0d\10\0\83\ 3\0\ 1|\0\0j\ e\0|\ 5\0j\10\0|
++\0d\ e\0\83\ 2\0d\ 3\0\19\83\ 1\0\ 1|\ 5\0j\12\0\83\0\0}\v\0|\0\0j\ e\0|\ 5\0j\10\0|\v\0d\ e\0\83\ 2\0d\ 3\0\19\83\ 1\0\ 1|\v\0j\b\0d\r\0d\0\0\83\ 2\0\ 1|\0\0j\ e\0|\ 5\0j\10\0|\v\0d\ e\0\83\ 2\0d\ 3\0\19\f\83\ 1\0\ 1|\ 5\0j\b\0d\r\0d\0\0\83\ 2\0\ 1|\0\0j\ e\0|\ 5\0j\10\0|\v\0d\ e\0\83\ 2\0d\ 3\0\19\83\ 1\0\ 1|\ 5\0j\b\0d\ 4\0d\0\0\83\ 2\0\ 1|\ 5\0j\v\0|\ 1\0d\b\0\83\ 2\0\ 1t\f\0j\r\0|\ 1\0\83\ 1\0}
++\0|\0\0j\14\0|
++\0j\ f\0d\r\0\83\ 1\0d\0\0\83\ 2\0\ 1|\0\0j\ e\0|
++\0j\ f\0d\ 3\0\83\ 1\0j\10\0t\ 6\0g\0\0t\a\0d\ 5\0\83\ 1\0D]\10\0}\a\0d\a\0|\a\0\16^\ 2\0q\9f\ 3\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\14\0|
++\0j\ f\0d\ 4\0\83\ 1\0d\0\0\83\ 2\0\ 1t\15\0\83\0\0}\f\0t\16\0d\11\0d\12\0d\13\0g\ 3\0\83\ 1\0}\r\0|\f\0j\17\0|\r\0|\r\0\83\ 2\0\ 1|\f\0j\18\0d\14\0\83\ 1\0\ 1t\19\0\83\0\0}\ e\0|\ e\0j\1a\0|\f\0\83\ 1\0\ 1|\ e\0j\b\0d\ 3\0t\ 6\0g\0\0t\a\0d
++\0\83\ 1\0D]\10\0}\a\0d\15\0|\a\0\16^\ 2\0q?\ 4\83\ 1\0\83\ 2\0\ 1|\ e\0j\b\0d\r\0t\ 6\0g\0\0t\a\0d\16\0\83\ 1\0D]\10\0}\a\0d\f\0|\a\0\16^\ 2\0qr\ 4\83\ 1\0\83\ 2\0\ 1|\ e\0j\v\0|\ 2\0d\b\0\83\ 2\0\ 1t\f\0j\r\0|\ 2\0\83\ 1\0}\ f\0|\0\0j\ e\0|\ f\0j\ f\0d\ 3\0\83\ 1\0j\10\0t\ 6\0g\0\0t\a\0d
++\0\83\ 1\0D]\10\0}\a\0d\15\0|\a\0\16^\ 2\0\ 4\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ e\0|\ f\0j\ f\0d\r\0\83\ 1\0j\10\0t\ 6\0g\0\0t\a\0d\16\0\83\ 1\0D]\10\0}\a\0d\f\0|\a\0\16^\ 2\0q\12\ 5\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ e\0|\ e\0j\10\0|\ f\0d\ e\0\83\ 2\0d\ 3\0\19\83\ 1\0\ 1|\ f\0j\ f\0d\r\0\83\ 1\0j\11\0d\ 3\0d\ 3\0d\ f\0\83\ 3\0\ 1|\0\0j\ e\0|\ e\0j\10\0|\ f\0d\ e\0\83\ 2\0d\ 3\0\19\f\83\ 1\0\ 1|\ f\0j\ f\0d\r\0\83\ 1\0j\11\0d\ 3\0d\ 3\0d\10\0\83\ 3\0\ 1|\0\0j\ e\0|\ e\0j\10\0|\ f\0d\ e\0\83\ 2\0d\ 3\0\19\83\ 1\0\ 1|\ e\0j\12\0\83\0\0}\10\0|\0\0j\ e\0|\ e\0j\10\0|\10\0d\ e\0\83\ 2\0d\ 3\0\19\83\ 1\0\ 1d\0\0S(\17\0\0\0Ns\f\0\0\0Pyfile58.meds\f\0\0\0Pyfile59.medi\0\0\0\0iÿÿÿÿi\ 6\0\0\0i\10\0\0\0s\11\0\0\0CellL0#%.3d      i\ 2\0\0\0s\11\0\0\0CellLM1#%.3d     i\ 4\0\0\0i\f\0\0\0s\11\0\0\0Node#%.3d        i\ 1\0\0\0g\11ê-\81\99\97q=t\ 1\0\0\0Mt\ 1\0\0\0Ng\0\0\0\0\0\0\0\0g\9a\99\99\99\99\99ñ?gffffff\ 2@t\ 5\0\0\0cmeshs\11\0\0\0Cell#%.3d        i  \0\0\0(\e\0\0\0R\ 4\0\0\0t\11\0\0\0build3DSurfMesh_1R\9b\ 1\0\0R\9c\ 1\0\0R>\0\0\0Rj\0\0\0t\12\0\0\0DataArrayAsciiCharRn\0\0\0t\13\0\0\0setNameFieldAtLevelt    \0\0\0Aggregatet\b\0\0\0subArrayR\v\0\0\0R'\0\0\0R(\0\0\0R0\0\0\0t\13\0\0\0getNameFieldAtLevelR1\0\0\0R\9f\0\0\0Rq\0\0\0R/\ 2\0\0R+\0\0\0\0\0\0RY\0\0\0Rc\0\0\0RB\0\0\0\0\0\0\0\0\0(\11\0\0\0R      \0\0\0R9\ 1\0\0Rn\ 1\0\0R\83\0\0\0R\84\0\0\0R\86\0\0\0t\v\0\0\0namesCellL0Rî\0\0\0t\v\0\0\0namesCellL1t
++\0\0\0namesNodest\ 3\0\0\0mmrR\8d\0\0\0R\80\0\0\0\ 1\0\0t\ 2\0\0\0cct\ 3\0\0\0ccrt\ 5\0\0\0ccCpy(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt \0\0\0testNamesOnCellAndNodesInMeshes1
++      \0\0sv\0\0\0\0\ 1\ 6\ 1\ 6\ 1\f\ 1\10\ 1
++\ 2     \ 1\10\ 1\10\ 1\ f\ 1$\ 1\10\ 1!\ 1$\ 1\10\ 1\12\ 1$\ 1\10\ 1\10\ 2\ f\ 1B\ 1B\ 1B\ 1\1d\ 1\1c\ 1\1e\ 1\1c\ 1\1d\ 1\f\ 1\1d\ 2\10\ 1\1e\ 1\10\ 1\1d\ 1\10\ 1\10\ 1\ f\ 1\19\ 1B\ 1\19\ 2     \ 1\15\ 1\10\ 1\r\ 1 \ 1\r\ 13\ 13\ 1\10\ 1\ f\ 1B\ 1B\ 1\1d\ 1\1c\ 1\1e\ 1\1c\ 1\1d\ 1\f\ 1\1d\ 1c\ 1\0\0\0\18\0\0\0\r\0\0\0C\0\0\0\ 2\0\0t\0\0\83\0\0}\ 1\0t\ 1\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0g\ 5\0\83\ 1\0}\ 2\0|\ 1\0j\ 2\0|\ 2\0|\ 2\0\83\ 2\0\ 1|\ 1\0j\ 3\0\83\0\0}\ 1\0|\ 1\0j\ 4\0d\ 6\0\83\ 1\0\ 1t\ 5\0d\a\0d\b\0d      \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0g\f\0\83\ 1\0}\ 3\0|\ 3\0j\ 4\0d\13\0\83\ 1\0\ 1t\ 5\0d\14\0d\15\0d\16\0d\17\0g\ 4\0\83\ 1\0}\ 4\0|\ 4\0j\ 4\0d\18\0\83\ 1\0\ 1|\ 1\0j\ 6\0\83\0\0}\ 5\0t\a\0\83\0\0}\ 6\0|\ 6\0j\b\0d\a\0|\ 1\0\83\ 2\0\ 1|\ 6\0j\b\0d\19\0|\ 5\0\83\ 2\0\ 1|\ 6\0\0d\a\0|\ 3\0|\ 4\0g\ 2\0\83\ 2\0\ 1|\ 6\0j
++\0d\1a\0\0\83\ 2\0\ 1|\ 6\0j\v\0d\a\0\83\ 1\0}\a\0|\ 6\0j\v\0d\19\0\83\ 1\0}\b\0|\ 6\0j\f\0d\a\0d\13\0\83\ 2\0}\ 3\0|\ 6\0j\f\0d\a\0d\18\0\83\ 2\0}\ 4\0|\ 3\0|\ 4\0g\ 2\0}       \0t\ 5\0|\a\0j\r\0\83\0\0\83\ 1\0}
++\0|
++\0j\ e\0d\19\0\83\ 1\0\ 1x$\0t\ f\0|    \0\83\ 1\0D]\16\0\\ 2\0}\v\0}\f\0|\v\0|
++\0|\f\0<q\84\ 1W|\a\0j\10\0\83\0\0\\ 5\0}\r\0}\ e\0}\ f\0}\10\0}\11\0|\r\0j\11\0|\b\0d        \0\83\ 2\0\\ 2\0}\12\0}\13\0|\0\0j\12\0|\12\0\83\ 1\0\ 1t\13\0j\14\0|\13\0|\10\0|\11\0\83\ 3\0\\ 2\0}\14\0}\15\0|\0\0j\12\0|\15\0j\15\0\83\0\0j\16\0d\b\0\83\ 1\0\83\ 1\0\ 1|\14\0j\17\0|
++\0\83\ 1\0\ 1t\18\0|     \0\83\ 1\0d\0\0g\ 1\0\14}\16\0x3\0t\ f\0|   \0\83\ 1\0D]%\0\\ 2\0}\v\0}\f\0|\14\0j\1a\0|\v\0\83\ 1\0}\17\0|\17\0|\16\0|\v\0<qB\ 2W|\16\0d\a\0\19j\e\0t\ 5\0d\a\0d\b\0d      \0d\14\0d\f\0d\r\0d\ f\0d\16\0d\10\0d\11\0g
++\0\83\ 1\0\83\ 1\0\ 1|\16\0d\b\0\19j\e\0t\ 5\0d
++\0d\v\0d\15\0d\ e\0d\12\0d\17\0g\ 6\0\83\ 1\0\83\ 1\0\ 1d\0\0S(\e\0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@g\0\0\0\0\0\0\10@R \ 2\0\0i\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\b\0\0\0i    \0\0\0i
++\0\0\0i\f\0\0\0i\r\0\0\0i\ e\0\0\0R\95\ 2\0\0i\ 3\0\0\0i\a\0\0\0i\v\0\0\0i\ f\0\0\0\ 1\0\0iÿÿÿÿs\v\0\0\0example.med(\1c\0\0\0\0\0\0RY\0\0\0Rc\0\0\0\ 1\0\0RB\0\0\0Rk\0\0\0t\v\0\0\0computeSkinR>\0\0\0Rj\0\0\0Rl\0\0\0R\v\0\0\0R}\0\0\0RG\0\0\0\0\0\0t\r\0\0\0fillWithValueRõ\0\0\0R\9b\ 1\0\0t\12\0\0\0areCellsIncludedInR0\0\0\0R[\0\0\0t\18\0\0\0ExtractFromIndexedArrayst\ f\0\0\0deltaShiftIndext    \0\0\0isUniformt\13\0\0\0transformWithIndArrRy\0\0\0R/\ 2\0\0t\f\0\0\0findIdsEqualR1\0\0\0(\18\0\0\0R      \0\0\0R\83\0\0\0\ 1\0\0R\95\ 2\0\0\ 1\0\0R\85\0\0\0R\86\0\0\0\0\0\0R\84\0\0\0t\ 4\0\0\0grpst\b\0\0\0whichGrpt\ 5\0\0\0grpIdRç\ 1\0\0\ 2\0\0t\ 1\0\0\0bt\ 2\0\0\0bIR\80\0\0\0t\ 2\0\0\0cIR\ 2\0\0\0R\b\0\0\0t\ 2\0\0\0c2t\ 3\0\0\0c2It        \0\0\0splitOfM1R\93\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\17\0\0\0testToExportInExamples1K        \0\0sN\0\0\0\0\ 1       \ 1\e\ 1\10\ 1\f\0\r\ 10\0\r\ 1\18\0\r\ 1\f\ 1     \ 1\10\ 1\10\ 1\16\ 1\10\ 2\ f\ 1\ f\ 1\12\ 1\12\ 1\f\ 1\12\ 1\r\ 1\19\ 1
++\ 1\ 4\ 1\e\ 1\18\ 1\r\ 1\e\ 1\1c\ 1\r\ 1\13\ 1\19\ 1\ f\ 1
++\ 1\ 4\ 15\ 1)\ 1c\ 1\0\0\0\ 2\0\0\0\ 4\0\0\0C\0\0\0sD\0\0\0t\0\0\83\0\0}\ 1\0|\ 1\0j\ 1\0d\ 1\0\83\ 1\0\ 1|\0\0j\ 2\0|\ 1\0d\ 2\0\19d\0\0\83\ 2\0\ 1|\0\0j\ 2\0d\ 1\0t\ 4\0|\ 1\0\83\ 1\0\83\ 2\0\ 1d\0\0S(\ 3\0\0\0Ni\ 3\0\0\0i\0\0\0\0(\ 5\0\0\0R[\ 1\0\0\ 1\0\0R+\0\0\0R/\ 2\0\0Ry\0\0\0(\ 2\0\0\0\0\0\0Rl\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\12\0\0\0testBugCorrection1r      \0\0s
++\0\0\0\0\ 1 \ 1\r\ 1\14\ 1\16\ 1c\ 1\0\0\0\19\0\0\0\b\0\0\0C\0\0\0s{\ 2\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0j\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\0\0j\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 2\0|\ 2\0d\ 3\0\83\ 2\0\ 1t\ 3\0|\ 1\0\83\ 1\0}\ 3\0t\ 3\0|\ 2\0\83\ 1\0}\ 4\0x\9f\0|\ 3\0j\ 4\0\83\0\0j\ 5\0\83\0\0D]\8b\0}\ 5\0|\ 3\0j\ 4\0\83\0\0|\ 5\0\19}\ 6\0|\ 4\0j\ 4\0\83\0\0|\ 5\0\19}\a\0xb\0|\ 6\0j\ 6\0\83\0\0D]T\0}\b\0|\ 6\0j\a\0|\b\0\83\ 1\0}      \0x<\0|   \0D]4\0}
++\0|\0\0j\b\0|\ 6\0j   \0|\b\0|
++\0\83\ 2\0j
++\0|\a\0\0|\b\0|
++\0\83\ 2\0\83\ 1\0\83\ 1\0\ 1\0Wq¢\0Wqo\0Wxv\ 1|\ 3\0j\v\0\83\0\0j\f\0\83\0\0D]b\ 1}\v\0|\ 3\0j\v\0\83\0\0|\v\0\19}\f\0|\ 4\0j\v\0\83\0\0|\v\0\19}\r\0x9\ 1|\f\0j\r\0\83\0\0D]+\ 1\\ 3\0}\ e\0}\ f\0}\10\0|\f\0|\ e\0|\ f\0f\ 2\0\19}\11\0|\r\0|\ e\0|\ f\0f\ 2\0\19}\12\0t\ e\0|\11\0j\ f\0\83\0\0\83\ 1\0d\ 4\0k\ 3\0r\ e\ 2\0|\11\0j\ 6\0\83\0\0d\ 5\0\19D]k\0}\b\0|\11\0j\10\0t\11\0|\b\0|\ 6\0\83\ 3\0\\ 2\0}\13\0}\14\0|\12\0j\10\0t\11\0|\b\0|\a\0\83\ 3\0\\ 2\0}\15\0}\16\0|\0\0j\b\0|\14\0j
++\0|\16\0\83\ 1\0\83\ 1\0\ 1|\0\0j\b\0|\13\0j
++\0|\15\0d\ 6\0\83\ 2\0\83\ 1\0\ 1q\9c\ 1WqD\ 1x^\0|\11\0j\ 6\0\83\0\0d\ 5\0\19D]L\0}\b\0|\11\0j\12\0t\11\0|\b\0|\ 6\0\83\ 3\0}\17\0|\12\0j\12\0t\11\0|\b\0|\a\0\83\ 3\0}\18\0|\0\0j\b\0|\17\0j
++\0|\18\0d\ 6\0d\ 6\0\83\ 3\0\83\ 1\0\ 1q\1f\ 2WqD\ 1Wq\11\ 1Wd\0\0S(\a\0\0\0Ns\f\0\0\0Pyfile60.meds\f\0\0\0Pyfile61.medi\ 2\0\0\0i\0\0\0\0i\ 1\0\0\0g»½×Ùß|Û=(\13\0\0\0R\ 4\0\0\0t1\0\0\0buildACompleteMEDDataStructureWithFieldsOnCells_1R\v\0\0\0RK\ 1\0\0RT\ 1\0\0RU\ 1\0\0R,\0\0\0\0\0\0R0\0\0\0RG\0\0\0R1\0\0\0Ra\ 1\0\0Rb\ 1\0\0\0\0\0Ry\0\0\0R<\ 2\0\0R~\ 1\0\0R\13\ 1\0\0R\97\ 1\0\0(\19\0\0\0R  \0\0\0t\ 6\0\0\0f1Namet\ 6\0\0\0f2Namet\ 2\0\0\0d1Ro\ 1\0\0t\ 2\0\0\0mnR\84\0\0\0R\85\0\0\0\0\0\0t    \0\0\0grpsNamest\a\0\0\0grpNamet\ 6\0\0\0fieldnRã\0\0\0\0\0\0Rv\ 2\0\0t\ 5\0\0\0orderRw\ 2\0\0t\ 3\0\0\0f1tt\ 3\0\0\0f2tRz\ 2\0\0Ry\ 2\0\0t\ 4\0\0\0arr2RE\ 2\0\0t\ 4\0\0\0f1mct\ 4\0\0\0f2mc(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt.\0\0\0testCompareMEDFilesContainingOnlyFieldsOnCell1y       \0\0sP\0\0\0\0\ 1\ 6\ 1\ 6\ 1\f\ 1\10\ 1\f\ 1\10\ 2\f\0\f\ 1\19\ 1\10\ 1\10\ 1\13\ 1\ f\ 1\r\ 1.\ 1\ 4\ 1\ 4\ 1\ 4\ 1\19\ 1\10\ 1\10\ 1\1c\ 1\10\ 1\10\ 1\18\ 2\17\ 1\e\ 1\e\ 1\16\ 1\19\ 1\ 4\ 1\ 3\ 3\17\ 1\15\ 1\15\ 1\1c\ 1\ 4\ 2\ 4\ 1\ 4\ 1c\ 1\0\0\0\14\0\0\0\ 6\0\0\0C\0\0\0sù      \0\0t\0\0\83\0\0}\ 1\0t\ 1\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0g\ 5\0\83\ 1\0}\ 2\0|\ 1\0j\ 2\0|\ 2\0|\ 2\0|\ 2\0\83\ 3\0\ 1|\ 1\0j\ 3\0\83\0\0}\ 1\0|\ 1\0j\ 4\0\83\0\0d\ 6\0\19}\ 3\0|\ 1\0j\ 5\0d\a\0\83\ 1\0\ 1t\ 6\0d\ 6\0d\b\0d    \0d
++\0g\ 4\0\83\ 1\0}\ 4\0|\ 4\0j\ 5\0d\v\0\83\ 1\0\ 1t\ 6\0d   \0d
++\0d\f\0d\r\0g\ 4\0\83\ 1\0}\ 5\0|\ 5\0j\ 5\0d\ e\0\83\ 1\0\ 1t\ 6\0d\ f\0d\10\0d\11\0d\12\0g\ 4\0\83\ 1\0}\ 6\0|\ 6\0j\ 5\0d\13\0\83\ 1\0\ 1t\ 6\0d\11\0d\12\0d\14\0d\15\0g\ 4\0\83\ 1\0}\a\0|\a\0j\ 5\0d\16\0\83\ 1\0\ 1t\ 6\0d\17\0d\18\0d\19\0d\1a\0g\ 4\0\83\ 1\0}\b\0|\b\0j\ 5\0d\e\0\83\ 1\0\ 1t\ 6\0d\19\0d\1a\0d\1c\0d\1d\0g\ 4\0\83\ 1\0}    \0|      \0j\ 5\0d\1e\0\83\ 1\0\ 1t\a\0\83\0\0}
++\0|
++\0j\b\0d\ 6\0|\ 1\0\83\ 2\0\ 1|
++\0j    \0d\ 6\0|\ 4\0|\ 5\0g\ 2\0\83\ 2\0\ 1t
++\0|
++\0j\v\0d\v\0\83\ 1\0\83\ 1\0}\v\0t
++\0|
++\0j\v\0d\ e\0\83\ 1\0\83\ 1\0}\f\0|\0\0j\f\0|
++\0j\r\0d\v\0\83\ 1\0\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\ e\0\83\ 1\0d!\0\83\ 2\0\ 1|
++\0j\ e\0\83\0\0\ 1|\0\0j\f\0|
++\0j\r\0d\v\0\83\ 1\0d"\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\ e\0\83\ 1\0d#\0\83\ 2\0\ 1|\0\0j\ f\0|
++\0j\10\0d\ 6\0d\v\0\83\ 2\0j\11\0|\ 4\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ f\0|
++\0j\10\0d\ 6\0d\ e\0\83\ 2\0j\11\0|\ 5\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\v\0t
++\0|
++\0j\v\0d\v\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\0\0j\f\0|\f\0t
++\0|
++\0j\v\0d\ e\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1xD\0|
++\0j\12\0d\ 6\0\83\ 1\0D]3\0}\r\0x*\0|
++\0j\13\0|\r\0\83\ 1\0D]\19\0}\ e\0|\0\0j\ f\0|\ e\0d\ 6\0k\0\0\83\ 1\0\ 1\ 2Wq\97\ 2Wt\a\0\83\0\0}
++\0|
++\0j\b\0d\ 6\0|\ 1\0\83\ 2\0\ 1|
++\0j\b\0d\1f\0|\ 3\0\83\ 2\0\ 1|
++\0j    \0d\ 6\0|\ 4\0|\ 5\0g\ 2\0\83\ 2\0\ 1|
++\0j    \0d\1f\0|\ 6\0|\a\0g\ 2\0\83\ 2\0\ 1t
++\0|
++\0j\v\0d\v\0\83\ 1\0\83\ 1\0}\v\0t
++\0|
++\0j\v\0d\ e\0\83\ 1\0\83\ 1\0}\f\0t
++\0|
++\0j\v\0d\13\0\83\ 1\0\83\ 1\0}\ f\0t
++\0|
++\0j\v\0d\16\0\83\ 1\0\83\ 1\0}\10\0|\0\0j\f\0|
++\0j\r\0d\v\0\83\ 1\0d$\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\ e\0\83\ 1\0d%\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\13\0\83\ 1\0d&\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\16\0\83\ 1\0d'\0\83\ 2\0\ 1|
++\0j\ e\0\83\0\0\ 1|\0\0j\f\0|
++\0j\r\0d\v\0\83\ 1\0d(\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\ e\0\83\ 1\0d)\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\13\0\83\ 1\0d*\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\16\0\83\ 1\0d+\0\83\ 2\0\ 1|\0\0j\ f\0|
++\0j\10\0d\ 6\0d\v\0\83\ 2\0j\11\0|\ 4\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ f\0|
++\0j\10\0d\ 6\0d\ e\0\83\ 2\0j\11\0|\ 5\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ f\0|
++\0j\10\0d\1f\0d\13\0\83\ 2\0j\11\0|\ 6\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ f\0|
++\0j\10\0d\1f\0d\16\0\83\ 2\0j\11\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\v\0t
++\0|
++\0j\v\0d\v\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\0\0j\f\0|\f\0t
++\0|
++\0j\v\0d\ e\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\0\0j\f\0|\ f\0t
++\0|
++\0j\v\0d\13\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\0\0j\f\0|\10\0t
++\0|
++\0j\v\0d\16\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1x[\0d\ 6\0d\1f\0g\ 2\0D]M\0}\11\0xD\0|
++\0j\12\0|\11\0\83\ 1\0D]3\0}\r\0x*\0|
++\0j\13\0|\r\0\83\ 1\0D]\19\0}\ e\0|\0\0j\ f\0|\ e\0d\ 6\0k\0\0\83\ 1\0\ 1q\86\ 5Wqp\ 5WqZ\ 5Wt\a\0\83\0\0}
++\0|
++\0j\b\0d\ 6\0|\ 1\0\83\ 2\0\ 1|
++\0j\b\0d\1f\0|\ 3\0\83\ 2\0\ 1|
++\0j    \0d\ 6\0|\ 4\0|\ 5\0g\ 2\0\83\ 2\0\ 1|
++\0j    \0d\1f\0|\ 6\0|\a\0g\ 2\0\83\ 2\0\ 1|
++\0j    \0d\b\0|\b\0|        \0g\ 2\0\83\ 2\0\ 1t
++\0|
++\0j\v\0d\v\0\83\ 1\0\83\ 1\0}\v\0t
++\0|
++\0j\v\0d\ e\0\83\ 1\0\83\ 1\0}\f\0t
++\0|
++\0j\v\0d\13\0\83\ 1\0\83\ 1\0}\ f\0t
++\0|
++\0j\v\0d\16\0\83\ 1\0\83\ 1\0}\10\0t
++\0|
++\0j\v\0d\e\0\83\ 1\0\83\ 1\0}\12\0t
++\0|
++\0j\v\0d\1e\0\83\ 1\0\83\ 1\0}\13\0|\0\0j\f\0|
++\0j\r\0d\v\0\83\ 1\0d,\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\ e\0\83\ 1\0d-\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\13\0\83\ 1\0d.\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\16\0\83\ 1\0d/\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\e\0\83\ 1\0d0\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\1e\0\83\ 1\0d1\0\83\ 2\0\ 1|
++\0j\ e\0\83\0\0\ 1|\0\0j\f\0|
++\0j\r\0d\v\0\83\ 1\0d2\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\ e\0\83\ 1\0d3\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\13\0\83\ 1\0d4\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\16\0\83\ 1\0d5\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\e\0\83\ 1\0d6\0\83\ 2\0\ 1|\0\0j\f\0|
++\0j\r\0d\1e\0\83\ 1\0d7\0\83\ 2\0\ 1|\0\0j\ f\0|
++\0j\10\0d\ 6\0d\v\0\83\ 2\0j\11\0|\ 4\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ f\0|
++\0j\10\0d\ 6\0d\ e\0\83\ 2\0j\11\0|\ 5\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ f\0|
++\0j\10\0d\1f\0d\13\0\83\ 2\0j\11\0|\ 6\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ f\0|
++\0j\10\0d\1f\0d\16\0\83\ 2\0j\11\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ f\0|
++\0j\10\0d\b\0d\e\0\83\ 2\0j\11\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ f\0|
++\0j\10\0d\b\0d\1e\0\83\ 2\0j\11\0|     \0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\v\0t
++\0|
++\0j\v\0d\v\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\0\0j\f\0|\f\0t
++\0|
++\0j\v\0d\ e\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\0\0j\f\0|\ f\0t
++\0|
++\0j\v\0d\13\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\0\0j\f\0|\10\0t
++\0|
++\0j\v\0d\16\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\0\0j\f\0|\12\0t
++\0|
++\0j\v\0d\e\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\0\0j\f\0|\13\0t
++\0|
++\0j\v\0d\1e\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1x[\0d\ 6\0d\1f\0g\ 2\0D]M\0}\11\0xD\0|
++\0j\12\0|\11\0\83\ 1\0D]3\0}\r\0x*\0|
++\0j\13\0|\r\0\83\ 1\0D]\19\0}\ e\0|\0\0j\ f\0|\ e\0d\ 6\0k\0\0\83\ 1\0\ 1q\89        Wqs     Wq]     WxD\0|
++\0j\12\0d\b\0\83\ 1\0D]3\0}\r\0x*\0|
++\0j\13\0|\r\0\83\ 1\0D]\19\0}\ e\0|\0\0j\ f\0|\ e\0d\ 6\0k\ 4\0\83\ 1\0\ 1qÔ        Wq¾     Wd\0\0S(8\0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@g\0\0\0\0\0\0\10@i\0\0\0\0\ 2\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0\ 1\0\0i\ 5\0\0\0i\ 6\0\0\0\ 1\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0t\ 6\0\0\0g1Facei\19\0\0\0i\1a\0\0\0t\ 6\0\0\0g2Facei
++\0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0t\ 6\0\0\0g1Nodei\ f\0\0\0i\10\0\0\0t\ 6\0\0\0g2Nodeiÿÿÿÿ(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0iÿÿÿÿ(\ 1\0\0\0iÿÿÿÿ(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0iÿÿÿÿ(\ 1\0\0\0iÿÿÿÿ(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0iÿÿÿÿ(\ 1\0\0\0iÿÿÿÿ(\ 1\0\0\0i\ 1\0\0\0(\ 1\0\0\0i\ 1\0\0\0(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0i\0\0\0\0(\ 1\0\0\0iÿÿÿÿ(\ 1\0\0\0iÿÿÿÿ(\ 1\0\0\0i\ 1\0\0\0(\ 1\0\0\0i\ 1\0\0\0(\14\0\0\0\0\0\0RY\0\0\0Rc\0\0\0\ 1\0\0R\9b\ 1\0\0RB\0\0\0Rk\0\0\0R>\0\0\0Rj\0\0\0Rl\0\0\0R\ 1\ 2\0\0R\9a\0\0\0R+\0\0\0R\9d\0\0\0t\16\0\0\0normalizeFamIdsMEDFileR0\0\0\0RG\0\0\0R1\0\0\0\0\0\0t\15\0\0\0getFamiliesIdsOnGroup(\14\0\0\0R     \0\0\0R\83\0\0\0\ 1\0\0R\85\0\0\0\ 1\0\0\ 1\0\0R\ 6\ 3\0\0R\a\ 3\0\0R\b\ 3\0\0R    \ 3\0\0R\86\0\0\0t\ 2\0\0\0s1t\ 2\0\0\0s2R¶\ 1\0\0R\b\0\0\0t\ 2\0\0\0s3t\ 2\0\0\0s4R¥\0\0\0t\ 2\0\0\0s5t\ 2\0\0\0s6(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt$\0\0\0testNonRegBugNormalizeFamIdsMEDFile1§   \0\0\0\0\0\0\ 1       \ 1\e\ 1\13\ 1\f\ 1\10\ 1\r\ 1\18\0\r\ 1\18\0\r\ 1\18\0\r\ 1\18\0\r\ 1\18\0\r\ 1\18\0\r\ 1     \ 1\10\ 1\16\ 1\15\0\15\ 1\19\ 1\19\ 1
++\ 1\19\ 1\19\ 1"\ 1"\ 1\1f\ 1\1f\ 1\16\ 1\16\ 1\13\ 1\ 4\ 1\ 4\ 2       \ 1\10\ 1\10\ 1\16\ 1\16\ 1\15\0\15\ 1\15\0\15\ 1\19\ 1\19\ 1\19\ 1\19\ 1
++\ 1\19\ 1\19\ 1\19\ 1\19\ 1"\ 1"\ 1"\ 1"\ 1\1f\ 1\1f\ 1\1f\ 1\1f\ 1\13\ 1\16\ 1\16\ 1\13\ 1\ 4\ 1\ 4\ 1\ 4\ 2       \ 1\10\ 1\10\ 1\16\ 1\16\ 1\16\ 1\15\0\15\ 1\15\0\15\ 1\15\0\15\ 1\19\ 1\19\ 1\19\ 1\19\ 1\19\ 1\19\ 1
++\ 1\19\ 1\19\ 1\19\ 1\19\ 1\19\ 1\19\ 1"\ 1"\ 1"\ 1"\ 1"\ 1"\ 1\1f\ 1\1f\ 1\1f\ 1\1f\ 1\1f\ 1\1f\ 1\13\ 1\16\ 1\16\ 1\13\ 1\ 4\ 1\ 4\ 1\ 4\ 1\16\ 1\16\ 1\13\ 1\ 4\ 1\ 4\ 1c\ 1\0\0\0\1c\0\0\0\ e\0\0\0C\0\0\0si\ 2\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0\\ e\0}\ 2\0}\ 3\0}\ 4\0}\ 5\0}\ 6\0}\a\0}\b\0}   \0}
++\0}\v\0}\f\0}\r\0}\ e\0}\ f\0t\ 2\0j\ 3\0\83\0\0}\10\0|\10\0j\ 4\0|\ 2\0j\ 5\0\83\0\0\83\ 1\0\ 1|\10\0j\ 6\0d\ 2\0|\ 2\0\83\ 2\0\ 1|\10\0j\ 6\0d\ 3\0|\ 3\0\83\ 2\0\ 1|\10\0j\ 6\0d\ 4\0|\ 4\0\83\ 2\0\ 1|\10\0j\a\0d\ 2\0|\ 5\0\83\ 2\0\ 1|\10\0j\a\0d\ 3\0|\ 6\0\83\ 2\0\ 1|\10\0j\a\0d\ 4\0|\a\0\83\ 2\0\ 1|\10\0j\a\0d\ 5\0|\b\0\83\ 2\0\ 1t\b\0|\f\0\83\ 1\0}\11\0x,\0t       \0|\11\0\83\ 1\0D]\1e\0}\12\0|\10\0j
++\0|\f\0|\12\0\19|\r\0|\12\0\19\83\ 2\0\ 1\0Wt\b\0|\ e\0\83\ 1\0}\13\0x,\0t       \0|\13\0\83\ 1\0D]\1e\0}\12\0|\10\0j\v\0|\ e\0|\12\0\19|\ f\0|\12\0\19\83\ 2\0\ 1q\1f\ 1W|\10\0j\f\0|\ 2\0j\r\0\83\0\0\83\ 1\0\ 1|\10\0j\ e\0|\ 2\0j\ f\0\83\0\0\83\ 1\0\ 1|\10\0j\10\0|\ 1\0d\ 6\0\83\ 2\0\ 1t\11\0j\ 3\0|\ 1\0\83\ 1\0}\14\0t\11\0j\ 3\0|\ 1\0\83\ 1\0}\15\0t\12\0|\ 1\0d\a\0\83\ 2\0}\16\0x"\0|\16\0D]\1a\0}\17\0|\15\0j\13\0|\17\0|\17\0d\b\0\17\83\ 2\0\ 1\ 1W|\15\0j\10\0|\ 1\0d\ 6\0\83\ 2\0\ 1~\15\0t\11\0j\ 3\0|\ 1\0\83\ 1\0}\18\0xw\0|\16\0D]o\0}\17\0xf\0|\14\0j\14\0|\17\0\83\ 1\0D]U\0}\19\0|\14\0j\15\0|\19\0|\17\0\83\ 2\0}\1a\0|\18\0j\15\0|\19\0|\17\0d\b\0\17\83\ 2\0}\e\0|\1a\0j\f\0|\17\0d\b\0\17\83\ 1\0\ 1|\0\0j\16\0|\1a\0j\17\0|\e\0\83\ 1\0\83\ 1\0\ 1q\b\ 2Wqò\ 1Wd\0\0S(     \0\0\0Ns\f\0\0\0Pyfile62.medi\0\0\0\0iÿÿÿÿiþÿÿÿi\ 1\0\0\0i\ 2\0\0\0t\ 2\0\0\0maRÔ\ 2\0\0(\18\0\0\0R\ 4\0\0\0\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0\0\0\0Ry\0\0\0Rn\0\0\0\0\0\0\0\0\0RB\0\0\0RC\0\0\0Ri\0\0\0R~\0\0\0R\v\0\0\0R'\0\0\0t\12\0\0\0GetMeshGroupsNamest\ f\0\0\0changeGroupNameR\9d\0\0\0RG\0\0\0R0\0\0\0R1\0\0\0(\1c\0\0\0R  \0\0\0R!\0\0\0R\85\0\0\0R\84\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\83\0\0\0\0\0\0\0\0\0\0\0\0R\8e\0\0\0R:\ 1\0\0t\r\0\0\0groupNamesIniRh\ 1\0\0\0\0\0\0\0\0t\ 4\0\0\0arr0R\ 2\ 3\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt)\0\0\0testNonRegressionMantis22212ChangeGrpName\17
++\0\0sP\0\0\0\0\ 1\ 6\ 16\ 1\f\ 1\13\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\f\ 1\13\ 1\18\ 1\ 4\ 1\f\ 1\13\ 1\18\ 1\ 4\ 1\13\ 1\13\ 1\10\ 2\ f\ 1\ f\ 1\ f\ 1\r\ 1\14\ 1\ 4\ 1\10\ 1\ 3\ 2\ f\ 1\r\ 1\16\ 1\12\ 1\16\ 1\11\ 1\16\ 1\ 4\ 1\ 4\ 1c\ 1\0\0\0\e\0\0\0      \0\0\0C\0\0\0
++\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0\83\0\0}\ 2\0|\ 2\0j\ 3\0\83\0\0}\ 3\0t\ 4\0j\ 5\0\83\0\0}\ 4\0|\ 4\0j\ 6\0|\ 3\0j\a\0\83\0\0\83\ 1\0\ 1|\ 4\0j\b\0d\ 2\0|\ 3\0\83\ 2\0\ 1|\ 4\0j       \0|\ 3\0j
++\0\83\0\0\83\ 1\0\ 1|\ 4\0j\v\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\f\0\83\0\0}\ 5\0|\ 5\0j\r\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\ e\0d\ 2\0t\ f\0|\ 4\0\83\ 3\0}\ 6\0|\0\0j\10\0|\ 6\0j\11\0\83\0\0j\12\0\83\0\0d\ 4\0d\ 5\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\0\0j\13\0|\ 6\0j\14\0|\ 2\0d\a\0d\ 2\0\83\ 3\0\83\ 1\0\ 1|\ 5\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1|\ 5\0j\15\0\83\0\0\\ 2\0}\ 6\0}\a\0|\0\0j\10\0|\ 6\0j\16\0\83\0\0|\ 5\0j\17\0\83\0\0j\16\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0|\a\0d'\0d(\0f\ 2\0d)\0d*\0f\ 2\0d+\0d,\0f\ 2\0d-\0d.\0f\ 2\0g\ 4\0\83\ 2\0\ 1t\18\0j\ 5\0|\ 1\0\83\ 1\0}\b\0|\0\0j\10\0|\b\0j
++\0\83\0\0d\f\0\83\ 2\0\ 1|\0\0j\10\0|\b\0j\19\0\83\0\0d\ 2\0d\r\0d\ e\0g\ 3\0\83\ 2\0\ 1|\0\0j\13\0t\1a\0|\b\0t\f\0\83\ 2\0\83\ 1\0\ 1|\ 5\0j\ e\0t\ f\0d\ 2\0|\ 4\0\83\ 3\0}\ 6\0|\0\0j\10\0|\ 6\0j\11\0\83\0\0j\12\0\83\0\0d\ 4\0d\ 5\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\0\0j\13\0|\ 6\0j\14\0|\ 2\0d\a\0d\ 2\0\83\ 3\0\83\ 1\0\ 1|\b\0j\e\0d\r\0d\ 3\0d\ f\0\83\ 3\0\ 1|\b\0j\17\0\83\0\0}   \0|      \0d\ 3\09}  \0|\b\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\1c\0j\ 5\0|\ 1\0d\f\0\83\ 2\0}
++\0|\0\0j\10\0|
++\0j\1d\0\83\0\0d/\0d0\0g\ 2\0\83\ 2\0\ 1|\0\0j\10\0t\1e\0|
++\0\83\ 1\0d\ 3\0\83\ 2\0\ 1|\0\0j\13\0t\1a\0|
++\0t\1f\0\83\ 2\0\83\ 1\0\ 1|
++\0d\ e\0\19j\ e\0t\ f\0d\ 2\0|\ 4\0\83\ 3\0}\ 6\0|\0\0j\13\0|\ 6\0j\14\0|\ 2\0d\a\0d\ 2\0\83\ 3\0\83\ 1\0\ 1|
++\0j\ e\0t\ f\0d\ 2\0d\r\0d\ 2\0|\ 4\0\83\ 5\0}\ 6\0|\0\0j\13\0|\ 6\0j\14\0|\ 2\0d\a\0d\ 2\0\83\ 3\0\83\ 1\0\ 1|
++\0\0\83\0\0}\v\0|\v\0j!\0\83\0\0\ 1|\v\0j!\0\83\0\0}\f\0|\f\0j\ e\0d\ 2\0t\ f\0|\ 4\0\83\ 3\0}\ 6\0|\0\0j\13\0|\ 6\0j\11\0\83\0\0j\14\0d\ 3\0|\ 2\0j\11\0\83\0\0\14\83\ 1\0\83\ 1\0\ 1|\ 2\0j\e\0d\ f\0d\r\0d\ 3\0\83\ 3\0\ 1|\ 2\0j\11\0\83\0\0\ 4\1ed\ 3\09\ 2(|\0\0j\13\0|\ 6\0j\14\0|\ 2\0d\a\0d\ 2\0\83\ 3\0\83\ 1\0\ 1|\ 2\0j\11\0\83\0\0\ 4\1ed\ 3\0:\ 2(t"\0d
++\0d\b\0\83\ 2\0}\r\0d\ 2\0|\r\0(|\r\0j#\0d\ 4\0d\ 5\0d\ 6\0g\ 3\0\83\ 1\0\ 1x3\0|
++\0D]+\0}\v\0|\v\0j\ e\0t\ f\0d\ 2\0|\ 4\0\83\ 3\0}\ 6\0|\r\0|\ 6\0j\11\0\83\0\07}\r\0\ 3W|\0\0j\13\0|\r\0j\14\0d\b\0|\ 2\0j\11\0\83\0\0\14\83\ 1\0\83\ 1\0\ 1t$\0t%\0\83\ 1\0}\ e\0|\ e\0j\e\0d\10\0d\11\0d\12\0\83\ 3\0\ 1|\ e\0j&\0|\ 2\0j\ 3\0\83\0\0\83\ 1\0\ 1t"\0d\13\0d\ 3\0\83\ 2\0}\ f\0|\ f\0j#\0d\14\0d\15\0g\ 2\0\83\ 1\0\ 1t'\0t(\0d\13\0\83\ 1\0\83\ 1\0|\ f\0d\0\0d\0\0\85\ 2\0d\ 2\0f\ 2\0<d\ 3\0|\ f\0d\0\0d\0\0\85\ 2\0d\ 2\0f\ 2\0\19\14|\ f\0d\0\0d\0\0\85\ 2\0d\r\0f\ 2\0<|\ e\0\0d\16\0\83\ 1\0\ 1|\ e\0j)\0|\ f\0\83\ 1\0\ 1t\f\0j\ 5\0\83\0\0}\10\0|\10\0j\r\0|\ e\0\83\ 1\0\ 1|\0\0j\10\0|\10\0j*\0\83\0\0d1\0\83\ 2\0\ 1|\0\0j\10\0|\10\0j\19\0\83\0\0d\11\0d\12\0d\10\0g\ 3\0\83\ 2\0\ 1|\10\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1t$\0t%\0\83\ 1\0}\11\0|\11\0j\e\0d\17\0d\18\0d\19\0\83\ 3\0\ 1|\11\0j&\0|\ 2\0j\ 3\0\83\0\0\83\ 1\0\ 1t"\0d\1a\0d\ 3\0\83\ 2\0}\12\0|\ f\0j#\0d\e\0d\1c\0g\ 2\0\83\ 1\0\ 1t'\0t(\0d\1a\0\83\ 1\0\83\ 1\0|\12\0d\0\0d\0\0\85\ 2\0d\ 2\0f\ 2\0<|\12\0d\0\0d\0\0\85\ 2\0d\ 2\0f\ 2\0c\ 2\0\19d\11\07\ 3<d\b\0|\12\0d\0\0d\0\0\85\ 2\0d\ 2\0f\ 2\0\19\14|\12\0d\0\0d\0\0\85\ 2\0d\r\0f\ 2\0<|\11\0j     \0d\1d\0\83\ 1\0\ 1|\12\0j    \0|\11\0j
++\0\83\0\0\83\ 1\0\ 1|\11\0j)\0|\12\0\83\ 1\0\ 1t\f\0j\ 5\0\83\0\0}\13\0t"\0d\r\0d\ 3\0d   \0d\v\0d
++\0d\1e\0d\11\0d\1f\0g\b\0\83\ 1\0}\14\0|\14\0j       \0\0\83\ 1\0\ 1|\13\0j+\0|\11\0|\ 4\0d\ 2\0|\14\0\83\ 4\0\ 1|\13\0j,\0t%\0d\ 2\0|\ 4\0\83\ 3\0\ 1|\13\0j,\0t%\0d\ 2\0|\ 4\0\83\ 3\0\\ 2\0}\ 6\0}\a\0|\a\0j        \0|\14\0j
++\0\83\0\0\83\ 1\0\ 1|\0\0j\13\0|\a\0j\14\0|\14\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 6\0j\14\0|\12\0\83\ 1\0\83\ 1\0\ 1|\13\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\f\0|\ 1\0d\1d\0\83\ 2\0}\15\0|\15\0j,\0t%\0d\ 2\0|\ 4\0\83\ 3\0\\ 2\0}\ 6\0}\a\0|\a\0j    \0|\14\0j
++\0\83\0\0\83\ 1\0\ 1|\0\0j\13\0|\a\0j\14\0|\14\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 6\0j\14\0|\12\0\83\ 1\0\83\ 1\0\ 1t-\0t%\0\83\ 1\0}\16\0|\16\0j  \0d!\0\83\ 1\0\ 1|\16\0j\e\0d"\0d#\0d$\0\83\ 3\0\ 1|\16\0j&\0|\ 2\0j\ 3\0\83\0\0\83\ 1\0\ 1|\16\0j)\0|\ 2\0j\ 3\0\83\0\0j\a\0\83\0\0\83\ 1\0\ 1t.\0j\ 5\0\83\0\0}\17\0|\17\0j\r\0|\16\0\83\ 1\0\ 1|\17\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1t/\0|\ 1\0\83\ 1\0}\18\0|\0\0j\10\0t\1e\0|\18\0\83\ 1\0d    \0\83\ 2\0\ 1g\0\0|\18\0D]\f\0}\v\0|\v\0^\ 2\0q#\b}\19\0|\0\0j\13\0t\1a\0|\19\0d\ 2\0\19t\1f\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0t\1a\0|\19\0d\r\0\19t\1f\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0t\1a\0|\19\0d\ 3\0\19t0\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0t\1a\0|\19\0d\b\0\19t\1f\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0|\18\0d\f\0\19d\ 2\0\19j\17\0\83\0\0j1\0|\ 2\0j\11\0\83\0\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\18\0d\f\0\19d2\0\19j\17\0\83\0\0j1\0d\ 3\0|\ 2\0j\11\0\83\0\0\14\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\18\0d\1d\0\19d\ 2\0\19j\17\0\83\0\0j1\0|\12\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\18\0d\16\0\19d\10\0\19j\17\0\83\0\0j1\0|\ f\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\18\0d!\0\19d"\0\19j\17\0\83\0\0j1\0|\ 2\0j\ 3\0\83\0\0j\a\0\83\0\0d\a\0\83\ 2\0\83\ 1\0\ 1t0\0|\ 1\0d!\0\83\ 2\0}\1a\0|\0\0j\13\0|\1a\0d"\0\19j\17\0\83\0\0j1\0|\ 2\0j\ 3\0\83\0\0j\a\0\83\0\0d\a\0\83\ 2\0\83\ 1\0\ 1|\0\0j2\0t3\0t\1f\0j\ 5\0|\ 1\0d!\0\83\ 4\0\ 1|\0\0j2\0t3\0t0\0j\ 5\0|\ 1\0d\16\0\83\ 4\0\ 1t.\0j\ 5\0|\ 1\0d!\0d#\0d$\0\83\ 4\0\ 1|\0\0j2\0t3\0t\f\0j\ 5\0|\ 1\0d!\0d#\0d$\0\83\ 6\0\ 1t\f\0j\ 5\0|\ 1\0d\16\0d\11\0d\12\0\83\ 4\0\ 1|\0\0j2\0t3\0t.\0j\ 5\0|\ 1\0d\16\0d\11\0d\12\0\83\ 6\0\ 1|\0\0j\10\0|\18\0j4\0\83\0\0d3\0\83\ 2\0\ 1|\0\0j\13\0|\18\0j5\0d4\0g\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\10\0|\18\0j4\0\83\0\0d5\0\83\ 2\0\ 1|\0\0j\13\0|\18\0j5\0d6\0g\ 1\0\83\ 1\0\f\83\ 1\0\ 1d\0\0S(7\0\0\0Ns\f\0\0\0Pyfile63.medi\0\0\0\0i\ 2\0\0\0s\ e\0\0\0power [MW/m^3]s\10\0\0\0density [g/cm^3]s\ f\0\0\0temperature [K]g\11ê-\81\99\97q=i\ 3\0\0\0i\ 4\0\0\0i\ 6\0\0\0i\ 5\0\0\0\ 1\0\0i\ 1\0\0\0g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@g\0\0\0\0\0\0"@i
++\0\0\0iÿÿÿÿi\f\0\0\0s\a\0\0\0aa [u1]s\v\0\0\0bbbvv [ppp]R\18\ 1\0\0g\0\0\0\0\0\03@i\14\0\0\0iõÿÿÿi\b\0\0\0s
++\0\0\0aapfl [u1]s\ e\0\0\0bbbvvpfl [ppp]t\15\0\0\0VectorFieldOnNodesPfli\a\0\0\0i\v\0\0\0t\ 4\0\0\0npflt\18\0\0\0VectorFieldOnNodesDoubleg\0\0\0\0\0\0=@i\1e\0\0\0iëÿÿÿR\19\ 1\0\0t
++\0\0\03DSurfMesh(\ 2\0\0\0i\ 3\0\0\0i\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 2\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 6\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\ 5\0\0\0(\ 2\0\0\0i\ 5\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0(\ 3\0\0\0i\0\0\0\0i\ 1\0\0\0g\0\0\0\0\0\0\0@(\ 3\0\0\0i\ 1\0\0\0i\ 2\0\0\0g\0\0\0\0\0\0\b@(\ 2\0\0\0s\a\0\0\0aa [u1]s\v\0\0\0bbbvv [ppp](\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 4\0\0\0s\f\0\0\03DSurfMesh_1s\f\0\0\03DSurfMesh_1s\f\0\0\03DSurfMesh_1s\f\0\0\03DSurfMesh_1(\ 2\0\0\0s\f\0\0\03DSurfMesh_1R\1c\ 3\0\0(\ 4\0\0\0R\1c\ 3\0\0R\1c\ 3\0\0R\1c\ 3\0\0R\1c\ 3\0\0(\ 2\0\0\0s\f\0\0\03DSurfMesh_1R\1c\ 3\0\0(6\0\0\0R\ 4\0\0\0R$\ 1\0\0t\11\0\0\0convertToIntFieldR¹\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0RB\0\0\0RC\0\0\0R\v\0\0\0t\12\0\0\0MEDFileIntField1TSR%\ 1\0\0R\97\ 1\0\0R\13\ 1\0\0R+\0\0\0R)\ 1\0\0t\13\0\0\0getInfoOnComponentsR0\0\0\0R1\0\0\0R(\ 1\0\0t\13\0\0\0getHiddenCppPointerR+\ 1\0\0t\16\0\0\0MEDFileAnyTypeField1TSRº\0\0\0Rt\0\0\0\0\0\0t\1a\0\0\0MEDFileAnyTypeFieldMultiTSR÷\0\0\0Ry\0\0\0t\16\0\0\0MEDFileIntFieldMultiTSt\b\0\0\0__iter__t\ 4\0\0\0nextRk\0\0\0\ 1\0\0t\13\0\0\0MEDCouplingFieldIntR\1c\ 1\0\0\0\0\0Rm\0\0\0Rn\0\0\0R{\ 1\0\0t\a\0\0\0getInfoR|\ 1\0\0R~\ 1\0\0Rw\ 1\0\0\0\0\0R[\ 1\0\0\0\0\0R\7f\ 1\0\0R)\0\0\0R*\0\0\0RU\ 1\0\0t\ f\0\0\0changeMeshNames(\e\0\0\0R    \0\0\0R9\ 1\0\0\0\0\0R\84\0\0\0R:\ 1\0\0R;\ 1\0\0\ 2\0\0\ 2\0\0RC\ 1\0\0R\80\0\0\0t\ 4\0\0\0ffs1Rv\ 2\0\0t\ 6\0\0\0ff2bist\ 2\0\0\0bct\ 3\0\0\0nf1t\ 4\0\0\0narrt\ 4\0\0\0nff1t\ 3\0\0\0nf2t\ 5\0\0\0narr2t\ 4\0\0\0nff2R\1a\ 3\0\0t\a\0\0\0nff2bist\ 3\0\0\0nf3t\ 4\0\0\0nff3Rl\ 1\0\0\ 1\0\0t\b\0\0\0nf3_read(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1c\0\0\0testInt32InMEDFileFieldStar1C
++\0\0\0\0\0\0\ 1\ 6\ 1\f\ 1\f\ 1\f\ 1\f\ 1\13\ 1\10\ 1\13\ 1\10\ 1   \ 1\r\ 1\15\ 1%\ 1\1c\ 1\10\ 1\12\ 1"\ 14\ 1\ f\ 1\16\ 1\1f\ 1\16\ 1\15\ 1%\ 1\1c\ 1\13\ 1\f\0
++\ 1\10\ 1\12\ 1\1c\ 1\16\ 1\16\ 1\19\ 1\1c\ 1\e\ 1\1c\ 1\f\0
++\0\f\ 1\15\ 1&\ 1\13\0\11\ 1\1c\0\11\ 1\ f\0\a\0\16\ 1\r\ 1\15\ 1\10\ 1\ 4\ 1 \ 1\f\ 1\13\ 1\13\ 1\ f\0\13\0"\0*\ 1\r\0\r\ 1\f\ 1\r\ 1\16\ 1\1f\ 1\10\ 2\f\ 1\13\ 1\13\ 1\ f\0\13\0"\0\1c\0*\ 1\r\0\13\0\r\ 1\f\ 1$\0\r\ 1\16\ 1\13\ 1\e\0\13\ 1\16\ 1\16\ 1\10\ 1\ f\ 1\e\0\13\ 1\16\ 1\16\ 2\f\ 1\r\ 1\13\ 1\13\ 1\19\ 1\f\ 1\r\ 1\10\ 1\f\ 1\16\ 1\19\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 2*\ 1.\ 1$\ 1$\ 13\ 2\ f\ 1/\ 1\19\ 1\19\ 1\16\ 1\1f\ 1\16\ 1\1f\ 2\16\ 1\19\ 1\16\ 1\1a\ 1c\ 1\0\0\0  \0\0\0\a\0\0\0C\0\0\0\ 3\0\0d\ 1\0}\ 1\0t\0\0t\ 1\0\83\ 1\0}\ 2\0|\ 2\0j\ 2\0d\ 2\0d\ 3\0d\ 4\0\83\ 3\0\ 1|\ 2\0j\ 3\0d\ 5\0\83\ 1\0\ 1t\ 4\0d\ 6\0\83\ 1\0}\ 3\0|\ 3\0j\ 5\0\83\0\0\ 1t\ 6\0\83\0\0}\ 4\0|\ 4\0j\a\0d\ 3\0|\ 3\0\83\ 2\0\ 1|\ 4\0j\b\0d\a\0\83\ 1\0\ 1\0\83\0\0}\ 5\0|\ 5\0j
++\0|\ 4\0\83\ 1\0\ 1|\ 5\0j\v\0|\ 1\0d\b\0\83\ 2\0\ 1|\ 2\0j
++\0|\ 4\0\83\ 1\0\ 1t\ 4\0d\ 6\0d\b\0\83\ 2\0}\ 6\0|\ 6\0j\f\0d        \0d
++\0g\ 2\0\83\ 1\0\ 1t\r\0t\ e\0d\ 6\0\83\ 1\0\83\ 1\0|\ 6\0d\0\0d\0\0\85\ 2\0d\ 3\0f\ 2\0<d\b\0|\ 6\0d\0\0d\0\0\85\ 2\0d\ 3\0f\ 2\0\19\14|\ 6\0d\0\0d\0\0\85\ 2\0d\v\0f\ 2\0<|\ 2\0j\ f\0|\ 6\0\83\ 1\0\ 1|\ 2\0j\b\0d\f\0\83\ 1\0\ 1t\10\0j\11\0\83\0\0}\a\0|\a\0j\12\0|\ 2\0\83\ 1\0\ 1|\0\0j\13\0|\a\0j\14\0\83\0\0d\ 5\0\83\ 2\0\ 1|\a\0j\v\0|\ 1\0d\ 3\0\83\ 2\0\ 1|\ 2\0j\ 2\0d\r\0d\v\0d\ 4\0\83\ 3\0\ 1t\10\0j\11\0\83\0\0}\a\0|\a\0j\12\0|\ 2\0\83\ 1\0\ 1|\a\0j\v\0|\ 1\0d\ 3\0\83\ 2\0\ 1|\ 2\0j\ 2\0d\ e\0d\b\0d\ 4\0\83\ 3\0\ 1t\10\0j\11\0\83\0\0}\a\0|\a\0j\12\0|\ 2\0\83\ 1\0\ 1|\a\0j\v\0|\ 1\0d\ 3\0\83\ 2\0\ 1|\0\0j\13\0t\15\0|\ 1\0\83\ 1\0j\16\0\83\0\0d\12\0d\13\0d\14\0g\ 3\0t\17\0f\ 2\0\83\ 2\0\ 1t\18\0|\ 1\0d\f\0\83\ 2\0}\b\0|\b\0j\b\0d\ f\0\83\ 1\0\ 1|\b\0j\v\0|\ 1\0d\ 3\0\83\ 2\0\ 1|\0\0j\13\0t\15\0|\ 1\0\83\ 1\0j\16\0\83\0\0d\15\0d\16\0d\17\0g\ 3\0t\17\0f\ 2\0\83\ 2\0\ 1|\ 2\0j\ 2\0d\10\0d\11\0d\ 4\0\83\ 3\0\ 1t\10\0j\11\0\83\0\0}\a\0|\a\0j\12\0|\ 2\0\83\ 1\0\ 1|\a\0j\v\0|\ 1\0d\ 3\0\83\ 2\0\ 1|\0\0j\13\0t\15\0|\ 1\0\83\ 1\0j\16\0\83\0\0d\18\0d\19\0d\1a\0g\ 3\0t\19\0f\ 2\0\83\ 2\0\ 1|\0\0j\13\0t\15\0|\ 1\0\83\ 1\0j\1a\0d\e\0g\ 1\0\83\ 1\0j\16\0\83\0\0d\1c\0g\ 1\0t\17\0f\ 2\0\83\ 2\0\ 1|\0\0j\13\0t\15\0|\ 1\0\83\ 1\0j\e\0d\1d\0g\ 1\0\83\ 1\0j\16\0\83\0\0d\1e\0d\1f\0g\ 2\0t\19\0f\ 2\0\83\ 2\0\ 1|\ 2\0j\b\0d\ f\0\83\ 1\0\ 1|\ 2\0j\ 2\0d\10\0d\11\0d\ 4\0\83\ 3\0\ 1t\10\0j\11\0\83\0\0}\a\0|\a\0j\12\0|\ 2\0\83\ 1\0\ 1|\a\0j\v\0|\ 1\0d\ 3\0\83\ 2\0\ 1|\0\0j\13\0t\15\0|\ 1\0\83\ 1\0j\16\0\83\0\0\0d!\0d"\0d#\0g\ 4\0t\17\0f\ 2\0\83\ 2\0\ 1|\0\0j\13\0t\15\0|\ 1\0\83\ 1\0d\v\0\19j\14\0\83\0\0d\ 5\0\83\ 2\0\ 1d\0\0S($\0\0\0Ns\f\0\0\0Pyfile64.medgü©ñÒMbP?i\0\0\0\0iÿÿÿÿR®\ 2\0\0i\f\0\0\0\ 2\0\0i\ 2\0\0\0s\a\0\0\0aa [u1]s\v\0\0\0bbbvv [ppp]i\ 1\0\0\0\ 1\0\0gj¼t\93\18\ 4ð?g5^ºI\f\ 2\0@RÀ\ 1\0\0g5^ºI\f\ 2\b@i\ 3\0\0\0(\ 2\0\0\0i\0\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 1\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 2\0\0\0iÿÿÿÿ(\ 2\0\0\0i\0\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 1\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 2\0\0\0iÿÿÿÿ(\ 2\0\0\0i\0\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 1\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 2\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 1\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 1\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 1\0\0\0iÿÿÿÿ(\ 2\0\0\0i\0\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 2\0\0\0iÿÿÿÿ(\ 2\0\0\0i\0\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 1\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 2\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 3\0\0\0iÿÿÿÿ(\1c\0\0\0Rw\ 1\0\0R\1c\ 1\0\0\0\0\0\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0\0\0\0RB\0\0\0\0\0\0\0\0\0R\v\0\0\0\ 1\0\0Rm\0\0\0Rn\0\0\0R{\ 1\0\0\0\0\0R(\0\0\0R%\ 1\0\0R+\0\0\0t       \0\0\0getDtUnitR[\ 1\0\0t\13\0\0\0getCommonIterationsRN\0\0\0\0\0\0R.\0\0\0t#\0\0\0partOfThisLyingOnSpecifiedTimeStepst&\0\0\0partOfThisNotLyingOnSpecifiedTimeSteps(    \0\0\0R    \0\0\0R9\ 1\0\0\0\0\0R\80\0\0\0R\83\0\0\0R\86\0\0\0\ 1\0\0R;\ 1\0\0t\ 4\0\0\0ff1s(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\12\0\0\0testMEDFileFields1µ
++\0\0sf\0\0\0\0\ 1\ 6\ 1\f\ 1\13\0\r\ 1\f\0
++\0     \0\10\0\r\ 1   \0\r\0\10\ 1\r\ 1\ f\0\13\0"\0*\ 1\r\ 1\r\ 1\f\ 1\r\ 1\16\ 1\10\ 1\13\0\f\0\r\0\10\ 1\13\0\f\0\r\0\10\ 2+\ 1\ f\ 1\r\ 1\10\ 1+\ 1\13\0\f\0\r\0\10\ 1+\ 11\ 14\ 1\r\0\13\0\f\0\r\0\10\ 1.\ 1 \ 1c\ 1\0\0\0\1a\0\0\0
++\0\0\0C\0\0\0sN\a\0\0d\ 1\0}\ 1\0t\0\0\83\0\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0j\ 1\0\83\0\0\ 1t\ 3\0d\ 2\0d\ 3\0\83\ 2\0}\ 2\0|\ 2\0j\ 4\0\83\0\0\ 1|\ 2\0j\ 5\0t\ 6\0d\ 4\0d\ 5\0d\ 3\0g\ 3\0\83\ 2\0\ 1|\ 2\0j\a\0t\b\0d(\0d)\0d*\0g\ 3\0\83\ 1\0\83\ 1\0\ 1g\0\0t        \0d\b\0\83\ 1\0D]\12\0}\ 3\0|\ 2\0j
++\0\83\0\0^\ 2\0q{\0}\ 4\0x-\0t\v\0|\ 4\0\83\ 1\0D]\1f\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j\f\0|\ 3\0d\ 4\0g\ 2\0\83\ 1\0\ 1\0Wt\ 3\0j\r\0|\ 4\0\83\ 1\0}\ 4\0t\ 3\0d      \0d\ 3\0\83\ 2\0}\ 6\0|\ 6\0j\ 4\0\83\0\0\ 1|\ 6\0j\ 5\0t\ e\0d\ 4\0d\ 5\0d\ 3\0d
++\0g\ 4\0\83\ 2\0\ 1|\ 6\0j\a\0t\b\0d+\0d,\0d-\0d.\0g\ 4\0\83\ 1\0\83\ 1\0\ 1g\0\0t   \0d\v\0\83\ 1\0D]\12\0}\ 3\0|\ 6\0j
++\0\83\0\0^\ 2\0q3\ 1}\a\0x1\0t\v\0|\a\0\83\ 1\0D]#\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j\f\0d\v\0|\ 3\0\17d\ 4\0g\ 2\0\83\ 1\0\ 1qX\ 1Wt\ 3\0j\r\0|\a\0\83\ 1\0}\a\0t\ 3\0j\r\0|\ 4\0|\a\0\83\ 2\0}\b\0|\b\0j\ f\0d\f\0\83\ 1\0\ 1|\b\0j\10\0\83\0\0j\11\0d\r\0d\ e\0g\ 2\0\83\ 1\0\ 1t\ 2\0\83\0\0}       \0t\ 2\0\83\0\0}
++\0\ 1\0d\ f\0\83\ 1\0D]\98\ 1}\ 3\0d\10\0d\11\0g\ 2\0}\v\0d\12\0}\f\0t\b\0d\13\0\83\ 1\0}\r\0|\r\0j\12\0|\ 3\0d\ f\0\14\83\ 1\0\ 1|\r\0j\13\0d\ 3\0\83\ 1\0\ 1|\r\0j\11\0|\v\0\83\ 1\0\ 1t\14\0t\15\0\83\ 1\0}\ e\0|\ e\0j\ f\0|\f\0\83\ 1\0\ 1|\ e\0j\16\0|\r\0\83\ 1\0\ 1|\ e\0j\17\0|\b\0\83\ 1\0\ 1|\ e\0j\18\0t\19\0|\ 3\0d\ 5\0\17\83\ 1\0d\14\0\17|\ 3\0d\ 5\0\17|\ 3\0\vd\ 5\0\18\83\ 3\0\ 1|   \0j\1a\0|\ e\0\83\ 1\0\ 1t\0\0\83\0\0}\ f\0|\ f\0j\e\0|\ e\0\83\ 1\0\ 1|
++\0j\1c\0|\ f\0\83\ 1\0\ 1|\0\0j\1d\0|
++\0j\1e\0\83\0\0|\f\0\83\ 2\0\ 1|\0\0j\1d\0\0j\1f\0\83\0\0d/\0\83\ 2\0\ 1|\0\0j\1d\0|
++\0j\1f\0\83\0\0d0\0\83\ 2\0\ 1|\ 3\0d\ 5\0k\ 4\0\ 1|\r\0j\11\0d\10\0d\15\0g\ 2\0\83\ 1\0\ 1|\0\0\0t!\0|       \0j\1a\0|\ e\0\83\ 3\0\ 1|\0\0\0t!\0|\ f\0j"\0d\10\0g\ 1\0\83\ 3\0\ 1|\ f\0j"\0d\10\0d\15\0g\ 2\0\83\ 1\0\ 1|\0\0\0t!\0|
++\0j\1c\0|\ f\0\83\ 3\0\ 1\ 1\ 1W|   \0j
++\0\83\0\0}\10\0|      \0j
++\0\83\0\0}\11\0|      \0j
++\0\83\0\0}\12\0|      \0j#\0\83\0\0}\13\0|\0\0j$\0t%\0|    \0\83\ 1\0d\ f\0k\ 2\0\ 4t%\0|
++\0\83\ 1\0d\ f\0k\ 2\0\ 4t%\0|\10\0\83\ 1\0d\ f\0k\ 2\0\ 4t%\0|\11\0\83\ 1\0d\ f\0k\ 2\0\ 4t%\0|\12\0\83\ 1\0d\ f\0k\ 2\0\ 4t%\0|\13\0\83\ 1\0d\ f\0k\ 2\0\83\ 1\0\ 1|\10\0d\0\0d\0\0d\ 3\0\85\ 3\0=|\0\0j$\0t%\0|\10\0\83\ 1\0d\v\0k\ 2\0oj\ 4|\10\0j&\0\83\0\0d1\0d2\0d3\0d4\0d5\0g\ 5\0k\ 2\0\83\ 1\0\ 1|\11\0d\1d\0d6\0d\1e\0g\ 3\0=|\0\0j$\0t%\0|\11\0\83\ 1\0d\1f\0k\ 2\0\ 4|\11\0j&\0\83\0\0d7\0d8\0d9\0d:\0d;\0d<\0d=\0g\a\0k\ 2\0\83\ 1\0\ 1|\12\0d\1d\0d>\0d\1a\0g\ 3\0\19}\14\0|\0\0j$\0t'\0|\14\0t\ 2\0\83\ 2\0\83\ 1\0\ 1|\0\0j$\0t%\0|\14\0\83\ 1\0d
++\0k\ 2\0o\17\ 5|\14\0j&\0\83\0\0d?\0d@\0dA\0g\ 3\0k\ 2\0\83\ 1\0\ 1|\12\0d\0\0d\0\0\0\85\ 3\0\19}\15\0|\0\0j$\0t'\0|\15\0t\ 2\0\83\ 2\0\83\ 1\0\ 1|\0\0j$\0t%\0|\15\0\83\ 1\0d\b\0k\ 2\0ow\ 5|\15\0j&\0\83\0\0dB\0dC\0dD\0dE\0g\ 4\0k\ 2\0\83\ 1\0\ 1t(\0\83\0\0}\16\0|\16\0j)\0|   \0\83\ 1\0\ 1|\10\0j\ f\0d%\0\83\ 1\0\ 1|\16\0j)\0|\10\0\83\ 1\0\ 1|\11\0j\ f\0d&\0\83\ 1\0\ 1|\16\0j)\0|\11\0\83\ 1\0\ 1|\12\0j\ f\0d'\0\83\ 1\0\ 1|\16\0j)\0|\12\0\83\ 1\0\ 1|\0\0j$\0t%\0|\16\0\83\ 1\0d\b\0k\ 2\0o\ 6\ 6|\16\0j*\0\83\0\0dF\0k\ 2\0\83\ 1\0\ 1|\16\0j+\0|\ 1\0d\ 3\0\83\ 2\0\ 1t(\0|\ 1\0\83\ 1\0}\16\0|\0\0j\1d\0|\16\0j,\0\83\0\0dG\0dH\0dI\0g\ 3\0t-\0f\ 2\0\83\ 2\0\ 1|\16\0j.\0|\16\0j,\0\83\0\0d\ 4\0\19\83\ 1\0}\17\0|\0\0j$\0|\17\0j*\0\83\0\0dJ\0k\ 2\0o\9a\ 6|\17\0j,\0\83\0\0dK\0dL\0dM\0g\ 3\0t/\0f\ 2\0k\ 2\0\83\ 1\0\ 1|\17\0d%\0d
++\0g\ 2\0=|\0\0j$\0|\17\0j*\0\83\0\0dN\0k\ 2\0\ 6|\17\0j,\0\83\0\0dO\0dP\0dQ\0g\ 3\0t/\0f\ 2\0k\ 2\0\83\ 1\0\ 1|\16\0d\ 4\0d'\0g\ 2\0\19}\18\0|\0\0j$\0t'\0|\18\0t(\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1d\0|\18\0j*\0\83\0\0dR\0\83\ 2\0\ 1t0\0\83\0\0}\19\0|\19\0j1\0d\ 4\0|\b\0\83\ 2\0\ 1|\19\0j+\0|\ 1\0d\ 4\0\83\ 2\0\ 1d\0\0S(S\0\0\0Ns\f\0\0\0Pyfile65.medt\ 3\0\0\0trii\ 2\0\0\0i\0\0\0\0i\ 1\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0t\ 4\0\0\0quadi\ 3\0\0\0i\ 5\0\0\0\ 2\0\0s\ 6\0\0\0XX [m]s\b\0\0\0YYY [km]i
++\0\0\0s\a\0\0\0aa [bb]s      \0\0\0ccc [ddd]t\b\0\0\01stFieldi\12\0\0\0g\9a\99\99\99\99\99¹?s\b\0\0\0eee [dd]iþÿÿÿiüÿÿÿi\ 6\0\0\0iúÿÿÿi\b\0\0\0iøÿÿÿiöÿÿÿg\9a\99\99\99\99\99ñ?i       \0\0\0i\a\0\0\0iýÿÿÿiûÿÿÿiùÿÿÿi÷ÿÿÿiÿÿÿÿt\b\0\0\02ndFieldt\b\0\0\03rdFieldt\b\0\0\04thField(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 2\0\0\0s\a\0\0\0aa [bb]s     \0\0\0ccc [ddd](\ 2\0\0\0s\a\0\0\0aa [bb]s  \0\0\0ccc [ddd](\ 2\0\0\0i\ 2\0\0\0iþÿÿÿ(\ 2\0\0\0i\ 4\0\0\0iüÿÿÿ(\ 2\0\0\0i\ 6\0\0\0iúÿÿÿ(\ 2\0\0\0i\b\0\0\0iøÿÿÿ(\ 2\0\0\0i
++\0\0\0iöÿÿÿ(\ 2\0\0\0i\ 6\0\0\0iúÿÿÿ(\ 2\0\0\0i\ 2\0\0\0iþÿÿÿ(\ 2\0\0\0i\ 3\0\0\0iýÿÿÿ(\ 2\0\0\0i\ 4\0\0\0iüÿÿÿ(\ 2\0\0\0i\ 5\0\0\0iûÿÿÿ(\ 2\0\0\0i\a\0\0\0iùÿÿÿ(\ 2\0\0\0i\b\0\0\0iøÿÿÿ(\ 2\0\0\0i       \0\0\0i÷ÿÿÿ(\ 2\0\0\0i\ 6\0\0\0iúÿÿÿ(\ 2\0\0\0i\ 1\0\0\0iÿÿÿÿ(\ 2\0\0\0i\ 6\0\0\0iúÿÿÿ(\ 2\0\0\0i     \0\0\0i÷ÿÿÿ(\ 2\0\0\0i
++\0\0\0iöÿÿÿ(\ 2\0\0\0i\a\0\0\0iùÿÿÿ(\ 2\0\0\0i\ 4\0\0\0iüÿÿÿ(\ 2\0\0\0i\ 1\0\0\0iÿÿÿÿ(\ 4\0\0\0R?\ 3\0\0R@\ 3\0\0RA\ 3\0\0RB\ 3\0\0(\ 2\0\0\0i\ 2\0\0\0iþÿÿÿ(\ 2\0\0\0i\ 4\0\0\0iüÿÿÿ(\ 2\0\0\0i\b\0\0\0iøÿÿÿ(\ 4\0\0\0R?\ 3\0\0R@\ 3\0\0RA\ 3\0\0RB\ 3\0\0(\ 2\0\0\0i\ 2\0\0\0iþÿÿÿ(\ 2\0\0\0i\ 4\0\0\0iüÿÿÿ(\ 2\0\0\0i\b\0\0\0iøÿÿÿ(\ 2\0\0\0R?\ 3\0\0RA\ 3\0\0(\ 2\0\0\0i\ 2\0\0\0iþÿÿÿ(\ 2\0\0\0i\ 4\0\0\0iüÿÿÿ(\ 2\0\0\0i\b\0\0\0iøÿÿÿ(\ 2\0\0\0R?\ 3\0\0RB\ 3\0\0(2\0\0\0\0\0\0t\a\0\0\0__str__Rô\0\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0Rc\0\0\0RY\0\0\0Rn\0\0\0Rq\0\0\0\0\0\0\ 1\0\0R[\ 2\0\0R`\0\0\0RB\0\0\0\0\0\0\ 1\0\0Ry\ 1\0\0Rz\ 1\0\0Rw\ 1\0\0R\13\ 1\0\0R{\ 1\0\0\0\0\0\0\0\0t\ 5\0\0\0floatRY\ 1\0\0R%\ 1\0\0t\10\0\0\0pushBackTimeStepR+\0\0\0RC\0\0\0R'\ 3\0\0R)\0\0\0R*\0\0\0t\a\0\0\0setInfot
++\0\0\0shallowCpyR0\0\0\0Ry\0\0\0R\e\ 1\0\0Rt\0\0\0R[\ 1\0\0R\\ 1\0\0Rb\ 1\0\0R\v\0\0\0R8\ 3\0\0R.\0\0\0R9\ 3\0\0RN\0\0\0R>\0\0\0Rj\0\0\0(\1a\0\0\0R     \0\0\0R9\ 1\0\0R=\ 3\0\0\0\0\0t\ 4\0\0\0trisRü\0\0\0R>\ 3\0\0t\ 5\0\0\0quadsR\83\0\0\0t\a\0\0\0fmts0_0t\a\0\0\0fmts0_1t\ 6\0\0\0infos1t\ 5\0\0\0name1Re\ 1\0\0R\b\0\0\0\0\0\0t\a\0\0\0fmts0_2t\a\0\0\0fmts0_3t\a\0\0\0fmts0_4t\a\0\0\0fmts0_5t\a\0\0\0fmts0_6t\a\0\0\0fmts0_7t\ 3\0\0\0fs0t\ 3\0\0\0fs1t\ 3\0\0\0fs2R\86\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\12\0\0\0testMEDFileFields2Õ
++\0\0\0\0\0\0\ 1\ 6\ 2\r\ 1\r\ 2\ f\ 1
++\0\19\ 1\1c\ 1%\ 1\19\0\17\ 1\ f\ 1\ f\ 1
++\0\1c\ 1\1f\ 1%\ 1\19\0\e\ 1\ f\ 1\12\ 1\r\0\19\ 2   \ 1       \ 2\13\ 1\f\0\ 6\ 1\f\0\11\0\r\0\r\ 1\f\0\r\0\r\0\r\ 1*\ 1\r\ 1     \0\r\0\r\ 1\16\ 1\16\ 1\16\ 1\f\ 2\13\ 1\16\ 1\19\ 1\13\ 1\16\ 1\ 3\ 2\ 4\ 1\f\ 1\f\ 1\f\ 1\f\ 1s\ 1\10\ 1:\ 1\10\ 1@\ 1\13\ 1\16\ 14\ 1\13\ 1\16\ 17\ 2       \ 1\r\ 1\r\0\r\ 1\r\0\r\ 1\r\0\r\ 1+\ 1\10\ 1\f\ 1%\ 1\19\ 1:\ 1\r\ 1:\ 1\10\ 1\16\ 1\16\ 2   \0\10\0\10\ 1c\ 1\0\0\0\18\0\0\0  \0\0\0C\0\0\0\ 5\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 3\0\83\ 2\0}\ 2\0|\ 2\0j\ 1\0\83\0\0\ 1|\ 2\0j\ 2\0t\ 3\0d\ 4\0d\ 5\0d\ 3\0g\ 3\0\83\ 2\0\ 1|\ 2\0j\ 4\0t\ 5\0d!\0d"\0d#\0g\ 3\0\83\ 1\0\83\ 1\0\ 1g\0\0t\ 6\0d\b\0\83\ 1\0D]\12\0}\ 3\0|\ 2\0j\a\0\83\0\0^\ 2\0qa\0}\ 4\0x-\0t\b\0|\ 4\0\83\ 1\0D]\1f\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j      \0|\ 3\0d\ 4\0g\ 2\0\83\ 1\0\ 1q\86\0Wt\0\0j
++\0|\ 4\0\83\ 1\0}\ 4\0t\0\0d        \0d\ 3\0\83\ 2\0}\ 6\0|\ 6\0j\ 1\0\83\0\0\ 1|\ 6\0j\ 2\0t\v\0d\ 4\0d\ 5\0d\ 3\0d
++\0g\ 4\0\83\ 2\0\ 1|\ 6\0j\ 4\0t\ 5\0d$\0d%\0d&\0d'\0g\ 4\0\83\ 1\0\83\ 1\0\ 1g\0\0t\ 6\0d\v\0\83\ 1\0D]\12\0}\ 3\0|\ 6\0j\a\0\83\0\0^\ 2\0q\19\ 1}\a\0x1\0t\b\0|\a\0\83\ 1\0D]#\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j     \0d\v\0|\ 3\0\17d\ 4\0g\ 2\0\83\ 1\0\ 1q>\ 1Wt\0\0j
++\0|\a\0\83\ 1\0}\a\0t\0\0j
++\0|\ 4\0|\a\0\83\ 2\0}\b\0|\b\0j\f\0d\f\0\83\ 1\0\ 1|\b\0j\r\0\83\0\0j\ e\0d\r\0d\ e\0g\ 2\0\83\ 1\0\ 1t\ f\0\83\0\0}    \0|      \0j\10\0d\ 4\0|\b\0\83\ 2\0\ 1\0j\11\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\12\0d\ 4\0d\ 5\0d\ 3\0d
++\0d\b\0d\v\0d\ f\0g\a\0\83\ 1\0}
++\0|
++\0j\f\0d\10\0\83\ 1\0\ 1t\12\0d\ 4\0d\ 5\0d\ 3\0d
++\0d\b\0d\v\0d\ f\0d\11\0g\b\0\83\ 1\0}\v\0|\v\0j\f\0d\12\0\83\ 1\0\ 1t\13\0\83\0\0}\f\0t\13\0\83\0\0}\r\0x(\ 1t\ 6\0d\13\0\83\ 1\0D]\1a\ 1}\ 3\0d\14\0d\15\0g\ 2\0}\ e\0d\16\0}\ f\0t\ 5\0d\17\0\83\ 1\0}\10\0|\10\0j\14\0|\ 3\0d\13\0\14\83\ 1\0\ 1|\10\0j\15\0d\ 3\0\83\ 1\0\ 1|\10\0j\ e\0|\ e\0\83\ 1\0\ 1t\16\0t\17\0\83\ 1\0}\11\0|\11\0j\f\0|\ f\0\83\ 1\0\ 1|\11\0j\18\0|\10\0\83\ 1\0\ 1|\11\0j\19\0|\b\0\83\ 1\0\ 1|\11\0j\1a\0t\e\0|\ 3\0d\ 5\0\17\83\ 1\0d\18\0\17|\ 3\0d\ 5\0\17|\ 3\0\vd\ 5\0\18\83\ 3\0\ 1|\f\0j\1c\0|\11\0|      \0d\ 4\0|
++\0\83\ 4\0\ 1t\1d\0\83\0\0}\12\0|\12\0j\1e\0|\11\0|      \0d\ 4\0|
++\0\83\ 4\0\ 1|\r\0j\1f\0|\12\0\83\ 1\0\ 1|\0\0\0|\f\0j!\0\83\0\0d(\0\83\ 2\0\ 1|\0\0\0|\r\0j!\0\83\0\0d)\0\83\ 2\0\ 1qS\ 2W|\0\0\0|\f\0j"\0\83\0\0d\13\0d*\0\14\83\ 2\0\ 1|\0\0\0|\r\0j"\0\83\0\0d+\0\83\ 2\0\ 1|\f\0j#\0\83\0\0\ 1|\0\0\0|\f\0j"\0\83\0\0d,\0\83\ 2\0\ 1|\0\0j$\0|\r\0j%\0d\19\0\83\ 1\0j&\0|\f\0j%\0d\19\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\f\0j\a\0\83\0\0}\13\0|\f\0j\a\0\83\0\0}\14\0|\f\0j\a\0\83\0\0}\15\0t'\0\83\0\0}\16\0|\16\0j(\0|\f\0\83\ 1\0\ 1|\13\0j\f\0d\1a\0\83\ 1\0\ 1|\16\0j(\0|\13\0\83\ 1\0\ 1|\14\0j\f\0d\e\0\83\ 1\0\ 1|\16\0j(\0|\14\0\83\ 1\0\ 1|\15\0j\f\0d\1c\0\83\ 1\0\ 1|\16\0j(\0|\15\0\83\ 1\0\ 1|\0\0\0|\16\0j"\0\83\0\0d-\0\83\ 2\0\ 1t\13\0\83\0\0}\17\0\0t\ 6\0d\1d\0\83\ 1\0D]Ø\0}\ 3\0d\14\0d\15\0g\ 2\0}\ e\0d\16\0}\ f\0t\ 5\0d\1e\0\83\ 1\0}\10\0|\10\0j\14\0|\ 3\0d\13\0\14\83\ 1\0\ 1|\10\0j\15\0d\ 3\0\83\ 1\0\ 1|\10\0j\ e\0|\ e\0\83\ 1\0\ 1t\16\0t\17\0\83\ 1\0}\11\0|\11\0j\f\0|\ f\0\83\ 1\0\ 1|\11\0j\18\0|\10\0\83\ 1\0\ 1|\11\0j\19\0|\b\0\83\ 1\0\ 1|\11\0j\1a\0t\e\0|\ 3\0d\ 5\0\17\83\ 1\0d\18\0\17|\ 3\0d\ 5\0\17|\ 3\0\vd\ 5\0\18\83\ 3\0\ 1t\1d\0\83\0\0}\12\0|\12\0j\1e\0|\11\0\0d\ 4\0|\v\0\83\ 4\0\ 1|\17\0j\1f\0|\12\0\83\ 1\0\ 1q\9d\ 4W|\17\0j\f\0d\1f\0\83\ 1\0\ 1|\16\0j(\0|\17\0\83\ 1\0\ 1|\0\0\0|\16\0j"\0\83\0\0d.\0\83\ 2\0\ 1|\16\0j)\0\83\0\0\ 1|\16\0j\11\0|\ 1\0d\ 4\0\83\ 2\0\ 1d\0\0S(/\0\0\0Ns\f\0\0\0Pyfile66.medR=\ 3\0\0i\ 2\0\0\0i\0\0\0\0i\ 1\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0R>\ 3\0\0i\ 3\0\0\0i\ 5\0\0\0\ 2\0\0s\ 6\0\0\0XX [m]s\b\0\0\0YYY [km]i\ 6\0\0\0R\83\ 1\0\0i\b\0\0\0RE\ 2\0\0i
++\0\0\0s\a\0\0\0aa [bb]s      \0\0\0ccc [ddd]R?\ 3\0\0i\ e\0\0\0g\9a\99\99\99\99\99¹?t\ e\0\0\0pfl_NORM_QUAD4R@\ 3\0\0RA\ 3\0\0RB\ 3\0\0i\a\0\0\0i\10\0\0\0t\b\0\0\05thFieldt\ f\0\0\0pfl2_NORM_QUAD4(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 2\0\0\0s\a\0\0\0aa [bb]s \0\0\0ccc [ddd](\ 2\0\0\0s\a\0\0\0aa [bb]s  \0\0\0ccc [ddd](\ 1\0\0\0RX\ 3\0\0(\ 1\0\0\0RX\ 3\0\0(\ 1\0\0\0RX\ 3\0\0(\ 1\0\0\0RX\ 3\0\0(\ 2\0\0\0RX\ 3\0\0RZ\ 3\0\0(*\0\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0Rc\0\0\0RY\0\0\0Rn\0\0\0Rq\0\0\0\0\0\0\ 1\0\0R[\ 2\0\0R`\0\0\0RB\0\0\0\0\0\0\ 1\0\0R>\0\0\0Rj\0\0\0R\v\0\0\0Rk\0\0\0\0\0\0Ry\ 1\0\0Rz\ 1\0\0Rw\ 1\0\0R\13\ 1\0\0R{\ 1\0\0\0\0\0\0\0\0RD\ 3\0\0R\89\ 1\0\0\0\0\0R|\ 1\0\0RE\ 3\0\0R+\0\0\0R'\ 3\0\0R]\ 2\0\0t\f\0\0\0zipPflsNamesR0\0\0\0R=\ 2\0\0R1\0\0\0R[\ 1\0\0R\\ 1\0\0t\13\0\0\0checkGlobsCoherency(\18\0\0\0\0\0\0R9\ 1\0\0R=\ 3\0\0\0\0\0RH\ 3\0\0\0\0\0R>\ 3\0\0RI\ 3\0\0R\83\0\0\0R\86\0\0\0R\83\ 1\0\0RE\ 2\0\0RJ\ 3\0\0RK\ 3\0\0RL\ 3\0\0RM\ 3\0\0Re\ 1\0\0R\b\0\0\0\0\0\0RN\ 3\0\0RO\ 3\0\0RP\ 3\0\0RT\ 3\0\0RQ\ 3\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\12\0\0\0testMEDFileFields3&\v\0\0\0\0\0\0\ 1\ 6\ 2\ f\ 1
++\0\19\ 1\1c\ 1%\ 1\19\0\17\ 1\ f\ 1\ f\ 1
++\0\1c\ 1\1f\ 1%\ 1\19\0\e\ 1\ f\ 1\12\ 1\r\0\19\ 2   \0\10\0\10\ 2!\0\r\ 1$\0\r\ 1   \ 1       \ 2\13\ 1\f\0\ 6\ 1\f\0\11\0\r\0\r\ 1\f\0\r\0\r\0\r\ 1*\ 1\16\ 1     \0\16\0\r\ 1\16\ 1\16\ 1\ 4\ 2\1a\ 1\16\ 1
++\ 1\16\ 1(\ 1\f\ 1\f\ 1\f\ 1   \ 1\r\ 1\r\0\r\ 1\r\0\r\ 1\r\0\r\ 1\16\ 2       \ 1\13\ 1\f\0\ 6\ 1\f\0\11\0\r\0\r\ 1\f\0\r\0\r\0\r\ 1*\ 1       \0\16\0\r\ 1\ 4\ 1\r\0\r\ 1\16\ 1
++\ 1\10\ 1c\ 1\0\0\0\17\0\0\0  \0\0\0C\0\0\0sI\ 6\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 3\0\83\ 2\0}\ 2\0|\ 2\0j\ 1\0\83\0\0\ 1|\ 2\0j\ 2\0t\ 3\0d\ 4\0d\ 5\0d\ 3\0g\ 3\0\83\ 2\0\ 1|\ 2\0j\ 4\0t\ 5\0\0d!\0d"\0g\ 3\0\83\ 1\0\83\ 1\0\ 1g\0\0t\ 6\0d\b\0\83\ 1\0D]\12\0}\ 3\0|\ 2\0j\a\0\83\0\0^\ 2\0qa\0}\ 4\0x-\0t\b\0|\ 4\0\83\ 1\0D]\1f\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j      \0|\ 3\0d\ 4\0g\ 2\0\83\ 1\0\ 1q\86\0Wt\0\0j
++\0|\ 4\0\83\ 1\0}\ 4\0t\0\0d        \0d\ 3\0\83\ 2\0}\ 6\0|\ 6\0j\ 1\0\83\0\0\ 1|\ 6\0j\ 2\0t\v\0d\ 4\0d\ 5\0d\ 3\0d
++\0g\ 4\0\83\ 2\0\ 1|\ 6\0j\ 4\0t\ 5\0d#\0d$\0d%\0d&\0g\ 4\0\83\ 1\0\83\ 1\0\ 1g\0\0t\ 6\0d\v\0\83\ 1\0D]\12\0}\ 3\0|\ 6\0j\a\0\83\0\0^\ 2\0q\19\ 1}\a\0x1\0t\b\0|\a\0\83\ 1\0D]#\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j     \0d\v\0|\ 3\0\17d\ 4\0g\ 2\0\83\ 1\0\ 1q>\ 1Wt\0\0j
++\0|\a\0\83\ 1\0}\a\0t\0\0j
++\0|\ 4\0|\a\0\83\ 2\0}\b\0|\b\0j\f\0d\f\0\83\ 1\0\ 1|\b\0j\r\0\83\0\0j\ e\0d\r\0d\ e\0g\ 2\0\83\ 1\0\ 1t\ f\0\83\0\0}    \0|      \0j\10\0d\ 4\0|\b\0\83\ 2\0\ 1\0j\11\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\12\0d\ 4\0d\ 5\0d\ 3\0d
++\0d\b\0d\v\0d\ f\0g\a\0\83\ 1\0}
++\0|
++\0j\f\0d\10\0\83\ 1\0\ 1t\12\0d\ 4\0d\ 5\0d\ 3\0d
++\0d\b\0d\v\0d\ f\0d\11\0g\b\0\83\ 1\0}\v\0|\v\0j\f\0d\12\0\83\ 1\0\ 1t\13\0\83\0\0}\f\0t\14\0\83\0\0}\r\0d\13\0d\14\0d\15\0g\ 3\0}\ e\0\0t\ 6\0d\16\0\83\ 1\0D]è\0}\ 3\0d\17\0}\ f\0t\ 5\0d\18\0\83\ 1\0}\10\0|\10\0j\15\0|\ 3\0d\16\0\14\83\ 1\0\ 1|\10\0j\16\0d
++\0\83\ 1\0\ 1|\10\0j\ e\0|\ e\0\83\ 1\0\ 1t\17\0t\18\0\83\ 1\0}\11\0|\11\0j\f\0|\ f\0\83\ 1\0\ 1|\11\0j\19\0|\10\0\83\ 1\0\ 1|\11\0j\1a\0|\b\0\83\ 1\0\ 1|\11\0j\e\0t\1c\0|\ 3\0d\ 5\0\17\83\ 1\0d\19\0\17|\ 3\0d\ 5\0\17|\ 3\0\vd\ 5\0\18\83\ 3\0\ 1t\1d\0\83\0\0}\12\0|\12\0j\1e\0|\11\0|    \0d\ 4\0|
++\0\83\ 4\0\ 1|\r\0j\1f\0|\12\0\83\ 1\0\ 1|\0\0\0|\r\0j!\0\83\0\0t"\0|\ e\0\83\ 1\0\83\ 2\0\ 1qb\ 2W|\f\0j#\0|\r\0\83\ 1\0\ 1|\0\0\0d\ 5\0t$\0|\f\0\83\ 1\0\83\ 2\0\ 1|\r\0j%\0\83\0\0}\13\0|\0\0\0d
++\0t$\0|\13\0\83\ 1\0\83\ 2\0\ 1x$\0|\13\0D]\1c\0}\ 5\0|\0\0\0d\16\0t$\0|\ 5\0\83\ 1\0\83\ 2\0\ 1q\9a\ 3Wx$\0|\13\0D]\1c\0}\ 5\0|\0\0j&\0t'\0|\ 5\0t\14\0\83\ 2\0\83\ 1\0\ 1\ 3Wx>\0|\13\0D]6\0}\ 5\0|\ 5\0j\f\0d\1a\0|\ 5\0j(\0\83\0\0t)\0j*\0|\ 5\0j!\0\83\0\0d\ 4\0\19\83\ 1\0f\ 2\0\16\83\ 1\0\ 1\ 3W|\f\0j+\0|\13\0\83\ 1\0\ 1|\0\0\0d\b\0t$\0|\f\0\83\ 1\0\83\ 2\0\ 1x$\0|\f\0D]\1c\0}\ 5\0|\0\0\0d\16\0t$\0|\ 5\0\83\ 1\0\83\ 2\0\ 1qL\ 4W|\0\0\0|\f\0j,\0\83\0\0d'\0\83\ 2\0\ 1|\0\0\0|\f\0j-\0\83\0\0d(\0\83\ 2\0\ 1|\f\0j\11\0|\ 1\0d\ 4\0\83\ 2\0\ 1~\f\0t\13\0|\ 1\0\83\ 1\0}\14\0|\0\0\0|\14\0j,\0\83\0\0d)\0\83\ 2\0\ 1|\0\0\0|\14\0j-\0\83\0\0d*\0\83\ 2\0\ 1|\0\0\0d\b\0t$\0|\14\0\83\ 1\0\83\ 2\0\ 1xI\ 1t\ 6\0d\16\0\83\ 1\0D];\ 1}\ 3\0\0t\b\0d\1c\0d\1d\0d\1e\0g\ 3\0\83\ 1\0D]¢\0\\ 2\0}\15\0}\16\0|\14\0|\16\0\19|\ 3\0\19}\12\0|\12\0j.\0t\18\0d\ 4\0|  \0\83\ 3\0}\11\0t\ 5\0d\18\0\83\ 1\0}\10\0|\10\0j\15\0|\ 3\0d\16\0\14\83\ 1\0\ 1|\10\0j\16\0d
++\0\83\ 1\0\ 1|\10\0d\0\0d\0\0\85\ 2\0|\15\0f\ 2\0\19}\10\0|\10\0j/\0d\ 4\0|\ e\0|\15\0\19\83\ 2\0\ 1|\0\0j&\0|\10\0j0\0|\11\0j1\0\83\0\0d\1f\0\83\ 2\0\83\ 1\0\ 1q"\ 5W|\14\0d\17\0\19|\ 3\0\19}\12\0|\12\0j.\0t\18\0d\ 4\0\0\83\ 3\0}\11\0t\ 5\0d\18\0\83\ 1\0}\10\0|\10\0j\15\0|\ 3\0d\16\0\14\83\ 1\0\ 1|\10\0j\16\0d
++\0\83\ 1\0\ 1|\10\0j\ e\0|\ e\0\83\ 1\0\ 1|\0\0j&\0|\10\0j0\0|\11\0j1\0\83\0\0d\1f\0\83\ 2\0\83\ 1\0\ 1q\ 6\ 5Wd\0\0S(+\0\0\0Ns\f\0\0\0Pyfile67.medR=\ 3\0\0i\ 2\0\0\0i\0\0\0\0i\ 1\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0R>\ 3\0\0i\ 3\0\0\0i\ 5\0\0\0\ 2\0\0s\ 6\0\0\0XX [m]s\b\0\0\0YYY [km]i\ 6\0\0\0R\83\ 1\0\0i\b\0\0\0RE\ 2\0\0s\a\0\0\0aa [bb]s      \0\0\0ccc [ddd]s\v\0\0\0ZZZZ [MW*s]i
++\0\0\0R?\ 3\0\0i\15\0\0\0g\9a\99\99\99\99\99¹?s\ 5\0\0\0%s_%sRX\ 3\0\0t\v\0\0\01stField_aat\f\0\0\01stField_ccct\r\0\0\01stField_ZZZZg\82vIhÂ%<=(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 1\0\0\0s\ e\0\0\0pfl_NORM_QUAD4(\ 1\0\0\0s\ e\0\0\0pfl_NORM_QUAD4(\ 1\0\0\0s\ e\0\0\0pfl_NORM_QUAD4(\ 1\0\0\0s\ e\0\0\0pfl_NORM_QUAD4(2\0\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0Rc\0\0\0RY\0\0\0Rn\0\0\0Rq\0\0\0\0\0\0\ 1\0\0R[\ 2\0\0R`\0\0\0RB\0\0\0\0\0\0\ 1\0\0R>\0\0\0Rj\0\0\0R\v\0\0\0Rk\0\0\0R[\ 1\0\0\0\0\0Ry\ 1\0\0Rz\ 1\0\0Rw\ 1\0\0R\13\ 1\0\0R{\ 1\0\0\0\0\0\0\0\0RD\ 3\0\0\0\0\0R|\ 1\0\0RE\ 3\0\0R+\0\0\0R'\ 3\0\0t\ 5\0\0\0tupleR\\ 1\0\0Ry\0\0\0t\ f\0\0\0splitComponentsR0\0\0\0Rt\0\0\0RC\0\0\0t     \0\0\0DataArrayt\12\0\0\0GetVarNameFromInfot
++\0\0\0pushFieldsR]\ 2\0\0R<\ 2\0\0R\97\ 1\0\0R\97\0\0\0R1\0\0\0R)\ 1\0\0(\17\0\0\0R     \0\0\0R9\ 1\0\0R=\ 3\0\0\0\0\0RH\ 3\0\0\0\0\0R>\ 3\0\0RI\ 3\0\0R\83\0\0\0R\86\0\0\0R\83\ 1\0\0RE\ 2\0\0Rl\ 1\0\0RK\ 3\0\0RL\ 3\0\0RM\ 3\0\0Re\ 1\0\0R\b\0\0\0\0\0\0\0\0\0RU\ 3\0\0t\ 1\0\0\0jt  \0\0\0fieldName(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\14\0\0\0testSplitComponents1g\v\0\0\0\0\0\0\ 1\ 6\ 2\ f\ 1
++\0\19\ 1\1c\ 1%\ 1\19\0\17\ 1\ f\ 1\ f\ 1
++\0\1c\ 1\1f\ 1%\ 1\19\0\e\ 1\ f\ 1\12\ 1\r\0\19\ 2   \0\10\0\10\ 2!\0\r\ 1$\0\r\ 1   \ 1       \ 2\ f\ 1\13\ 1\ 6\ 1\f\0\11\0\r\0\r\ 1\f\0\r\0\r\0\r\ 1*\ 1       \0\16\0\r\ 1\1c\ 1\ 4\ 1\r\ 1\16\ 1\f\ 1\16\ 1\r\0\1a\ 1\r\0\1a\ 1\r\ 10\ 1\ 4\ 1\r\ 1\16\ 1\r\0\1a\ 1\16\ 1\16\ 2\10\0\ 3\ 2\f\ 1\16\ 1\16\ 1\16\ 1\13\ 1"\ 1\ e\ 1\15\ 1\f\0\11\0\r\0\16\0\14\ 1\1f\ 1\ 4\ 1\ e\ 1\15\ 1\f\0\11\0\r\0\r\ 1\1f\ 1\ 4\ 1c\ 1\0\0\0\15\0\0\0\a\0\0\0C\0\0\0sÄ        \0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 3\0\83\ 2\0}\ 2\0|\ 2\0j\ 1\0\83\0\0\ 1|\ 2\0j\ 2\0t\ 3\0d\ 4\0d\ 5\0d\ 3\0g\ 3\0\83\ 2\0\ 1|\ 2\0j\ 4\0t\ 5\0d%\0d&\0d'\0g\ 3\0\83\ 1\0\83\ 1\0\ 1g\0\0t\ 6\0d\b\0\83\ 1\0D]\12\0}\ 3\0|\ 2\0j\a\0\83\0\0^\ 2\0qa\0}\ 4\0x-\0t\b\0|\ 4\0\83\ 1\0D]\1f\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j        \0|\ 3\0d\ 4\0g\ 2\0\83\ 1\0\ 1q\86\0Wt\0\0j
++\0|\ 4\0\83\ 1\0}\ 4\0t\0\0d        \0d\ 3\0\83\ 2\0}\ 6\0|\ 6\0j\ 1\0\83\0\0\ 1|\ 6\0j\ 2\0t\v\0d\ 4\0d\ 5\0d\ 3\0d
++\0g\ 4\0\83\ 2\0\ 1|\ 6\0j\ 4\0t\ 5\0d(\0d)\0d*\0d+\0g\ 4\0\83\ 1\0\83\ 1\0\ 1g\0\0t\ 6\0d\v\0\83\ 1\0D]\12\0}\ 3\0|\ 6\0j\a\0\83\0\0^\ 2\0q\19\ 1}\a\0x1\0t\b\0|\a\0\83\ 1\0D]#\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j     \0d\v\0|\ 3\0\17d\ 4\0g\ 2\0\83\ 1\0\ 1q>\ 1Wt\0\0j
++\0|\a\0\83\ 1\0}\a\0t\0\0j
++\0|\ 4\0|\a\0\83\ 2\0}\b\0|\b\0j\f\0d\f\0\83\ 1\0\ 1|\b\0j\r\0\83\0\0j\ e\0d\r\0d\ e\0g\ 2\0\83\ 1\0\ 1t\ f\0\83\0\0}    \0|      \0j\10\0d\ 4\0|\b\0\83\ 2\0\ 1t\11\0\83\0\0}
++\0t\12\0t\13\0t\14\0\83\ 2\0}\v\0|\v\0j\15\0|\b\0\83\ 1\0\ 1t\ 5\0|\b\0j\16\0\83\0\0d\ 3\0\14\83\ 1\0}\f\0|\f\0j\17\0\83\0\0\ 1|\f\0j\18\0d\ 3\0\83\ 1\0\ 1|\f\0j\ e\0d\ f\0d\10\0g\ 2\0\83\ 1\0\ 1|\v\0j\19\0|\f\0\83\ 1\0\ 1|\v\0j\f\0d\11\0\83\ 1\0\ 1|\v\0j\1a\0\83\0\0\ 1|
++\0j\e\0|\v\0\83\ 1\0\ 1d
++\0d\ 4\0d,\0d\12\0d\12\0f\ 4\0g\ 1\0f\ 2\0d\b\0d\ 4\0d-\0d\12\0d\12\0f\ 4\0g\ 1\0f\ 2\0g\ 2\0}\r\0|\0\0j\1c\0|
++\0j\1d\0\83\0\0|\r\0\83\ 2\0\ 1|
++\0j\1e\0\83\0\0}\ e\0|\0\0j\1c\0|\ e\0j\1d\0\83\0\0|\r\0\83\ 2\0\ 1|\0\0j\1f\0|\f\0\0\83\0\0j!\0|\ e\0j"\0\83\0\0\83\ 1\0\83\ 1\0\ 1|\ e\0j#\0\83\0\0}\ f\0|\0\0j\1f\0|\ f\0j"\0\83\0\0j!\0|
++\0j"\0\83\0\0d\14\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|\ f\0j\1d\0\83\0\0|\r\0\83\ 2\0\ 1~\f\0~\v\0~
++\0~\ f\0~\ e\0~\r\0t\11\0\83\0\0}
++\0t\12\0t\13\0t\14\0\83\ 2\0}\v\0|\v\0j\15\0|\b\0d\15\0 \83\ 1\0\ 1t\ 5\0d.\0\83\ 1\0}\f\0|\f\0j\17\0\83\0\0\ 1|\f\0j\18\0d\ 3\0\83\ 1\0\ 1|\f\0j\ e\0d\16\0d\17\0g\ 2\0\83\ 1\0\ 1|\v\0j\19\0|\f\0\83\ 1\0\ 1|\v\0j\f\0d\18\0\83\ 1\0\ 1|\v\0j\1a\0\83\0\0\ 1t$\0j%\0d\ 4\0d\15\0d\ 5\0\83\ 3\0}\10\0|\10\0j\f\0d\19\0\83\ 1\0\ 1|
++\0j&\0|\v\0|      \0d\ 4\0|\10\0\83\ 4\0\ 1d
++\0d\ 4\0d/\0d\12\0d\12\0f\ 4\0g\ 1\0f\ 2\0d\b\0d\ 4\0d0\0d\1a\0d\12\0f\ 4\0g\ 1\0f\ 2\0g\ 2\0}\r\0|\0\0j\1c\0|
++\0j\1d\0\83\0\0|\r\0\83\ 2\0\ 1|
++\0j\1e\0\83\0\0}\ e\0|\0\0j\1f\0t'\0|\ e\0t(\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|\ e\0j\1d\0\83\0\0|\r\0\83\ 2\0\ 1|\0\0j\1f\0|\f\0\0\83\0\0j!\0|\ e\0j"\0\83\0\0\83\ 1\0\83\ 1\0\ 1|\ e\0j#\0\83\0\0}\ f\0|\0\0j\1f\0t'\0|\ f\0t\11\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1f\0|\ f\0j"\0\83\0\0j!\0|
++\0j"\0\83\0\0d\14\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|\ f\0j\1d\0\83\0\0|\r\0\83\ 2\0\ 1t)\0\83\0\0}
++\0t\12\0t\13\0t\14\0\83\ 2\0}\v\0|\v\0j\15\0|\b\0d\15\0 \83\ 1\0\ 1t\ 5\0d1\0\83\ 1\0}\f\0|\f\0j\17\0\83\0\0\ 1|\f\0j\18\0d\ 3\0\83\ 1\0\ 1|\f\0j\ e\0d\ f\0d\10\0g\ 2\0\83\ 1\0\ 1|\v\0j\19\0|\f\0\83\ 1\0\ 1|\v\0j\f\0d\e\0\83\ 1\0\ 1|\v\0j*\0d\1c\0d\ 4\0d\1d\0\83\ 3\0\ 1|\v\0j\1a\0\83\0\0\ 1|
++\0j+\0|\v\0|      \0d\ 4\0|\10\0\83\ 4\0\ 1t\12\0t\13\0t\14\0\83\ 2\0}\v\0|\v\0j\15\0|\b\0d\15\0 \83\ 1\0\ 1t\ 5\0d2\0\83\ 1\0}\f\0|\f\0j\17\0d\1e\0\83\ 1\0\ 1|\f\0j\18\0d\ 3\0\83\ 1\0\ 1|\f\0j\ e\0d\ f\0d\10\0g\ 2\0\83\ 1\0\ 1|\v\0j\19\0|\f\0\83\ 1\0\ 1|\v\0j\f\0d\e\0\83\ 1\0\ 1|\v\0j*\0d\1f\0d\ 5\0\0\83\ 3\0\ 1|\v\0j\1a\0\83\0\0\ 1|
++\0j+\0|\v\0|      \0d\ 4\0|\10\0\83\ 4\0\ 1t\12\0t\13\0t\14\0\83\ 2\0}\v\0|\v\0j\15\0|\b\0d\15\0 \83\ 1\0\ 1t\ 5\0d3\0\83\ 1\0}\f\0|\f\0j\17\0d!\0\83\ 1\0\ 1|\f\0j\18\0d\ 3\0\83\ 1\0\ 1|\f\0j\ e\0d\ f\0d\10\0g\ 2\0\83\ 1\0\ 1|\v\0j\19\0|\f\0\83\ 1\0\ 1|\v\0j\f\0d\e\0\83\ 1\0\ 1|\v\0j*\0d"\0d\ 3\0d#\0\83\ 3\0\ 1|\v\0j\1a\0\83\0\0\ 1|
++\0j+\0|\v\0|      \0d\ 4\0|\10\0\83\ 4\0\ 1|
++\0j\1e\0\83\0\0}\ f\0|\0\0j\1f\0t'\0|\ f\0t,\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|\ f\0j-\0\83\0\0d4\0d5\0d6\0g\ 3\0\83\ 2\0\ 1x\83\0t.\0d\ 4\0d\1e\0d!\0g\ 3\0|\ f\0j-\0\83\0\0\83\ 2\0D]c\0\\ 2\0}\11\0\\ 3\0}\12\0}\13\0}\14\0|\0\0j\1c\0|\ f\0j\1d\0|\12\0|\13\0\83\ 2\0|\r\0\83\ 2\0\ 1|\ f\0j"\0|\12\0|\13\0\83\ 2\0}\f\0|\f\0j/\0t$\0j%\0|\11\0|\11\0d\15\0\17d\ 5\0\83\ 3\0\83\ 1\0\ 1qZ\aW|\0\0j\1c\0|\ f\0j0\0\83\0\0d7\0\83\ 2\0\ 1|  \0j1\0|\ 1\0d\ 3\0\83\ 2\0\ 1|\ f\0j1\0|\ 1\0d\ 4\0\83\ 2\0\ 1|\ f\0j#\0\83\0\0}\ f\0|\0\0j\1f\0t'\0|\ f\0t)\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|\ f\0j-\0\83\0\0d8\0d9\0d:\0g\ 3\0\83\ 2\0\ 1x\8c\0t.\0d\ 4\0d\1e\0d!\0g\ 3\0|\ f\0j-\0\83\0\0\83\ 2\0D]l\0\\ 2\0}\11\0\\ 3\0}\12\0}\13\0}\14\0|\0\0j\1c\0|\ f\0j\1d\0|\12\0|\13\0\83\ 2\0|\r\0\83\ 2\0\ 1|\ f\0j"\0|\12\0|\13\0\83\ 2\0}\f\0|\f\0j/\0t$\0j%\0|\11\0|\11\0d\15\0\17d\ 5\0\83\ 3\0j2\0\83\0\0d$\0\83\ 2\0\ 1qW\bW|\0\0j\1c\0|\ f\0j0\0\83\0\0d;\0\83\ 2\0\ 1t3\0j4\0|\ 1\0d\e\0\83\ 2\0}\ f\0|\0\0j\1f\0t'\0|\ f\0t,\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|\ f\0j-\0\83\0\0d<\0d=\0d>\0g\ 3\0\83\ 2\0\ 1x\83\0t.\0d\ 4\0d\1e\0d!\0g\ 3\0|\ f\0j-\0\83\0\0\83\ 2\0D]c\0\\ 2\0}\11\0\\ 3\0}\12\0}\13\0}\14\0|\0\0j\1f\0|\ f\0j\1d\0|\12\0|\13\0\83\ 2\0|\r\0\83\ 2\0\ 1|\ f\0j"\0|\12\0|\13\0\83\ 2\0}\f\0|\f\0j/\0t$\0j%\0|\11\0|\11\0d\15\0\17d\ 5\0\83\ 3\0\83\ 1\0\ 1qC W|\0\0j\1c\0|\ f\0j0\0\83\0\0d?\0\83\ 2\0\ 1d\0\0S(@\0\0\0Ns\f\0\0\0Pyfile68.medR=\ 3\0\0i\ 2\0\0\0i\0\0\0\0i\ 1\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0R>\ 3\0\0i\ 3\0\0\0i\ 5\0\0\0\ 2\0\0s\ 6\0\0\0XX [m]s\b\0\0\0YYY [km]s\ 6\0\0\0X [km]s\a\0\0\0YY [mm]t       \0\0\0FieldCellR&\0\0\0i      \0\0\0g\82vIhÂ%<=i\a\0\0\0s\a\0\0\0XX [pm]s\b\0\0\0YYY [hm]t\f\0\0\0FieldCellPflR\83\ 1\0\0RX\ 3\0\0t\ e\0\0\0FieldCellMTimeg\9a\99\99\99\99\99¹?i
++\0\0\0id\0\0\0g\9a\99\99\99\99\99ñ?i\v\0\0\0\0\0\0gÍÌÌÌÌÌ\0@i\f\0\0\0g\9b\86\9b\84\ 6=(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 4\0\0\0\0\0\0i\ e\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\a\0\0\0i\ e\0\0\0i\ e\0\0\0i\ e\0\0\0(\ 3\0\0\0i\0\0\0\0i
++\0\0\0g\9a\99\99\99\99\99¹?(\ 3\0\0\0i\ 1\0\0\0i\v\0\0\0g\9a\99\99\99\99\99ñ?(\ 3\0\0\0i\ 2\0\0\0i\f\0\0\0gÍÌÌÌÌÌ\0@(\ 3\0\0\0s\ e\0\0\0pfl_NORM_QUAD4s\ e\0\0\0pfl_NORM_QUAD4s\ e\0\0\0pfl_NORM_QUAD4(\ 3\0\0\0i\0\0\0\0i
++\0\0\0g\9a\99\99\99\99\99¹?(\ 3\0\0\0i\ 1\0\0\0i\v\0\0\0g\9a\99\99\99\99\99ñ?(\ 3\0\0\0i\ 2\0\0\0i\f\0\0\0gÍÌÌÌÌÌ\0@(\ 3\0\0\0s\ e\0\0\0pfl_NORM_QUAD4s\ e\0\0\0pfl_NORM_QUAD4s\ e\0\0\0pfl_NORM_QUAD4(\ 3\0\0\0i\0\0\0\0i
++\0\0\0g\9a\99\99\99\99\99¹?(\ 3\0\0\0i\ 1\0\0\0i\v\0\0\0g\9a\99\99\99\99\99ñ?(\ 3\0\0\0i\ 2\0\0\0i\f\0\0\0gÍÌÌÌÌÌ\0@(\ 1\0\0\0s\ e\0\0\0pfl_NORM_QUAD4(5\0\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0Rc\0\0\0RY\0\0\0Rn\0\0\0Rq\0\0\0\0\0\0\ 1\0\0R[\ 2\0\0R`\0\0\0RB\0\0\0\0\0\0\ 1\0\0R>\0\0\0Rj\0\0\0\0\0\0Rw\ 1\0\0R\13\ 1\0\0RX\ 1\0\0\0\0\0\0\0\0Ry\ 1\0\0Rz\ 1\0\0R{\ 1\0\0Rd\0\0\0R%\ 1\0\0R+\0\0\0\ 1\0\0t\f\0\0\0convertToIntR0\0\0\0t\ f\0\0\0convertToIntArrR1\0\0\0R+\ 1\0\0t\ f\0\0\0convertToDoubleRk\0\0\0R"\ 2\0\0R|\ 1\0\0Rt\0\0\0R\1e\ 3\0\0\0\0\0\0\0\0R\89\ 1\0\0R#\ 3\0\0\0\0\0RS\ 1\0\0R\7f\ 1\0\0R]\ 2\0\0R\v\0\0\0t\ f\0\0\0convertToDblArrR"\ 3\0\0R(\0\0\0(\15\0\0\0R     \0\0\0R9\ 1\0\0R=\ 3\0\0\0\0\0RH\ 3\0\0\0\0\0R>\ 3\0\0RI\ 3\0\0R\83\0\0\0R\86\0\0\0RB\ 2\0\0\0\0\0\ 1\0\0t\ 6\0\0\0fspExpt\ 4\0\0\0ff0iR;\ 1\0\0R\83\ 1\0\0t\ 4\0\0\0deltRu\ 2\0\0Rv\ 2\0\0R\8c\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testMEDFileFieldConvertTo1¬\v\0\0s\ 2\ 1\0\0\0\ 1\ 6\ 2\ f\ 1
++\0\19\ 1\1c\ 1%\ 1\19\0\17\ 1\ f\ 1\ f\ 1
++\0\1c\ 1\1f\ 1%\ 1\19\0\e\ 1\ f\ 1\12\ 1\r\0\19\ 1   \0\10\ 2     \ 1\ f\0\r\0\16\0
++\0\r\0\13\0\r\0\r\ 1
++\ 1\r\ 26\ 1\16\ 2\f\ 1\16\ 1"\ 2\f\ 1%\ 1\16\ 2\12\ 1 \ 1\ f\0\11\0\f\0
++\0\r\0\13\0\r\0\r\ 1
++\ 1\15\0\r\ 1\16\ 16\ 1\16\ 2\f\ 1\16\ 1\16\ 1"\ 2\f\ 1\16\ 1%\ 1\16\ 2   \ 1\ f\0\11\0\f\0
++\0\r\0\13\0\r\0\r\0\13\ 1
++\ 1\16\ 1\ f\0\11\0\f\0\r\0\r\0\13\0\r\0\r\0\13\ 1
++\ 1\16\ 1\ f\0\11\0\f\0\r\0\r\0\13\0\r\0\r\0\13\ 1
++\ 1\16\ 1\f\ 1\16\ 1\1f\ 14\ 1\1c\ 1\12\ 1 \ 1\ 4\ 1\16\ 2\10\ 1\10\ 2\f\ 1\16\ 1\1f\ 14\ 1\1c\ 1\12\ 1)\ 1\ 4\ 1\16\ 2\12\ 1\16\ 1\1f\ 14\ 1\1c\ 1\12\ 1 \ 1\ 4\ 1\16\ 1c\ 1\0\0\0\17\0\0\0        \0\0\0C\0\0\0sõ       \0\0d\ 1\0}\ 1\0t\0\0\83\0\0}\ 2\0|\ 2\0j\ 1\0\83\0\0}\ 3\0|\ 2\0j\ 2\0d\ 2\0d\ 3\0\83\ 2\0\ 1|\ 2\0j\ 1\0\83\0\0|\ 3\0\18}\ 4\0~\ 2\0~\ 3\0t\ 3\0d\ 4\0d\ 5\0\83\ 2\0}\ 5\0|\ 5\0j\ 4\0\83\0\0\ 1|\ 5\0j\ 5\0t\ 6\0d\ 2\0d\ 3\0d\ 5\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\a\0t\b\0d5\0d6\0d7\0g\ 3\0\83\ 1\0\83\ 1\0\ 1g\0\0t   \0d\b\0\83\ 1\0D]\12\0}\ 6\0|\ 5\0j
++\0\83\0\0^\ 2\0q\9c\0}\a\0x-\0t\v\0|\a\0\83\ 1\0D]\1f\0\\ 2\0}\ 6\0}\b\0|\b\0j\f\0|\ 6\0d\ 2\0g\ 2\0\83\ 1\0\ 1\0Wt\ 3\0j\r\0|\a\0\83\ 1\0}\a\0t\ 3\0d      \0d\ 5\0\83\ 2\0}        \0|      \0j\ 4\0\83\0\0\ 1|       \0j\ 5\0t\ e\0d\ 2\0d\ 3\0d\ 5\0d
++\0g\ 4\0\83\ 2\0\ 1|     \0j\a\0t\b\0d8\0d9\0d:\0d;\0g\ 4\0\83\ 1\0\83\ 1\0\ 1g\0\0t       \0d\v\0\83\ 1\0D]\12\0}\ 6\0\0j
++\0\83\0\0^\ 2\0qT\ 1}
++\0x1\0t\v\0|
++\0\83\ 1\0D]#\0\\ 2\0}\ 6\0}\b\0|\b\0j\f\0d\v\0|\ 6\0\17d\ 2\0g\ 2\0\83\ 1\0\ 1qy\ 1Wt\ 3\0j\r\0|
++\0\83\ 1\0}
++\0t\ 3\0j\r\0|\a\0|
++\0\83\ 2\0}\v\0|\v\0j\ f\0d\f\0\83\ 1\0\ 1|\v\0j\10\0\83\0\0j\11\0d\r\0d\ e\0g\ 2\0\83\ 1\0\ 1t\12\0\83\0\0}\f\0|\f\0j\13\0d\ 2\0|\v\0\83\ 2\0\ 1|\f\0j\14\0|\ 1\0d\ 5\0\83\ 2\0\ 1t\15\0\83\0\0}\r\0t\16\0t\17\0t\18\0\83\ 2\0}\ e\0|\ e\0j\19\0|\v\0\83\ 1\0\ 1t\b\0|\v\0j\1a\0\83\0\0d\ 5\0\14\83\ 1\0}\ f\0|\ f\0j\e\0\83\0\0\ 1|\ f\0j\1c\0d\ 5\0\83\ 1\0\ 1|\ f\0j\11\0d\ f\0d\10\0g\ 2\0\83\ 1\0\ 1|\ e\0j\1d\0|\ f\0\83\ 1\0\ 1|\ e\0j\ f\0d\11\0\83\ 1\0\ 1|\ e\0j\1e\0\83\0\0\ 1|\r\0j\1f\0|\ e\0\83\ 1\0\ 1|\r\0j\14\0|\ 1\0d\ 2\0\83\ 2\0\ 1d
++\0d\ 2\0d<\0d\12\0d\12\0f\ 4\0g\ 1\0f\ 2\0d\13\0d\ 2\0d=\0d\12\0d\12\0f\ 4\0g\ 1\0f\ 2\0g\ 2\0}\10\0|\0\0\0|\r\0j!\0\83\0\0|\10\0\83\ 2\0\ 1t\15\0\83\0\0}\r\0t\16\0t\17\0t\18\0\83\ 2\0}\ e\0|\ e\0j\19\0|\v\0d\15\0 \83\ 1\0\ 1t\b\0d>\0\83\ 1\0}\ f\0|\ f\0j\e\0\83\0\0\ 1|\ f\0j\1c\0d\ 5\0\83\ 1\0\ 1|\ f\0j\11\0d\16\0d\17\0g\ 2\0\83\ 1\0\ 1|\ e\0j\1d\0|\ f\0\83\ 1\0\ 1|\ e\0j\ f\0d\18\0\83\ 1\0\ 1|\ e\0j\1e\0\83\0\0\ 1t\0\0j"\0d\ 2\0d\15\0d\ 3\0\83\ 3\0}\11\0|\11\0j\ f\0d\19\0\83\ 1\0\ 1|\r\0j#\0|\ e\0|\f\0d\ 2\0|\11\0\83\ 4\0\ 1d
++\0d\ 2\0d?\0d\12\0d\12\0f\ 4\0g\ 1\0f\ 2\0d\13\0d\ 2\0d@\0d\1a\0d\12\0f\ 4\0g\ 1\0f\ 2\0g\ 2\0}\10\0|\0\0\0|\r\0j!\0\83\0\0|\10\0\83\ 2\0\ 1|\r\0j\14\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\15\0|\ 1\0t$\0\83\ 2\0}\r\0|\0\0\0|\r\0j%\0\83\0\0d\11\0\83\ 2\0\ 1|\0\0j&\0|\r\0j'\0\83\0\0j(\0\83\0\0\f\83\ 1\0\ 1|\0\0\0|\r\0j'\0\83\0\0j)\0\83\0\0d\ f\0d\10\0g\ 2\0\83\ 2\0\ 1|\r\0j\ 1\0\83\0\0}\12\0|\0\0j*\0|\12\0t+\0t  \0d\e\0d\1c\0d\ 5\0|\ 4\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\r\0j,\0\83\0\0\ 1t\b\0d\1d\0\83\ 1\0}\ f\0|\ f\0j\e\0\83\0\0\ 1|\ f\0j\1c\0d\ 5\0\83\ 1\0\ 1|\0\0j&\0|\r\0j'\0\83\0\0j-\0|\ f\0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0\0|\r\0j\ 1\0\83\0\0|\12\0\18dB\0\83\ 2\0\ 1t\15\0|\ 1\0d\18\0t$\0\83\ 3\0}\r\0|\0\0\0|\r\0j'\0\83\0\0j)\0\83\0\0d\16\0d\17\0g\ 2\0\83\ 2\0\ 1|\r\0j\ 1\0\83\0\0}\12\0|\0\0j*\0|\12\0t+\0t    \0\0d!\0d"\0|\ 4\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\r\0j,\0\83\0\0\ 1t\b\0d#\0\83\ 1\0}\ f\0|\ f\0j\e\0\83\0\0\ 1|\ f\0j\1c\0d\ 5\0\83\ 1\0\ 1|\0\0j&\0|\r\0j'\0\83\0\0j-\0|\ f\0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0\0|\r\0j\ 1\0\83\0\0|\12\0\18dD\0\83\ 2\0\ 1|\r\0j,\0\83\0\0\ 1|\0\0j&\0|\r\0j'\0\83\0\0j-\0|\ f\0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0\0|\r\0j\ 1\0\83\0\0|\12\0\18dF\0\83\ 2\0\ 1|\r\0j'\0\83\0\0j.\0d\b\0d\ 3\0d$\0\83\ 3\0\ 1|\0\0j&\0|\r\0j'\0\83\0\0j-\0|\ f\0d\1e\0\83\ 2\0\f\83\ 1\0\ 1|\r\0j,\0\83\0\0\ 1|\0\0j&\0|\r\0j'\0\83\0\0j-\0|\ f\0d\1e\0\83\ 2\0\83\ 1\0\ 1|\r\0j'\0\83\0\0j.\0d\b\0d\ 3\0d$\0\83\ 3\0\ 1|\0\0j&\0|\r\0j'\0\83\0\0j-\0|\ f\0d\1e\0\83\ 2\0\f\83\ 1\0\ 1|\r\0j/\0\83\0\0\ 1|\0\0\0|\r\0j'\0\83\0\0j0\0d\b\0d\ 3\0\83\ 2\0d$\0\83\ 2\0\ 1|\0\0j&\0|\r\0j'\0\83\0\0j-\0|\ f\0d\1e\0\83\ 2\0\f\83\ 1\0\ 1|\r\0j\ 1\0\83\0\0}\12\0|\0\0j*\0|\12\0t+\0t      \0d%\0d&\0d\ 5\0|\ 4\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\r\0j1\0\83\0\0\ 1|\r\0j\ 1\0\83\0\0|\12\0\18}\13\0|\0\0\0|\13\0d'\0\83\ 2\0\ 1|\r\0j,\0\83\0\0\ 1|\0\0\0|\r\0j\ 1\0\83\0\0|\12\0\18d\ 2\0\83\ 2\0\ 1t\15\0|\ 1\0d\18\0d(\0d(\0t$\0\83\ 5\0}\r\0|\r\0j\ 1\0\83\0\0}\12\0|\0\0j*\0|\12\0t+\0t        \0d)\0d*\0d"\0|\ 4\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\r\0j,\0\83\0\0\ 1|\0\0j&\0|\r\0j'\0\83\0\0j-\0|\ f\0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0\0|\r\0j\ 1\0\83\0\0|\12\0\18dH\0\83\ 2\0\ 1d+\0}\14\0t2\0\83\0\0}\r\0\0\0d,\0\83\ 1\0D]Á\0}\15\0t\16\0t\17\0t\18\0\83\ 2\0}\ e\0|\ e\0j\19\0|\v\0\83\ 1\0\ 1t\b\0|\v\0j\1a\0\83\0\0d\ 5\0\14\83\ 1\0}\ f\0|\ f\0j\e\0t3\0|\15\0d-\0\17\83\ 1\0\83\ 1\0\ 1|\ f\0j\1c\0d\ 5\0\83\ 1\0\ 1|\ f\0j\11\0d\ f\0d\10\0g\ 2\0\83\ 1\0\ 1|\ e\0j\1d\0|\ f\0\83\ 1\0\ 1|\ e\0j\ f\0|\14\0\83\ 1\0\ 1|\ e\0j4\0t3\0|\15\0\83\ 1\0d.\0\17|\15\0d#\0|\15\0\17\83\ 3\0\ 1|\ e\0j\1e\0\83\0\0\ 1|\r\0j5\0|\ e\0\83\ 1\0\ 1q5\bW|\r\0j\14\0|\ 1\0d\ 2\0\83\ 2\0\ 1t6\0j7\0|\ 1\0|\14\0t$\0\83\ 3\0}\r\0|\r\0j\ 1\0\83\0\0}\12\0|\0\0j*\0|\12\0t+\0t     \0d/\0d0\0dJ\0|\ 4\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\r\0j,\0\83\0\0\ 1|\0\0\0|\r\0j\ 1\0\83\0\0|\12\0\18dM\0\83\ 2\0\ 1~\r\0t8\0|\ 1\0t$\0\83\ 2\0}\16\0|\16\0j\ 1\0\83\0\0}\12\0|\0\0j*\0|\12\0t+\0t        \0d3\0d4\0dN\0t9\0|\16\0\83\ 1\0\17|\ 4\0\14\17\83\ 2\0\83\ 1\0\83\ 2\0\ 1|\16\0j,\0\83\0\0\ 1|\0\0\0|\16\0j\ 1\0\83\0\0|\12\0\18dQ\0dS\0\17dU\0\17\83\ 2\0\ 1d\0\0S(V\0\0\0Ns\f\0\0\0Pyfile69.medi\0\0\0\0i\ 1\0\0\0R=\ 3\0\0i\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\1e\0\0\0R>\ 3\0\0i\ 3\0\0\0i(\0\0\0\ 2\0\0s\ 6\0\0\0XX [m]s\b\0\0\0YYY [km]s\ 6\0\0\0X [km]s\a\0\0\0YY [mm]Ri\ 3\0\0R&\0\0\0i\ 4\0\0\0iF\0\0\0i2\0\0\0s\a\0\0\0XX [pm]s\b\0\0\0YYY [hm]Rj\ 3\0\0R\83\ 1\0\0RX\ 3\0\0\0\0\0i\1c\ 2\0\0i\8c\0\0\0g\9b\86\9b\84\ 6=i\b\0\0\0i^\ 1\0\0iX\ 2\0\0i\ 6\0\0\0id\0\0\0g\0\0\0\0\0\0\16@iL\ 4\0\0ix\ 5\0\0iàüÿÿiÿÿÿÿi+\ 1\0\0il\ 2\0\0t\10\0\0\0FieldCellMultiTSi\14\0\0\0\ 3\0\0g\9a\99\99\99\99\99¹?i \15\0\0iü#\0\0iP\0\0\0i\1a\0\0\0\14\0\0i/'\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\1e\0\0\0(\ 2\0\0\0i\1e\0\0\0iF\0\0\0id\0\0\0(\ 2\0\0\0i\0\0\0\0i\1e\0\0\0(\ 2\0\0\0i\1e\0\0\0i2\0\0\0i0\ 2\0\0i`\ 4\0\0i\90\ 1\0\0\ 3\0\0i\90\ 1\0\0\ 3\0\0i\90\ 1\0\0\ 3\0\0ij\0\0\0ik\0\0\0ix\ 5\0\0iÀ+\0\0i\80W\0\0i\82\0\0\0ix\ 5\0\0iÀ+\0\0i\80W\0\0i0\ 2\0\0i`\ 4\0\0i\90\ 1\0\0\ 3\0\0(:\0\0\0Rk\0\0\0\ 2\0\0Rx\ 1\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0Rc\0\0\0RY\0\0\0Rn\0\0\0Rq\0\0\0\0\0\0\ 1\0\0R[\ 2\0\0R`\0\0\0RB\0\0\0\0\0\0\ 1\0\0R>\0\0\0Rj\0\0\0R\v\0\0\0\0\0\0Rw\ 1\0\0R\13\ 1\0\0RX\ 1\0\0\0\0\0\0\0\0Ry\ 1\0\0Rz\ 1\0\0R{\ 1\0\0Rd\0\0\0R%\ 1\0\0R+\0\0\0\ 1\0\0R"\ 2\0\0R|\ 1\0\0RN\0\0\0RC\0\0\0R0\0\0\0R+\ 1\0\0t\v\0\0\0isAllocatedR\1f\ 3\0\0\ 2\0\0Rm\0\0\0t
++\0\0\0loadArraysR\7f\ 1\0\0R\9f\0\0\0t\15\0\0\0loadArraysIfNecessaryRÓ\ 1\0\0t\f\0\0\0unloadArraysRô\0\0\0RD\ 3\0\0\0\0\0RY\ 1\0\0R"\ 3\0\0R(\0\0\0R[\ 1\0\0Ry\0\0\0(\17\0\0\0\0\0\0R9\ 1\0\0\ 2\0\0\ 2\0\0\ 2\0\0R=\ 3\0\0\0\0\0RH\ 3\0\0\0\0\0R>\ 3\0\0RI\ 3\0\0R\83\0\0\0R\86\0\0\0RB\ 2\0\0\0\0\0\ 1\0\0Rp\ 3\0\0R\83\ 1\0\0t\ f\0\0\0heap_memory_reft\ 3\0\0\0hmdRg\ 3\0\0R\8c\0\0\0\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1e\0\0\0testMEDFileFieldPartialLoading\ e\f\0\0s\f\ 1\0\0\0\ 1\ 6\ 2   \0\f\ 1\10\ 1\10\0\ 3\0\ 3\ 2\ f\ 1
++\0\19\ 1\1c\ 1%\ 1\19\0\17\ 1\ f\ 1\ f\ 1
++\0\1c\ 1\1f\ 1%\ 1\19\0\e\ 1\ f\ 1\12\ 1\r\0\19\ 1   \0\10\0\10\ 2   \ 1\ f\0\r\0\16\0
++\0\r\0\13\0\r\0\r\ 1
++\ 1\r\ 1\10\ 26\ 1\16\ 2     \ 1\ f\0\11\0\f\0
++\0\r\0\13\0\r\0\r\ 1
++\ 1\15\0\r\ 1\16\ 16\ 1\16\ 1\10\ 2\ f\ 1\16\ 1\1a\ 1"\ 1\f\ 1'\ 1
++\ 1\f\0
++\0\r\ 1\1f\ 1\1a\ 2\12\ 1"\ 1\f\ 1'\ 1
++\ 1\f\0
++\0\r\ 1\1f\ 1\1a\ 1
++\ 1\1f\ 1\1a\ 1\19\ 1 \ 1
++\ 1\1f\ 1\19\ 1 \ 1
++\ 1"\ 1 \ 1\f\ 1'\ 1
++\ 1\10\ 1\10\ 1
++\ 1\1a\ 2\18\ 1\f\ 1'\ 1
++\ 1\1f\ 1\1a\ 2\ 6\ 1       \ 1\13\ 1\ f\0\r\0\16\0\17\0\r\0\13\0\r\0\r\ 1!\ 1
++\ 1\r\ 1\ 4\ 1\10\ 2\15\ 1\f\ 1'\ 1
++\ 1\1a\ 1\ 3\ 2\ f\ 1\f\ 11\ 1
++\ 1"\ 1c\ 1\0\0\0\ 2\0\0\0\ 3\0\0\0C\0\0\0\19\0\0t\0\0\83\0\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0oT\0|\ 1\0j\ 3\0\83\0\0oT\0|\ 1\0j\ 4\0\83\0\0oT\0|\ 1\0j\ 5\0\83\0\0oT\0|\ 1\0j\ 6\0\83\0\0oT\0|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1|\ 1\0j\b\0\83\0\0\ 1|\ 1\0j       \0\83\0\0\ 1t\0\0d\ 1\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f\0|\ 1\0j\ 3\0\83\0\0\f\0|\ 1\0j\ 4\0\83\0\0\f\0|\ 1\0j\ 5\0\83\0\0\f\0|\ 1\0j\ 6\0\83\0\0\f\0|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\ 2\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o)\ 1|\ 1\0j\ 3\0\83\0\0\fo)\ 1|\ 1\0j\ 4\0\83\0\0\fo)\ 1|\ 1\0j\ 5\0\83\0\0\fo)\ 1|\ 1\0j\ 6\0\83\0\0\fo)\ 1|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\ 3\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo\89\ 1|\ 1\0j\ 3\0\83\0\0o\89\ 1|\ 1\0j\ 4\0\83\0\0\fo\89\ 1|\ 1\0j\ 5\0\83\0\0\fo\89\ 1|\ 1\0j\ 6\0\83\0\0\fo\89\ 1|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\ 4\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\ 1|\ 1\0j\ 3\0\83\0\0\ 1|\ 1\0j\ 4\0\83\0\0\f\ 1|\ 1\0j\ 5\0\83\0\0\f\ 1|\ 1\0j\ 6\0\83\0\0\f\ 1|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\ 5\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\foH\ 2|\ 1\0j\ 3\0\83\0\0\foH\ 2|\ 1\0j\ 4\0\83\0\0oH\ 2|\ 1\0j\ 5\0\83\0\0\foH\ 2|\ 1\0j\ 6\0\83\0\0\foH\ 2|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\ 6\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\ 2|\ 1\0j\ 3\0\83\0\0\f\ 2|\ 1\0j\ 4\0\83\0\0\ 2|\ 1\0j\ 5\0\83\0\0\f\ 2|\ 1\0j\ 6\0\83\0\0\f\ 2|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\a\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo\ 6\ 3|\ 1\0j\ 3\0\83\0\0o\ 6\ 3|\ 1\0j\ 4\0\83\0\0o\ 6\ 3|\ 1\0j\ 5\0\83\0\0\fo\ 6\ 3|\ 1\0j\ 6\0\83\0\0\fo\ 6\ 3|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\b\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0od\ 3|\ 1\0j\ 3\0\83\0\0od\ 3|\ 1\0j\ 4\0\83\0\0od\ 3|\ 1\0j\ 5\0\83\0\0\fod\ 3|\ 1\0j\ 6\0\83\0\0\fod\ 3|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d   \0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f\ 3|\ 1\0j\ 3\0\83\0\0\f\ 3|\ 1\0j\ 4\0\83\0\0\f\ 3|\ 1\0j\ 5\0\83\0\0\ 3|\ 1\0j\ 6\0\83\0\0\f\ 3|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d
++\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o#\ 4|\ 1\0j\ 3\0\83\0\0\fo#\ 4|\ 1\0j\ 4\0\83\0\0\fo#\ 4|\ 1\0j\ 5\0\83\0\0o#\ 4|\ 1\0j\ 6\0\83\0\0\fo#\ 4|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\v\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo\82\ 4|\ 1\0j\ 3\0\83\0\0o\82\ 4|\ 1\0j\ 4\0\83\0\0\fo\82\ 4|\ 1\0j\ 5\0\83\0\0o\82\ 4|\ 1\0j\ 6\0\83\0\0\fo\82\ 4|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\f\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\ 4|\ 1\0j\ 3\0\83\0\0\ 4|\ 1\0j\ 4\0\83\0\0\f\ 4|\ 1\0j\ 5\0\83\0\0\ 4|\ 1\0j\ 6\0\83\0\0\f\ 4|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\r\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo?\ 5|\ 1\0j\ 3\0\83\0\0\fo?\ 5|\ 1\0j\ 4\0\83\0\0o?\ 5|\ 1\0j\ 5\0\83\0\0o?\ 5|\ 1\0j\ 6\0\83\0\0\fo?\ 5|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\ e\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o\9d\ 5|\ 1\0j\ 3\0\83\0\0\fo\9d\ 5|\ 1\0j\ 4\0\83\0\0o\9d\ 5|\ 1\0j\ 5\0\83\0\0o\9d\ 5|\ 1\0j\ 6\0\83\0\0\fo\9d\ 5|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\ f\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f\ 5|\ 1\0j\ 3\0\83\0\0\ 5|\ 1\0j\ 4\0\83\0\0\ 5|\ 1\0j\ 5\0\83\0\0\ 5|\ 1\0j\ 6\0\83\0\0\f\ 5|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\10\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0oX\ 6|\ 1\0j\ 3\0\83\0\0oX\ 6|\ 1\0j\ 4\0\83\0\0oX\ 6|\ 1\0j\ 5\0\83\0\0oX\ 6|\ 1\0j\ 6\0\83\0\0\foX\ 6|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\11\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f\ 6|\ 1\0j\ 3\0\83\0\0\f\ 6|\ 1\0j\ 4\0\83\0\0\f\ 6|\ 1\0j\ 5\0\83\0\0\f\ 6|\ 1\0j\ 6\0\83\0\0\ 6|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\12\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o\17\a|\ 1\0j\ 3\0\83\0\0\fo\17\a|\ 1\0j\ 4\0\83\0\0\fo\17\a|\ 1\0j\ 5\0\83\0\0\fo\17\a|\ 1\0j\ 6\0\83\0\0o\17\a|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\13\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fov\a|\ 1\0j\ 3\0\83\0\0ov\a|\ 1\0j\ 4\0\83\0\0\fov\a|\ 1\0j\ 5\0\83\0\0\fov\a|\ 1\0j\ 6\0\83\0\0ov\a|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\14\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\a|\ 1\0j\ 3\0\83\0\0\a|\ 1\0j\ 4\0\83\0\0\f\a|\ 1\0j\ 5\0\83\0\0\f\a|\ 1\0j\ 6\0\83\0\0\a|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\15\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo3\b|\ 1\0j\ 3\0\83\0\0\fo3\b|\ 1\0j\ 4\0\83\0\0o3\b|\ 1\0j\ 5\0\83\0\0\fo3\b|\ 1\0j\ 6\0\83\0\0o3\b|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\16\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o\91\b|\ 1\0j\ 3\0\83\0\0\fo\91\b|\ 1\0j\ 4\0\83\0\0o\91\b|\ 1\0j\ 5\0\83\0\0\fo\91\b|\ 1\0j\ 6\0\83\0\0o\91\b|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\17\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f\b|\ 1\0j\ 3\0\83\0\0\b|\ 1\0j\ 4\0\83\0\0\b|\ 1\0j\ 5\0\83\0\0\f\b|\ 1\0j\ 6\0\83\0\0\b|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\18\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0oL   |\ 1\0j\ 3\0\83\0\0oL     |\ 1\0j\ 4\0\83\0\0oL     |\ 1\0j\ 5\0\83\0\0\foL    |\ 1\0j\ 6\0\83\0\0oL     |\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\19\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo«    |\ 1\0j\ 3\0\83\0\0\fo«    |\ 1\0j\ 4\0\83\0\0\fo«    |\ 1\0j\ 5\0\83\0\0o«     |\ 1\0j\ 6\0\83\0\0o«     |\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\1a\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o      
++|\ 1\0j\ 3\0\83\0\0\fo   
++|\ 1\0j\ 4\0\83\0\0\fo   
++|\ 1\0j\ 5\0\83\0\0o    
++|\ 1\0j\ 6\0\83\0\0o    
++|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\e\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fog
++|\ 1\0j\ 3\0\83\0\0og
++|\ 1\0j\ 4\0\83\0\0\fog
++|\ 1\0j\ 5\0\83\0\0og
++|\ 1\0j\ 6\0\83\0\0og
++|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\1c\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0
++|\ 1\0j\ 3\0\83\0\0
++|\ 1\0j\ 4\0\83\0\0\f
++|\ 1\0j\ 5\0\83\0\0
++|\ 1\0j\ 6\0\83\0\0
++|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\1d\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo"\v|\ 1\0j\ 3\0\83\0\0\fo"\v|\ 1\0j\ 4\0\83\0\0o"\v|\ 1\0j\ 5\0\83\0\0o"\v|\ 1\0j\ 6\0\83\0\0o"\v|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\1e\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o\7f\v|\ 1\0j\ 3\0\83\0\0\fo\7f\v|\ 1\0j\ 4\0\83\0\0o\7f\v|\ 1\0j\ 5\0\83\0\0o\7f\v|\ 1\0j\ 6\0\83\0\0o\7f\v|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d\1f\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f\v|\ 1\0j\ 3\0\83\0\0\v|\ 1\0j\ 4\0\83\0\0\v|\ 1\0j\ 5\0\83\0\0\v|\ 1\0j\ 6\0\83\0\0\v|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o8\f|\ 1\0j\ 3\0\83\0\0o8\f|\ 1\0j\ 4\0\83\0\0o8\f|\ 1\0j\ 5\0\83\0\0o8\f|\ 1\0j\ 6\0\83\0\0o8\f|\ 1\0j\a\0\83\0\0\f\83\ 1\0\ 1t\0\0d!\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo\98\f|\ 1\0j\ 3\0\83\0\0\fo\98\f|\ 1\0j\ 4\0\83\0\0\fo\98\f|\ 1\0j\ 5\0\83\0\0\fo\98\f|\ 1\0j\ 6\0\83\0\0\fo\98\f|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d"\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f|\ 1\0j\ 3\0\83\0\0\f\f|\ 1\0j\ 4\0\83\0\0\f\f|\ 1\0j\ 5\0\83\0\0\f\f|\ 1\0j\ 6\0\83\0\0\f\f|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d#\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\foV\r|\ 1\0j\ 3\0\83\0\0oV\r|\ 1\0j\ 4\0\83\0\0\foV\r|\ 1\0j\ 5\0\83\0\0\foV\r|\ 1\0j\ 6\0\83\0\0\foV\r|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d$\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\r|\ 1\0j\ 3\0\83\0\0\r|\ 1\0j\ 4\0\83\0\0\f\r|\ 1\0j\ 5\0\83\0\0\f\r|\ 1\0j\ 6\0\83\0\0\f\r|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d%\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo\13\ e|\ 1\0j\ 3\0\83\0\0\fo\13\ e|\ 1\0j\ 4\0\83\0\0o\13\ e|\ 1\0j\ 5\0\83\0\0\fo\13\ e|\ 1\0j\ 6\0\83\0\0\fo\13\ e|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d&\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0oq\ e|\ 1\0j\ 3\0\83\0\0\foq\ e|\ 1\0j\ 4\0\83\0\0oq\ e|\ 1\0j\ 5\0\83\0\0\foq\ e|\ 1\0j\ 6\0\83\0\0\foq\ e|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d'\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f\ e|\ 1\0j\ 3\0\83\0\0\ e|\ 1\0j\ 4\0\83\0\0\ e|\ 1\0j\ 5\0\83\0\0\f\ e|\ 1\0j\ 6\0\83\0\0\f\ e|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d(\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o,\ f|\ 1\0j\ 3\0\83\0\0o,\ f|\ 1\0j\ 4\0\83\0\0o,\ f|\ 1\0j\ 5\0\83\0\0\fo,\ f|\ 1\0j\ 6\0\83\0\0\fo,\ f|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d)\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo\8b\ f|\ 1\0j\ 3\0\83\0\0\fo\8b\ f|\ 1\0j\ 4\0\83\0\0\fo\8b\ f|\ 1\0j\ 5\0\83\0\0o\8b\ f|\ 1\0j\ 6\0\83\0\0\fo\8b\ f|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d*\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\ f|\ 1\0j\ 3\0\83\0\0\f\ f|\ 1\0j\ 4\0\83\0\0\f\ f|\ 1\0j\ 5\0\83\0\0\ f|\ 1\0j\ 6\0\83\0\0\f\ f|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d+\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\foG\10|\ 1\0j\ 3\0\83\0\0oG\10|\ 1\0j\ 4\0\83\0\0\foG\10|\ 1\0j\ 5\0\83\0\0oG\10|\ 1\0j\ 6\0\83\0\0\foG\10|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d,\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\10|\ 1\0j\ 3\0\83\0\0\10|\ 1\0j\ 4\0\83\0\0\f\10|\ 1\0j\ 5\0\83\0\0\10|\ 1\0j\ 6\0\83\0\0\f\10|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d-\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo\ 2\11|\ 1\0j\ 3\0\83\0\0\fo\ 2\11|\ 1\0j\ 4\0\83\0\0o\ 2\11|\ 1\0j\ 5\0\83\0\0o\ 2\11|\ 1\0j\ 6\0\83\0\0\fo\ 2\11|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d.\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o_\11|\ 1\0j\ 3\0\83\0\0\fo_\11|\ 1\0j\ 4\0\83\0\0o_\11|\ 1\0j\ 5\0\83\0\0o_\11|\ 1\0j\ 6\0\83\0\0\fo_\11|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d/\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f\11|\ 1\0j\ 3\0\83\0\0\11|\ 1\0j\ 4\0\83\0\0\11|\ 1\0j\ 5\0\83\0\0\11|\ 1\0j\ 6\0\83\0\0\f\11|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d0\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o\18\12|\ 1\0j\ 3\0\83\0\0o\18\12|\ 1\0j\ 4\0\83\0\0o\18\12|\ 1\0j\ 5\0\83\0\0o\18\12|\ 1\0j\ 6\0\83\0\0\fo\18\12|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d1\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fow\12|\ 1\0j\ 3\0\83\0\0\fow\12|\ 1\0j\ 4\0\83\0\0\fow\12|\ 1\0j\ 5\0\83\0\0\fow\12|\ 1\0j\ 6\0\83\0\0ow\12|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d2\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\12|\ 1\0j\ 3\0\83\0\0\f\12|\ 1\0j\ 4\0\83\0\0\f\12|\ 1\0j\ 5\0\83\0\0\f\12|\ 1\0j\ 6\0\83\0\0\12|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d3\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo3\13|\ 1\0j\ 3\0\83\0\0o3\13|\ 1\0j\ 4\0\83\0\0\fo3\13|\ 1\0j\ 5\0\83\0\0\fo3\13|\ 1\0j\ 6\0\83\0\0o3\13|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d4\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o\90\13|\ 1\0j\ 3\0\83\0\0o\90\13|\ 1\0j\ 4\0\83\0\0\fo\90\13|\ 1\0j\ 5\0\83\0\0\fo\90\13|\ 1\0j\ 6\0\83\0\0o\90\13|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d5\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f\13|\ 1\0j\ 3\0\83\0\0\f\13|\ 1\0j\ 4\0\83\0\0\13|\ 1\0j\ 5\0\83\0\0\f\13|\ 1\0j\ 6\0\83\0\0\13|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d6\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0oK\14|\ 1\0j\ 3\0\83\0\0\foK\14|\ 1\0j\ 4\0\83\0\0oK\14|\ 1\0j\ 5\0\83\0\0\foK\14|\ 1\0j\ 6\0\83\0\0oK\14|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d7\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f\14|\ 1\0j\ 3\0\83\0\0\14|\ 1\0j\ 4\0\83\0\0\14|\ 1\0j\ 5\0\83\0\0\f\14|\ 1\0j\ 6\0\83\0\0\14|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d8\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o\ 4\15|\ 1\0j\ 3\0\83\0\0o\ 4\15|\ 1\0j\ 4\0\83\0\0o\ 4\15|\ 1\0j\ 5\0\83\0\0\fo\ 4\15|\ 1\0j\ 6\0\83\0\0o\ 4\15|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d9\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fob\15|\ 1\0j\ 3\0\83\0\0\fob\15|\ 1\0j\ 4\0\83\0\0\fob\15|\ 1\0j\ 5\0\83\0\0ob\15|\ 1\0j\ 6\0\83\0\0ob\15|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d:\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o¿\15|\ 1\0j\ 3\0\83\0\0\fo¿\15|\ 1\0j\ 4\0\83\0\0\fo¿\15|\ 1\0j\ 5\0\83\0\0o¿\15|\ 1\0j\ 6\0\83\0\0o¿\15|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d;\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo\1c\16|\ 1\0j\ 3\0\83\0\0o\1c\16|\ 1\0j\ 4\0\83\0\0\fo\1c\16|\ 1\0j\ 5\0\83\0\0o\1c\16|\ 1\0j\ 6\0\83\0\0o\1c\16|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d<\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0ox\16|\ 1\0j\ 3\0\83\0\0ox\16|\ 1\0j\ 4\0\83\0\0\fox\16|\ 1\0j\ 5\0\83\0\0ox\16|\ 1\0j\ 6\0\83\0\0ox\16|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d=\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\f\16|\ 1\0j\ 3\0\83\0\0\f\16|\ 1\0j\ 4\0\83\0\0\16|\ 1\0j\ 5\0\83\0\0\16|\ 1\0j\ 6\0\83\0\0\16|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d>\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0o1\17|\ 1\0j\ 3\0\83\0\0\fo1\17|\ 1\0j\ 4\0\83\0\0o1\17|\ 1\0j\ 5\0\83\0\0o1\17|\ 1\0j\ 6\0\83\0\0o1\17|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d?\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\fo\8d\17|\ 1\0j\ 3\0\83\0\0o\8d\17|\ 1\0j\ 4\0\83\0\0o\8d\17|\ 1\0j\ 5\0\83\0\0o\8d\17|\ 1\0j\ 6\0\83\0\0o\8d\17|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d@\0\83\ 1\0}\ 1\0|\0\0j\ 1\0|\ 1\0j\ 2\0\83\0\0\17|\ 1\0j\ 3\0\83\0\0\17|\ 1\0j\ 4\0\83\0\0\17|\ 1\0j\ 5\0\83\0\0\17|\ 1\0j\ 6\0\83\0\0\17|\ 1\0j\a\0\83\0\0\83\ 1\0\ 1t\0\0d@\0\83\ 1\0}\ 1\0|\ 1\0j
++\0t\v\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0d?\0\83\ 2\0\ 1|\ 1\0j
++\0t\ e\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0d@\0\83\ 2\0\ 1|\ 1\0j\ f\0t\v\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0d>\0\83\ 2\0\ 1|\ 1\0j\ f\0t\ e\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0d@\0\83\ 2\0\ 1|\ 1\0j\10\0t\v\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0d<\0\83\ 2\0\ 1|\ 1\0j\10\0t\ e\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0d@\0\83\ 2\0\ 1|\ 1\0j\11\0t\v\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0d8\0\83\ 2\0\ 1|\ 1\0j\11\0t\ e\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0d@\0\83\ 2\0\ 1|\ 1\0j\12\0t\v\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0d0\0\83\ 2\0\ 1|\ 1\0j\12\0t\ e\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0d@\0\83\ 2\0\ 1|\ 1\0j\13\0t\v\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0\0\83\ 2\0\ 1|\ 1\0j\13\0t\ e\0\83\ 1\0\ 1|\0\0j\f\0|\ 1\0j\r\0\83\0\0d@\0\83\ 2\0\ 1d\0\0S(A\0\0\0Ni\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i  \0\0\0i
++\0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0i\ e\0\0\0i\ f\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\19\0\0\0i\1a\0\0\0i\e\0\0\0i\1c\0\0\0i\1d\0\0\0i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i#\0\0\0i$\0\0\0i%\0\0\0i&\0\0\0i'\0\0\0i(\0\0\0i)\0\0\0i*\0\0\0i+\0\0\0i,\0\0\0i-\0\0\0i.\0\0\0i/\0\0\0i0\0\0\0i1\0\0\0i2\0\0\0i3\0\0\0i4\0\0\0i5\0\0\0i6\0\0\0i7\0\0\0i8\0\0\0i9\0\0\0i:\0\0\0i;\0\0\0i<\0\0\0i=\0\0\0i>\0\0\0i?\0\0\0(\14\0\0\0t\17\0\0\0MEDFileMeshReadSelectorR0\0\0\0t\18\0\0\0isCellFamilyFieldReadingt\18\0\0\0isNodeFamilyFieldReadingt\16\0\0\0isCellNameFieldReadingt\16\0\0\0isNodeNameFieldReadingt\15\0\0\0isCellNumFieldReadingt\15\0\0\0isNodeNumFieldReadingRC\ 3\0\0t\b\0\0\0__repr__t\19\0\0\0setCellFamilyFieldReadingRN\0\0\0R+\0\0\0t\a\0\0\0getCodeR.\0\0\0t\19\0\0\0setNodeFamilyFieldReadingt\17\0\0\0setCellNameFieldReadingt\17\0\0\0setNodeNameFieldReadingt\16\0\0\0setCellNumFieldReadingt\16\0\0\0setNodeNumFieldReading(\ 2\0\0\0R   \0\0\0t\ 3\0\0\0mrs(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1c\0\0\0testMEDFileMeshReadSelector1}\f\0\0s<\ 1\0\0\0\ 1       \ 1O\ 1
++\0
++\ 2\f\ 1U\ 1\f\ 1T\ 1\f\ 1T\ 1\f\ 1S\ 1\f\ 1T\ 1\f\ 1S\ 1\f\ 1S\ 1\f\ 1R\ 1\f\ 1T\ 1\f\ 1S\ 1\f\ 1S\ 1\f\ 1R\ 1\f\ 1S\ 1\f\ 1R\ 1\f\ 1R\ 1\f\ 1Q\ 1\f\ 1T\ 1\f\ 1S\ 1\f\ 1S\ 1\f\ 1R\ 1\f\ 1S\ 1\f\ 1R\ 1\f\ 1R\ 1\f\ 1Q\ 1\f\ 1S\ 1\f\ 1R\ 1\f\ 1R\ 1\f\ 1Q\ 1\f\ 1R\ 1\f\ 1Q\ 1\f\ 1Q\ 1\f\ 1P\ 1\f\ 1T\ 1\f\ 1S\ 1\f\ 1S\ 1\f\ 1R\ 1\f\ 1S\ 1\f\ 1R\ 1\f\ 1R\ 1\f\ 1Q\ 1\f\ 1S\ 1\f\ 1R\ 1\f\ 1R\ 1\f\ 1Q\ 1\f\ 1R\ 1\f\ 1Q\ 1\f\ 1Q\ 1\f\ 1P\ 1\f\ 1S\ 1\f\ 1R\ 1\f\ 1R\ 1\f\ 1Q\ 1\f\ 1R\ 1\f\ 1Q\ 1\f\ 1Q\ 1\f\ 1P\ 1\f\ 1R\ 1\f\ 1Q\ 1\f\ 1Q\ 1\f\ 1P\ 1\f\ 1Q\ 1\f\ 1P\ 1\f\ 1P\ 1\f\ 1O\ 2\f\ 1\r\ 1\16\ 1\r\ 1\16\ 1\r\ 1\16\ 1\r\ 1\16\ 1\r\ 1\16\ 1\r\ 1\16\ 1\r\ 1\16\ 1\r\ 1\16\ 1\r\ 1\16\ 1\r\ 1\16\ 1\r\ 1\16\ 1\r\ 1\16\ 1c\ 1\0\0\0\18\0\0\0\a\0\0\0C\0\0\0s\95
++\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 3\0\83\ 2\0}\ 2\0|\ 2\0j\ 1\0\83\0\0\ 1|\ 2\0j\ 2\0t\ 3\0d\ 4\0d\ 5\0d\ 3\0g\ 3\0\83\ 2\0\ 1|\ 2\0j\ 4\0t\ 5\0d!\0d"\0d#\0g\ 3\0\83\ 1\0\83\ 1\0\ 1g\0\0t\ 6\0d\b\0\83\ 1\0D]\12\0}\ 3\0|\ 2\0j\a\0\83\0\0^\ 2\0qa\0}\ 4\0x-\0t\b\0|\ 4\0\83\ 1\0D]\1f\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j      \0|\ 3\0d\ 4\0g\ 2\0\83\ 1\0\ 1q\86\0Wt\0\0j
++\0|\ 4\0\83\ 1\0}\ 4\0t\0\0d        \0d\ 3\0\83\ 2\0}\ 6\0|\ 6\0j\ 1\0\83\0\0\ 1|\ 6\0j\ 2\0t\v\0d\ 4\0d\ 5\0d\ 3\0d
++\0g\ 4\0\83\ 2\0\ 1|\ 6\0j\ 4\0t\ 5\0d$\0d%\0d&\0d'\0g\ 4\0\83\ 1\0\83\ 1\0\ 1g\0\0t\ 6\0d\v\0\83\ 1\0D]\12\0}\ 3\0|\ 6\0j\a\0\83\0\0^\ 2\0q\19\ 1}\a\0x1\0t\b\0|\a\0\83\ 1\0D]#\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j     \0d\v\0|\ 3\0\17d\ 4\0g\ 2\0\83\ 1\0\ 1q>\ 1Wt\0\0j
++\0|\a\0\83\ 1\0}\a\0t\0\0j
++\0|\ 4\0|\a\0\83\ 2\0}\b\0|\b\0j\f\0d\f\0\83\ 1\0\ 1|\b\0j\r\0\83\0\0j\ e\0d\r\0d\ e\0g\ 2\0\83\ 1\0\ 1|\b\0j\ f\0\83\0\0d\ 4\0\19}     \0t\10\0\83\0\0}
++\0|
++\0j\11\0|\b\0|      \0g\ 2\0\83\ 1\0\ 1t\12\0d\ 5\0d\ 3\0d
++\0d\v\0d\ f\0g\ 5\0\83\ 1\0}\v\0|\v\0j\f\0d\10\0\83\ 1\0\ 1t\12\0d\ 5\0d\ 3\0d
++\0d\v\0d\11\0d\12\0g\ 6\0\83\ 1\0}\f\0|\f\0j\f\0d\13\0\83\ 1\0\ 1|
++\0j\13\0d\ 4\0|\v\0|\f\0g\ 2\0\83\ 2\0\ 1t\12\0j\14\0d\ 4\0d\14\0d\ 3\0\83\ 3\0}\r\0|\r\0j\f\0d\15\0\83\ 1\0\ 1t\12\0j\14\0d\ 5\0d\14\0d\11\0\83\ 3\0}\ e\0|\ e\0j\f\0d\16\0\83\ 1\0\ 1|
++\0j\13\0d\17\0|\r\0|\ e\0g\ 2\0\83\ 2\0\ 1t\12\0j\14\0d\ 4\0d\14\0d\ 3\0\83\ 3\0}\ f\0|\ f\0j\f\0d\18\0\83\ 1\0\ 1t\12\0j\14\0d\ 5\0d\14\0d\11\0\83\ 3\0}\10\0|\10\0j\f\0d\19\0\83\ 1\0\ 1|
++\0j\13\0d\ 5\0|\ f\0|\10\0g\ 2\0\83\ 2\0\ 1|
++\0j\15\0d\ 4\0t\12\0j\14\0d\ 3\0d\1a\0d\ 5\0\83\ 3\0\83\ 2\0\ 1|
++\0j\15\0d\17\0t\12\0j\14\0d
++\0d\e\0d\ 5\0\83\ 3\0\83\ 2\0\ 1|
++\0j\15\0d\ 5\0t\12\0j\14\0d\b\0d\1c\0d\ 5\0\83\ 3\0\83\ 2\0\ 1|
++\0j\16\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\17\0j\18\0|\ 1\0d\f\0d\17\0d\17\0t\19\0\83\0\0\83\ 5\0}
++\0|
++\0j\1a\0\83\0\0}\11\0|
++\0j\e\0d\ 4\0\83\ 1\0\ 1|
++\0j\e\0d\17\0\83\ 1\0\ 1|
++\0j\1a\0\83\0\0}\12\0|\0\0j\1c\0|\12\0|\11\0\18d+\0k\ 5\0\83\ 1\0\ 1t\17\0j\18\0|\ 1\0t\19\0d\ 4\0\83\ 1\0\83\ 2\0}
++\0|\0\0j\1d\0t\1e\0|
++\0j\1f\0\83\0\0\83\ 1\0d\ 4\0\83\ 2\0\ 1|\0\0j\1c\0|
++\0j\e\0d\ 4\0\83\ 1\0\0|\b\0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j\e\0d\17\0\83\ 1\0\0|        \0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\ 4\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\17\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\ 5\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\ 4\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\17\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\ 5\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\12\0|
++\0j\1a\0\83\0\0\18}\13\0|\0\0j\1c\0|\13\0d\b\0d,\0\14d
++\0\14d.\0\17k\ 5\0\83\ 1\0\ 1t\17\0j\18\0|\ 1\0t\19\0d\ 5\0\83\ 1\0\83\ 2\0}
++\0|\0\0j\1d\0t\1e\0|
++\0j\1f\0\83\0\0\83\ 1\0d\ f\0\83\ 2\0\ 1|\0\0j\1c\0|
++\0j\e\0d\ 4\0\83\ 1\0\0|\b\0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j\e\0d\17\0\83\ 1\0\0|        \0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\ 4\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\17\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\ 5\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\ 4\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\17\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\ 5\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\12\0|
++\0j\1a\0\83\0\0\18}\14\0|\0\0j\1c\0|\14\0|\13\0k\0\0\83\ 1\0\ 1|\0\0j\1c\0|\14\0d\b\0d/\0\14d\ 5\0\14d1\0\17k\ 5\0\83\ 1\0\ 1t\10\0|\ 1\0t\19\0d
++\0\83\ 1\0\83\ 2\0}
++\0|\0\0j\1d\0t\1e\0|
++\0j\1f\0\83\0\0\83\ 1\0d\ f\0\83\ 2\0\ 1|\0\0j\1c\0|
++\0j\e\0d\ 4\0\83\ 1\0\0|\b\0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j\e\0d\17\0\83\ 1\0\0|        \0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\ 4\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\17\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\ 5\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\ 4\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\17\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\ 5\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\12\0|
++\0j\1a\0\83\0\0\18}\15\0|\0\0j\1c\0|\15\0|\14\0k\0\0\83\ 1\0\ 1|\0\0j\1c\0|\15\0d\b\0d2\0\14d\ 5\0\14d4\0\17k\ 5\0\83\ 1\0\ 1t\10\0|\ 1\0d\f\0d\17\0d\17\0t\19\0d\1f\0\83\ 1\0\83\ 5\0}
++\0|\0\0j\1d\0t\1e\0|
++\0j\1f\0\83\0\0\83\ 1\0d\ f\0\83\ 2\0\ 1|\0\0j\1c\0|
++\0j\e\0d\ 4\0\83\ 1\0\0|\b\0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j\e\0d\17\0\83\ 1\0\0|        \0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\ 4\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\17\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\ 5\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\ 4\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\17\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\ 5\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\12\0|
++\0j\1a\0\83\0\0\18}\16\0|\0\0j\1c\0|\16\0|\15\0k\0\0\83\ 1\0\ 1|\0\0j\1c\0|\16\0d6\0k\ 5\0\83\ 1\0\ 1t\10\0j\18\0|\ 1\0d\f\0d\17\0d\17\0t\19\0\0\83\ 1\0\83\ 5\0}
++\0|\0\0j\1d\0t\1e\0|
++\0j\1f\0\83\0\0\83\ 1\0d\ f\0\83\ 2\0\ 1|\0\0j\1c\0|
++\0j\e\0d\ 4\0\83\ 1\0\0|\b\0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j\e\0d\17\0\83\ 1\0\0|        \0d\1e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\ 4\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\17\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j!\0d\ 5\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\ 4\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\17\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j#\0d\ 5\0\83\ 1\0d\0\0k\ 3\0\83\ 1\0\ 1|\12\0|
++\0j\1a\0\83\0\0\18}\17\0|\0\0j\1c\0|\17\0|\16\0k\0\0\83\ 1\0\ 1|\0\0j\1d\0|\17\0d\ 4\0\83\ 2\0\ 1d\0\0S(7\0\0\0Ns\f\0\0\0Pyfile70.medR=\ 3\0\0i\ 2\0\0\0i\0\0\0\0i\ 1\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0R>\ 3\0\0i\ 3\0\0\0i\ 5\0\0\0\ 2\0\0s\ 6\0\0\0XX [m]s\b\0\0\0YYY [km]i\ 6\0\0\0R\93\ 2\0\0i\a\0\0\0i\b\0\0\0R\95\ 2\0\0\0\0\0\ 1\0\0t\ 4\0\0\0grp3iÿÿÿÿt\ 4\0\0\0grp4t\ 4\0\0\0grp5i\v\0\0\0i#\0\0\0i$\0\0\0i   \0\0\0g\82vIhÂ%<=i\13\0\0\0i3\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0i)\0\0\0\0\0\0iH\ 1\0\0i(\ 1\0\0i)\0\0\0i\80\0\0\0i\80\ 1\0\0i)\0\0\0i\80\0\0\0i\80\ 1\0\0i)\0\0\0i\80\0\0\0i\80\0\0\0i\80\0\0\0i\0\ 1\0\0($\0\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0Rc\0\0\0RY\0\0\0Rn\0\0\0Rq\0\0\0\0\0\0\ 1\0\0R[\ 2\0\0R`\0\0\0RB\0\0\0\0\0\0\ 1\0\0R\9b\ 1\0\0R>\0\0\0RR\ 1\0\0Rk\0\0\0Rl\0\0\0R"\ 2\0\0R\98\0\0\0R\v\0\0\0R'\0\0\0R(\0\0\0R|\ 3\0\0\ 2\0\0R}\0\0\0R0\0\0\0R+\0\0\0Ry\0\0\0\ 1\0\0R1\0\0\0R\9e\0\0\0R/\ 2\0\0R\8c\ 2\0\0(\18\0\0\0R       \0\0\0R9\ 1\0\0R=\ 3\0\0\0\0\0RH\ 3\0\0\0\0\0R>\ 3\0\0RI\ 3\0\0R\83\0\0\0R\84\0\0\0R\86\0\0\0R\93\ 2\0\0R\95\ 2\0\0\ 1\0\0R\8d\ 3\0\0R\8e\ 3\0\0R\8f\ 3\0\0t\ f\0\0\0b4_ref_heap_memt\f\0\0\0ref_heap_memt\ 6\0\0\0delta1t\ 6\0\0\0delta2t\ 6\0\0\0delta3t\ 6\0\0\0delta4t\ 6\0\0\0delta5(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\17\0\0\0testPartialReadOfMeshes\1e\r\0\0\0\0\0\0\ 1\ 6\ 2\ f\ 1
++\0\19\ 1\1c\ 1%\ 1\19\0\17\ 1\ f\ 1\ f\ 1
++\0\1c\ 1\1f\ 1%\ 1\19\0\e\ 1\ f\ 1\12\ 1\r\0\19\ 1\10\ 1 \0\13\ 2\e\0\r\ 1\1e\0\r\ 1\16\ 1\15\0\r\ 1\15\0\r\ 1\16\ 1\15\0\r\ 1\15\0\r\ 1\16\ 1\1f\ 1\1f\ 1\1f\ 2\10\ 2\1e\ 1\f\ 1\r\ 1\r\ 1\f\ 2\17\ 2\18\ 1\1c\ 1"\ 1"\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\10\ 1\1f\ 2\18\ 1\1c\ 1"\ 1"\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\10\ 1\13\ 1\1f\ 2\15\ 1\1c\ 1"\ 1"\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\10\ 1\13\ 1\1f\ 2\1e\ 1\1c\ 1"\ 1"\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\10\ 1\13\ 1\13\ 2!\ 1\1c\ 1"\ 1"\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\10\ 1\13\ 1\10\ 1c\ 1\0\0\0\ f\0\0\0\r\0\0\0C\0\0\0sE\a\0\0t\0\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0|\ 1\0j\ 1\0\83\0\0\ 1|\ 1\0j\ 2\0t\ 3\0d\ 3\0d\ 4\0d\ 2\0g\ 3\0\83\ 2\0\ 1|\ 1\0j\ 4\0t\ 5\0d#\0d$\0d%\0g\ 3\0\83\ 1\0\83\ 1\0\ 1g\0\0t\ 6\0d\a\0\83\ 1\0D]\12\0}\ 2\0|\ 1\0j\a\0\83\0\0^\ 2\0q[\0}\ 3\0x-\0t\b\0|\ 3\0\83\ 1\0D]\1f\0\\ 2\0}\ 2\0}\ 4\0|\ 4\0j     \0|\ 2\0d\ 3\0g\ 2\0\83\ 1\0\ 1q\80\0Wt\0\0j
++\0|\ 3\0\83\ 1\0}\ 3\0t\0\0d\b\0d\ 2\0\83\ 2\0}\ 5\0|\ 5\0j\ 1\0\83\0\0\ 1|\ 5\0j\ 2\0t\v\0d\ 3\0d\ 4\0d\ 2\0d        \0g\ 4\0\83\ 2\0\ 1|\ 5\0j\ 4\0t\ 5\0d&\0d'\0d(\0d)\0g\ 4\0\83\ 1\0\83\ 1\0\ 1g\0\0t\ 6\0d
++\0\83\ 1\0D]\12\0}\ 2\0|\ 5\0j\a\0\83\0\0^\ 2\0q\13\ 1}\ 6\0x1\0t\b\0|\ 6\0\83\ 1\0D]#\0\\ 2\0}\ 2\0}\ 4\0|\ 4\0j    \0d
++\0|\ 2\0\17d\ 3\0g\ 2\0\83\ 1\0\ 1q8\ 1Wt\0\0j
++\0|\ 6\0\83\ 1\0}\ 6\0t\0\0j
++\0|\ 3\0|\ 6\0\83\ 2\0}\a\0|\a\0j\f\0d\v\0\83\ 1\0\ 1|\a\0j\r\0\83\0\0j\ e\0d\f\0d\r\0g\ 2\0\83\ 1\0\ 1|\a\0j\ f\0\83\0\0d\ 3\0\19}\b\0t\10\0\83\0\0}    \0|      \0j\11\0|\a\0|\b\0g\ 2\0\83\ 1\0\ 1t\12\0\83\0\0}
++\0t\13\0t\14\0\83\ 1\0}\v\0t\ 5\0d\ e\0\83\ 1\0}\f\0|\f\0j\15\0d\ f\0\83\ 1\0\ 1|\v\0j\16\0|\f\0\83\ 1\0\ 1|\v\0j\f\0d\10\0\83\ 1\0\ 1t\17\0d\ 3\0d\ 4\0d\ 2\0\0d\a\0d
++\0d\11\0g\a\0\83\ 1\0}\r\0|\r\0j\f\0d\12\0\83\ 1\0\ 1|
++\0j\18\0|\v\0|      \0d\ 3\0|\r\0\83\ 4\0\ 1t\12\0\83\0\0}
++\0t\13\0t\14\0\83\ 1\0}\v\0t\ 5\0d\13\0\83\ 1\0}\f\0|\f\0j\15\0d\ f\0\83\ 1\0\ 1|\v\0j\16\0|\f\0\83\ 1\0\ 1|\v\0j\f\0d\10\0\83\ 1\0\ 1t\17\0d\ 3\0d\ 4\0d\ 2\0\0d\a\0d
++\0d\11\0g\a\0\83\ 1\0}\r\0|\r\0j\f\0d\12\0\83\ 1\0\ 1|\0\0j\19\0t\1a\0|
++\0j\18\0|\v\0|      \0d\ 3\0|\r\0\83\ 6\0\ 1t\12\0\83\0\0}
++\0t\13\0t\e\0\83\ 1\0}\v\0t\ 5\0d\ e\0\83\ 1\0}\f\0|\f\0j\15\0d\ f\0\83\ 1\0\ 1|\v\0j\16\0|\f\0\83\ 1\0\ 1|\v\0j\f\0d\10\0\83\ 1\0\ 1t\17\0d\ 4\0d\ 2\0d    \0d
++\0d\11\0d\ e\0d\13\0g\a\0\83\ 1\0}\r\0|\r\0j\f\0d\12\0\83\ 1\0\ 1|
++\0j\18\0|\v\0|      \0d\ 3\0|\r\0\83\ 4\0\ 1|\0\0j\1c\0|
++\0j\1d\0\83\0\0j\1e\0|\f\0d\14\0\83\ 2\0\83\ 1\0\ 1t\12\0\83\0\0}
++\0t\13\0t\1f\0\83\ 1\0}\v\0t\ 5\0d\15\0\83\ 1\0}\f\0|\f\0j\15\0d\ f\0\83\ 1\0\ 1|\v\0j\16\0|\f\0\83\ 1\0\ 1|\v\0j\f\0d\10\0\83\ 1\0\ 1t\17\0d\ 4\0d\ 2\0d    \0d
++\0d\11\0d\ e\0d\13\0g\a\0\83\ 1\0}\r\0|\r\0j\f\0d\12\0\83\ 1\0\ 1|\v\0\0|\a\0|\r\0\19\83\ 1\0\ 1|\v\0j!\0d\ 3\0d\ 4\0g\ 2\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 6\0d\ 6\0g\ 6\0d\16\0d\16\0d\17\0d\17\0d\18\0d\18\0g\ 6\0d\16\0d\19\0d\18\0g\ 3\0\83\ 4\0\ 1|\v\0j!\0d\ 2\0g\ 1\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 6\0d\ 6\0g\ 6\0d\16\0d\16\0g\ 2\0d\ 6\0g\ 1\0\83\ 4\0\ 1|\v\0j!\0\0d\a\0d
++\0d\11\0g\ 4\0d\ 5\0d\ 5\0d\ 6\0d\ 5\0d\ 6\0d\ 6\0d\ 5\0d\ 6\0g\b\0d\18\0d\18\0d\1a\0d\1a\0d\16\0d\16\0d\e\0d\e\0d\1c\0d\1c\0g
++\0d\1a\0d\16\0d\e\0d\1d\0d\1e\0g\ 5\0\83\ 4\0\ 1|\v\0\0d\0\0\83\ 1\0\ 1|
++\0j\18\0|\v\0|      \0d\ 3\0|\r\0\83\ 4\0\ 1|\0\0j\1c\0|
++\0j\1d\0\83\0\0j\1e\0|\f\0d\14\0\83\ 2\0\83\ 1\0\ 1t\ 5\0d\1f\0\83\ 1\0}\f\0|\f\0j\15\0\0\83\ 1\0\ 1|\v\0j\16\0|\f\0\83\ 1\0\ 1|\0\0j\19\0t\1a\0|
++\0j\18\0|\v\0|      \0d\ 3\0|\r\0\83\ 6\0\ 1t\ 5\0d\15\0\83\ 1\0}\f\0|\f\0j\15\0d\ f\0\83\ 1\0\ 1|\0\0j\1c\0|
++\0j\1d\0\83\0\0j\1e\0|\f\0d\14\0\83\ 2\0\83\ 1\0\ 1t\12\0\83\0\0}
++\0t\13\0t#\0\83\ 1\0}\v\0t\ 5\0d!\0\83\ 1\0}\f\0|\f\0j\15\0d\ f\0\83\ 1\0\ 1|\v\0j\16\0|\f\0\83\ 1\0\ 1|\v\0j\f\0d\10\0\83\ 1\0\ 1t\17\0d\ 4\0d\ 2\0d    \0d
++\0d\11\0d\ e\0d\13\0g\a\0\83\ 1\0}\r\0|\r\0j\f\0d\12\0\83\ 1\0\ 1|
++\0j\18\0|\v\0|      \0d\ 3\0|\r\0\83\ 4\0\ 1|\0\0j\1c\0|
++\0j\1d\0\83\0\0j\1e\0|\f\0d\14\0\83\ 2\0\83\ 1\0\ 1t\ 5\0d\1f\0\83\ 1\0}\ e\0|\ e\0j\15\0d"\0\83\ 1\0\ 1|\v\0j\16\0|\ e\0\83\ 1\0\ 1|\0\0j\19\0t\1a\0|
++\0j\18\0|\v\0|      \0d\ 3\0|\r\0\83\ 6\0\ 1|\0\0j\1c\0|
++\0j\1d\0\83\0\0j\1e\0|\f\0d\14\0\83\ 2\0\83\ 1\0\ 1t\12\0\83\0\0}
++\0|\0\0j\19\0t\1a\0|
++\0j\18\0|\v\0|      \0d\ 3\0|\r\0\83\ 6\0\ 1|\0\0j\19\0t\1a\0|
++\0j\18\0|\v\0|      \0d\ 3\0|\r\0\83\ 6\0\ 1|\v\0j\16\0|\f\0\83\ 1\0\ 1|
++\0j\18\0|\v\0|      \0d\ 3\0|\r\0\83\ 4\0\ 1d\0\0S(*\0\0\0NR=\ 3\0\0i\ 2\0\0\0i\0\0\0\0i\ 1\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0R>\ 3\0\0i\ 3\0\0\0i\ 5\0\0\0\ 2\0\0s\ 6\0\0\0XX [m]s\b\0\0\0YYY [km]i\a\0\0\0\ 3\0\0\0\0\0anonymousi\ 6\0\0\0R\83\ 1\0\0i\b\0\0\0g»½×Ùß|Û=i\e\0\0\0g333333Ó?gffffffæ?g\9a\99\99\99\99\99¹?g333333ã?g\9a\99\99\99\99\99É?g\9a\99\99\99\99\99Ù?g\0\0\0\0\0\0à?gìQ¸\1e\85ë±?g¸\1e\85ëQ¸\9e?i\1a\0\0\0i\10\ 4\0\0i\19\0\0\0i\1a\ 4\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0ð?(\ 2\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0($\0\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0Rc\0\0\0RY\0\0\0Rn\0\0\0Rq\0\0\0\0\0\0\ 1\0\0R[\ 2\0\0R`\0\0\0RB\0\0\0\0\0\0\ 1\0\0R\9b\ 1\0\0R>\0\0\0RR\ 1\0\0\0\0\0Rw\ 1\0\0R\1c\ 1\0\0Ry\ 1\0\0R{\ 1\0\0Rk\0\0\0R|\ 1\0\0R)\0\0\0R*\0\0\0R\13\ 1\0\0R0\0\0\0R+\ 1\0\0R1\0\0\0R\a\ 1\0\0\0\0\0R\\ 2\0\0R/\ 2\0\0R\ f\ 1\0\0(\ f\0\0\0R  \0\0\0R=\ 3\0\0\0\0\0RH\ 3\0\0\0\0\0R>\ 3\0\0RI\ 3\0\0R\83\0\0\0R\84\0\0\0R\86\0\0\0\0\0\0R\b\0\0\0R\82\ 1\0\0R\83\ 1\0\0t\ 5\0\0\0vals2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testCheckCompatibilityPfl1\92\r\0\0\0\0\0\0\ 2\ f\ 1
++\0\19\ 1\1c\ 1%\ 1\19\0\17\ 1\ f\ 1\ f\ 1
++\0\1c\ 1\1f\ 1%\ 1\19\0\e\ 1\ f\ 1\12\ 1\r\0\19\ 1\10\ 1 \0\13\ 2     \ 1\f\ 1\f\0\r\ 1\r\ 1\r\ 1!\0\r\ 1\16\ 2       \ 1\f\ 1\f\0\r\ 1\r\ 1\r\ 1!\0\r\ 1\1f\ 2       \ 1\f\ 1\f\0\r\ 1\r\ 1\r\ 1!\0\r\ 1\16\ 1\1f\ 2     \ 1\f\ 1\f\0\r\ 1\r\ 1\r\ 1!\0\r\ 1\11\ 1I\ 14\ 1g\ 1\r\ 1\16\ 1\1f\ 1\f\0\r\0\r\ 1\1f\ 1\f\0\r\ 1\1f\ 2     \ 1\f\ 1\f\0\r\ 1\r\ 1\r\ 1!\0\r\ 1\16\ 1\1f\ 1\f\0\r\ 1\r\ 1\1f\ 1\1f\ 2   \ 1\1f\ 1\1f\ 1\r\ 1\16\ 1c\ 1\0\0\0\a\0\0\0\14\0\0\0C\0\0\0s\1a\ 2\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0\83\ 1\0}\ 2\0|\ 2\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}\ 3\0|\ 3\0j\ 3\0|\ 2\0|\ 2\0\83\ 2\0\ 1|\ 3\0j\ 4\0\83\0\0}\ 4\0t\ 5\0d\ 3\0d\ 4\0\83\ 2\0}\ 5\0|\ 5\0j\ 3\0|\ 4\0j\ 6\0\83\0\0\83\ 1\0\ 1|\ 5\0j\a\0d\ 5\0\83\ 1\0\ 1t\b\0\83\0\0}\ 6\0|\ 6\0j    \0d\ 5\0|\ 5\0\83\ 2\0\ 1|\ 6\0j
++\0d\ 4\0t\v\0t\f\0t\r\0d\ 6\0d\a\0\83\ 2\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\ 6\0j\ e\0d\ 4\0t\v\0d\b\0d\b\0d\b\0d\b\0d\b\0d  \0d      \0d      \0d      \0d      \0d      \0d\ 5\0d\b\0d
++\0d
++\0d
++\0g\10\0\83\ 1\0\83\ 2\0\ 1|\ 6\0j\ f\0|\ 1\0d\v\0\83\ 2\0\ 1~\ 6\0~\ 2\0~\ 3\0~\ 4\0~\ 5\0t\10\0j\11\0|\ 1\0\83\ 1\0}\ 6\0|\0\0j\12\0d\ e\0|\ 6\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\14\0|\ 6\0j\ 6\0\83\0\0j\15\0t\0\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0g\10\0\83\ 1\0d\r\0\83\ 2\0\83\ 1\0\ 1|\0\0j\14\0|\ 6\0j\16\0d\ 4\0\83\ 1\0j\15\0t\v\0t\f\0t\r\0d\ 6\0d\a\0\83\ 2\0\83\ 1\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\14\0|\ 6\0j\17\0d\ 4\0\83\ 1\0j\15\0t\v\0d\b\0d\b\0d\b\0d\b\0d\b\0d      \0d      \0d      \0d      \0d      \0d      \0d\ 5\0d\b\0d
++\0d
++\0d
++\0g\10\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1d\0\0S(\1f\0\0\0Ns\f\0\0\0Pyfile71.medi\ 4\0\0\0\ 2\0\0i\ 1\0\0\0i\0\0\0\0i
++\0\0\0i\1a\0\0\0iÿÿÿÿiþÿÿÿiýÿÿÿi\ 2\0\0\0i\ 3\0\0\0g\11ê-\81\99\97q=(\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 2\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\ 2\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 2\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 3\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 3\0\0\0(\ 2\0\0\0i\ 2\0\0\0i\ 3\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 3\0\0\0(\18\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0\ 1\0\0R[\0\0\0\0\0\0R]\0\0\0R>\0\0\0Rj\0\0\0R\98\0\0\0Rk\0\0\0Rm\0\0\0Rn\0\0\0\0\0\0R\v\0\0\0R'\0\0\0R(\0\0\0R+\0\0\0R,\0\0\0R0\0\0\0R1\0\0\0R\8c\ 2\0\0R\9e\0\0\0(\a\0\0\0R    \0\0\0R9\ 1\0\0\ 2\0\0R\80\0\0\0\0\0\0R{\ 2\0\0R\83\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\15\0\0\0testWRMeshWithNoCellsä\r\0\0s*\0\0\0\0\ 1\ 6\ 1\f\0
++\ 1     \0\10\0\f\ 1\ f\0\13\0\r\ 1     \ 1\10\ 1%\ 1F\ 1\10\ 1\ f\ 2\ f\ 1\16\ 1U\ 14\ 1U\ 1c\ 1\0\0\0\14\0\0\0
++\0\0\0C\0\0\0\ 3\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0t\ 1\0\83\ 2\0}\ 2\0|\ 2\0j\ 2\0\83\0\0\ 1|\ 2\0j\ 3\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 4\0\83\ 1\0\ 1|\ 2\0j\ 4\0t\ 5\0d\a\0d\a\0d\b\0d\b\0d\b\0d\a\0d\a\0d\b\0g\b\0d     \0d\ 4\0\83\ 3\0\83\ 1\0\ 1g\0\0t\ 6\0d      \0\83\ 1\0D]\12\0}\ 3\0|\ 2\0j\a\0\83\0\0^\ 2\0qv\0}\ 4\0x7\0t\b\0|\ 4\0\83\ 1\0D])\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j      \0t
++\0|\ 3\0\83\ 1\0d
++\0\14d\a\0g\ 2\0\83\ 1\0\ 1q\9b\0Wt\0\0j\v\0|\ 4\0\83\ 1\0j\f\0\83\0\0}\ 6\0|\ 6\0j\r\0\83\0\0\ 1g\0\0t\ 6\0d\v\0\83\ 1\0D]\12\0}\ 3\0|\ 2\0j\a\0\83\0\0^\ 2\0\0}\ 4\0x7\0t\b\0|\ 4\0\83\ 1\0D])\0\\ 2\0}\ 3\0}\ 5\0|\ 5\0j     \0t
++\0|\ 3\0\83\ 1\0d
++\0\14d
++\0g\ 2\0\83\ 1\0\ 1q\19\ 1Wt\0\0j\v\0|\ 4\0\83\ 1\0j\f\0\83\0\0}\a\0|\a\0j\r\0\83\0\0\ 1|\a\0j\ e\0\83\0\0\ 1t\ f\0j\10\0|\ 6\0|\a\0\83\ 2\0}\ 2\0t\11\0\83\0\0}\b\0|\b\0j\12\0d\ 3\0|\ 2\0\83\ 2\0\ 1t\13\0d\ 3\0d\ 4\0d\ 6\0g\ 3\0\83\ 1\0}   \0|      \0j\14\0d\f\0\83\ 1\0\ 1t\13\0\0d\r\0d\ e\0g\ 3\0\83\ 1\0}
++\0|
++\0j\14\0d\ f\0\83\ 1\0\ 1t\13\0d\ 3\0d\ 5\0d\ 4\0d      \0d\v\0d\r\0g\ 6\0\83\ 1\0}\v\0|\v\0j\14\0d\10\0\83\ 1\0\ 1|\b\0j\15\0d\ 3\0\0|
++\0|\v\0g\ 3\0\83\ 2\0\ 1|\b\0j\16\0|\ 1\0d\ 4\0\83\ 2\0\ 1~\b\0t\11\0|\ 1\0\83\ 1\0}\f\0|\0\0j\17\0|\f\0j\18\0d\ 3\0d\f\0\83\ 2\0j\19\0|   \0\83\ 1\0\83\ 1\0\ 1|\0\0j\17\0|\f\0j\18\0d\ 3\0d\ f\0\83\ 2\0j\19\0|
++\0\83\ 1\0\83\ 1\0\ 1|\0\0j\17\0|\f\0j\18\0d\ 3\0d\10\0\83\ 2\0j\19\0|\v\0\83\ 1\0\83\ 1\0\ 1|\0\0j\17\0|\f\0j\1a\0d\ 3\0\83\ 1\0j\19\0|\ 2\0d\11\0\83\ 2\0\83\ 1\0\ 1t\e\0t\1c\0\83\ 1\0}\r\0|\r\0j\14\0d\12\0\83\ 1\0\ 1|\r\0j\1d\0|\ 2\0\83\ 1\0\ 1t\ 5\0d\13\0\83\ 1\0}\ e\0|\ e\0j\1e\0\83\0\0\ 1t\ 5\0d\13\0\83\ 1\0}\ f\0|\ f\0j\1e\0d\14\0\83\ 1\0\ 1t\ 5\0j\1f\0|\ e\0|\ f\0\83\ 2\0}\10\0|\10\0\0d\15\0d\16\0g\ 2\0\83\ 1\0\ 1|\r\0j!\0|\10\0\83\ 1\0\ 1|\r\0j"\0\83\0\0\ 1|\r\0j#\0d\17\0d\ 5\0d\ 4\0\83\ 3\0\ 1t$\0\83\0\0}\11\0|\11\0j%\0|\r\0\83\ 1\0\ 1|\11\0j\16\0|\ 1\0d\ 3\0\83\ 2\0\ 1t$\0|\ 1\0\83\ 1\0}\12\0|\12\0j&\0t\1c\0d\ 3\0|\f\0\83\ 3\0}\13\0|\0\0j\17\0|\13\0j\19\0|\r\0d\11\0d\11\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\18\0\0\0Ns\f\0\0\0Pyfile72.medR \ 2\0\0i\0\0\0\0i\ 2\0\0\0i\ 1\0\0\0i\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0g\0\0\0\0\0\0ø?i\ 5\0\0\0R\93\ 2\0\0i\ 6\0\0\0i\a\0\0\0R\95\ 2\0\0\ 1\0\0g\11ê-\81\99\97q=t\f\0\0\0MyFirstFieldi      \0\0\0id\0\0\0s\a\0\0\0mm [kg]s\a\0\0\0sds [m]gffffff\16@('\0\0\0Rz\0\0\0R`\0\0\0R]\0\0\0R^\0\0\0Rc\0\0\0RY\0\0\0Rn\0\0\0Rq\0\0\0\0\0\0\ 1\0\0RD\ 3\0\0t\10\0\0\0Merge1SGTUMeshesRâ\ 1\0\0t\10\0\0\0convertAllToPolyt\1d\0\0\0convertLinearCellsToQuadraticR[\0\0\0R[\ 2\0\0R>\0\0\0Rj\0\0\0Rk\0\0\0RB\0\0\0Rl\0\0\0R\v\0\0\0R0\0\0\0RG\0\0\0R1\0\0\0R}\0\0\0Rw\ 1\0\0R\13\ 1\0\0\0\0\0Ry\ 1\0\0t\ 4\0\0\0MeldRÃ\ 1\0\0R{\ 1\0\0Rd\0\0\0\0\0\0\0\0\0R%\ 1\0\0R\97\ 1\0\0(\14\0\0\0R        \0\0\0R9\ 1\0\0R\83\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\84\0\0\0R\86\0\0\0R\93\ 2\0\0R\95\ 2\0\0\ 1\0\0t\a\0\0\0mm_readR\b\0\0\0R\17\ 3\0\0Rz\ 2\0\0\ 1\0\0\0\0\0t\a\0\0\0ff_readt\ 6\0\0\0f_read(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testWRQPolyg1÷\r\0\0sl\0\0\0\0\ 1\ 6\ 1\ f\0
++\ 1\19\ 11\ 2%\ 1\19\ 1\1d\ 1\ 4\ 1\15\ 1
++\ 2%\ 1\19\ 1\1d\ 1\ 4\ 1\15\ 1
++\ 1
++\ 2\12\ 2   \ 1\10\ 1\15\0\r\ 1\15\0\r\ 1\1e\0\r\ 1\19\ 2\10\ 1\ 3\ 2\f\ 1"\ 1"\ 1"\ 1"\ 2\f\0\r\ 1\r\ 1\f\0
++\ 1\f\0\r\ 1\12\0\13\ 1\r\0
++\ 1\13\ 1   \ 1\r\ 1\10\ 2\f\ 1\15\ 1\1c\ 1c\ 1\0\0\0\f\0\0\0    \0\0\0C\0\0\0\ 3\0\0d\ 1\0}\ 1\0t\0\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0g\ 6\0\83\ 1\0}\ 2\0t\ 1\0d\ 5\0d\ 3\0\83\ 2\0}\ 3\0|\ 3\0j\ 2\0|\ 2\0\83\ 1\0\ 1|\ 3\0j\ 3\0\83\0\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 2\0d\ 6\0d\a\0d\ 3\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 4\0t\ 5\0d\b\0d\ 3\0d\a\0d\ 4\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 6\0\83\0\0\ 1t\a\0\83\0\0}\ 4\0|\ 4\0j\b\0d\ 2\0|\ 3\0\83\ 2\0\ 1t      \0\83\0\0}\ 5\0|\ 5\0j
++\0|\ 4\0\83\ 1\0\ 1t\v\0\83\0\0}\ 6\0d\b\0d\12\0g\ 1\0\14}\a\0t\r\0\83\0\0}\b\0|\ 6\0j\ e\0|\b\0\83\ 1\0\ 1t\ f\0t\10\0\83\ 1\0}        \0|      \0j\11\0|\ 3\0\83\ 1\0\ 1|    \0j\12\0d   \0\83\ 1\0\ 1|  \0j\13\0d
++\0d\ 4\0d\ 4\0\83\ 3\0\ 1|  \0j\14\0d\v\0\83\ 1\0\ 1t\0\0d\f\0d\ 6\0d\a\0d\ 4\0d\ 6\0d\a\0d\ 4\0d\f\0g\b\0\83\ 1\0|\a\0d\ 2\0<|\a\0d\ 2\0\19j\15\0d\ 2\0d\r\0\83\ 2\0\ 1|        \0j\16\0|\a\0d\ 2\0\19\83\ 1\0\ 1|\b\0j\17\0|  \0\83\ 1\0\ 1|  \0j\13\0d\ e\0d\ 3\0d\ 4\0\83\ 3\0\ 1t\0\0d\ 4\0d\f\0d\ 6\0d\a\0d\f\0d\ 6\0d\a\0d\ 4\0g\b\0\83\ 1\0|\a\0d\ 4\0<|\a\0d\ 4\0\19j\15\0d\ 2\0d\r\0\83\ 2\0\ 1|  \0j\16\0|\a\0d\ 4\0\19\83\ 1\0\ 1|\b\0j\17\0|  \0\83\ 1\0\ 1|  \0j\13\0d\ f\0d\a\0d\ 4\0\83\ 3\0\ 1t\0\0d\a\0d\ 4\0d\f\0d\ 6\0d\ 4\0d\f\0d\ 6\0d\a\0g\b\0\83\ 1\0|\a\0d\ 3\0<|\a\0d\ 3\0\19j\15\0d\ 2\0d\r\0\83\ 2\0\ 1|  \0j\16\0|\a\0d\ 3\0\19\83\ 1\0\ 1|\b\0j\17\0|  \0\83\ 1\0\ 1|  \0j\13\0d\10\0d\b\0d\ 4\0\83\ 3\0\ 1t\0\0d\ 6\0d\a\0d\ 4\0d\f\0d\a\0d\ 4\0d\f\0d\ 6\0g\b\0\83\ 1\0|\a\0d\a\0<|\a\0d\a\0\19j\15\0d\ 2\0d\r\0\83\ 2\0\ 1|  \0j\16\0|\a\0d\a\0\19\83\ 1\0\ 1|\b\0j\17\0|  \0\83\ 1\0\ 1xz\0t\18\0|\a\0\83\ 1\0D]l\0\\ 2\0}
++\0}\v\0|\0\0j\19\0|\ 6\0d\ 2\0\19|
++\0\19j\1a\0\83\0\0j\e\0|\v\0d\11\0\83\ 2\0\83\ 1\0\ 1|\ 6\0d\ 2\0\19|
++\0\19j\1c\0\83\0\0\ 1|\0\0j\19\0|\ 6\0d\ 2\0\19|
++\0\19j\1a\0\83\0\0j\e\0|\v\0d\11\0\83\ 2\0\83\ 1\0\ 1\ 2W|\ 6\0j\1c\0\83\0\0\ 1xA\0t\18\0|\a\0\83\ 1\0D]3\0\\ 2\0}
++\0}\v\0|\0\0j\19\0|\ 6\0d\ 2\0\19|
++\0\19j\1a\0\83\0\0j\e\0|\v\0d\11\0\83\ 2\0\83\ 1\0\ 1qb\ 3W|\ 6\0d\ 2\0\19j\1c\0\83\0\0\ 1xA\0t\18\0|\a\0\83\ 1\0D]3\0\\ 2\0}
++\0}\v\0|\0\0j\19\0|\ 6\0d\ 2\0\19|
++\0\19j\1a\0\83\0\0j\e\0|\v\0d\11\0\83\ 2\0\83\ 1\0\ 1\ 3Wd\12\0S(\19\0\0\0s\99\0\0\0
++        This test checks that a call to loadArraysIfNecessary works (does nothing) on field data structure whatever its level 1TS, MTS, Fields.
++        s\f\0\0\0Pyfile77.medi\0\0\0\0i\ 2\0\0\0i\ 1\0\0\0\ 2\0\0i\ 5\0\0\0i\ 3\0\0\0i\ 4\0\0\0\0\0\0g\9a\99\99\99\99\99ñ?t\v\0\0\0myELNOFieldi\a\0\0\0t\ 5\0\0\0Comp0g\9a\99\99\99\99\99\ 1@gffffff
++@g\9a\99\99\99\99\99\11@g\11ê-\81\99\97q=N(\ 3\0\0\0i\0\0\0\0i\0\0\0\0i\0\0\0\0(\ 3\0\0\0i\ 2\0\0\0i\ 1\0\0\0i\0\0\0\0(\ 3\0\0\0i\ 1\0\0\0i\0\0\0\0i\0\0\0\0(\ 3\0\0\0i\ 1\0\0\0i\ 1\0\0\0i\0\0\0\0(\ 3\0\0\0i\ 2\0\0\0i\0\0\0\0i\0\0\0\0(\ 3\0\0\0i\0\0\0\0i\ 1\0\0\0i\0\0\0\0(\1d\0\0\0RY\0\0\0R[\0\0\0Rc\0\0\0R]\0\0\0R^\0\0\0R`\0\0\0Rb\0\0\0R>\0\0\0Rj\0\0\0RP\ 1\0\0R7\ 2\0\0R[\ 1\0\0R/\ 2\0\0\0\0\0R\\ 1\0\0Rw\ 1\0\0R\ f\ 1\0\0\0\0\0\0\0\0\0\0\0RB\0\0\0R\97\0\0\0R{\ 1\0\0RY\ 1\0\0\0\0\0R0\0\0\0R+\ 1\0\0R1\0\0\0Rw\ 3\0\0(\f\0\0\0R      \0\0\0R9\ 1\0\0R\81\0\0\0R\83\0\0\0R\86\0\0\0\0\0\0Rl\ 1\0\0t\ 4\0\0\0arrsRB\ 2\0\0\0\0\0\0\0\0\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt'\0\0\0testLoadIfNecessaryOnFromScratchFields0.\ e\0\0sl\0\0\0\0\ 4\ 6\ 1\1e\ 1\ f\0\r\ 1
++\ 1\1c\ 1\1c\ 1
++\ 2     \0\10\ 1     \0\r\ 1     \ 1\r\ 2     \0\r\ 1\f\0\r\0\r\ 1\13\ 1\r\ 1(\0\14\ 1\11\ 1\r\ 2\13\ 1(\0\14\ 1\11\ 1\r\ 2\13\ 1(\0\14\ 1\11\ 1\r\ 2\13\ 1(\0\14\ 1\11\ 1\r\ 2\19\ 1'\ 1\12\ 1'\ 1\ 4\ 1
++\ 1\19\ 1'\ 1\ 4\ 1\ e\ 1\19\ 1'\ 1\ 4\ 1c\ 1\0\0\0\11\0\0\0\1c\0\0\0C\0\0\0sQ\ 6\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 2\0d\ 3\0d\ 4\0d\ 2\0d\ 3\0d\ 5\0d\ 2\0d\ 3\0d\ 2\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 3\0d\ 5\0d\ 4\0d\ 3\0d\ 2\0d\ 5\0d\ 3\0d\ 4\0d\ 5\0d\ 3\0d\ 5\0d\ 5\0d\ 3\0g\e\0d\ 6\0d\a\0\83\ 3\0}\ 2\0d\b\0d\a\0\0d
++\0d
++\0d    \0d\v\0d   \0d\f\0d\v\0d\r\0d\ e\0d  \0d\a\0d\ e\0d\ f\0d\f\0d  \0g\12\0}\ 3\0t\ 1\0d\10\0d\a\0\83\ 2\0}\ 4\0|\ 4\0j\ 2\0|\ 2\0\83\ 1\0\ 1|\ 4\0j\ 3\0\83\0\0\ 1xx\0d\b\0d
++\0d\v\0d\a\0g\ 4\0d
++\0d\v\0d\a\0d      \0g\ 4\0d\v\0d\a\0d     \0d\f\0g\ 4\0d\a\0d     \0d\f\0d\r\0g\ 4\0d     \0d\f\0d\r\0d\ e\0g\ 4\0d\f\0d\r\0d\ e\0d\ f\0g\ 4\0g\ 6\0D]\16\0}\ 5\0|\ 4\0j\ 4\0t\ 5\0|\ 5\0\83\ 2\0\ 1q,\ 1Wxx\0d\b\0d
++\0d\v\0d\a\0d      \0g\ 5\0d
++\0d\v\0d\a\0d      \0d\f\0g\ 5\0d\v\0d\a\0d  \0d\f\0d\r\0g\ 5\0d\a\0d  \0d\f\0d\r\0d\ e\0g\ 5\0d  \0d\f\0d\r\0d\ e\0d\ f\0g\ 5\0g\ 5\0D]\16\0}\ 5\0|\ 4\0j\ 4\0t\ 6\0|\ 5\0\83\ 2\0\ 1\ 1Wxr\0d\b\0d
++\0d\v\0d\a\0d      \0d\f\0g\ 6\0d
++\0d\v\0d\a\0d      \0d\f\0d\r\0g\ 6\0d\v\0d\a\0d       \0d\f\0d\r\0d\ e\0g\ 6\0d\a\0d       \0d\f\0d\r\0d\ e\0d\ f\0g\ 6\0g\ 4\0D]\16\0}\ 5\0|\ 4\0j\ 4\0t\a\0|\ 5\0\83\ 2\0\ 1q\1c\ 2W|\ 4\0j\b\0\83\0\0\ 1t\ 1\0\83\0\0}\ 6\0|\ 6\0j   \0d\10\0\83\ 1\0\ 1|\ 6\0j
++\0d\v\0\83\ 1\0\ 1|\ 6\0j\ 3\0d\f\0\83\ 1\0\ 1|\ 6\0j\ 4\0t\v\0d\a\0|\ 3\0\0d\ e\0!\83\ 3\0\ 1|\ 6\0j\ 4\0t\v\0d\a\0|\ 3\0d\ e\0d\11\0!\83\ 3\0\ 1|\ 6\0j\ 4\0t\f\0d   \0|\ 3\0d\b\0d        \0!\83\ 3\0\ 1|\ 6\0j\ 4\0t\f\0d        \0|\ 3\0d\11\0d\12\0!\83\ 3\0\ 1|\ 6\0j\ 4\0t\f\0d       \0|\ 3\0d\12\0d\13\0!\83\ 3\0\ 1|\ 6\0j\ 2\0|\ 2\0\83\ 1\0\ 1t\ 1\0d\10\0d\b\0\83\ 2\0}\a\0|\a\0j\ 2\0|\ 2\0\83\ 1\0\ 1|\a\0j\ 3\0\83\0\0\ 1|\a\0j\ 4\0t\r\0d\v\0g\ 1\0\83\ 2\0\ 1|\a\0j\ 4\0t\r\0d\a\0g\ 1\0\83\ 2\0\ 1|\a\0j\ 4\0t\r\0d      \0g\ 1\0\83\ 2\0\ 1|\a\0j\ 4\0t\r\0d\f\0g\ 1\0\83\ 2\0\ 1t\ e\0\83\0\0}\b\0|\b\0j\ f\0d\b\0|\ 4\0\83\ 2\0\ 1|\b\0j\ f\0d\14\0|\ 6\0\83\ 2\0\ 1|\b\0j\ f\0d\15\0|\a\0\83\ 2\0\ 1|\b\0j\10\0|\ 1\0d\v\0\83\ 2\0\ 1t\11\0j\12\0|\ 1\0\83\ 1\0}\b\0t\13\0\83\0\0}      \0t\14\0\83\0\0}
++\0t\15\0\83\0\0}\v\0x\99\0|\b\0j\16\0\83\0\0D]\8b\0}\f\0x\82\0|\b\0j\17\0|\f\0\83\ 1\0D]q\0}\r\0|\b\0j\18\0|\r\0\83\ 1\0}\ e\0t\19\0t\1a\0\83\ 1\0}\ f\0|\ f\0j\e\0|\ e\0\83\ 1\0\ 1t\0\0|\ f\0j\1c\0\83\0\0\83\ 1\0}\10\0|\10\0j\1d\0\83\0\0\ 1|\ f\0j\1e\0|\10\0\83\ 1\0\ 1|\ f\0j      \0d\16\0\83\ 1\0\ 1|\v\0j\1f\0|\ f\0\83\ 1\0\ 1q\a\ 4Wqñ\ 3W|\0\0\0|\b\0j\16\0\83\0\0d\1e\0\83\ 2\0\ 1x$\0d\b\0d\14\0d\15\0g\ 3\0D]\13\0}\f\0|\b\0j!\0|\f\0\83\ 1\0\ 1\ 4W|
++\0j"\0|\v\0\83\ 1\0\ 1|  \0j#\0|
++\0\83\ 1\0\ 1|        \0j\10\0|\ 1\0d\b\0\83\ 2\0\ 1\0~
++\0~\v\0t\13\0|\ 1\0\83\ 1\0}        \0|\0\0\0t$\0|     \0\83\ 1\0d
++\0\83\ 2\0\ 1|\0\0\0t$\0|       \0d\b\0\19\83\ 1\0d
++\0\83\ 2\0\ 1|        \0d\b\0\19d\b\0\19}\v\0|\0\0\0|\v\0j%\0\83\0\0d\b\0d\b\0d\1f\0d\17\0d\17\0f\ 4\0g\ 1\0f\ 2\0d\a\0d\b\0\0d\17\0d\17\0f\ 4\0g\ 1\0f\ 2\0d    \0d\b\0d!\0d\17\0d\17\0f\ 4\0g\ 1\0f\ 2\0d\12\0d\b\0d"\0d\17\0d\17\0f\ 4\0g\ 1\0f\ 2\0d\18\0d\b\0d#\0d\17\0d\17\0f\ 4\0g\ 1\0f\ 2\0d\1a\0d\b\0d$\0d\17\0d\17\0f\ 4\0g\ 1\0f\ 2\0g\ 6\0\83\ 2\0\ 1|\0\0j&\0|\v\0j'\0\83\0\0j(\0t\0\0d\b\0d
++\0d\v\0d\a\0d\b\0d
++\0d\b\0d
++\0d\v\0d\b\0d
++\0d\v\0d\a\0d      \0d\f\0d\b\0d
++\0d\v\0d\a\0d      \0d\b\0d
++\0d\v\0d\a\0g\18\0\83\ 1\0d\1c\0\83\ 2\0\83\ 1\0\ 1d\1d\0S(%\0\0\0\0\0\0 This test is very important, because the same mechanism is used by the MEDReader to generate a field on all the mesh without any processing and memory.
++        s\f\0\0\0Pyfile78.medg333333Ó¿g\0\0\0\0\0\0\0\0g\9a\99\99\99\99\99É?gffffffæ?i        \0\0\0i\ 3\0\0\0i\0\0\0\0i\ 4\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0\ 2\0\0i
++\0\0\0i\ e\0\0\0i\12\0\0\0iÿÿÿÿiýÿÿÿRä\0\0\0R&\0\0\0i\ f\0\0\0i\14\0\0\0i\10\0\0\0i\18\0\0\0g\11ê-\81\99\97q=N(\ 3\0\0\0i\0\0\0\0iÿÿÿÿiýÿÿÿ(\ 2\0\0\0i\0\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\ 6\0\0\0(\ 2\0\0\0i\ 6\0\0\0i  \0\0\0(\ 2\0\0\0i       \0\0\0i\ f\0\0\0(\ 2\0\0\0i\ f\0\0\0i\14\0\0\0(\ 2\0\0\0i\14\0\0\0i\18\0\0\0()\0\0\0RY\0\0\0R[\0\0\0Rc\0\0\0R]\0\0\0R^\0\0\0t\v\0\0\0NORM_TETRA4t
++\0\0\0NORM_PYRA5t\v\0\0\0NORM_PENTA6R\0\ 2\0\0RB\0\0\0R\\0\0\0R_\0\0\0R`\0\0\0Rg\0\0\0R>\0\0\0Rj\0\0\0R\v\0\0\0R'\0\0\0R(\0\0\0R[\ 1\0\0\0\0\0\0\0\0R,\0\0\0Rr\0\0\0Rs\0\0\0Rw\ 1\0\0R\13\ 1\0\0\0\0\0t\19\0\0\0getNumberOfTuplesExpectedRy\ 1\0\0R{\ 1\0\0R%\ 1\0\0R+\0\0\0Rx\0\0\0RE\ 3\0\0R\\ 1\0\0Ry\0\0\0\ 1\0\0R0\0\0\0R+\ 1\0\0R1\0\0\0(\11\0\0\0R     \0\0\0R9\ 1\0\0R\81\0\0\0R\82\0\0\0\0\0\0\0\0\0R\84\0\0\0R\16\ 2\0\0R\86\0\0\0Rl\ 1\0\0Rm\ 1\0\0\0\0\0\0\0\0t\ 2\0\0\0gtt\ 2\0\0\0p0R\b\0\0\0\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt+\0\0\0testField1TSSetFieldNoProfileSBTPerGeoTypese\ e\0\0s\8a\0\0\0\0\ 3\ 6\ 1c\ 1<\ 1\ f\0\r\ 1
++\ 1g\ 1\10\ 1\ 4\ 1g\ 1\10\ 1\ 4\ 1a\ 1\10\ 1\ 4\ 1
++\ 1     \0\r\ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\r\ 1\ f\0\r\ 1
++\ 1\13\ 1\13\ 1\13\ 1\13\ 2     \ 1\10\ 1\10\ 1\10\ 1\10\ 2\ f\ 1     \ 1       \ 1       \ 1\13\ 1\16\ 1\ f\ 1\f\0\r\ 1\12\0
++\ 1\r\0\r\ 1\r\ 1\ 4\ 1\ 4\ 1\16\ 1\16\ 1\r\ 1\ 4\ 1\r\ 1\r\ 1\10\ 1     \ 2\f\ 1\16\ 1\1a\ 1\ e\ 1¦\ 1m\ 1c\ 1\0\0\0\a\0\0\0\1c\0\0\0C\0\0\0\ 2\0\0d\ 1\0}\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 5\0d\ 4\0d\ 6\0d\ 4\0d\a\0d\ 6\0d\b\0d     \0d\ 4\0d\ 3\0d        \0d
++\0d\a\0d\ 4\0g\12\0}\ 2\0t\0\0\83\0\0}\ 3\0t\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 2\0d\ 6\0\83\ 1\0\ 1t\ 3\0d\v\0d\v\0d\f\0d\r\0d\v\0d\f\0d\ e\0d\v\0d\f\0d\v\0d\r\0d\f\0d\r\0d\r\0d\f\0d\ e\0d\r\0d\f\0d\v\0d\ e\0d\f\0d\r\0d\ e\0d\f\0d\ e\0d\ e\0d\f\0g\e\0d\ f\0d\ 3\0\83\ 3\0}\ 5\0|\ 4\0j\ 4\0d\a\0\83\ 1\0\ 1|\ 4\0j\ 5\0t\ 6\0d\ 3\0|\ 2\0d\ 4\0d       \0!\83\ 3\0\ 1|\ 4\0j\ 5\0t\ 6\0d\ 3\0|\ 2\0d  \0d\10\0!\83\ 3\0\ 1|\ 4\0j\ 5\0t\a\0d\ 4\0|\ 2\0d\ 2\0d\ 4\0!\83\ 3\0\ 1|\ 4\0j\ 5\0t\a\0d\ 4\0|\ 2\0d\10\0d\11\0!\83\ 3\0\ 1|\ 4\0j\ 5\0t\a\0d\ 4\0|\ 2\0d\11\0d\12\0!\83\ 3\0\ 1|\ 4\0j\b\0|\ 5\0\83\ 1\0\ 1|\ 3\0j        \0d\ 2\0|\ 4\0\83\ 2\0\ 1t\ 1\0\83\0\0}\ 6\0|\ 6\0j\ 2\0d\ 2\0\83\ 1\0\ 1|\ 6\0j\b\0|\ 5\0\83\ 1\0\ 1|\ 6\0j\ 4\0\83\0\0\ 1|\ 6\0j\ 5\0t
++\0d\ 6\0g\ 1\0\83\ 2\0\ 1|\ 6\0j\ 5\0t
++\0d\ 3\0g\ 1\0\83\ 2\0\ 1|\ 6\0j\ 5\0t
++\0d\ 4\0g\ 1\0\83\ 2\0\ 1|\ 6\0j\ 5\0t
++\0d\a\0g\ 1\0\83\ 2\0\ 1|\ 3\0j       \0d\13\0|\ 6\0\83\ 2\0\ 1|\0\0j\v\0|\ 3\0j\f\0\83\0\0d\14\0\83\ 2\0\ 1|\0\0j\v\0|\ 3\0j\r\0d\ 2\0\83\ 1\0j\f\0\83\0\0d\14\0\83\ 2\0\ 1|\ 3\0j\ e\0\83\0\0\ 1|\0\0j\v\0|\ 3\0j\ f\0t\ 6\0\83\ 1\0j\f\0\83\0\0d\14\0\83\ 2\0\ 1|\ 3\0j\10\0d\15\0\83\ 1\0\ 1|\0\0j\v\0|\ 3\0j\f\0\83\0\0d\15\0\83\ 2\0\ 1|\0\0j\v\0|\ 3\0j\ f\0t\ 6\0\83\ 1\0j\f\0\83\0\0d\15\0\83\ 2\0\ 1|\0\0j\v\0|\ 3\0j\ f\0t\a\0\83\ 1\0j\f\0\83\0\0d\15\0\83\ 2\0\ 1|\0\0j\v\0|\ 3\0j\ f\0t
++\0\83\ 1\0j\f\0\83\0\0d\15\0\83\ 2\0\ 1|\0\0j\v\0|\ 3\0j\r\0d\ 2\0\83\ 1\0j\f\0\83\0\0d\15\0\83\ 2\0\ 1d\16\0S(\17\0\0\0s\13\ 1\0\0 This test is a small but important one for MEDReader in sauv mode. When .sauv file is loaded the conversion is performed in memory and a preparation is done then.
++        This preparation makes access to internal MEDCouplingMesh pointers whose name must be updated.
++        s\f\0\0\0Pyfile79.medi\0\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0g333333Ó¿g\0\0\0\0\0\0\0\0g\9a\99\99\99\99\99É?gffffffæ?i   \0\0\0i
++\0\0\0i\ e\0\0\0i\12\0\0\0iþÿÿÿR&\0\0\0t\ 3\0\0\0abcN(\11\0\0\0R>\0\0\0R[\0\0\0R\\0\0\0RY\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0Rc\0\0\0Rj\0\0\0Rg\0\0\0R+\0\0\0RC\0\0\0R}\0\0\0t\17\0\0\0forceComputationOfPartsRs\0\0\0RB\0\0\0(\a\0\0\0R       \0\0\0R9\ 1\0\0R\82\0\0\0R\86\0\0\0\0\0\0R\81\0\0\0R\85\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\17\0\0\0testMEDFileUMeshSetName«\ e\0\0sD\0\0\0\0\ 4\ 6\ 1<\ 1  \ 1       \0\r\ 1c\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\r\ 1\10\ 1   \0\r\0\r\ 1
++\ 1\13\ 1\13\ 1\13\ 1\13\ 1\10\ 1\16\ 1\1f\ 1
++\ 1\1f\ 1\r\ 1\16\ 1\1f\ 1\1f\ 1\1f\ 1\1f\ 1c\ 1\0\0\0\ e\0\0\0\1c\0\0\0C\0\0\0\a\0\0d\ 1\0}\ 1\0t\0\0\83\0\0}\ 2\0|\ 2\0j\ 1\0d\ 2\0\83\ 1\0\ 1t\ 2\0d\ 3\0\83\ 1\0}\ 3\0|\ 3\0j\ 3\0\83\0\0\ 1|\ 2\0j\ 4\0|\ 3\0|\ 3\0\83\ 2\0\ 1|\ 2\0j\ 5\0\83\0\0}\ 4\0|\0\0j\ 6\0d\ 4\0|\ 4\0\83\ 2\0\ 1t\a\0t\b\0\83\ 1\0}\ 5\0|\ 5\0j\ 1\0d\ 5\0\83\ 1\0\ 1|\ 5\0j      \0|\ 2\0\83\ 1\0\ 1t\ 2\0|\ 4\0\83\ 1\0}\ 3\0|\ 3\0j\ 3\0\83\0\0\ 1t
++\0\83\0\0}\ 6\0|\ 6\0j   \0|\ 2\0\83\ 1\0\ 1t\v\0\83\0\0}\a\0\0t\f\0|\ 4\0\83\ 1\0D]\9e\0}\b\0t\r\0|\b\0\83\ 1\0d\ 6\0\17|\b\0d\a\0\17|\b\0\vd\b\0\18f\ 3\0}    \0|\ 5\0j\ e\0|        \0\8c\0\0\ 1t\ 2\0|\ 4\0\83\ 1\0}
++\0t\ f\0|\ 4\0\83\ 1\0}\v\0|\v\0j\ 3\0|\b\0\83\ 1\0\ 1|\v\0|\ 4\0;}\v\0|\ 3\0|
++\0|\v\0<|\ 5\0j\10\0|
++\0\83\ 1\0\ 1t\11\0\83\0\0}\f\0|\f\0j\12\0|\ 5\0\83\ 1\0\ 1|\a\0j\13\0|\f\0\83\ 1\0\ 1\0W|\a\0j\14\0\83\0\0\ 1|\0\0j\15\0|\a\0d      \0\19j\16\0\83\0\0j\17\0t\ 2\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\19\0\83\ 1\0d#\0\83\ 2\0\83\ 1\0\ 1t\18\0\83\0\0}\r\0|\r\0j\19\0|\a\0\83\ 1\0\ 1|\0\0j\15\0|\r\0d     \0\19d     \0\19j\16\0\83\0\0j\17\0t\ 2\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\19\0\83\ 1\0d#\0\83\ 2\0\83\ 1\0\ 1|\r\0j\14\0\83\0\0\ 1|\0\0j\15\0|\r\0\0\19d     \0\19j\16\0\83\0\0j\17\0t\ 2\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\19\0\83\ 1\0d#\0\83\ 2\0\83\ 1\0\ 1|\r\0\0\19d     \0\19}\f\0|\0\0j\15\0|\f\0j\16\0\83\0\0j\17\0t\ 2\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\19\0\83\ 1\0d#\0\83\ 2\0\83\ 1\0\ 1|\f\0j\14\0\83\0\0\ 1|\0\0j\15\0|\f\0j\16\0\83\0\0j\17\0t\ 2\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\19\0\83\ 1\0d#\0\83\ 2\0\83\ 1\0\ 1|\ 6\0j\1a\0|\ 1\0d\b\0\83\ 2\0\ 1|\r\0j\1a\0|\ 1\0d   \0\83\ 2\0\ 1~\ 2\0~\a\0~\ 6\0~\ 5\0~\f\0t\e\0j\1c\0|\ 1\0\83\ 1\0}\ 6\0t\v\0|\ 1\0\83\ 1\0}\a\0|\0\0j\15\0|\a\0d       \0\19j\16\0\83\0\0j\17\0t\ 2\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\19\0\83\ 1\0d#\0\83\ 2\0\83\ 1\0\ 1|\a\0j\14\0\83\0\0\ 1|\0\0j\15\0|\a\0\0\19j\16\0\83\0\0j\1d\0\83\0\0\f\83\ 1\0\ 1|\a\0j\1e\0\83\0\0\ 1|\0\0j\15\0|\a\0\0\19j\16\0\83\0\0j\17\0t\ 2\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\19\0\83\ 1\0d#\0\83\ 2\0\83\ 1\0\ 1~\ 6\0~\a\0t\18\0|\ 1\0\83\ 1\0}\r\0|\0\0j\15\0|\r\0\0\19d     \0\19j\16\0\83\0\0j\17\0t\ 2\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\19\0\83\ 1\0d#\0\83\ 2\0\83\ 1\0\ 1|\r\0j\14\0\83\0\0\ 1|\0\0j\15\0|\r\0\0\19d     \0\19j\16\0\83\0\0j\1d\0\83\0\0\f\83\ 1\0\ 1|\r\0j\1e\0\83\0\0\ 1|\0\0j\15\0|\r\0\0\19d     \0\19j\16\0\83\0\0j\17\0t\ 2\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\19\0\83\ 1\0d#\0\83\ 2\0\83\ 1\0\ 1~\r\0t\11\0|\ 1\0\83\ 1\0}\f\0|\0\0j\15\0|\f\0j\16\0\83\0\0j\17\0t\ 2\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\19\0\83\ 1\0d#\0\83\ 2\0\83\ 1\0\ 1|\f\0j\14\0\83\0\0\ 1|\0\0j\15\0|\f\0j\16\0\83\0\0j\1d\0\83\0\0\f\83\ 1\0\ 1|\f\0j\1e\0\83\0\0\ 1|\0\0j\15\0|\f\0j\16\0\83\0\0j\17\0t\ 2\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\19\0\83\ 1\0d#\0\83\ 2\0\83\ 1\0\ 1d\0\0S($\0\0\0Ns\f\0\0\0Pyfile80.medRÕ\ 2\0\0i\ 6\0\0\0i\19\0\0\0t\v\0\0\0FieldOnCellg\9a\99\99\99\99\99¹?i\ 1\0\0\0i\ 2\0\0\0i\0\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@g\0\0\0\0\0\0\10@g\0\0\0\0\0\0\14@g\0\0\0\0\0\0\18@g\0\0\0\0\0\0\1c@g\0\0\0\0\0\0 @g\0\0\0\0\0\0"@g\0\0\0\0\0\0$@g\0\0\0\0\0\0&@g\0\0\0\0\0\0(@g\0\0\0\0\0\0*@g\0\0\0\0\0\0,@g\0\0\0\0\0\0.@g\0\0\0\0\0\00@g\0\0\0\0\0\01@g\0\0\0\0\0\02@g\0\0\0\0\0\03@g\0\0\0\0\0\04@g\0\0\0\0\0\05@g\0\0\0\0\0\06@g\0\0\0\0\0\07@g\0\0\0\0\0\08@g\11ê-\81\99\97q=(\1f\0\0\0\0\0\0RB\0\0\0RY\0\0\0Ry\ 1\0\0Rc\0\0\0\0\0\0R+\0\0\0Rw\ 1\0\0R\13\ 1\0\0\0\0\0\0\0\0\0\0\0Rn\0\0\0RD\ 3\0\0\0\0\0Rk\0\0\0R{\ 1\0\0\0\0\0R%\ 1\0\0RE\ 3\0\0t\e\0\0\0unloadArraysWithoutDataLossR0\0\0\0R+\ 1\0\0R1\0\0\0R[\ 1\0\0R\\ 1\0\0R\v\0\0\0R'\0\0\0R(\0\0\0Ru\ 3\0\0Rw\ 3\0\0(\ e\0\0\0R        \0\0\0R!\0\0\0R\83\0\0\0\ 1\0\0t\a\0\0\0nbCellsR\b\0\0\0R\86\0\0\0Rm\ 1\0\0\0\0\0R\8c\0\0\0R\ 2\ 3\0\0t\ 4\0\0\0permRú\0\0\0Rl\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt-\0\0\0testMEDFileFieldsUnloadArraysWithoutDataLoss1Ï\ e\0\0s\82\0\0\0\0\ 1\ 6\ 1        \0\r\ 1\f\0
++\ 1\10\ 1\f\ 1\10\ 1\f\ 1\r\0\r\ 1\f\0
++\ 1     \ 1\r\ 2     \ 2\13\ 1"\ 1\r\ 1\f\ 1\f\0\r\0
++\ 1
++\ 1\r\ 1   \ 1\r\ 1\r\ 1\ 4\ 1
++\ 1t\ 1   \0\r\ 1x\ 1
++\ 1x\ 1\ e\ 1p\ 1
++\ 1p\ 1\10\ 1\10\ 1\ f\ 2\ f\ 1\f\ 1t\ 1
++\ 1\1e\ 1
++\ 1t\ 1\ 6\ 1\f\ 1x\ 1
++\ 1"\ 1
++\ 1x\ 1\ 3\ 1\f\ 1p\ 1
++\ 1\1a\ 1
++\ 1p\ 1c\ 1\0\0\0\14\0\0\0;\0\0\0C\0\0\0sp\r\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0\83\ 1\0}\ 2\0|\ 2\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}\ 3\0|\ 3\0j\ 3\0|\ 2\0|\ 2\0\83\ 2\0\ 1|\ 3\0j\ 4\0\83\0\0}\ 3\0|\ 3\0j\ 5\0d\ 3\0\83\ 1\0\ 1|\ 3\0j\ 6\0d\ 4\0d\ 5\0\83\ 2\0\ 1d\ 6\0d\a\0d\b\0g\ 3\0}\ 4\0|\ 3\0j\a\0\83\0\0j\b\0|\ 4\0\83\ 1\0\ 1|\ 3\0\0\83\0\0\ 1t
++\0\83\0\0}\ 5\0|\ 5\0j\v\0d        \0|\ 3\0\83\ 2\0\ 1t\ 2\0\83\0\0}\ 6\0|\ 6\0j\ 3\0|\ 2\0\83\ 1\0\ 1|\ 6\0j\ 5\0d\ 3\0\83\ 1\0\ 1|\ 6\0j\ 4\0\83\0\0}\ 6\0|\ 6\0j\ 3\0|\ 3\0j\a\0\83\0\0\83\ 1\0\ 1|\ 5\0j\v\0d
++\0|\ 6\0\83\ 2\0\ 1t\f\0d\ 4\0d\ 2\0d\v\0d\f\0d\r\0d   \0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0g\19\0\83\ 1\0}\a\0t\f\0d!\0d"\0d#\0d$\0d%\0d  \0d&\0d
++\0d'\0d(\0d)\0d*\0d+\0d,\0d-\0d.\0d/\0d0\0d1\0d2\0d3\0d4\0d5\0d6\0d7\0g\19\0\83\ 1\0}\b\0t\r\0d8\0d\1f\0\83\ 2\0}    \0g\0\0t\ e\0d8\0\83\ 1\0D]\10\0}
++\0d9\0|
++\0\16^\ 2\0q¿\ 1|     \0(t\f\0d\ 4\0d\13\0d    \0d\ e\0d\ f\0g\ 5\0\83\ 1\0}\v\0t\f\0d!\0d*\0d      \0d&\0d
++\0g\ 5\0\83\ 1\0}\f\0|\ 5\0j\ f\0d     \0|\a\0\83\ 2\0\ 1|\ 5\0j\10\0\0|\b\0\83\ 2\0\ 1|\ 5\0j\11\0\0|      \0\83\ 2\0\ 1|\ 5\0j\ f\0d
++\0|\v\0\83\ 2\0\ 1|\ 5\0j\10\0d
++\0|\f\0\83\ 2\0\ 1t\f\0d\15\0d\1f\0d\1e\0d\e\0d\1a\0d\f\0d\14\0d\r\0d\1c\0d\1d\0\0d\16\0d\19\0d\18\0d\17\0d:\0d;\0d<\0d=\0d>\0d?\0d@\0dA\0dB\0d8\0dC\0dD\0dE\0dF\0dG\0dH\0dI\0dJ\0dK\0dL\0dM\0g$\0\83\ 1\0}\r\0t\f\0d,\0d6\0d5\0d2\0d1\0d$\0d+\0d%\0d3\0d4\0d7\0d-\0d0\0d/\0d.\0dN\0dO\0dP\0dQ\0dR\0dS\0dT\0dU\0dV\0dW\0dX\0dY\0dZ\0d[\0d\\0d]\0d^\0d_\0d`\0da\0db\0g$\0\83\ 1\0}\ e\0t\r\0dL\0d\1f\0\83\ 2\0}\ f\0g\0\0t\ e\0dL\0\83\ 1\0D]\10\0}
++\0dc\0|
++\0\16^\ 2\0qh\ 3|\ f\0(|\ 5\0j\ f\0d\ f\0|\r\0\83\ 2\0\ 1|\ 5\0j\10\0d\ f\0|\ e\0\83\ 2\0\ 1|\ 5\0j\11\0d\ f\0|\ f\0\83\ 2\0\ 1|\ 5\0j\12\0dd\0de\0\83\ 2\0\ 1|\ 5\0j\12\0df\0dg\0\83\ 2\0\ 1|\ 5\0j\13\0dd\0dh\0di\0g\ 2\0\83\ 2\0\ 1|\ 5\0j\13\0df\0di\0dj\0g\ 2\0\83\ 2\0\ 1|\ 5\0j\14\0|\ 1\0d\ e\0\83\ 2\0\ 1t
++\0j\15\0|\ 1\0d\ 3\0t\16\0g\ 1\0d     \0d\f\0d\ f\0g\ 3\0\83\ 4\0}\10\0|\0\0j\17\0|\10\0j\18\0\83\0\0t\16\0g\ 1\0\83\ 2\0\ 1|\0\0j\19\0|\10\0j\1a\0t\16\0\83\ 1\0j\e\0\83\0\0j\1c\0t\f\0d\ f\0d     \0d\ 2\0d\v\0d\ e\0d\ f\0d\v\0d\11\0d\ 4\0d\ e\0d\11\0d\10\0d\13\0d\ 4\0d\10\0d\f\0d\12\0d\13\0d\f\0d\r\0d\v\0d\ 2\0d\14\0d\15\0d\11\0d\v\0d\15\0d\16\0d\10\0d\11\0d\16\0\0d\f\0d\10\0\0d\1f\0d\r\0d\f\0d\1f\0d\1e\0g(\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1t\0\0d    \0d      \0d      \0f\ 3\0d\ f\0d        \0d      \0f\ 3\0d\ e\0d        \0d      \0f\ 3\0d\ 4\0d        \0d      \0f\ 3\0d\13\0d        \0d      \0f\ 3\0d\12\0d        \0d      \0f\ 3\0d   \0d\ f\0d   \0f\ 3\0d\ f\0d\ f\0d     \0f\ 3\0d\ e\0d\ f\0d     \0f\ 3\0d\ 4\0d\ f\0d     \0f\ 3\0d\13\0d\ f\0d     \0f\ 3\0d\12\0d\ f\0d     \0f\ 3\0d   \0d\ e\0d   \0f\ 3\0d\ f\0d\ e\0d     \0f\ 3\0d\ e\0d\ e\0d     \0f\ 3\0d\ 4\0d\ e\0d     \0f\ 3\0d\13\0d\ e\0d     \0f\ 3\0d\12\0d\ e\0d     \0f\ 3\0g\12\0\83\ 1\0}\11\0|\11\0j\b\0|\ 4\0\83\ 1\0\ 1|\0\0j\19\0|\10\0j\a\0\83\0\0j\1c\0|\11\0dk\0\83\ 2\0\83\ 1\0\ 1|\0\0j\19\0|\10\0j\1d\0d  \0\83\ 1\0j\1c\0|\b\0d\f\0 \83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\10\0j\1e\0d      \0\83\ 1\0j\1c\0|\a\0d\f\0 \83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\10\0j\1f\0d      \0\83\ 1\0j\1c\0|        \0d\f\0 \83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\10\0j\1d\0d\ f\0\83\ 1\0j\1c\0|\ e\0d\1d\0 \83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\10\0j\1e\0d\ f\0\83\ 1\0j\1c\0|\r\0d\1d\0 \83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\10\0j\1f\0d\ f\0\83\ 1\0j\1c\0|\ f\0d\1d\0 \83\ 1\0\83\ 1\0\ 1t
++\0j\15\0|\ 1\0d\ 3\0t\16\0g\ 1\0d\r\0d8\0d\ f\0g\ 3\0\83\ 4\0}\12\0|\0\0j\17\0|\12\0j\18\0\83\0\0t\16\0g\ 1\0\83\ 2\0\ 1|\0\0j\19\0|\12\0j\1a\0t\16\0\83\ 1\0j\e\0\83\0\0j\1c\0t\f\0d\ f\0\0d\ 2\0d\v\0d\ e\0d\ f\0d\v\0d\11\0d\ 4\0d\ e\0d\11\0d\10\0d\13\0d\ 4\0d\10\0d\f\0d\ 2\0d\12\0d\r\0d\14\0d\v\0d\ 2\0d\14\0d\15\0d\11\0d\v\0d\15\0d\16\0d\10\0d\11\0d\16\0\0d\f\0d\10\0\0d\1f\0d\14\0d\r\0d\1e\0d\1d\0d\15\0d\14\0d\1d\0d\1c\0d\16\0d\15\0d\1c\0d\e\0\0d\16\0d\e\0d\1a\0d\1f\0\0d\1a\0d\19\0g8\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1t\0\0d\ f\0d\ e\0d      \0f\ 3\0d\ e\0d\ e\0d     \0f\ 3\0d\ 4\0d\ e\0d     \0f\ 3\0d\13\0d\ e\0d     \0f\ 3\0d\12\0d\ e\0d     \0f\ 3\0d   \0d\ 4\0d   \0f\ 3\0d\ f\0d\ 4\0d     \0f\ 3\0d\ e\0d\ 4\0d     \0f\ 3\0d\ 4\0d\ 4\0d     \0f\ 3\0d\13\0d\ 4\0d     \0f\ 3\0d\12\0d\ 4\0d     \0f\ 3\0d   \0d\13\0d   \0f\ 3\0d\ f\0d\13\0d     \0f\ 3\0d\ e\0d\13\0d     \0f\ 3\0d\ 4\0d\13\0d     \0f\ 3\0d\13\0d\13\0d     \0f\ 3\0d\12\0d\13\0d     \0f\ 3\0d   \0d\12\0d   \0f\ 3\0d\ f\0d\12\0d     \0f\ 3\0d\ e\0d\12\0d     \0f\ 3\0d\ 4\0d\12\0d     \0f\ 3\0d\13\0d\12\0d     \0f\ 3\0d\12\0d\12\0d     \0f\ 3\0g\17\0\83\ 1\0}\11\0|\11\0j\b\0|\ 4\0\83\ 1\0\ 1|\0\0j\19\0|\12\0j\a\0\83\0\0j\1c\0|\11\0dk\0\83\ 2\0\83\ 1\0\ 1|\0\0j\19\0|\12\0j\1d\0d  \0\83\ 1\0j\1c\0|\b\0d\r\0\1f\83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\12\0j\1e\0d      \0\83\ 1\0j\1c\0|\a\0d\r\0\1f\83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\12\0j\1f\0d      \0\83\ 1\0j\1c\0|        \0d\r\0\1f\83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\12\0j\1d\0d\ f\0\83\ 1\0j\1c\0|\ e\0d\15\0\1f\83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\12\0j\1e\0d\ f\0\83\ 1\0j\1c\0|\r\0d\15\0\1f\83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\12\0j\1f\0d\ f\0\83\ 1\0j\1c\0|\ f\0d\15\0\1f\83\ 1\0\83\ 1\0\ 1t
++\0j\15\0|\ 1\0d\ 3\0\0t\16\0g\ 2\0d  \0d\12\0d\ f\0d\ f\0d\f\0d\ f\0g\ 6\0\83\ 4\0}\13\0|\0\0j\17\0|\13\0j\18\0\83\0\0t\16\0\0g\ 2\0\83\ 2\0\ 1|\0\0j\19\0|\13\0j\1d\0d      \0\83\ 1\0j\1c\0|\b\0d\ f\0d\f\0!\83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\13\0j\1e\0d   \0\83\ 1\0j\1c\0|\a\0d\ f\0d\f\0!\83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\13\0j\1f\0d   \0\83\ 1\0j\1c\0|        \0d\ f\0d\f\0!\83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\13\0j\1d\0d
++\0\83\ 1\0j\1c\0|\f\0\83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\13\0j\1e\0d
++\0\83\ 1\0j\1c\0|\v\0\83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\13\0j\1f\0d
++\0\83\ 1\0t!\0k\b\0\83\ 1\0\ 1|\0\0j\19\0|\13\0j\1a\0t\16\0\83\ 1\0j\e\0\83\0\0j\1c\0t\f\0d\ e\0d\ f\0d\v\0d\11\0d\ 4\0d\ e\0d\11\0d\10\0d\13\0d\ 4\0d\10\0d\f\0d\12\0d\13\0d\f\0d\r\0d\v\0d\ 2\0d\14\0d\15\0d\11\0d\v\0d\15\0d\16\0d\10\0d\11\0d\16\0\0d\f\0d\10\0\0d\1f\0d\r\0d\f\0d\1f\0d\1e\0g$\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\13\0j\1a\0\0\83\ 1\0j\e\0\83\0\0j\1c\0t\f\0d  \0d\ f\0d\ f\0d\ e\0d\ e\0d\ 4\0d\ 4\0d\13\0d\13\0d\12\0g
++\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1t\0\0d       \0d      \0d      \0f\ 3\0d\ f\0d        \0d      \0f\ 3\0d\ e\0d        \0d      \0f\ 3\0d\ 4\0d        \0d      \0f\ 3\0d\13\0d        \0d      \0f\ 3\0d\12\0d        \0d      \0f\ 3\0d   \0d\ f\0d   \0f\ 3\0d\ f\0d\ f\0d     \0f\ 3\0d\ e\0d\ f\0d     \0f\ 3\0d\ 4\0d\ f\0d     \0f\ 3\0d\13\0d\ f\0d     \0f\ 3\0d\12\0d\ f\0d     \0f\ 3\0d   \0d\ e\0d   \0f\ 3\0d\ f\0d\ e\0d     \0f\ 3\0d\ e\0d\ e\0d     \0f\ 3\0d\ 4\0d\ e\0d     \0f\ 3\0d\13\0d\ e\0d     \0f\ 3\0d\12\0d\ e\0d     \0f\ 3\0g\12\0\83\ 1\0}\11\0|\11\0j\b\0|\ 4\0\83\ 1\0\ 1|\0\0j\19\0|\13\0j\a\0\83\0\0j\1c\0|\11\0dk\0\83\ 2\0\83\ 1\0\ 1|\0\0j\19\0|\13\0j\1d\0d\ f\0\83\ 1\0j\1c\0|\ e\0d\1d\0 \83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\13\0j\1e\0d\ f\0\83\ 1\0j\1c\0|\r\0d\1d\0 \83\ 1\0\83\ 1\0\ 1|\0\0j\19\0|\13\0j\1f\0d\ f\0\83\ 1\0j\1c\0|\ f\0d\1d\0 \83\ 1\0\83\ 1\0\ 1dl\0S(m\0\0\0s\ e\ 1\0\0 This method tests MEDFileUMesh.LoadPart that loads only a part of a specified mesh in a MED file. The part is specfied using a slice of cell ids. Only nodes on which cells lies are loaded to reduce at most the amount of
++        memory of the returned instance.
++        s\f\0\0\0Pyfile81.medi\ 6\0\0\0Rn\ 2\0\0i\ 3\0\0\0g\0\0\0\0\0\0\0\0s\ 6\0\0\0aa [b]s\a\0\0\0cc [de]s\b\0\0\0gg [klm]i\0\0\0\0iÿÿÿÿi\a\0\0\0i
++\0\0\0i\v\0\0\0i\ 2\0\0\0i\ 1\0\0\0i   \0\0\0i\b\0\0\0i\ 5\0\0\0i\ 4\0\0\0i\f\0\0\0i\r\0\0\0i\ e\0\0\0i\18\0\0\0i\17\0\0\0i\16\0\0\0i\15\0\0\0i\14\0\0\0i\13\0\0\0i\12\0\0\0i\11\0\0\0i\10\0\0\0i\ f\0\0\0iýÿÿÿiúÿÿÿiùÿÿÿiöÿÿÿiõÿÿÿiþÿÿÿi÷ÿÿÿiøÿÿÿiûÿÿÿiüÿÿÿiôÿÿÿióÿÿÿiòÿÿÿièÿÿÿiéÿÿÿiêÿÿÿiëÿÿÿiìÿÿÿiíÿÿÿiîÿÿÿiïÿÿÿiðÿÿÿiñÿÿÿi\19\0\0\0s\11\0\0\0Cell#%.3d        i"\0\0\0i!\0\0\0\0\0\0i\1f\0\0\0i\1e\0\0\0i\1d\0\0\0i\1c\0\0\0i\e\0\0\0i\1a\0\0\0i-\0\0\0i,\0\0\0i+\0\0\0i*\0\0\0i)\0\0\0i(\0\0\0i'\0\0\0i&\0\0\0i%\0\0\0i$\0\0\0i#\0\0\0iÞÿÿÿißÿÿÿiàÿÿÿiáÿÿÿiâÿÿÿiãÿÿÿiäÿÿÿiåÿÿÿiæÿÿÿiçÿÿÿiÓÿÿÿiÔÿÿÿiÕÿÿÿiÖÿÿÿi×ÿÿÿiØÿÿÿiÙÿÿÿiÚÿÿÿiÛÿÿÿiÜÿÿÿiÝÿÿÿs\11\0\0\0Node#%.3d        t\ 4\0\0\0Fam7iM\0\0\0t\ 4\0\0\0Fam8iX\0\0\0t\ 4\0\0\0Grp0t\ 4\0\0\0Grp1Rß\ 1\0\0g\11ê-\81\99\97q=N("\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0\ 1\0\0RB\0\0\0t\14\0\0\0changeSpaceDimensionRØ\0\0\0\ 1\0\0R\0\ 2\0\0R>\0\0\0Rj\0\0\0Rk\0\0\0\ 2\0\0Rn\0\0\0R\98\0\0\0\0\0\0\ 2\0\0\0\0\0t\11\0\0\0setGroupsOnFamilyR\v\0\0\0t
++\0\0\0LoadPartOfR`\0\0\0R+\0\0\0t\ e\0\0\0getAllGeoTypesR0\0\0\0Rs\0\0\0Rv\0\0\0R1\0\0\0R\9e\0\0\0R\8c\ 2\0\0\ 2\0\0Re\0\0\0R/\ 2\0\0(\14\0\0\0\0\0\0R!\0\0\0\ 1\0\0R\83\0\0\0R?\ 1\0\0R\86\0\0\0R\84\0\0\0t\ 6\0\0\0renum0t   \0\0\0famField0RÜ\ 2\0\0\0\0\0t\a\0\0\0renumM1t
++\0\0\0famFieldM1t\ 6\0\0\0renum1t     \0\0\0famField1RÞ\ 2\0\0R\8e\0\0\0R\ 3\ 2\0\0R:\ 1\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\19\0\0\0testMEDFileUMeshLoadPart1\ e\ f\0\0\0\0\0\0\ 4\ 6\ 1\f\0
++\ 1     \0\10\ 1\f\ 1\r\ 1\10\ 1\ f\ 1\13\ 1
++\ 1     \ 1\10\ 1     \0\r\0\r\ 1\f\0\13\ 1\10\ 1W\ 1W\ 1\ f\ 1$\ 1\e\ 1\e\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1x\ 1x\ 1\ f\ 1$\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\16\ 1\16\ 1\10\ 2$\ 1\19\ 1£\ 1ä\0\r\ 1\1f\ 1#\ 1#\ 1#\ 1#\ 1#\ 1#\ 2$\ 1\19\ 1Ó\ 1ÿ\0!\0\r\ 1\1f\ 1#\ 1#\ 1#\ 1#\ 1#\ 1#\ 20\ 1\1c\ 1&\ 1&\ 1&\ 1\1f\ 1\1f\ 1\1c\ 1\97\ 1I\ 1ä\0\r\ 1\1f\ 1#\ 1#\ 1#\ 1c\ 1\0\0\0\v\0\0\0\a\0\0\0C\0\0\0s\1a\ 4\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0d\ 4\0g\ 2\0}\ 3\0t\0\0d\ 5\0\83\ 1\0}\ 4\0|\ 4\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}\ 5\0|\ 5\0j\ 3\0|\ 4\0|\ 4\0\83\ 2\0\ 1|\ 5\0j\ 4\0\83\0\0}\ 5\0|\ 5\0j\ 5\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\ 6\0d\ 6\0d\a\0\83\ 2\0\ 1d\b\0d   \0d
++\0g\ 3\0}\ 6\0|\ 5\0j\a\0\83\0\0j\b\0|\ 6\0\83\ 1\0\ 1|\ 5\0j        \0\83\0\0\ 1t
++\0t\v\0t\f\0\83\ 2\0}\a\0|\a\0j\r\0|\ 5\0\83\ 1\0\ 1|\a\0j\ 5\0d\v\0\83\ 1\0\ 1t\0\0d\f\0d\r\0\83\ 2\0}\ 4\0|\ 4\0j\b\0|\ 3\0\83\ 1\0\ 1t\ e\0t\ f\0d\f\0\83\ 1\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\ f\0f\ 2\0<t\ e\0t\ f\0d\10\0d\11\0\83\ 2\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\12\0f\ 2\0<|\a\0j\10\0|\ 4\0\83\ 1\0\ 1t\11\0|\ 1\0|\a\0t\12\0\83\ 3\0\ 1t
++\0t\13\0t\f\0\83\ 2\0}\a\0|\a\0j\r\0|\ 5\0\83\ 1\0\ 1|\a\0j\ 5\0d\13\0\83\ 1\0\ 1t\0\0d\14\0d\r\0\83\ 2\0}\ 4\0|\ 4\0j\b\0|\ 3\0\83\ 1\0\ 1t\ e\0t\ f\0d\15\0d\16\0\83\ 2\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\ f\0f\ 2\0<t\ e\0t\ f\0d\17\0d\18\0\83\ 2\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\12\0f\ 2\0<|\a\0j\10\0|\ 4\0\83\ 1\0\ 1|\a\0j\14\0\83\0\0\ 1t\15\0|\ 1\0|\a\0\83\ 2\0\ 1t\16\0\83\0\0}\b\0t\17\0j\18\0|\ 1\0|\ 2\0t\19\0g\ 1\0d\ f\0d\ 5\0d\12\0g\ 3\0\83\ 4\0}  \0|\b\0j\1a\0|        \0\83\ 1\0\ 1t\e\0j\18\0|\ 1\0t\1c\0|\b\0\83\ 3\0}
++\0|\0\0j\1d\0|
++\0d\12\0\19d\ f\0\19j\1e\0\83\0\0d\19\0d\12\0d&\0d\e\0d\e\0f\ 4\0g\ 1\0f\ 2\0g\ 1\0\83\ 2\0\ 1t\16\0\83\0\0}\b\0t\17\0j\18\0|\ 1\0|\ 2\0t\19\0g\ 1\0d\ 6\0d\1c\0d\12\0g\ 3\0\83\ 4\0}     \0|\b\0j\1a\0|        \0\83\ 1\0\ 1t\e\0j\18\0|\ 1\0t\1c\0|\b\0\83\ 3\0}
++\0|
++\0j\1f\0\83\0\0}
++\0|
++\0d\ f\0\19d\ f\0\19\0\83\0\0\ 1t\0\0d\1d\0d\r\0\83\ 2\0}\ 4\0t\ e\0t\ f\0d\ 6\0d\1c\0\83\ 2\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\ f\0f\ 2\0<t\ e\0t\ f\0d\1e\0d\1f\0\83\ 2\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\12\0f\ 2\0<|\ 4\0j\b\0|\ 3\0\83\ 1\0\ 1|\0\0j!\0|
++\0d\ f\0\19d\ f\0\19j"\0\83\0\0j#\0|\ 4\0\0\83\ 2\0\83\ 1\0\ 1|
++\0d\12\0\19d\ f\0\19\0\83\0\0\ 1t\0\0d!\0d\r\0\83\ 2\0}\ 4\0t\ e\0t\ f\0d"\0d#\0\83\ 2\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\ f\0f\ 2\0<t\ e\0t\ f\0d$\0d%\0\83\ 2\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\12\0f\ 2\0<|\ 4\0j\b\0|\ 3\0\83\ 1\0\ 1|\0\0j!\0|
++\0d\12\0\19d\ f\0\19j"\0\83\0\0j#\0|\ 4\0\0\83\ 2\0\83\ 1\0\ 1d\ e\0S('\0\0\0s\7f\0\0\0This method tests partial loading on fields on CELL. It is the same principle than those in testMEDFileUMeshLoadPart1.
++        s\f\0\0\0Pyfile82.medRn\ 2\0\0s\a\0\0\0aa [kg]s   \0\0\0bbb [m/s]i\ 6\0\0\0i\ 3\0\0\0g\0\0\0\0\0\0\0\0s\ 6\0\0\0aa [b]s\a\0\0\0cc [de]s\b\0\0\0gg [klm]t\ 5\0\0\0Fieldi\19\0\0\0i\ 2\0\0\0Ni\0\0\0\0id\0\0\0i}\0\0\0i\ 1\0\0\0t   \0\0\0FieldNodei$\0\0\0\0\0\0\0\0\0i,\ 1\0\0iP\ 1\0\0i(\0\0\0i\ e\0\0\0R&\0\0\0i\ f\0\0\0i\f\0\0\0ig\0\0\0is\0\0\0g\11ê-\81\99\97q=i\15\0\0\0\0\0\0\0\0\0i/\ 1\0\0iD\ 1\0\0(\ 2\0\0\0i\0\0\0\0i\ e\0\0\0($\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0\ 1\0\0RB\0\0\0\ 3\0\0\0\0\0\ 1\0\0R\0\ 2\0\0Rw\ 1\0\0R\13\ 1\0\0RX\ 1\0\0\0\0\0Rm\0\0\0Rn\0\0\0R{\ 1\0\0R_\ 2\0\0R.\0\0\0R\1c\ 1\0\0Rd\0\0\0t!\0\0\0WriteFieldUsingAlreadyWrittenMeshRP\ 1\0\0R>\0\0\0\ 3\0\0R`\0\0\0R7\ 2\0\0R[\ 1\0\0RN\0\0\0R+\0\0\0\ 1\0\0Rq\0\0\0Rv\ 3\0\0R0\0\0\0R+\ 1\0\0R1\0\0\0(\v\0\0\0R       \0\0\0R!\0\0\0t\b\0\0\0meshNamet\ 6\0\0\0composRÔ\ 1\0\0R\83\0\0\0R?\ 1\0\0R\b\0\0\0\0\0\0R\86\0\0\0Rl\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testMEDFileFieldsLoadPart1a\ f\0\0sn\0\0\0\0\ 3\ 6\ 1\ 6\ 1\f\ 1\f\0
++\ 1     \0\10\ 1\f\ 1\r\ 1\10\ 1\ f\ 1\13\ 1
++\ 1\ f\0\r\ 1\r\ 1\ f\0\r\ 1"\ 1%\ 1\r\ 1\10\ 1\ f\0\r\ 1\r\ 1\ f\0\r\ 1%\ 1%\ 1\r\ 1
++\ 1\r\ 2   \ 1$\ 1\r\ 1\15\ 16\ 2       \ 1$\ 1\r\ 1\15\ 1\f\ 1\12\ 1\ f\0%\0%\ 1\r\ 1'\ 1\12\ 1\ f\0%\0%\ 1\r\ 1'\ 1c\ 1\0\0\0\ 4\0\0\0\ 6\0\0\0C\0\0\0\0\0\0d\ 1\0}\ 1\0t\0\0d
++\0d\v\0d\f\0g\ 3\0\83\ 1\0}\ 2\0|\ 2\0j\ 1\0d\ 5\0d\ 6\0d\a\0g\ 3\0\83\ 1\0\ 1t\ 2\0\83\0\0}\ 3\0|\ 3\0j\ 3\0|\ 2\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\b\0\83\ 1\0\ 1|\ 3\0j\ 5\0|\ 1\0d\ 4\0\83\ 2\0\ 1t\ 6\0j\a\0|\ 1\0\83\ 1\0}\ 3\0|\0\0j\b\0|\ 3\0j    \0\83\0\0d\b\0\83\ 2\0\ 1|\0\0j
++\0|\ 3\0j\v\0\83\0\0j\f\0|\ 2\0d     \0\83\ 2\0\83\ 1\0\ 1d\0\0S(\r\0\0\0Ns\f\0\0\0Pyfile83.medi\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0s\ 6\0\0\0aa [m]s\a\0\0\0bbb [s]s
++\0\0\0cccc [m/s]R \ 2\0\0g\11ê-\81\99\97q=(\ 3\0\0\0i\0\0\0\0i\0\0\0\0i\0\0\0\0(\ 3\0\0\0i\ 1\0\0\0i\0\0\0\0i\0\0\0\0(\ 3\0\0\0i\ 2\0\0\0i\0\0\0\0i\0\0\0\0(\r\0\0\0RY\0\0\0\ 1\0\0R>\0\0\0Rc\0\0\0RB\0\0\0R\v\0\0\0R'\0\0\0R(\0\0\0R+\0\0\0RC\0\0\0R0\0\0\0\0\0\0R1\0\0\0(\ 4\0\0\0R   \0\0\0R!\0\0\0R\ 3\ 2\0\0R\86\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\18\0\0\0testMEDFileWithoutCells1\94\ f\0\0s\16\0\0\0\0\ 1\ 6\ 1\15\ 1\16\ 1      \ 1\r\ 1\r\ 1\10\ 2\ f\ 1\16\ 1\1f\ 1c\ 1\0\0\0\f\0\0\0\v\0\0\0C\0\0\0s[\ 4\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0d\ 4\0g\ 2\0}\ 3\0t\0\0d\ 5\0\83\ 1\0}\ 4\0|\ 4\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}\ 5\0|\ 5\0j\ 3\0|\ 4\0|\ 4\0\83\ 2\0\ 1|\ 5\0j\ 4\0\83\0\0}\ 5\0|\ 5\0j\ 5\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\ 6\0d\ 6\0d\a\0\83\ 2\0\ 1d\b\0\0d
++\0g\ 3\0}\ 6\0|\ 5\0j\a\0\83\0\0j\b\0|\ 6\0\83\ 1\0\ 1|\ 5\0j        \0\83\0\0\ 1t
++\0t\v\0t\f\0\83\ 2\0}\a\0|\a\0j\r\0|\ 5\0\83\ 1\0\ 1|\a\0j\ 5\0d\v\0\83\ 1\0\ 1t\0\0d\f\0d\r\0\83\ 2\0}\ 4\0|\ 4\0j\b\0|\ 3\0\83\ 1\0\ 1t\ e\0t\ f\0d\f\0\83\ 1\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\ f\0f\ 2\0<t\ e\0t\ f\0d\10\0d\11\0\83\ 2\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\12\0f\ 2\0<|\a\0j\10\0|\ 4\0\83\ 1\0\ 1t\11\0|\ 1\0|\a\0t\12\0\83\ 3\0\ 1t
++\0t\13\0t\f\0\83\ 2\0}\a\0|\a\0j\r\0|\ 5\0\83\ 1\0\ 1|\a\0j\ 5\0d\13\0\83\ 1\0\ 1t\0\0d\14\0d\r\0\83\ 2\0}\ 4\0|\ 4\0j\b\0|\ 3\0\83\ 1\0\ 1t\ e\0t\ f\0d\15\0d\16\0\83\ 2\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\ f\0f\ 2\0<t\ e\0t\ f\0d\17\0d\18\0\83\ 2\0\83\ 1\0|\ 4\0d\ e\0d\ e\0\85\ 2\0d\12\0f\ 2\0<|\a\0j\10\0|\ 4\0\83\ 1\0\ 1|\a\0j\14\0\83\0\0\ 1t\15\0|\ 1\0|\a\0\83\ 2\0\ 1t\16\0\83\0\0}\b\0t\17\0j\18\0|\ 1\0|\ 2\0t\19\0g\ 1\0d\19\0d\ 5\0d\12\0g\ 3\0\83\ 4\0}  \0|\b\0j\1a\0|        \0\83\ 1\0\ 1|  \0j\e\0d\ f\0t\19\0\83\ 2\0}
++\0|\0\0j\1c\0|
++\0j\1d\0\83\0\0t\1e\0d\19\0d\ 5\0d\12\0\83\ 3\0\83\ 2\0\ 1|   \0j\e\0d\12\0\83\ 1\0}
++\0|\0\0j\1c\0|
++\0j\1d\0\83\0\0t\1e\0d\19\0d\1a\0d\12\0\83\ 3\0\83\ 2\0\ 1|\0\0j\1f\0|
++\0\0\83\0\0d\e\0k\ 2\0\ 2|
++\0\0\83\0\0|      \0j!\0\83\0\0k\ 2\0\83\ 1\0\ 1\0j"\0\83\0\0\ 1|       \0j\e\0d\ f\0t\19\0\83\ 2\0}
++\0|\0\0j\1c\0|
++\0j\1d\0\83\0\0t\1e\0d\19\0d\ 5\0d\12\0\83\ 3\0\83\ 2\0\ 1|   \0j\e\0d\12\0\83\ 1\0}
++\0|\0\0j\1f\0|
++\0\0\83\0\0d\1c\0k\ 2\0oB\ 3|
++\0\0\83\0\0|      \0j!\0\83\0\0k\ 2\0\83\ 1\0\ 1|\0\0j\1f\0|
++\0j#\0\83\0\0j$\0t%\0d\19\0d\1d\0d\ 5\0d\1e\0d\e\0d\1f\0\0d!\0g\b\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1t&\0j\18\0|\ 1\0t'\0|\b\0\83\ 3\0}\v\0|\v\0d\ f\0\19d\ f\0\19j(\0\83\0\0\ 1t\0\0d5\0d6\0g\ 2\0\83\ 1\0}\ 4\0|\ 4\0j\b\0|\ 3\0\83\ 1\0\ 1|\0\0j\1f\0|\v\0d\ f\0\19d\ f\0\19j)\0\83\0\0j$\0|\ 4\0d$\0\83\ 2\0\83\ 1\0\ 1|\v\0d\12\0\19d\ f\0\19j(\0\83\0\0\ 1t\0\0d7\0d8\0d9\0d:\0d;\0d<\0d=\0d>\0g\b\0\83\ 1\0}\ 4\0|\ 4\0j\b\0|\ 3\0\83\ 1\0\ 1|\0\0j\1f\0|\v\0d\12\0\19d\ f\0\19j)\0\83\0\0j$\0|\ 4\0d$\0\83\ 2\0\83\ 1\0\ 1d\ e\0S(?\0\0\0s\8b\0\0\0 Test close to Pyfile82.med except that here zipCoords on MEDFileUMesh is invoked here to see if the PartDef is correctly updated.
++        s\f\0\0\0Pyfile84.medRn\ 2\0\0s\a\0\0\0aa [kg]s   \0\0\0bbb [m/s]i\ 6\0\0\0i\ 3\0\0\0g\0\0\0\0\0\0\0\0s\ 6\0\0\0aa [b]s\a\0\0\0cc [de]s\b\0\0\0gg [klm]RÇ\ 3\0\0i\19\0\0\0i\ 2\0\0\0Ni\0\0\0\0id\0\0\0i}\0\0\0i\ 1\0\0\0\ 3\0\0i$\0\0\0\0\0\0\0\0\0i,\ 1\0\0iP\ 1\0\0i\ 4\0\0\0i\ e\0\0\0i
++\0\0\0i\b\0\0\0i\ 5\0\0\0i\a\0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0ih\0\0\0ii\0\0\0g\11ê-\81\99\97q=iÌ\0\0\0i0\ 1\0\0\0\0\0i1\ 1\0\0\0\0\0i2\ 1\0\0\0\0\0i3\ 1\0\0\0\0\0i6\ 1\0\0\0\0\0i7\ 1\0\0\0\0\0i8\ 1\0\0\0\0\0i9\ 1\0\0(\ 2\0\0\0i\ 4\0\0\0ih\0\0\0(\ 2\0\0\0i\ 5\0\0\0ii\0\0\0(\ 2\0\0\0\0\0\0i0\ 1\0\0(\ 2\0\0\0\0\0\0i1\ 1\0\0(\ 2\0\0\0\0\0\0i2\ 1\0\0(\ 2\0\0\0\0\0\0i3\ 1\0\0(\ 2\0\0\0\0\0\0i6\ 1\0\0(\ 2\0\0\0\0\0\0i7\ 1\0\0(\ 2\0\0\0\0\0\0i8\ 1\0\0(\ 2\0\0\0\0\0\0i9\ 1\0\0(*\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0\ 1\0\0RB\0\0\0\ 3\0\0\0\0\0\ 1\0\0R\0\ 2\0\0Rw\ 1\0\0R\13\ 1\0\0RX\ 1\0\0\0\0\0Rm\0\0\0Rn\0\0\0R{\ 1\0\0R_\ 2\0\0R.\0\0\0R\1c\ 1\0\0Rd\0\0\0\ 3\0\0RP\ 1\0\0R>\0\0\0\ 3\0\0R`\0\0\0R7\ 2\0\0t\11\0\0\0getPartDefAtLevelR+\0\0\0t\b\0\0\0getSlicet\ 5\0\0\0sliceR0\0\0\0t\10\0\0\0getNumberOfElemsRÐ\ 1\0\0Rs\ 2\0\0t\ 5\0\0\0toDAIR1\0\0\0Rk\0\0\0R[\ 1\0\0RN\0\0\0Rv\ 3\0\0R+\ 1\0\0(\f\0\0\0R    \0\0\0R!\0\0\0\ 3\0\0\ 3\0\0\ 1\0\0R\83\0\0\0R?\ 1\0\0R\b\0\0\0\0\0\0R\86\0\0\0t\ 3\0\0\0spdRl\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testZipCoordsWithLoadPart1¢\ f\0\0sp\0\0\0\0\ 3\ 6\ 1\ 6\ 1\f\ 1\f\0
++\ 1     \0\10\ 1\f\ 1\r\ 1\10\ 1\ f\ 1\13\ 1
++\ 1\ f\0\r\ 1\r\ 1\ f\0\r\ 1"\ 1%\ 1\r\ 1\10\ 1\ f\0\r\ 1\r\ 1\ f\0\r\ 1%\ 1%\ 1\r\ 1
++\ 1\r\ 2   \ 1$\ 1\r\ 1\12\ 1"\ 1\ f\ 1"\ 11\ 1
++\ 1\12\ 1"\ 1\ f\ 11\ 1:\ 1\15\ 1\12\ 1\12\ 1\r\ 1'\ 1\12\ 1$\ 1\r\ 1'\ 1c\ 1\0\0\0\ 4\0\0\0\13\0\0\0C\0\0\0\0\0\0t\0\0\83\0\0}\ 1\0|\ 1\0j\ 1\0t\ 2\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0g\ 5\0\83\ 1\0t\ 2\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0g\ 5\0\83\ 1\0\83\ 2\0\ 1|\ 1\0j\ 3\0d\ 6\0\83\ 1\0\ 1t\ 4\0\83\0\0}\ 2\0|\ 2\0j\ 5\0|\ 1\0\83\ 1\0\ 1t\ 6\0d\ 2\0d\ 4\0d\ 5\0d\a\0d\b\0g\ 5\0\83\ 1\0}\ 3\0|\ 3\0j\ 3\0d   \0\83\ 1\0\ 1|\ 2\0j\a\0d\ 1\0|\ 3\0g\ 1\0\83\ 2\0\ 1|\0\0j\b\0|\ 2\0j      \0d\ 1\0\83\ 1\0j
++\0t\ 6\0d
++\0d\v\0d
++\0d\v\0d\v\0d\v\0d
++\0d\v\0d
++\0d
++\0d
++\0d
++\0d
++\0d
++\0d
++\0d
++\0g\10\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1d\f\0S(\r\0\0\0s\\0\0\0 Non regression test to check that setGroupsAtLevel is available with MEDFileCMesh.
++        i\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0Rn\ 2\0\0i\ 5\0\0\0i\a\0\0\0t
++\0\0\0MyAssemblyiÿÿÿÿiþÿÿÿN(\v\0\0\0\0\0\0Rc\0\0\0RY\0\0\0RB\0\0\0\0\0\0\0\0\0Rk\0\0\0Rl\0\0\0R0\0\0\0R\9e\0\0\0R1\0\0\0(\ 4\0\0\0R    \0\0\0R\83\0\0\0R\86\0\0\0\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt \0\0\0testMEDFileCMeshSetGroupsAtLevelÙ\ f\0\0s\14\0\0\0\0\ 3    \0:\ 1\r\ 1   \0\r\ 1\e\0\r\ 1\13\ 1U\ 1c\ 1\0\0\0\19\0\0\0\9b\ 3\0\0C\0\0\0s¤$\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0d\ 4\0}\ 4\0t\0\0d\ 5\0d\ 6\0d\a\0d\b\0g\ 4\0\83\ 1\0}\ 5\0t\0\0d\ 5\0d        \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\a\0g\f\0\83\ 1\0}\ 6\0t\ 1\0d\13\0\83\ 1\0}\a\0|\a\0j\ 2\0\83\0\0\ 1t\ 3\0\83\0\0}\b\0|\b\0j\ 4\0|\a\0|\a\0\83\ 2\0\ 1|\b\0j\ 5\0\83\0\0}\b\0|\ 5\0j\ 6\0|\b\0j\a\0\83\0\0\83\ 1\0}   \0|\b\0|   \0\19}\b\0|\b\0j\b\0\83\0\0\ 1|\b\0|\ 6\0\19}
++\0|\b\0|\ 6\0j\ 6\0|\b\0j\a\0\83\0\0\83\ 1\0\19}\v\0|
++\0j    \0d\ 5\0\83\ 1\0\ 1t
++\0j\v\0|
++\0|\v\0g\ 2\0\83\ 1\0}\b\0|\b\0j\f\0|\ 2\0\83\ 1\0\ 1|\b\0j\r\0\83\0\0\\ 5\0}\f\0}\a\0}\r\0}\ e\0}\ f\0|\ f\0j\ e\0\83\0\0j\ f\0d    \0\83\ 1\0}\10\0t\10\0\83\0\0}\11\0|\11\0j\11\0d\ 5\0|\b\0\83\ 2\0\ 1|\11\0j\11\0d\14\0|\f\0\83\ 2\0\ 1t\0\0d\ 5\0\0d
++\0d\v\0d\ 6\0d\15\0d\b\0d\16\0d\17\0g  \0\83\ 1\0}\12\0|\12\0j\f\0d\18\0\83\ 1\0\ 1|\11\0j\12\0d\ 5\0|\12\0g\ 1\0\83\ 2\0\ 1|\10\0}\13\0|\13\0j\f\0d\19\0\83\ 1\0\ 1|\11\0j\12\0d\14\0|\13\0g\ 1\0\83\ 2\0\ 1|\11\0j\13\0|\ 1\0d
++\0\83\ 2\0\ 1t\ 1\0d\v\0\83\ 1\0}\a\0|\a\0j\ 2\0\83\0\0\ 1t\ 3\0\83\0\0}\14\0|\14\0j\ 4\0|\a\0\83\ 1\0\ 1|\14\0j\ 5\0\83\0\0}\14\0|\14\0j\f\0|\ 3\0\83\ 1\0\ 1|\14\0j\14\0d\v\0\83\ 1\0\ 1|\14\0j\ 4\0|\14\0j\15\0\83\0\0d\1a\0d\1a\0\85\ 2\0d      \0d
++\0d\ 5\0g\ 3\0f\ 2\0\19\83\ 1\0\ 1t\10\0\83\0\0}\15\0|\15\0j\11\0d\ 5\0|\14\0\83\ 2\0\ 1|\15\0j\13\0|\ 1\0d\ 5\0\83\ 2\0\ 1t\16\0j\17\0|\ 1\0|\ 2\0\83\ 2\0}\16\0t\16\0j\17\0|\ 1\0|\ 3\0\83\ 2\0}\15\0|\15\0j\18\0d\ 5\0\83\ 1\0}\17\0|\16\0j\19\0|\17\0d\ 5\0\83\ 2\0}\18\0|\0\0j\1a\0|\18\0j\e\0\83\0\0|\16\0j\e\0\83\0\0\83\ 2\0\ 1|\0\0j\1a\0|\18\0j\1c\0d\ 5\0\83\ 1\0d\e\0\83\ 2\0\ 1|\0\0j\1a\0|\18\0j\1c\0d\14\0\83\ 1\0d\1c\0\83\ 2\0\ 1|\0\0j\1a\0|\18\0j\1d\0\83\0\0d\18\0d\1d\0d\1e\0d\19\0d\1f\0\0f\ 6\0\83\ 2\0\ 1|\0\0j\1a\0|\18\0j\1e\0d\18\0\83\ 1\0d\14\0f\ 1\0\83\ 2\0\ 1|\0\0j\1a\0|\18\0j\1e\0d\1e\0\83\ 1\0d\14\0f\ 1\0\83\ 2\0\ 1|\0\0j\1a\0|\18\0j\1e\0d\1d\0\83\ 1\0d\ 5\0f\ 1\0\83\ 2\0\ 1|\0\0j\1a\0|\18\0j\1e\0d\19\0\83\ 1\0d!\0f\ 1\0\83\ 2\0\ 1|\0\0j\1a\0|\18\0j\1e\0\0\83\ 1\0d!\0f\ 1\0\83\ 2\0\ 1|\0\0j\1a\0|\18\0j\1e\0d\1f\0\83\ 1\0d\14\0f\ 1\0\83\ 2\0\ 1t\ 1\0d"\0d#\0d#\0f\ 3\0d$\0d#\0d#\0f\ 3\0d%\0d#\0d#\0f\ 3\0d&\0d#\0d#\0f\ 3\0d#\0d"\0d#\0f\ 3\0d"\0d"\0d#\0f\ 3\0d$\0d"\0d#\0f\ 3\0d%\0d"\0d#\0f\ 3\0d&\0d"\0d#\0f\ 3\0d'\0d"\0d#\0f\ 3\0d#\0d$\0d#\0f\ 3\0d"\0d$\0d#\0f\ 3\0d$\0d$\0d#\0f\ 3\0d%\0d$\0d#\0f\ 3\0d&\0d$\0d#\0f\ 3\0d'\0d$\0d#\0f\ 3\0d#\0d%\0d#\0f\ 3\0d"\0d%\0d#\0f\ 3\0d$\0d%\0d#\0f\ 3\0d%\0d%\0d#\0f\ 3\0d&\0d%\0d#\0f\ 3\0d'\0d%\0d#\0f\ 3\0d#\0d&\0d#\0f\ 3\0d"\0d&\0d#\0f\ 3\0d$\0d&\0d#\0f\ 3\0d%\0d&\0d#\0f\ 3\0d&\0d&\0d#\0f\ 3\0d'\0d&\0d#\0f\ 3\0d"\0d'\0d#\0f\ 3\0d$\0d'\0d#\0f\ 3\0d%\0d'\0d#\0f\ 3\0d&\0d'\0d#\0f\ 3\0d"\0d#\0d"\0f\ 3\0d$\0d#\0d"\0f\ 3\0d%\0d#\0d"\0f\ 3\0d&\0d#\0d"\0f\ 3\0d#\0d"\0d"\0f\ 3\0d"\0d"\0d"\0f\ 3\0d$\0d"\0d"\0f\ 3\0d%\0d"\0d"\0f\ 3\0d&\0d"\0d"\0f\ 3\0d'\0d"\0d"\0f\ 3\0d#\0d$\0d"\0f\ 3\0d"\0d$\0d"\0f\ 3\0d$\0d$\0d"\0f\ 3\0d%\0d$\0d"\0f\ 3\0d&\0d$\0d"\0f\ 3\0d'\0d$\0d"\0f\ 3\0d#\0d%\0d"\0f\ 3\0d"\0d%\0d"\0f\ 3\0d$\0d%\0d"\0f\ 3\0d%\0d%\0d"\0f\ 3\0d&\0d%\0d"\0f\ 3\0d'\0d%\0d"\0f\ 3\0d#\0d&\0d"\0f\ 3\0d"\0d&\0d"\0f\ 3\0d$\0d&\0d"\0f\ 3\0d%\0d&\0d"\0f\ 3\0d&\0d&\0d"\0f\ 3\0d'\0d&\0d"\0f\ 3\0d"\0d'\0d"\0f\ 3\0d$\0d'\0d"\0f\ 3\0d%\0d'\0d"\0f\ 3\0d&\0d'\0d"\0f\ 3\0d"\0d#\0d$\0f\ 3\0d$\0d#\0d$\0f\ 3\0d%\0d#\0d$\0f\ 3\0d&\0d#\0d$\0f\ 3\0d#\0d"\0d$\0f\ 3\0d"\0d"\0d$\0f\ 3\0d$\0d"\0d$\0f\ 3\0d%\0d"\0d$\0f\ 3\0d&\0d"\0d$\0f\ 3\0d'\0d"\0d$\0f\ 3\0d#\0d$\0d$\0f\ 3\0d"\0d$\0d$\0f\ 3\0d$\0d$\0d$\0f\ 3\0d%\0d$\0d$\0f\ 3\0d&\0d$\0d$\0f\ 3\0d'\0d$\0d$\0f\ 3\0d#\0d%\0d$\0f\ 3\0d"\0d%\0d$\0f\ 3\0d$\0d%\0d$\0f\ 3\0d%\0d%\0d$\0f\ 3\0d&\0d%\0d$\0f\ 3\0d'\0d%\0d$\0f\ 3\0d#\0d&\0d$\0f\ 3\0d"\0d&\0d$\0f\ 3\0d$\0d&\0d$\0f\ 3\0d%\0d&\0d$\0f\ 3\0d&\0d&\0d$\0f\ 3\0d'\0d&\0d$\0f\ 3\0d"\0d'\0d$\0f\ 3\0d$\0d'\0d$\0f\ 3\0d%\0d'\0d$\0f\ 3\0d&\0d'\0d$\0f\ 3\0g`\0\83\ 1\0}\ f\0|\0\0j\1f\0|\18\0j\15\0\83\0\0\0|\ f\0d(\0\83\ 2\0\83\ 1\0\ 1t\0\0d)\0\0d\ 5\0d\15\0d*\0d+\0d,\0d)\0d    \0d\15\0d\13\0d*\0d,\0d-\0d)\0d
++\0d    \0d\13\0d.\0d*\0d-\0d)\0d
++\0d\13\0d\f\0d.\0d-\0d/\0d)\0d\v\0d
++\0d\f\0d0\0d.\0d/\0d)\0d\v\0d\f\0d\r\0d0\0d/\0d1\0d)\0d\15\0d\ 6\0d2\0d,\0d3\0d4\0d)\0d\15\0d2\0d5\0d,\0d4\0d6\0d)\0d7\0d\r\0d8\0d9\0d1\0d:\0d)\0d7\0d8\0d;\0d9\0d:\0d<\0d)\0d5\0d2\0d)\0d6\0d4\0d=\0d)\0d5\0d)\0d\10\0d6\0d=\0d>\0d)\0d;\0d8\0d\a\0d<\0d:\0d?\0d)\0d;\0d\a\0d@\0d<\0d?\0dA\0d)\0d\10\0d)\0dB\0d>\0d=\0dC\0d)\0d\10\0dB\0dD\0d>\0dC\0dE\0d)\0d@\0d\a\0d\17\0dA\0d?\0dF\0d)\0d@\0d\17\0dG\0dA\0dF\0dH\0d)\0d\b\0dD\0dI\0dJ\0dE\0dK\0d)\0d\b\0dI\0dL\0dJ\0dK\0dM\0d)\0d\16\0d\b\0dL\0dN\0dJ\0dM\0d)\0d\16\0dL\0dO\0dN\0dM\0dP\0d)\0d\17\0d\16\0dO\0dF\0dN\0dP\0d)\0d\17\0dO\0dQ\0dF\0dP\0dR\0d)\0d*\0d+\0d,\0dS\0dT\0dU\0d)\0d*\0d,\0d-\0dS\0dU\0dV\0d)\0d.\0d*\0d-\0d\e\0dS\0dV\0d)\0d.\0d-\0d/\0d\e\0dV\0dW\0d)\0d0\0d.\0d/\0dX\0d\e\0dW\0d)\0d0\0d/\0d1\0dX\0dW\0dY\0d)\0d,\0d3\0d4\0dU\0dZ\0d[\0d)\0d,\0d4\0d6\0dU\0d[\0d\\0d)\0d9\0d1\0d:\0d]\0dY\0d^\0d)\0d9\0d:\0d<\0d]\0d^\0d_\0d)\0d6\0d4\0d=\0d\\0d[\0d`\0d)\0d6\0d=\0d>\0d\\0d`\0da\0d)\0d<\0d:\0d?\0d_\0d^\0db\0d)\0d<\0d?\0dA\0d_\0db\0dc\0d)\0d>\0d=\0dC\0da\0d`\0dd\0d)\0d>\0dC\0dE\0da\0dd\0de\0d)\0dA\0d?\0dF\0dc\0db\0df\0d)\0dA\0dF\0dH\0dc\0df\0dg\0d)\0dJ\0dE\0dK\0dh\0de\0di\0d)\0dJ\0dK\0dM\0dh\0di\0dj\0d)\0dN\0dJ\0dM\0dk\0dh\0dj\0d)\0dN\0dM\0dP\0dk\0dj\0dl\0d)\0dF\0dN\0dP\0df\0dk\0dl\0d)\0dF\0dP\0dR\0df\0dl\0dm\0d\11\0d\13\0d\15\0d5\0d\ e\0d-\0d,\0d6\0dn\0d\11\0d\f\0d\13\0d\ e\0d\ f\0d/\0d-\0dn\0do\0d\11\0d\r\0d\f\0d\ f\0d8\0d1\0d/\0do\0d:\0d\11\0d\ e\0d5\0d\10\0d\11\0dn\0d6\0d>\0dp\0d\11\0d\ f\0d\ e\0d\11\0d\12\0do\0dn\0dp\0dq\0d\11\0d8\0d\ f\0d\12\0d\a\0d:\0do\0dq\0d?\0d\11\0d\11\0d\10\0dD\0d\b\0dp\0d>\0dE\0dJ\0d\11\0d\12\0d\11\0d\b\0d\16\0dq\0dp\0dJ\0dN\0d\11\0d\a\0d\12\0d\16\0d\17\0d?\0dq\0dN\0dF\0d\11\0d-\0d,\0d6\0dn\0dV\0dU\0d\\0dr\0d\11\0d/\0d-\0dn\0do\0dW\0dV\0dr\0ds\0d\11\0d1\0d/\0do\0d:\0dY\0dW\0ds\0d^\0d\11\0dn\0d6\0d>\0dp\0dr\0d\\0da\0dt\0d\11\0do\0dn\0dp\0dq\0ds\0dr\0dt\0du\0d\11\0d:\0do\0dq\0d?\0d^\0ds\0du\0db\0d\11\0dp\0d>\0dE\0dJ\0dt\0da\0de\0dh\0d\11\0dq\0dp\0dJ\0dN\0du\0dt\0dh\0dk\0d\11\0d?\0dq\0dN\0dF\0db\0du\0dk\0df\0\ 1\83\ 1\0}\ f\0|\0\0j\1f\0|\18\0d\ 5\0\19j!\0\83\0\0\0|\ f\0\83\ 1\0\83\ 1\0\ 1t\0\0d\ 5\0d\f\0d8\0d@\0dI\0d0\0d4\0d>\0dJ\0dR\0dV\0ds\0db\0dg\0dv\0dw\0dx\0dy\0dz\0d{\0d|\0d}\0d~\0d\7f\0d\80\0d\81\0d\82\0d\83\0d\84\0d\85\0d\86\0d\87\0d\88\0d\89\0d\8a\0d\8b\0d\8c\0d\8d\0d\8e\0d\8f\0d\90\0d\91\0d\92\0d\93\0d\94\0d\95\0d\96\0d\97\0d\98\0d\99\0d\9a\0d\9b\0d\9c\0d\9d\0d\9e\0d\9f\0\0\0\0\0\0\0\0\0\0\0\0gC\0\83\ 1\0}\ f\0|\0\0j\1f\0|\18\0d\ 5\0\19j"\0\83\0\0\0|\ f\0\83\ 1\0\83\ 1\0\ 1t\0\0d\v\0d       \0d\ 5\0d\15\0d\v\0d     \0d\15\0d\13\0d\v\0d
++\0d    \0d\13\0d\v\0d
++\0d\13\0d\f\0d\v\0d\v\0d
++\0d\f\0d\v\0d\v\0d\f\0d\r\0d\v\0d\15\0d\ 6\0d2\0d\v\0d\15\0d2\0d5\0d\v\0d7\0d\r\0d8\0d\v\0d7\0d8\0d;\0d\v\0d5\0d2\0d)\0d\v\0d5\0d)\0d\10\0d\v\0d;\0d8\0d\a\0d\v\0d;\0d\a\0d@\0d\v\0d\10\0d)\0dB\0d\v\0d\10\0dB\0dD\0d\v\0d@\0d\a\0d\17\0d\v\0d@\0d\17\0dG\0d\v\0d\b\0dD\0dI\0d\v\0d\b\0dI\0dL\0d\v\0d\16\0d\b\0dL\0d\v\0d\16\0dL\0dO\0d\v\0d\17\0d\16\0dO\0d\v\0d\17\0dO\0dQ\0d\v\0dS\0dT\0dU\0d\v\0dS\0dU\0dV\0d\v\0d\e\0dS\0dV\0d\v\0d\e\0dV\0dW\0d\v\0dX\0d\e\0dW\0d\v\0dX\0dW\0dY\0d\v\0dU\0dZ\0d[\0d\v\0dU\0d[\0d\\0d\v\0d]\0dY\0d^\0d\v\0d]\0d^\0d_\0d\v\0d\\0d[\0d`\0d\v\0d\\0d`\0da\0d\v\0d_\0d^\0db\0d\v\0d_\0db\0dc\0d\v\0da\0d`\0dd\0d\v\0da\0dd\0de\0d\v\0dc\0db\0df\0d\v\0dc\0df\0dg\0d\v\0dh\0de\0di\0d\v\0dh\0di\0dj\0d\v\0dk\0dh\0dj\0d\v\0dk\0dj\0dl\0d\v\0df\0dk\0dl\0d\v\0df\0dl\0dm\0d\ 6\0d  \0d\ 5\0d+\0d*\0d\ 6\0d\ 5\0d\15\0d,\0d+\0d\ 6\0d\15\0d        \0d*\0d,\0d\ 6\0d\15\0d\13\0d-\0d,\0d\ 6\0d\13\0d   \0d*\0d-\0d\ 6\0d
++\0d    \0d*\0d.\0d\ 6\0d\13\0d
++\0d.\0d-\0d\ 6\0d\13\0d\f\0d/\0d-\0d\ 6\0d\f\0d
++\0d.\0d/\0d\ 6\0d\v\0d
++\0d.\0d0\0d\ 6\0d\f\0d\v\0d0\0d/\0d\ 6\0d\f\0d\r\0d1\0d/\0d\ 6\0d\r\0d\v\0d0\0d1\0d\ 6\0d\15\0d\ 6\0d3\0d,\0d\ 6\0d\ 6\0d2\0d4\0d3\0d\ 6\0d2\0d\15\0d,\0d4\0d\ 6\0d2\0d5\0d6\0d4\0d\ 6\0d5\0d\15\0d,\0d6\0d\ 6\0d7\0d\r\0d1\0d9\0d\ 6\0d\r\0d8\0d:\0d1\0d\ 6\0d8\0d7\0d9\0d:\0d\ 6\0d8\0d;\0d<\0d:\0d\ 6\0d;\0d7\0d9\0d<\0d\ 6\0d2\0d)\0d=\0d4\0d\ 6\0d)\0d5\0d6\0d=\0d\ 6\0d)\0d\10\0d>\0d=\0d\ 6\0d\10\0d5\0d6\0d>\0d\ 6\0d8\0d\a\0d?\0d:\0d\ 6\0d\a\0d;\0d<\0d?\0d\ 6\0d\a\0d@\0dA\0d?\0d\ 6\0d@\0d;\0d<\0dA\0d\ 6\0d)\0dB\0dC\0d=\0d\ 6\0dB\0d\10\0d>\0dC\0d\ 6\0dB\0dD\0dE\0dC\0d\ 6\0dD\0d\10\0d>\0dE\0d\ 6\0d\a\0d\17\0dF\0d?\0d\ 6\0d\17\0d@\0dA\0dF\0d\ 6\0d\17\0dG\0dH\0dF\0d\ 6\0dG\0d@\0dA\0dH\0d\ 6\0d\b\0dD\0dE\0dJ\0d\ 6\0dD\0dI\0dK\0dE\0d\ 6\0dI\0d\b\0dJ\0dK\0d\ 6\0dI\0dL\0dM\0dK\0d\ 6\0dL\0d\b\0dJ\0dM\0d\ 6\0d\16\0d\b\0dJ\0dN\0d\ 6\0dL\0d\16\0dN\0dM\0d\ 6\0dL\0dO\0dP\0dM\0d\ 6\0dO\0d\16\0dN\0dP\0d\ 6\0d\17\0d\16\0dN\0dF\0d\ 6\0dO\0d\17\0dF\0dP\0d\ 6\0dO\0dQ\0dR\0dP\0d\ 6\0dQ\0d\17\0dF\0dR\0d\ 6\0d5\0d\ e\0dn\0d6\0d\ 6\0d\ e\0d\13\0d-\0dn\0d\ 6\0d\ e\0d\ f\0do\0dn\0d\ 6\0d\ f\0d\f\0d/\0do\0d\ 6\0d\ f\0d8\0d:\0do\0d\ 6\0d\10\0d\11\0dp\0d>\0d\ 6\0d\11\0d\ e\0dn\0dp\0d\ 6\0d\11\0d\12\0dq\0dp\0d\ 6\0d\12\0d\ f\0do\0dq\0d\ 6\0d\12\0d\a\0d?\0dq\0d\ 6\0d\b\0d\11\0dp\0dJ\0d\ 6\0d\16\0d\12\0dq\0dN\0d\ 6\0d*\0d+\0dT\0dS\0d\ 6\0d+\0d,\0dU\0dT\0d\ 6\0d,\0d*\0dS\0dU\0d\ 6\0d,\0d-\0dV\0dU\0d\ 6\0d-\0d*\0dS\0dV\0d\ 6\0d.\0d*\0dS\0d\e\0d\ 6\0d-\0d.\0d\e\0dV\0d\ 6\0d-\0d/\0dW\0dV\0d\ 6\0d/\0d.\0d\e\0dW\0d\ 6\0d0\0d.\0d\e\0dX\0d\ 6\0d/\0d0\0dX\0dW\0d\ 6\0d/\0d1\0dY\0dW\0d\ 6\0d1\0d0\0dX\0dY\0d\ 6\0d,\0d3\0dZ\0dU\0d\ 6\0d3\0d4\0d[\0dZ\0d\ 6\0d4\0d,\0dU\0d[\0d\ 6\0d4\0d6\0d\\0d[\0d\ 6\0d6\0d,\0dU\0d\\0d\ 6\0d9\0d1\0dY\0d]\0d\ 6\0d1\0d:\0d^\0dY\0d\ 6\0d:\0d9\0d]\0d^\0d\ 6\0d:\0d<\0d_\0d^\0d\ 6\0d<\0d9\0d]\0d_\0d\ 6\0d4\0d=\0d`\0d[\0d\ 6\0d=\0d6\0d\\0d`\0d\ 6\0d=\0d>\0da\0d`\0d\ 6\0d>\0d6\0d\\0da\0d\ 6\0d:\0d?\0db\0d^\0d\ 6\0d?\0d<\0d_\0db\0d\ 6\0d?\0dA\0dc\0db\0d\ 6\0dA\0d<\0d_\0dc\0d\ 6\0d=\0dC\0dd\0d`\0d\ 6\0dC\0d>\0da\0dd\0d\ 6\0dC\0dE\0de\0dd\0d\ 6\0dE\0d>\0da\0de\0d\ 6\0d?\0dF\0df\0db\0d\ 6\0dF\0dA\0dc\0df\0d\ 6\0dF\0dH\0dg\0df\0d\ 6\0dH\0dA\0dc\0dg\0d\ 6\0dJ\0dE\0de\0dh\0d\ 6\0dE\0dK\0di\0de\0d\ 6\0dK\0dJ\0dh\0di\0d\ 6\0dK\0dM\0dj\0di\0d\ 6\0dM\0dJ\0dh\0dj\0d\ 6\0dN\0dJ\0dh\0dk\0d\ 6\0dM\0dN\0dk\0dj\0d\ 6\0dM\0dP\0dl\0dj\0d\ 6\0dP\0dN\0dk\0dl\0d\ 6\0dF\0dN\0dk\0df\0d\ 6\0dP\0dF\0df\0dl\0d\ 6\0dP\0dR\0dm\0dl\0d\ 6\0dR\0dF\0df\0dm\0d\ 6\0d6\0dn\0dr\0d\\0d\ 6\0dn\0d-\0dV\0dr\0d\ 6\0dn\0do\0ds\0dr\0d\ 6\0do\0d/\0dW\0ds\0d\ 6\0do\0d:\0d^\0ds\0d\ 6\0d>\0dp\0dt\0da\0d\ 6\0dp\0dn\0dr\0dt\0d\ 6\0dp\0dq\0du\0dt\0d\ 6\0dq\0do\0ds\0du\0d\ 6\0dq\0d?\0db\0du\0d\ 6\0dJ\0dp\0dt\0dh\0d\ 6\0dN\0dq\0du\0dk\0d\ 6\0d\13\0d\15\0d5\0d\ e\0d\ 6\0d\f\0d\13\0d\ e\0d\ f\0d\ 6\0d\r\0d\f\0d\ f\0d8\0d\ 6\0d\ e\0d5\0d\10\0d\11\0d\ 6\0d\ f\0d\ e\0d\11\0d\12\0d\ 6\0d8\0d\ f\0d\12\0d\a\0d\ 6\0d\11\0d\10\0dD\0d\b\0d\ 6\0d\12\0d\11\0d\b\0d\16\0d\ 6\0d\a\0d\12\0d\16\0d\17\0d\ 6\0dV\0dU\0d\\0dr\0d\ 6\0dW\0dV\0dr\0ds\0d\ 6\0dY\0dW\0ds\0d^\0d\ 6\0dr\0d\\0da\0dt\0d\ 6\0ds\0dr\0dt\0du\0d\ 6\0d^\0ds\0du\0db\0d\ 6\0dt\0da\0de\0dh\0d\ 6\0du\0dt\0dh\0dk\0d\ 6\0db\0du\0dk\0df\0g\9a\ 3\83\ 1\0}\ f\0|\0\0j\1f\0|\18\0d\14\0\19j!\0\83\0\0\0|\ f\0\83\ 1\0\83\ 1\0\ 1t\0\0d\ 5\0d\ 6\0d\r\0d\ e\0d)\0d\a\0d\b\0dI\0d+\0d3\0d1\0dn\0d=\0d?\0dJ\0dK\0dT\0dZ\0dY\0dr\0d`\0db\0dh\0di\0\0\0\0\0dx\0\0\0\0\0\0\0d|\0\0\0\0\0\0\0d\80\0\0\0\0\0d¿\0\0\0\0\0\0d\87\0\0\0\0\0\0\0d\8c\0\0\0\0\0\0\0d\91\0\0\0\0\0\0\0d\96\0\0\0\0\0\0\0\0\0\0d\9c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0dÿ\0d\0\ 1d\ 1\ 1d\ 2\ 1d\ 3\ 1d\ 4\ 1d\ 5\ 1d\ 6\ 1d\a\ 1d\b\ 1d  \ 1d
++\ 1d\v\ 1d\f\ 1d\r\ 1d\ e\ 1d\ f\ 1d\10\ 1d\11\ 1d\12\ 1d\13\ 1d\14\ 1d\15\ 1d\16\ 1d\17\ 1d\18\ 1d\19\ 1d\1a\ 1d\e\ 1d\1c\ 1d\1d\ 1d\1e\ 1d\1f\ 1\ 1d!\ 1d"\ 1d#\ 1d$\ 1d%\ 1d&\ 1d'\ 1d(\ 1d)\ 1d*\ 1d+\ 1d,\ 1d-\ 1d.\ 1d/\ 1d0\ 1d1\ 1d2\ 1d3\ 1d4\ 1d5\ 1d6\ 1d7\ 1d8\ 1d9\ 1d:\ 1d;\ 1d<\ 1d=\ 1d>\ 1d?\ 1d@\ 1dA\ 1dB\ 1dC\ 1dD\ 1dE\ 1dF\ 1dG\ 1dH\ 1dI\ 1dJ\ 1dK\ 1\0\83\ 1\0}\ f\0|\0\0j\1f\0|\18\0d\14\0\19j"\0\83\0\0\0|\ f\0\83\ 1\0\83\ 1\0\ 1t\0\0d     \0d      \0d\ 5\0d   \0d\ 5\0d\15\0d        \0d\15\0d   \0d      \0d\15\0d\13\0d        \0d\13\0d   \0d      \0d
++\0d    \0d      \0d\13\0d
++\0d    \0d\13\0d\f\0d        \0d\f\0d
++\0d    \0d\v\0d
++\0d    \0d\f\0d\v\0d        \0d\f\0d\r\0d        \0d\r\0d\v\0d        \0d\15\0d\ 6\0d        \0d\ 6\0d2\0d        \0d2\0d\15\0d        \0d2\0d5\0d        \0d5\0d\15\0d        \0d7\0d\r\0d        \0d\r\0d8\0d        \0d8\0d7\0d        \0d8\0d;\0d        \0d;\0d7\0d        \0d2\0d)\0d        \0d)\0d5\0d        \0d)\0d\10\0d        \0d\10\0d5\0d        \0d8\0d\a\0d        \0d\a\0d;\0d        \0d\a\0d@\0d        \0d@\0d;\0d        \0d)\0dB\0d        \0dB\0d\10\0d        \0dB\0dD\0d        \0dD\0d\10\0d        \0d\a\0d\17\0d        \0d\17\0d@\0d        \0d\17\0dG\0d        \0dG\0d@\0d        \0d\b\0dD\0d        \0dD\0dI\0d        \0dI\0d\b\0d        \0dI\0dL\0d        \0dL\0d\b\0d        \0d\16\0d\b\0d        \0dL\0d\16\0d        \0dL\0dO\0d        \0dO\0d\16\0d        \0d\17\0d\16\0d        \0dO\0d\17\0d        \0dO\0dQ\0d        \0dQ\0d\17\0d        \0d5\0d\ e\0d        \0d\ e\0d\13\0d        \0d\ e\0d\ f\0d        \0d\ f\0d\f\0d        \0d\ f\0d8\0d        \0d\10\0d\11\0d        \0d\11\0d\ e\0d        \0d\11\0d\12\0d        \0d\12\0d\ f\0d        \0d\12\0d\a\0d        \0d\b\0d\11\0d        \0d\16\0d\12\0d        \0dS\0dT\0d        \0dT\0dU\0d        \0dU\0dS\0d        \0dU\0dV\0d        \0dV\0dS\0d        \0d\e\0dS\0d        \0dV\0d\e\0d        \0dV\0dW\0d        \0dW\0d\e\0d        \0dX\0d\e\0d        \0dW\0dX\0d        \0dW\0dY\0d        \0dY\0dX\0d        \0dU\0dZ\0d        \0dZ\0d[\0d        \0d[\0dU\0d        \0d[\0d\\0d        \0d\\0dU\0d        \0d]\0dY\0d        \0dY\0d^\0d        \0d^\0d]\0d        \0d^\0d_\0d        \0d_\0d]\0d        \0d[\0d`\0d        \0d`\0d\\0d        \0d`\0da\0d        \0da\0d\\0d        \0d^\0db\0d        \0db\0d_\0d        \0db\0dc\0d        \0dc\0d_\0d        \0d`\0dd\0d        \0dd\0da\0d        \0dd\0de\0d        \0de\0da\0d        \0db\0df\0d        \0df\0dc\0d        \0df\0dg\0d        \0dg\0dc\0d        \0dh\0de\0d        \0de\0di\0d        \0di\0dh\0d        \0di\0dj\0d        \0dj\0dh\0d        \0dk\0dh\0d        \0dj\0dk\0d        \0dj\0dl\0d        \0dl\0dk\0d        \0df\0dk\0d        \0dl\0df\0d        \0dl\0dm\0d        \0dm\0df\0d        \0d\\0dr\0d        \0dr\0dV\0d        \0dr\0ds\0d        \0ds\0dW\0d        \0ds\0d^\0d        \0da\0dt\0d        \0dt\0dr\0d        \0dt\0du\0d        \0du\0ds\0d        \0du\0db\0d        \0dh\0dt\0d        \0dk\0du\0g\80\ 1\83\ 1\0}\ f\0|\0\0j\1f\0|\18\0d!\0\19j!\0\83\0\0\0|\ f\0\83\ 1\0\83\ 1\0\ 1t\0\0dL\ 1\83\ 1\0}\ f\0|\ f\0j\ 2\0\83\0\0\ 1|\ f\0d\v\09}\ f\0|\0\0j\1f\0|\18\0d!\0\19j"\0\83\0\0\0|\ f\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1a\0|\18\0j#\0d\14\0d\18\0\83\ 2\0j\e\0\83\0\0d\18\0\83\ 2\0\ 1|\0\0j\1a\0|\18\0j#\0d!\0d\19\0\83\ 2\0j\e\0\83\0\0d\19\0\83\ 2\0\ 1|\0\0j\1f\0|\18\0j#\0d\14\0d\18\0\83\ 2\0j$\0t\0\0d\ 5\0d     \0d
++\0d\v\0d\ 6\0d\15\0\0dM\ 1dN\ 1g  \0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1f\0|\18\0j#\0d\14\0d\1e\0\83\ 2\0j$\0t\0\0d\b\0d\16\0d\17\0dG\0dI\0dL\0dO\ 1dP\ 1dQ\ 1g      \0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1f\0|\18\0j#\0d!\0d\19\0\83\ 2\0j$\0t\0\0d\ 5\0d      \0d\15\0d7\0d\ e\0d\ f\0d8\0d\11\0dB\0dD\0dO\0dQ\0d*\0d,\0d-\0d1\0d4\0d:\0dp\0dq\0g\14\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1f\0|\18\0j#\0d!\0\0\83\ 2\0j$\0t\0\0dT\0dS\0dU\0d]\0dr\0ds\0d^\0dt\0dd\0de\0dl\0dm\0dR\ 1dS\ 1dT\ 1\0dU\ 1dV\ 1dW\ 1dX\ 1g\14\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1f\0|\18\0j#\0d\ 5\0d\1d\0\83\ 2\0j$\0t\0\0d\ 5\0\0d
++\0d\v\0d\ 6\0d\15\0d\b\0d\16\0d\17\0dG\0dI\0dL\0d=\0d>\0dp\0dN\0dF\0dH\0g\12\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1f\0|\18\0j#\0d\14\0d\1f\0\83\ 2\0j$\0t\0\0d=\0d>\0dA\0dN\0dK\0dM\0dP\0d\e\0dV\0dW\0d^\0d_\0da\0dc\0dd\0dh\0df\0dl\0dv\0dY\ 1dx\0dZ\ 1d[\ 1d\\ 1\0d]\ 1dz\0d^\ 1d_\ 1d`\ 1da\ 1db\ 1dc\ 1dd\ 1de\ 1\0d~\0df\ 1dg\ 1dh\ 1g(\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\18\0j\f\0di\ 1\83\ 1\0\ 1|\18\0j\13\0|\ 1\0d\ 5\0\83\ 2\0\ 1d\1a\0S(j\ 1\0\0s5\0\0\0 New functionality of MEDFileUMesh.buildExtrudedMesh.s\f\0\0\0Pyfile85.medRn\ 2\0\0t\ 6\0\0\0Mesh1Dt\ 6\0\0\0Mesh3Di\0\0\0\0i\ 4\0\0\0i\14\0\0\0i\18\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\a\0\0\0i\b\0\0\0i\f\0\0\0i\r\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0i\ 6\0\0\0iÿÿÿÿi\ 5\0\0\0i\19\0\0\0i\1a\0\0\0R\93\ 2\0\0R\95\ 2\0\0NiB\0\0\0\0\0\0t\r\0\0\0grp0_extrudedt\b\0\0\0grp0_topt\r\0\0\0grp1_extrudedt\b\0\0\0grp1_topiþÿÿÿg\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@g\0\0\0\0\0\0\10@g\0\0\0\0\0\0\14@g\11ê-\81\99\97q=i\10\0\0\0i!\0\0\0\0\0\0i%\0\0\0i&\0\0\0i"\0\0\0i'\0\0\0i#\0\0\0i(\0\0\0i
++\0\0\0i$\0\0\0i*\0\0\0i\v\0\0\0i+\0\0\0i      \0\0\0i\ e\0\0\0i)\0\0\0i.\0\0\0i\ f\0\0\0i/\0\0\0i0\0\0\0i1\0\0\0i4\0\0\0i\15\0\0\0i5\0\0\0i\16\0\0\0i6\0\0\0i\17\0\0\0i7\0\0\0i:\0\0\0i\e\0\0\0i;\0\0\0i\1c\0\0\0i8\0\0\0i<\0\0\0i\1d\0\0\0i=\0\0\0i9\0\0\0i\1e\0\0\0i>\0\0\0i\1f\0\0\0i?\0\0\0iA\0\0\0i@\0\0\0iE\0\0\0iF\0\0\0iG\0\0\0iC\0\0\0iH\0\0\0iD\0\0\0iJ\0\0\0iK\0\0\0iI\0\0\0iN\0\0\0iO\0\0\0iP\0\0\0iQ\0\0\0iT\0\0\0iU\0\0\0iV\0\0\0iW\0\0\0iZ\0\0\0i[\0\0\0iX\0\0\0i\\0\0\0i]\0\0\0iY\0\0\0i^\0\0\0i_\0\0\0i,\0\0\0i-\0\0\0i2\0\0\0i3\0\0\0iL\0\0\0iM\0\0\0iR\0\0\0iS\0\0\0ib\0\0\0ii\0\0\0ip\0\0\0iw\0\0\0i~\0\0\0i\85\0\0\0i\8c\0\0\0i\93\0\0\0i\9a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\ 3\ 1\0\0i
++\ 1\0\0i\11\ 1\0\0i\18\ 1\0\0i\1f\ 1\0\0i&\ 1\0\0i-\ 1\0\0i4\ 1\0\0i;\ 1\0\0iB\ 1\0\0iI\ 1\0\0iP\ 1\0\0iY\ 1\0\0ib\ 1\0\0ik\ 1\0\0it\ 1\0\0i}\ 1\0\0i\86\ 1\0\0i\8f\ 1\0\0i\98\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0i`\0\0\0id\0\0\0ih\0\0\0il\0\0\0it\0\0\0ix\0\0\0i|\0\0\0i\80\0\0\0i\84\0\0\0i\88\0\0\0i\90\0\0\0i\94\0\0\0i\98\0\0\0i\9c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\ 1\ 1\0\0i\ 6\ 1\0\0i\v\ 1\0\0i\10\ 1\0\0i\15\ 1\0\0i\1a\ 1\0\0i$\ 1\0\0i)\ 1\0\0i.\ 1\0\0i3\ 1\0\0i8\ 1\0\0i=\ 1\0\0iG\ 1\0\0iL\ 1\0\0iQ\ 1\0\0iV\ 1\0\0i[\ 1\0\0i`\ 1\0\0ie\ 1\0\0ij\ 1\0\0io\ 1\0\0iy\ 1\0\0i~\ 1\0\0i\83\ 1\0\0i\88\ 1\0\0i\8d\ 1\0\0i\92\ 1\0\0i\97\ 1\0\0i\9c\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0i¿\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0i\0\ 2\0\0i\ 5\ 2\0\0i
++\ 2\0\0i\ f\ 2\0\0i\14\ 2\0\0i\19\ 2\0\0i\1e\ 2\0\0i#\ 2\0\0i(\ 2\0\0i-\ 2\0\0i2\ 2\0\0i7\ 2\0\0i<\ 2\0\0iA\ 2\0\0iF\ 2\0\0iK\ 2\0\0iP\ 2\0\0iU\ 2\0\0iZ\ 2\0\0i_\ 2\0\0id\ 2\0\0ii\ 2\0\0in\ 2\0\0is\ 2\0\0ix\ 2\0\0i}\ 2\0\0i\82\ 2\0\0i\87\ 2\0\0i\8c\ 2\0\0i\91\ 2\0\0i\96\ 2\0\0i\9b\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0iÿ\ 2\0\0i\ 4\ 3\0\0i        \ 3\0\0i\ e\ 3\0\0i\13\ 3\0\0i\18\ 3\0\0i\1d\ 3\0\0i"\ 3\0\0i'\ 3\0\0i,\ 3\0\0i1\ 3\0\0i6\ 3\0\0i;\ 3\0\0i@\ 3\0\0iE\ 3\0\0iJ\ 3\0\0iO\ 3\0\0iT\ 3\0\0iY\ 3\0\0i^\ 3\0\0ic\ 3\0\0ih\ 3\0\0im\ 3\0\0ir\ 3\0\0iw\ 3\0\0i|\ 3\0\0i\81\ 3\0\0i\86\ 3\0\0i\8b\ 3\0\0i\90\ 3\0\0i\95\ 3\0\0i\9a\ 3\0\0i\81\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ia\0\0\0ie\0\0\0if\0\0\0ij\0\0\0in\0\0\0ir\0\0\0is\0\0\0ic\0\0\0iq\0\0\0iu\0\0\0iy\0\0\0i}\0\0\0i\82\0\0\0i\86\0\0\0i\87\0\0\0i\8e\0\0\0i\8f\0\0\0i\91\0\0\0i\95\0\0\0i\96\0\0\0i\9e\0\0\0\0\0\0\0\0\0t\f\0\0\0MeshExtruded(%\0\0\0Rk\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0\ 1\0\0t\ f\0\0\0buildComplementR§\0\0\0Rs\ 2\0\0t
++\0\0\0simplexizeR[\0\0\0t\18\0\0\0MergeUMeshesOnSameCoordsRB\0\0\0R\9b\ 1\0\0\ 2\0\0\ 2\0\0R>\0\0\0Rj\0\0\0Rl\0\0\0R\v\0\0\0\ 3\0\0\0\0\0R'\0\0\0R(\0\0\0R}\0\0\0t\11\0\0\0buildExtrudedMeshR+\0\0\0RC\0\0\0t\17\0\0\0getNumberOfCellsAtLevelR²\ 1\0\0\0\0\0R0\0\0\0R1\0\0\0Rv\0\0\0Rw\0\0\0RG\0\0\0R\7f\ 1\0\0(\19\0\0\0R    \0\0\0R!\0\0\0t
++\0\0\0meshName2Dt
++\0\0\0meshName1Dt\r\0\0\0meshName3DOutRú\ 2\0\0Ro\ 1\0\0\ 2\0\0R\83\0\0\0t\ 3\0\0\0d1cRá\0\0\0R\84\0\0\0t\a\0\0\0mMinus1Rï\ 2\0\0R\80\0\0\0Re\ 1\0\0R\ 2\0\0\0R\86\0\0\0R\93\ 2\0\0R\95\ 2\0\0R\93\ 1\0\0t\ 4\0\0\0mm1Dt\ 4\0\0\0mm2Dt\ 3\0\0\0m1Dt\ 4\0\0\0mm3D(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt"\0\0\0testMEDFileUMeshBuildExtrudedMesh1ä\ f\0\0\0\0\0\0\ 2\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 2\18\ 10\ 2\f\0
++\ 1     \0\10\ 1\f\ 1\15\ 1
++\0
++\ 1
++\0\19\ 1\r\ 1\15\ 1\r\ 1\e\ 1\15\ 2 \ 1\10\0\10\ 1'\0\r\ 1\13\ 1\ 6\0\r\ 1\13\ 1\10\ 2\f\0
++\ 1     \0\r\0\f\ 1\r\ 1\r\ 1,\ 1     \ 1\10\ 1\10\ 2\12\ 1\12\ 1\ f\ 1\12\ 2\1c\ 1\19\ 1\19\ 1(\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1ÿ\0ÿ\0ÿ\0ÿ\0\90\ 1\1f\ 1ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ç\ 1 \ 1Õ\ 1 \ 1ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ä\ 1 \ 1ÿ\0ÿ\0W\ 1 \ 1ÿ\0ÿ\0ÿ\0ÿ\0\90\ 1 \ 1\f\0
++\0
++\ 1 \ 2"\ 1"\ 1C\ 1C\ 1d\ 1d\ 1^\ 1 \ 1\r\ 1\10\ 1s\ e\0\0\0requires numpyc\ 1\0\0\0\11\0\0\0\13\0\0\0C\0\0\0\ 6\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 4\0d\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 2\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 4\0g\12\0d\ 5\0d\ 6\0\83\ 3\0}\ 2\0|\ 2\0j\ 1\0d\a\0d\b\0g\ 2\0\83\ 1\0\ 1d    \0d
++\0d\v\0d\f\0d\f\0d\v\0d\ 6\0d\v\0d\r\0d\ 6\0d\ e\0d\ f\0d\v\0d
++\0d\ f\0d\10\0d\r\0d\v\0g\12\0}\ 3\0t\ 2\0\83\0\0}\ 4\0|\ 4\0j\ 3\0d\ 6\0\83\ 1\0\ 1|\ 4\0j\ 4\0d\r\0\83\ 1\0\ 1|\ 4\0j\ 5\0t\ 6\0d
++\0|\ 3\0d\v\0d\ f\0!\83\ 3\0\ 1|\ 4\0j\ 5\0t\ 6\0d
++\0|\ 3\0d\ f\0d\11\0!\83\ 3\0\ 1|\ 4\0j\ 5\0t\a\0d\v\0|\ 3\0d       \0d\v\0!\83\ 3\0\ 1|\ 4\0j\ 5\0t\b\0d\v\0|\ 3\0d\11\0d\12\0!\83\ 3\0\ 1|\ 4\0j\ 5\0t\b\0d\v\0|\ 3\0d\12\0d\13\0!\83\ 3\0\ 1|\ 4\0j       \0\83\0\0\ 1|\ 4\0j
++\0|\ 2\0\83\ 1\0\ 1|\ 4\0j\v\0\83\0\0\ 1t\ 2\0j\f\0\83\0\0}\ 5\0|\ 5\0j\ 3\0d\f\0\83\ 1\0\ 1|\ 5\0j\ 4\0d
++\0\83\ 1\0\ 1|\ 5\0j\ 5\0t\r\0d\ 6\0d\f\0d\v\0g\ 2\0\83\ 3\0\ 1|\ 5\0j\ 5\0t\r\0d\ 6\0d
++\0d\ e\0g\ 2\0\83\ 3\0\ 1|\ 5\0j\ 5\0t\ e\0d
++\0d\ 6\0d\10\0d\r\0g\ 3\0\83\ 3\0\ 1|\ 5\0\0\83\0\0\ 1|\ 5\0j
++\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\v\0\83\0\0\ 1t\ 2\0j\f\0\83\0\0}\ 6\0|\ 6\0j\ 3\0\0\83\ 1\0\ 1|\ 6\0j\ 4\0d\v\0\83\ 1\0\ 1|\ 6\0j\ 5\0t\ f\0d\f\0d\f\0g\ 1\0\83\ 3\0\ 1|\ 6\0j\ 5\0t\ f\0d\f\0d
++\0g\ 1\0\83\ 3\0\ 1|\ 6\0j\ 5\0t\ f\0d\f\0d\ 6\0g\ 1\0\83\ 3\0\ 1|\ 6\0j\ 5\0t\ f\0d\f\0d\ e\0g\ 1\0\83\ 3\0\ 1|\ 6\0j      \0\83\0\0\ 1|\ 6\0j
++\0|\ 2\0\83\ 1\0\ 1|\ 6\0j\v\0\83\0\0\ 1t\10\0j\f\0\83\0\0}\a\0|\0\0j\11\0|\a\0j\12\0\83\0\0\83\ 1\0\ 1|\a\0j\13\0d\14\0\83\ 1\0\ 1|\a\0j\14\0d\15\0\83\ 1\0\ 1|\a\0j
++\0|\ 2\0\83\ 1\0\ 1|\ 5\0|\a\0d\16\0<|\ 4\0|\a\0d     \0<|\a\0j\15\0d       \0t\16\0d\17\0d\18\0d\19\0d\1a\0d\ f\0g\ 5\0\83\ 1\0\83\ 2\0\ 1|\ 6\0|\a\0d\e\0<|\a\0j\15\0d\e\0t\16\0d\1c\0d\1d\0d\1e\0d\1f\0g\ 4\0\83\ 1\0\83\ 2\0\ 1t\16\0j\f\0\83\0\0}\b\0|\b\0j\17\0d\f\0d
++\0g\ 2\0d\ 6\0d\f\0\83\ 3\0\ 1|\b\0j\13\0\0\83\ 1\0\ 1t\16\0j\f\0\83\0\0\0|      \0j\17\0d\f\0d\ 6\0d
++\0g\ 3\0d
++\0d\f\0\83\ 3\0\ 1|     \0j\13\0d!\0\83\ 1\0\ 1|\a\0j\18\0d      \0|\b\0|   \0g\ 2\0t\19\0\83\ 3\0\ 1t\16\0j\f\0\83\0\0}
++\0|
++\0j\17\0\0d\f\0d\ 6\0g\ 3\0d
++\0d\f\0\83\ 3\0\ 1|
++\0j\13\0\0\83\ 1\0\ 1t\16\0j\f\0\83\0\0}\v\0|\v\0j\17\0d        \0d\ 6\0g\ 2\0d\ 6\0d\f\0\83\ 3\0\ 1|\v\0j\13\0d!\0\83\ 1\0\ 1|\a\0j\18\0d\16\0|
++\0|\v\0g\ 2\0t\19\0\83\ 3\0\ 1t\16\0j\f\0\83\0\0}\f\0|\f\0j\17\0t\1a\0t\e\0d\10\0\83\ 1\0\83\ 1\0d\10\0d\f\0\83\ 3\0\ 1|\f\0j\13\0\0\83\ 1\0\ 1t\16\0j\f\0\83\0\0}\r\0|\r\0j\17\0t\1a\0t\e\0d\ 5\0\83\ 1\0\83\ 1\0d\ 5\0d\f\0\83\ 3\0\ 1|\r\0j\13\0d!\0\83\ 1\0\ 1|\a\0j\18\0d\f\0|\f\0|\r\0g\ 2\0t\19\0\83\ 3\0\ 1|\a\0j\1c\0d        \0d"\0\83\ 2\0\ 1|\a\0j\1d\0\0\0t\19\0\83\ 3\0}\ e\0|\0\0j\11\0|\b\0j\1e\0|\ e\0\83\ 1\0\83\ 1\0\ 1|\a\0j\1d\0d      \0d!\0t\19\0\83\ 3\0}\ e\0|\0\0j\11\0|    \0j\1e\0|\ e\0\83\ 1\0\83\ 1\0\ 1|\a\0j\1d\0d\16\0\0t\19\0\83\ 3\0}\ e\0|\0\0j\11\0|
++\0j\1e\0|\ e\0\83\ 1\0\83\ 1\0\ 1|\a\0j\1d\0d\16\0d!\0t\19\0\83\ 3\0}\ e\0|\0\0j\11\0|\v\0j\1e\0|\ e\0\83\ 1\0\83\ 1\0\ 1|\a\0j\1d\0d\f\0\0t\19\0\83\ 3\0}\ e\0|\0\0j\11\0|\f\0j\1e\0|\ e\0\83\ 1\0\83\ 1\0\ 1|\a\0j\1d\0d\f\0d!\0t\19\0\83\ 3\0}\ e\0|\0\0j\11\0|\r\0j\1e\0|\ e\0\83\ 1\0\83\ 1\0\ 1|\0\0j\11\0|\a\0j\1f\0d"\0\83\ 1\0\83\ 1\0\ 1|\a\0j\1d\0d  \0d"\0\83\ 2\0}\ e\0\0j!\0|\a\0\0j"\0\83\ 2\0}\ f\0\0j#\0|\ f\0\83\ 1\0}\10\0|\0\0j\11\0|\a\0j\1e\0|\10\0d#\0\83\ 2\0d    \0\19\83\ 1\0\ 1|\0\0j$\0|\a\0j%\0\83\0\0t&\0\83\ 2\0\ 1|\a\0j'\0t(\0\83\ 1\0\ 1\0j!\0|\a\0\0j"\0\83\ 2\0}\ f\0\0j#\0|\ f\0\83\ 1\0}\10\0|\0\0j\11\0|\a\0j\1e\0|\10\0d#\0\83\ 2\0d     \0\19\83\ 1\0\ 1|\0\0j$\0|\10\0j%\0\83\0\0t(\0\83\ 2\0\ 1d\0\0S($\0\0\0Ns\f\0\0\0Pyfile86.medg333333Ó¿g\9a\99\99\99\99\99É?gffffffæ?i     \0\0\0i\ 2\0\0\0\ 2\0\0t\ 3\0\0\0bbbi\0\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 1\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i
++\0\0\0i\ e\0\0\0i\12\0\0\0RT\0\0\0RU\0\0\0iÿÿÿÿi \0\0\0i)\0\0\0i2\0\0\0i8\0\0\0iþÿÿÿif\0\0\0i4\0\0\0i-\0\0\0i?\0\0\0RV\0\0\0RW\0\0\0RX\0\0\0g\11ê-\81\99\97q=()\0\0\0RY\0\0\0\ 1\0\0R[\0\0\0R\\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0Ra\0\0\0Rb\0\0\0Rc\0\0\0Rd\0\0\0R(\0\0\0Re\0\0\0Rf\0\0\0Rg\0\0\0R>\0\0\0R0\0\0\0Rh\0\0\0RB\0\0\0Ri\0\0\0R\98\0\0\0Rk\0\0\0RZ\0\0\0Rl\0\0\0RN\0\0\0Rm\0\0\0Rn\0\0\0Ro\0\0\0RG\0\0\0R1\0\0\0Rp\0\0\0t\ 6\0\0\0picklet\ 5\0\0\0dumpst\10\0\0\0HIGHEST_PROTOCOLt\ 5\0\0\0loadsR+\0\0\0t\v\0\0\0getAxisTypet\a\0\0\0AX_CARTt\v\0\0\0setAxisTypet\ 6\0\0\0AX_CYL(\11\0\0\0R  \0\0\0RO\0\0\0R\80\0\0\0R\82\0\0\0R\83\0\0\0R\84\0\0\0R\85\0\0\0R\86\0\0\0R\87\0\0\0R\88\0\0\0RQ\0\0\0R\89\0\0\0R\8a\0\0\0R\8b\0\0\0R\8c\0\0\0R\r\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testMEDFileUMeshPickeling15\10\0\0\0\0\0\0\ 2\ 6\ 1H\ 1\13\ 1<\ 1 \ 1\r\ 1\r\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 1
++\ 1\r\ 1
++\ 1\f\ 1\r\ 1\r\ 1\19\ 1\19\ 1\1c\ 1
++\ 1\r\ 1
++\ 1\f\ 1\r\ 1\r\ 1\16\ 1\16\ 1\16\ 1\16\ 1
++\ 1\r\ 1
++\ 2\f\ 1\13\ 1\r\ 1\r\ 1\r\ 1
++\ 1
++\ 1%\ 1
++\ 1"\ 2\f\ 1\19\ 1\r\ 1\f\ 1\1c\ 1\r\ 1\19\ 1\f\ 1\1c\ 1\r\ 1\f\ 1\19\ 1\r\ 1\19\ 1\f\ 1\1f\ 1\r\ 1\f\ 1\1f\ 1\r\ 1\19\ 1\10\ 2\15\ 1\16\ 1\15\ 1\16\ 1\15\ 1\16\ 1\15\ 1\16\ 1\15\ 1\16\ 1\15\ 1\16\ 1\16\ 1\12\ 2\15\ 1\ f\ 1\1d\ 1\16\ 2\r\ 1\15\ 1\ f\ 1\1d\ 1\16\ 1c\ 1\0\0\0\13\0\0\0\ 6\0\0\0C\0\0\0\ 4\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0d\ 4\0}\ 4\0d\ 5\0}\ 5\0t\0\0\83\0\0}\ 6\0t\ 1\0|\ 1\0\83\ 1\0}\a\0|\a\0j\ 2\0\83\0\0\ 1|\ 6\0j\ 3\0|\a\0\83\ 1\0\ 1|\ 6\0j\ 4\0\83\0\0}\ 6\0|\ 6\0j\ 5\0|\ 5\0\83\ 1\0\ 1t\ 6\0\83\0\0}\b\0x\8d\0t\a\0|\ 4\0\83\ 1\0D]\7f\0}      \0t\b\0t   \0\83\ 1\0}
++\0|
++\0j
++\0|\ 6\0\83\ 1\0\ 1t\ 1\0|\ 1\0\83\ 1\0}\a\0|\a\0j\ 2\0\83\0\0\ 1|\a\0|    \09}\a\0|
++\0j\v\0|\a\0\83\ 1\0\ 1|
++\0j\ 5\0|\ 2\0\83\ 1\0\ 1|
++\0j\f\0t\r\0|      \0\83\ 1\0|   \0d\ 6\0\83\ 3\0\ 1|\b\0j\ e\0|
++\0\83\ 1\0\ 1qy\0Wt\ f\0\83\0\0}\v\0|\ 6\0|\v\0d\ 6\0<|\b\0j\10\0|\ 3\0d\a\0\83\ 2\0\ 1|\v\0j\10\0|\ 3\0d\ 6\0\83\ 2\0\ 1t\11\0|\ 3\0t\12\0\83\ 2\0}\f\0t\11\0j\13\0|\ 3\0\0t\14\0f\ 2\0g\ 1\0t\12\0\83\ 3\0}\r\0|\f\0j\15\0\83\0\0\ 1|\r\0j\15\0\83\0\0\ 1xI\0t\a\0|\ 4\0\83\ 1\0D];\0}        \0|\0\0j\16\0|\f\0|\ 2\0\19\0\19j\17\0\83\0\0j\18\0|\r\0|\ 2\0\19|     \0\19j\17\0\83\0\0d\b\0\83\ 2\0\83\ 1\0\ 1q}\ 1Wt\0\0\83\0\0}\ e\0|\ e\0j\ 3\0t\ 1\0d\ 6\0d    \0d\a\0d
++\0g\ 4\0\83\ 1\0t\ 1\0d\ 6\0d        \0g\ 2\0\83\ 1\0\83\ 2\0\ 1|\ e\0j\ 4\0\83\0\0}\ e\0|\ e\0j\19\0d\ 6\0\83\ 1\0\ 1t\0\0\83\0\0}\ f\0|\ f\0j\ 3\0t\ 1\0d
++\0d\v\0d\f\0g\ 3\0\83\ 1\0t\ 1\0d\ 6\0d  \0g\ 2\0\83\ 1\0\83\ 2\0\ 1|\ f\0j\ 4\0\83\0\0}\ f\0t\1a\0j\e\0|\ e\0|\ f\0\83\ 2\0}\10\0|\10\0j\ 5\0|\ 5\0\83\ 1\0\ 1t\ 6\0\83\0\0}\b\0x\8d\0t\a\0|\ 4\0\83\ 1\0D]\7f\0}        \0t\b\0t\1c\0\83\ 1\0}
++\0|
++\0j
++\0|\10\0\83\ 1\0\ 1t\ 1\0d\r\0\83\ 1\0}\a\0|\a\0j\ 2\0\83\0\0\ 1|\a\0|    \09}\a\0|
++\0j\v\0|\a\0\83\ 1\0\ 1|
++\0j\ 5\0|\ 2\0\83\ 1\0\ 1|
++\0j\f\0t\r\0|      \0\83\ 1\0|   \0d\ 6\0\83\ 3\0\ 1|\b\0j\ e\0|
++\0\83\ 1\0\ 1q\81\ 2Wt\ f\0\83\0\0}\v\0|\10\0|\v\0d\ 6\0<|\v\0d\ 6\0=|\0\0j\1d\0|\v\0j\1e\0\83\0\0d\ f\0\83\ 2\0\ 1|\10\0|\v\0d\ 6\0<|\0\0j\1d\0|\v\0j\1e\0\83\0\0d\10\0\83\ 2\0\ 1|\b\0j\10\0|\ 3\0d\a\0\83\ 2\0\ 1t\11\0|\ 3\0t\12\0\83\ 2\0}\f\0t\11\0j\13\0|\ 3\0t\1c\0t\1f\0f\ 2\0g\ 1\0t\12\0\83\ 3\0}\r\0t\ 6\0j\13\0|\ 3\0|\ 2\0t\1c\0\0f\ 2\0g\ 1\0t\12\0\83\ 4\0}\11\0t\11\0j\13\0|\ 3\0t\1c\0t\1f\0f\ 2\0t\1c\0\0f\ 2\0g\ 2\0t\12\0\83\ 3\0}\12\0|\f\0j\15\0\83\0\0\ 1|\r\0j\15\0\83\0\0\ 1|\11\0j\15\0\83\0\0\ 1|\12\0j\15\0\83\0\0\ 1\0t\a\0|\ 4\0\83\ 1\0D]¬\0}       \0|\0\0j\16\0|\f\0|\ 2\0\19\0\19j\17\0\83\0\0d\ e\0 j\18\0|\r\0|\ 2\0\19\0\19j\17\0\83\0\0d\b\0\83\ 2\0\83\ 1\0\ 1|\0\0j\16\0|\f\0|\ 2\0\19|        \0\19j\17\0\83\0\0d\ e\0d\r\0!j\18\0|\11\0|  \0\19j\17\0\83\0\0d\b\0\83\ 2\0\83\ 1\0\ 1|\0\0j\16\0|\f\0|\ 2\0\19|        \0\19j\17\0\83\0\0j\18\0|\12\0|\ 2\0\19|     \0\19j\17\0\83\0\0d\b\0\83\ 2\0\83\ 1\0\ 1q\ e\ 4Wd\0\0S(\11\0\0\0Ni\v\0\0\0t\a\0\0\0myFields\f\0\0\0Pyfile87.medi
++\0\0\0Rn\ 2\0\0i\0\0\0\0i\ 2\0\0\0g\11ê-\81\99\97q=i\ 1\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\b\0\0\0i\ 6\0\0\0(\0\0\0\0(\ 1\0\0\0i\0\0\0\0(!\0\0\0\0\0\0RY\0\0\0Ry\ 1\0\0Rc\0\0\0\ 1\0\0RB\0\0\0\0\0\0Rn\0\0\0Rw\ 1\0\0R\1c\ 1\0\0\0\0\0R{\ 1\0\0\0\0\0RD\ 3\0\0RY\ 1\0\0R>\0\0\0R\v\0\0\0R[\ 1\0\0RN\0\0\0t\14\0\0\0LoadSpecificEntitiest
++\0\0\0NORM_ERRORRw\ 3\0\0R0\0\0\0R+\ 1\0\0R1\0\0\0\ 3\0\0R[\0\0\0R[\ 2\0\0R\13\ 1\0\0R+\0\0\0R,\0\0\0R_\0\0\0R`\0\0\0(\13\0\0\0R       \0\0\0t\a\0\0\0nbNodesRg\ 3\0\0R!\0\0\0t\ 5\0\0\0nbPdtRÊ\ 3\0\0R\83\0\0\0\ 1\0\0Rm\ 1\0\0\0\0\0R\b\0\0\0R\86\0\0\0Rl\ 1\0\0RV\ 3\0\0R\84\0\0\0R\85\0\0\0R\16\ 2\0\0t\ 3\0\0\0fs3t\ 3\0\0\0fs4(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt&\0\0\0testMEDFileFieldsLoadSpecificEntities1\97\10\0\0s\98\0\0\0\0\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 2       \ 1\f\0
++\ 1\r\ 1\f\ 1\r\ 2       \ 1\13\ 1\f\ 1\r\ 1\f\0
++\0
++\ 1\r\ 1\r\ 1\19\ 1\r\ 1\ 4\ 2   \0
++\ 1\10\ 1\10\ 2\ f\ 1\1e\ 1
++\ 1
++\ 1\13\ 15\ 1\ 4\ 1       \0.\0\f\0\r\ 1 \0+\0\f\ 1\12\0\r\ 1       \ 1\13\ 1\f\ 1\r\ 1\f\0
++\0
++\ 1\r\ 1\r\ 1\19\ 1\r\ 1\ 4\ 1   \0
++\ 1\a\ 1\16\ 1
++\ 1\16\ 1\10\ 1\ f\ 1\1e\ 1!\ 1'\ 1
++\ 1
++\ 1
++\ 1
++\ 1\13\ 19\ 18\ 15\ 1\ 4\ 1c\ 1\0\0\0\1f\0\0\0\b\0\0\0C\0\0\0\ 3\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0d\ 4\0}\ 4\0d\ 5\0}\ 5\0d\ 6\0}\ 6\0t\0\0\83\0\0}\a\0t\ 1\0|\ 1\0\83\ 1\0}\b\0|\b\0j\ 2\0\83\0\0\ 1|\a\0j\ 3\0|\b\0\83\ 1\0\ 1|\a\0j\ 4\0\83\0\0}\a\0|\a\0j\ 5\0|\ 5\0\83\ 1\0\ 1|\ 4\0|\ 6\0\1a}    \0t\ 6\0\83\0\0}
++\0\0t\a\0|      \0\83\ 1\0D]æ\0}\v\0t\b\0\83\0\0}\f\0t   \0j
++\0t\v\0d\a\0|\ 4\0d\b\0\83\ 3\0|\v\0|  \0\83\ 3\0}\r\0\0t\a\0|\r\0j\f\0|\r\0j\r\0|\r\0j\ e\0\83\ 3\0D]\89\0}\ e\0t\ f\0t\10\0\83\ 1\0}\ f\0|\ f\0j\11\0|\a\0\83\ 1\0\ 1t\ 1\0|\ 1\0\83\ 1\0}\b\0|\b\0j\ 2\0\83\0\0\ 1|\b\0|\ e\09}\b\0|\ f\0j\12\0|\b\0\83\ 1\0\ 1|\ f\0j\ 5\0d  \0|\ 2\0|\v\0f\ 2\0\16\83\ 1\0\ 1|\ f\0j\13\0t\14\0|\ e\0\83\ 1\0|\ e\0d\a\0\83\ 3\0\ 1|\f\0j\15\0|\ f\0\83\ 1\0\ 1\0W|
++\0j\16\0|\f\0\83\ 1\0\ 1q\89\0Wt\17\0\83\0\0}\10\0|\a\0|\10\0d\a\0<|
++\0j\18\0|\ 3\0d
++\0\83\ 2\0\ 1|\10\0j\18\0|\ 3\0d\a\0\83\ 2\0\ 1d\v\0\84\0\0}\11\0d\f\0d\0\0l\19\0}\12\0t\1a\0|\ 3\0\83\ 1\0}\13\0i\0\0}\14\0|\12\0j\e\0d\r\0\83\ 1\0}\15\0x\85\0|\13\0D]}\0}\16\0|\16\0d\0\0d\0\0d\f\0\85\ 3\0\19}\17\0|\15\0j\1c\0|\17\0\83\ 1\0}\a\0|\a\0rP\ 2|\11\0|\14\0|\a\0j\1d\0d
++\0\83\ 1\0d\0\0d\0\0d\f\0\85\ 3\0\19|\a\0j\1d\0d\b\0\83\ 1\0d\0\0d\0\0d\f\0\85\ 3\0\19\83\ 3\0\ 1\ 1|\11\0|\14\0|\16\0d\ e\0\83\ 3\0\ 1\ 1Wt\ 6\0\83\0\0}\18\0\0|\14\0D]ã\0}\19\0|\14\0|\19\0\19d\ e\0g\ 1\0k\ 3\0\ 2t\1e\0|\14\0|\19\0\19d\ f\0d\10\0\84\0\0\83\ 1\ 1|\14\0|\19\0<n\0\0g\0\0}\1a\0x;\0|\14\0|\19\0\19D]/\0}\e\0|\1a\0j\1f\0t\b\0\0|\ 3\0|\19\0|\e\0\17t\10\0t!\0f\ 2\0g\ 1\0\83\ 3\0\83\ 1\0\ 1\ 2W|\1a\0j"\0\83\0\0\ 1|\1a\0j#\0\83\0\0}\1c\0t$\0|\1a\0\83\ 1\0}\1d\0x'\0t\a\0|\1d\0\83\ 1\0D]\19\0}\1e\0|\1c\0j%\0|\1a\0j#\0\83\0\0\83\ 1\0\ 1\ 3W|\1c\0j\ 5\0|\19\0\83\ 1\0\ 1|\18\0j\16\0|\1c\0\83\ 1\0\ 1qt\ 2W|\0\0j&\0|\18\0d\a\0\19j'\0\83\0\0g\0\0t\a\0|\ 4\0\83\ 1\0D]\e\0}\ e\0|\ e\0d\a\0t\14\0|\ e\0\83\ 1\0f\ 3\0^\ 2\0q{\ 3\83\ 2\0\ 1d\0\0S(\11\0\0\0Ni\v\0\0\0\ 3\0\0s\f\0\0\0Pyfile88.medi,\ 1\0\0Rn\ 2\0\0id\0\0\0i\0\0\0\0i\ 1\0\0\0s\ 5\0\0\0%s_%di\ 2\0\0\0c\ 3\0\0\0\ 3\0\0\0\ 3\0\0\0S\0\0\0s1\0\0\0|\ 1\0|\0\0k\ 6\0\0|\0\0|\ 1\0\19j\0\0|\ 2\0\83\ 1\0\ 1n\r\0|\ 2\0g\ 1\0|\0\0|\ 1\0<d\0\0S(\ 1\0\0\0N(\ 1\0\0\0t\ 6\0\0\0append(\ 3\0\0\0Re\ 1\0\0t\ 3\0\0\0keyt\ 3\0\0\0val(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\f\0\0\0appendInDictÿ\10\0\0s\b\0\0\0\0\ 1\f\ 1\14\ 2\r\ 1iÿÿÿÿs\11\0\0\0([\d]+)([\s\S]+)$R&\0\0\0R\0\ 4\0\0c\ 1\0\0\0\ 1\0\0\0\ 2\0\0\0S\0\0\0s
++\0\0\0t\0\0|\0\0\83\ 1\0S(\ 1\0\0\0N(\ 1\0\0\0t\ 3\0\0\0int(\ 1\0\0\0t\ 1\0\0\0x(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\b\0\0\0<lambda>\16\11\0\0s\0\0\0\0((\0\0\0\0\0\0RY\0\0\0Ry\ 1\0\0Rc\0\0\0\ 1\0\0RB\0\0\0R[\ 1\0\0Rn\0\0\0\0\0\0Rc\ 3\0\0t\b\0\0\0GetSliceRÐ\ 3\0\0t\ 5\0\0\0startt\ 4\0\0\0stopt\ 4\0\0\0stepRw\ 1\0\0R\1c\ 1\0\0\0\0\0R{\ 1\0\0\0\0\0RD\ 3\0\0RY\ 1\0\0R\\ 1\0\0R>\0\0\0R\v\0\0\0t\ 2\0\0\0ret\10\0\0\0GetAllFieldNamest\a\0\0\0compilet\ 5\0\0\0matchRü\ 1\0\0t\ 6\0\0\0sortedRÿ\ 3\0\0\ 3\0\0\ 3\0\0t\a\0\0\0reverset\ 3\0\0\0popRy\0\0\0t\11\0\0\0pushBackTimeStepsR+\0\0\0\0\0\0(\1f\0\0\0R    \0\0\0\ 3\0\0Rg\ 3\0\0R!\0\0\0\ 3\0\0\ 3\0\0t\ 6\0\0\0maxPdtR\83\0\0\0\ 1\0\0t      \0\0\0nbOfFieldRl\ 1\0\0Rf\ 3\0\0Rm\ 1\0\0t\ 1\0\0\0sRî\0\0\0R\b\0\0\0R\86\0\0\0R\ 2\ 4\0\0R
++\ 4\0\0t  \0\0\0allFieldst\r\0\0\0allFieldsDictt\ 3\0\0\0patR\r\0\0\0t\ 5\0\0\0stRevRV\ 3\0\0t\ 1\0\0\0kt\ 5\0\0\0fmts2Rv\ 2\0\0t\ 6\0\0\0zeResut\ 6\0\0\0nbItert\ 2\0\0\0ii(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\16\0\0\0testMEDFileLotsOfTSRW1Ü\10\0\0s\86\0\0\0\0\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 2\ 6\ 1        \ 1\f\0
++\ 1\r\ 1\f\ 1\r\ 2
++\ 1     \ 1\13\ 1     \ 1!\ 1"\ 1\f\ 1\r\ 1\f\0
++\0
++\ 1\r\ 1\17\ 1\19\ 1\r\ 1\ 4\ 1\r\ 1\ 4\ 2       \0
++\ 1\10\ 1\10\ 2 \ 6\f\ 1\f\ 1\ 6\ 1\ f\ 1\r\ 1\13\ 1\ f\ 1\ 6\ 1<\ 1\ 3\ 2\10\ 2\ 4\ 1       \ 1\r\ 1\13\ 1\1d\ 1\ 3\ 1\ 6\ 1\11\ 1)\ 1\ 4\ 1
++\ 1\f\ 1\f\ 1\13\ 1\13\ 1\ 4\ 1\r\ 1\r\ 1\ 4\ 1B\ 1c\ 1\0\0\0\19\0\0\0\14\ 1\0\0C\0\0\0sX\ e\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0\83\0\0}\ 3\0t\ 1\0d\ 3\0d\ 3\0d\ 3\0f\ 3\0d\ 3\0d\ 3\0d\ 4\0f\ 3\0d\ 3\0d\ 4\0d\ 4\0f\ 3\0d\ 3\0d\ 4\0d\ 3\0f\ 3\0d\ 4\0d\ 3\0d\ 3\0f\ 3\0d\ 4\0d\ 3\0d\ 4\0f\ 3\0d\ 4\0d\ 4\0d\ 4\0f\ 3\0d\ 4\0d\ 4\0d\ 3\0f\ 3\0d\ 3\0d\ 3\0d\ 5\0f\ 3\0d\ 3\0d\ 5\0d\ 4\0f\ 3\0d\ 3\0d\ 4\0d\ 5\0f\ 3\0d\ 3\0d\ 5\0d\ 3\0f\ 3\0d\ 4\0d\ 3\0d\ 5\0f\ 3\0d\ 4\0d\ 5\0d\ 4\0f\ 3\0d\ 4\0d\ 4\0d\ 5\0f\ 3\0d\ 4\0d\ 5\0d\ 3\0f\ 3\0d\ 5\0d\ 3\0d\ 3\0f\ 3\0d\ 5\0d\ 3\0d\ 4\0f\ 3\0d\ 5\0d\ 4\0d\ 3\0f\ 3\0d\ 5\0d\ 4\0d\ 4\0f\ 3\0d\ 3\0d\ 6\0d\a\0f\ 3\0d\ 4\0d\ 6\0d\a\0f\ 3\0d\b\0d\ 3\0d\b\0f\ 3\0d\b\0d\ 4\0d\b\0f\ 3\0d\b\0d\b\0d\ 3\0f\ 3\0d\b\0d\b\0d\ 4\0f\ 3\0d    \0d
++\0d\v\0f\ 3\0d\f\0d\r\0d\ e\0f\ 3\0g\1c\0\83\ 1\0}\ 4\0t\ 2\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\ f\0d\14\0d\11\0d\10\0d\13\0d\ f\0d\15\0d\11\0d\14\0d\16\0d\ f\0d\11\0d\17\0d\18\0d\13\0d\ f\0d\13\0d\19\0d\17\0d\1a\0d\ f\0d\17\0d\18\0d\1a\0d\e\0d\ f\0d\1c\0d\18\0d\11\0d\15\0d\ f\0d\16\0d\11\0d\e\0d\15\0d\ f\0d\11\0d\17\0d\16\0d\e\0d\ f\0d\13\0d\11\0d\16\0d\14\0d\ f\0d\18\0d\12\0d\1c\0d\11\0d\ f\0d\1d\0d\18\0d\1c\0d\1e\0d\ f\0d\1e\0d\1f\0d\15\0d\1c\0d\ f\0d\1d\0d\1e\0\0d\18\0d\ f\0d\15\0d\16\0d!\0d\e\0d\ f\0d\15\0d!\0d\ f\0d"\0d\ f\0d\11\0d\12\0d\1c\0d\14\0d\ f\0d#\0d\15\0d\1c\0d\14\0d\ f\0d\15\0d"\0d\e\0d!\0d\ f\0d\16\0d!\0d$\0d%\0d\ f\0d\15\0d\18\0d\e\0d"\0d\ f\0d\1e\0d\1c\0d\15\0d\18\0d\ f\0d#\0d\15\0d\1f\0d\1c\0d\ f\0d\1e\0d\15\0d\1f\0d\ f\0d\ f\0d$\0d\17\0d\16\0d%\0d\ f\0d\15\0d\14\0d#\0d\16\0d\ f\0d\16\0d\15\0d!\0d#\0d\ f\0d\e\0d\17\0d\16\0d$\0d\ f\0d\e\0d"\0d&\0d!\0d\ f\0d%\0d'\0d$\0d\17\0d\ f\0d\16\0d%\0d(\0d#\0d\ f\0d\13\0d\11\0d\17\0d\16\0d\ f\0d#\0d\15\0d!\0d\ f\0d\ f\0d\18\0d"\0\0d)\0d\ f\0d\ f\0d\15\0d"\0d\1e\0d\ f\0d\ f\0d\15\0d\1f\0d#\0d\ f\0d!\0d\16\0d#\0d%\0d\ f\0d\1c\0d\11\0d\14\0d\15\0d\ f\0d\1d\0d\12\0d\1c\0d\18\0d\ f\0d\11\0d\e\0d\18\0d\17\0d\ f\0d\16\0d\e\0d$\0d!\0d\ f\0d\12\0d\11\0d\10\0d\14\0d\ f\0d\1e\0d\15\0d"\0d\18\0d\ f\0d\18\0d\1a\0d"\0d)\0d\ f\0d\ f\0d"\0d!\0d&\0d\ f\0d\1d\0d*\0d\12\0\0d\ f\0d\1d\0d\1e\0d\1c\0d\1f\0d\ f\0d"\0d\1e\0d\18\0\0d\ f\0d\18\0d\11\0d\13\0d\12\0d\ f\0d\16\0d#\0d(\0d\14\0d\ f\0d\e\0d\1a\0d"\0d\18\0d\ f\0d!\0d$\0d&\0d\e\0d\ f\0d\1d\0d\18\0\0d\12\0d\ f\0d\18\0d\11\0d\15\0d\e\0d\ f\0d\17\0d\13\0d\1a\0d\18\0g\13\ 1\83\ 1\0}\ 5\0t\ 2\0d\19\0d(\0\0d$\0d\18\0d\1c\0d+\0d,\0d-\0d.\0d/\0d0\0d1\0d2\0d3\0d4\0d5\0d6\0d7\0d8\0d9\0d:\0d;\0d<\0d=\0d>\0d?\0d@\0dA\0dB\0dC\0dD\0dE\0dF\0dG\0dH\0dI\0dJ\0dK\0dL\0dM\0dN\0dO\0dP\0dQ\0dR\0dS\0dT\0dU\0dV\0dW\0dX\0dY\0dZ\0d[\0d\\0g8\0\83\ 1\0}\ 6\0t\ 3\0|\ 2\0d)\0\83\ 2\0}\a\0|\a\0j\ 4\0|\ 4\0\83\ 1\0\ 1|\a\0j\ 5\0|\ 5\0|\ 6\0\83\ 2\0\ 1|\a\0|\ 3\0d\19\0<t\ 2\0d)\0d\13\0d\18\0d\1a\0d)\0d\13\0d\12\0d\18\0d)\0d\12\0d*\0\0d)\0d\18\0d\12\0\0d)\0d\19\0d\13\0d\1a\0d)\0d\12\0d\13\0d\10\0d)\0d\18\0\0d)\0d)\0d\1a\0d\18\0d)\0d)\0d$\0d!\0d%\0d)\0d(\0d%\0d#\0d)\0d!\0d#\0d%\0d)\0d$\0d%\0d'\0d)\0d\ f\0d\1f\0d#\0d)\0d\ f\0d#\0d!\0d)\0d&\0d\ f\0d!\0d)\0d&\0d!\0d$\0d)\0d(\0d\16\0d%\0d)\0d'\0d%\0d\17\0d)\0d\14\0d\10\0d\13\0d)\0d\17\0d\13\0d\19\0d)\0d(\0d\14\0d\16\0d)\0d%\0d\16\0d\17\0d)\0d\16\0d\14\0d\13\0d)\0d\17\0d\16\0d\13\0d)\0\0d*\0d\1d\0d)\0d&\0d"\0d\ f\0d)\0d\ f\0d\1e\0d\1f\0d)\0d)\0\0d"\0d)\0d\1e\0d\1d\0d\1f\0d)\0d"\0d\1e\0d\ f\0d)\0\0d\1d\0d\1e\0d)\0\0d\1e\0d"\0d)\0d)\0d"\0d\1a\0d)\0d&\0d\e\0d"\0d)\0d$\0d'\0d\17\0d)\0d\1a\0d\17\0d\19\0d)\0d&\0d$\0d\e\0d)\0d"\0d\e\0d\1a\0d)\0d\e\0d$\0d\17\0d)\0d\1a\0d\e\0d\17\0d)\0d\12\0d\1d\0d*\0d)\0d\1d\0d\1c\0d\1f\0d)\0d\14\0d(\0d#\0d)\0d\10\0d\14\0d\12\0d)\0d\1c\0d#\0d\1f\0d)\0d\12\0d\1c\0d\1d\0d)\0d\14\0d#\0d\1c\0d)\0d\14\0d\1c\0d\12\0\0\83\ 1\0}\b\0t\ 2\0d\19\0d'\0d\13\0d%\0d\17\0d\18\0d\e\0d]\0d^\0d_\0d-\0d`\0da\0db\0dc\0d1\0dd\0de\0df\0dg\0d5\0dh\0di\0dj\0dk\0d9\0dl\0dm\0dn\0do\0d=\0dp\0dq\0dr\0ds\0dA\0dt\0du\0dv\0dw\0dE\0dx\0dy\0dz\0d{\0dI\0d|\0d}\0d~\0g1\0\83\ 1\0}  \0t\ 3\0|\ 2\0d*\0\83\ 2\0}
++\0|
++\0j\ 4\0|\ 4\0\83\ 1\0\ 1|
++\0j\ 5\0|\b\0|      \0\83\ 2\0\ 1|
++\0|\ 3\0d\7f\0<t\ 2\0d\19\0d\13\0d\13\0d\10\0d\10\0d\12\0d\12\0d*\0d)\0\0\0d*\0d\19\0d\1a\0d\1a\0d)\0d'\0d%\0d%\0d(\0d(\0d#\0d#\0d\1f\0d&\0d\ f\0d\ f\0d\1f\0d'\0d$\0d$\0d&\0d\19\0d\17\0d\17\0d'\0d\10\0d\14\0d\14\0d(\0d)\0d"\0d"\0d&\0d*\0d\1d\0d\1d\0d\1f\0g0\0\83\ 1\0}\v\0t\ 6\0|\ 2\0t\a\0\83\ 2\0}\f\0|\f\0j\b\0|\v\0\83\ 1\0\ 1|\f\0j\ 4\0|\ 4\0\83\ 1\0\ 1|\f\0j     \0\83\0\0|\ 3\0d\80\0<t\ 2\0d0\0\83\ 1\0}\r\0d\19\0|\r\0(|\ 3\0j
++\0d\19\0|\r\0\83\ 2\0\ 1|\ 3\0j
++\0d\10\0t\ 2\0d\19\0d\19\0d*\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0g\1c\0\83\ 1\0\83\ 2\0\ 1t\ 2\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\81\0d\81\0d\81\0d\81\0d\81\0d\81\0d\81\0d\81\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0g0\0\83\ 1\0}\ e\0|\ 3\0j
++\0d\7f\0|\ e\0\83\ 2\0\ 1t\ 2\0d\19\0d\19\0d\82\0d\82\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0g\18\0\83\ 1\0}\ f\0|\ 3\0j
++\0d\80\0|\ f\0\83\ 2\0\ 1xH\0d\83\0d\19\0f\ 2\0d\84\0d\81\0f\ 2\0d\85\0d\82\0f\ 2\0d\86\0d*\0f\ 2\0f\ 4\0D]\1c\0\\ 2\0}\10\0}\11\0|\ 3\0j\v\0|\10\0|\11\0\83\ 2\0\ 1q^\vWxH\0d\87\0d\84\0f\ 1\0f\ 2\0d\88\0d\85\0f\ 1\0f\ 2\0d\89\0d\86\0f\ 1\0f\ 2\0g\ 3\0D]\1c\0\\ 2\0}\12\0}\13\0|\ 3\0j\f\0|\12\0|\13\0\83\ 2\0\ 1\vW|\ 3\0j\r\0|\ 1\0d*\0\83\ 2\0\ 1t\ e\0j\ f\0|\ 1\0\83\ 1\0}\ 3\0|\ 3\0j\10\0d\7f\0d\87\0\83\ 2\0}\12\0|\12\0j\11\0\83\0\0}\14\0|\14\0j\12\0d\8a\0\83\ 1\0\ 1|\ 3\0j\13\0d\10\0|\14\0\83\ 2\0\ 1|\ 3\0j\14\0\83\0\0\ 1|\0\0j\15\0|\14\0j\16\0|\ 3\0j\17\0d\10\0d\8a\0\83\ 2\0\83\ 1\0\83\ 1\0\ 1|\0\0j\15\0|\ 3\0j\18\0d\19\0\83\ 1\0j\16\0|\r\0\83\ 1\0\83\ 1\0\ 1|\0\0j\15\0|\ 3\0j\18\0d\7f\0\83\ 1\0j\16\0|\ e\0\83\ 1\0\83\ 1\0\ 1|\0\0j\15\0|\ 3\0j\18\0d\80\0\83\ 1\0j\16\0|\ f\0\83\ 1\0\83\ 1\0\ 1|\0\0j\15\0|\ 3\0j\18\0d\10\0\83\ 1\0j\16\0t\ 2\0d\19\0d\19\0d*\0d\19\0d\12\0d\12\0d\12\0d\12\0d\19\0d\19\0d\19\0d\19\0d\12\0d\12\0d\12\0d\12\0d\19\0d\19\0d\19\0d\19\0d\19\0d\12\0d\19\0d\19\0d\19\0d\19\0d\19\0d\19\0g\1c\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1d\87\0d\84\0f\ 1\0f\ 2\0d\88\0d\85\0f\ 1\0f\ 2\0d\89\0d\86\0f\ 1\0f\ 2\0d\8a\0d\8b\0f\ 1\0f\ 2\0g\ 4\0}\15\0d\83\0d\19\0f\ 2\0d\84\0d\81\0f\ 2\0d\85\0d\82\0f\ 2\0d\86\0d*\0f\ 2\0d\8b\0d\12\0f\ 2\0g\ 5\0}\16\0|\0\0j\19\0t\1a\0|\ 3\0j\e\0\83\0\0\83\ 1\0g\0\0|\15\0D]\10\0}\17\0|\17\0d\19\0\19^\ 2\0\r\83\ 2\0\ 1x-\0|\15\0D]%\0\\ 2\0}\17\0}\13\0|\0\0j\19\0|\ 3\0j\1c\0|\17\0\83\ 1\0|\13\0\83\ 2\0\ 1\rW|\0\0j\19\0t\1a\0|\ 3\0j\1d\0\83\0\0\83\ 1\0g\0\0|\16\0D]\10\0}\17\0|\17\0d\19\0\19^\ 2\0q\r\ e\83\ 2\0\ 1x-\0|\16\0D]%\0\\ 2\0}\17\0}\18\0|\0\0j\19\0|\ 3\0j\1e\0|\17\0\83\ 1\0|\18\0\83\ 2\0\ 1q+\ eWd\8c\0S(\8d\0\0\0sZ\0\0\0 Test for bug EDF10720. The aim of this test is the call of MEDFileMesh.rearrangeFamilies.s\f\0\0\0Pyfile89.medt
++\0\0\0Maillage_2g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0i@g\0\0\0\0\0\0Y@g¹-Qö'8]@gGÒ® ØÇT@gº-Qö'8]@g¥J(ßL±O@g\vFÛ¯Ð\11L@gFhU´\9cî]@gE\99\ 5YG@a@gd\81åÙ\83\ 2]@gyU   ¶×ù]@i\ e\0\0\0i\ 1\0\0\0i\1a\0\0\0i   \0\0\0i\b\0\0\0i\11\0\0\0i\e\0\0\0i\16\0\0\0i\10\0\0\0i\14\0\0\0i\0\0\0\0i\v\0\0\0i\18\0\0\0i\19\0\0\0i\13\0\0\0i\17\0\0\0i\ 6\0\0\0i
++\0\0\0i\15\0\0\0i\12\0\0\0i\r\0\0\0i\ f\0\0\0i\f\0\0\0i\a\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 3\0\0\0i\ 2\0\0\0i\1e\0\0\0i#\0\0\0i(\0\0\0i-\0\0\0i2\0\0\0i7\0\0\0i<\0\0\0iA\0\0\0iF\0\0\0iK\0\0\0iP\0\0\0iU\0\0\0iZ\0\0\0i_\0\0\0id\0\0\0ii\0\0\0in\0\0\0is\0\0\0ix\0\0\0i}\0\0\0i\82\0\0\0i\87\0\0\0i\8c\0\0\0i\91\0\0\0i\96\0\0\0i\9b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0iÿ\0\0\0i\ 4\ 1\0\0i     \ 1\0\0i\ e\ 1\0\0i\13\ 1\0\0i\1c\0\0\0\0\0\0i$\0\0\0i,\0\0\0i0\0\0\0i4\0\0\0i8\0\0\0i@\0\0\0iD\0\0\0iH\0\0\0iL\0\0\0iT\0\0\0iX\0\0\0i\\0\0\0i`\0\0\0ih\0\0\0il\0\0\0ip\0\0\0it\0\0\0i|\0\0\0i\80\0\0\0i\84\0\0\0i\88\0\0\0i\90\0\0\0i\94\0\0\0i\98\0\0\0i\9c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0iÿÿÿÿiþÿÿÿiúÿÿÿiùÿÿÿR\9a\ 2\0\0s\ f\0\0\0FAM_-6_Groupe_1s\ f\0\0\0FAM_-7_Groupe_2t\ e\0\0\0FAM_2_Groupe_3t\b\0\0\0Groupe_1t\b\0\0\0Groupe_2t\b\0\0\0Groupe_3t\ 4\0\0\0TOTOt\b\0\0\0Family_9N(\1f\0\0\0R>\0\0\0RY\0\0\0Rk\0\0\0R[\0\0\0Rc\0\0\0Rÿ\ 1\0\0Rz\0\0\0Re\0\0\0t\14\0\0\0setNodalConnectivityRâ\ 1\0\0\0\0\0\0\0\0R\9b\ 2\0\0R\v\0\0\0R'\0\0\0R(\0\0\0R?\0\0\0t\15\0\0\0computeFetchedNodeIdsRB\0\0\0\ 2\0\0t\11\0\0\0rearrangeFamiliesR0\0\0\0R1\0\0\0RG\0\0\0R\9e\0\0\0R+\0\0\0Rm\0\0\0\ 1\0\0R\9a\0\0\0\ 1\0\0t\v\0\0\0getFamilyId(\19\0\0\0R    \0\0\0R!\0\0\0\ 3\0\0R\86\0\0\0R\81\0\0\0R\14\ 2\0\0t\ 3\0\0\0c0iRá\0\0\0t\ 2\0\0\0c1t\ 3\0\0\0c1iR\84\0\0\0\ 2\0\0R\85\0\0\0\ 1\0\0\ 1\0\0\ 1\0\0R\b\0\0\0t\ 3\0\0\0fidRç\ 1\0\0t\ 4\0\0\0famst\ 3\0\0\0dait\a\0\0\0allGrpst\a\0\0\0allFamsRü\0\0\0t\ 5\0\0\0eltId(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1f\0\0\0testMEDFileMeshRearrangeFamIds1(\11\0\0sx\0\0\0\0\ 2\ 6\ 1\ 6\ 1   \ 1ÿ\0]\ 2ÿ\0ÿ\0ÿ\0H\ 1´\ 1\ f\0\r\ 1\10\ 1
++\ 2ÿ\0ÿ\0N\ 1\9f\ 1\ f\0\r\ 1\10\ 1
++\ 2\9c\ 1\ f\ 1\r\0\r\ 1\10\ 2\f\0\a\ 1\10\ 1j\ 1\9c\ 1\10\ 1T\ 1\10\ 27\ 1\14\ 17\ 1\14\ 1\10\ 2\ f\ 1\12\ 1\f\ 1\r\ 1\10\ 1
++\ 1"\ 1\1f\ 1\1f\ 1\1f\ 1y\ 16\ 13\ 13\ 1\13\ 1\1d\ 13\ 1\13\ 1\1d\ 1c\ 1\0\0\0      \0\0\0\ 6\0\0\0C\0\0\0sz\ 2\0\0t\0\0\83\0\0}\ 1\0d\ 1\0}\ 2\0t\ 1\0\83\0\0}\ 3\0t\ 2\0\83\0\0}\ 4\0t\ 3\0d\ 2\0\83\ 1\0}\ 5\0|\ 5\0j\ 4\0\83\0\0\ 1|\ 4\0j\ 5\0|\ 5\0\83\ 1\0\ 1|\ 4\0j\ 6\0|\ 2\0\83\ 1\0\ 1|\ 3\0j\a\0|\ 4\0\83\ 1\0\ 1t\b\0t      \0\83\ 1\0}\ 6\0|\ 6\0j\a\0|\ 4\0\83\ 1\0\ 1|\ 6\0j
++\0t\ 3\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 4\0\83\ 1\0\83\ 1\0\ 1|\ 6\0j\ 6\0d\a\0\83\ 1\0\ 1|\ 6\0j\v\0\83\0\0\ 1t\f\0d\b\0d      \0d
++\0d\v\0g\ 4\0\83\ 1\0}\a\0|\a\0j\ 6\0d\f\0\83\ 1\0\ 1|\ 1\0j\r\0|\ 6\0|\ 3\0d\b\0|\a\0\83\ 4\0\ 1|\0\0j\ e\0|\ 1\0j\ f\0\83\0\0d\ f\0\83\ 2\0\ 1|\ 1\0j\10\0\0d\b\0|\ 3\0\83\ 3\0}\b\0|\0\0j\11\0|\ 6\0j\12\0|\b\0d\r\0d\r\0\83\ 3\0\83\ 1\0\ 1~\ 1\0~\ 3\0~\ 6\0~\b\0~\a\0t\0\0\83\0\0}\ 1\0d\ 1\0}\ 2\0t\13\0\83\0\0}\ 3\0t\ 2\0\83\0\0}\ 4\0t\ 3\0d\ 2\0\83\ 1\0}\ 5\0|\ 5\0j\ 4\0\83\0\0\ 1|\ 4\0j\ 5\0|\ 5\0\83\ 1\0\ 1|\ 4\0j\ 6\0|\ 2\0\83\ 1\0\ 1|\ 4\0j\14\0\83\0\0}\ 4\0|\ 4\0|\ 3\0d\b\0<t\b\0t     \0\83\ 1\0}\ 6\0|\ 6\0j\a\0|\ 4\0\83\ 1\0\ 1|\ 6\0j
++\0t\ 3\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 4\0\83\ 1\0\83\ 1\0\ 1|\ 6\0j\ 6\0d\a\0\83\ 1\0\ 1|\ 6\0j\v\0\83\0\0\ 1t\f\0d\b\0d      \0d
++\0d\v\0g\ 4\0\83\ 1\0}\a\0|\a\0j\ 6\0d\f\0\83\ 1\0\ 1|\ 1\0j\r\0|\ 6\0|\ 3\0d\b\0|\a\0\83\ 4\0\ 1|\0\0j\ e\0|\ 1\0j\ f\0\83\0\0d\10\0\83\ 2\0\ 1|\ 1\0j\10\0\0d\b\0|\ 3\0\83\ 3\0}\b\0|\0\0j\11\0|\ 6\0j\12\0|\b\0d\r\0d\r\0\83\ 3\0\83\ 1\0\ 1d\ e\0S(\11\0\0\0so\0\0\0 Non regression test. For structured mesh, push a false partial field in MEDFileField1TS using setFieldProfile.R \ 2\0\0i\ 5\0\0\0g333333ó?gffffff\ 2@g333333\v@g\0\0\0\0\0\0\12@RÇ\ 3\0\0i\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0t\ 4\0\0\0TUTUg\11ê-\81\99\97q=N(\0\0\0\0(\0\0\0\0(\15\0\0\0\0\0\0\0\0\0\0\0\0RY\0\0\0Ry\ 1\0\0Rc\0\0\0RB\0\0\0\0\0\0Rw\ 1\0\0R\13\ 1\0\0R{\ 1\0\0Rd\0\0\0Rk\0\0\0R|\ 1\0\0R+\0\0\0R]\ 2\0\0R\97\ 1\0\0R0\0\0\0R1\0\0\0R>\0\0\0\ 1\0\0(       \0\0\0R    \0\0\0\0\0\0\ 3\0\0R\86\0\0\0R\83\0\0\0\ 1\0\0t\ 5\0\0\0fieldR\83\ 1\0\0t\ 6\0\0\0field2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1c\0\0\0testNonRegrCMeshSetFieldPfl1c\11\0\0sV\0\0\0\0\ 2    \ 1\ 6\ 1     \ 1       \0\f\0
++\ 1\r\ 1\r\ 1\r\ 1\f\ 1\r\ 1\1f\ 1\r\ 1
++\ 1\18\0\r\ 1\16\ 1\16\ 1\15\ 1\1c\ 1\ f\ 2       \ 1\ 6\ 1     \ 1       \0\f\0
++\ 1\r\ 1\r\ 1\f\ 1
++\ 1\f\ 1\r\ 1\1f\ 1\r\ 1
++\ 1\18\0\r\ 1\16\ 1\16\ 1\15\ 1\1c\ 1c\ 1\0\0\0\18\0\0\0\a\0\0\0C\0\0\0\ 3\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0t\0\0d\ 4\0\83\ 1\0}\ 4\0|\ 4\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}\ 5\0|\ 5\0j\ 3\0|\ 4\0|\ 4\0\83\ 2\0\ 1|\ 5\0j\ 4\0\83\0\0}\ 5\0t\ 5\0d\ 5\0d\ 6\0d\a\0d\b\0g\ 4\0\83\ 1\0}\ 6\0|\ 5\0|\ 6\0\19}\a\0|\a\0j\ 6\0d     \0\83\ 1\0\ 1|\ 5\0|\ 6\0j\a\0|\ 5\0j\b\0\83\0\0\83\ 1\0\19}\b\0\0j
++\0|\a\0|\b\0\83\ 2\0}\ 5\0|\ 5\0j\v\0d\ 5\0d
++\0\83\ 2\0\ 1t\0\0d\ 5\0\83\ 1\0}\ 4\0|\ 4\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}    \0|      \0j\ 3\0|\ 4\0\83\ 1\0\ 1|    \0j\ 4\0\83\0\0}        \0|      \0j\v\0d\ 5\0d
++\0\83\ 2\0\ 1|        \0j\ 3\0|   \0j\f\0\83\0\0d\0\0d\0\0\85\ 2\0d\v\0d\f\0\0g\ 3\0f\ 2\0\19\83\ 1\0\ 1|\ 5\0j\r\0\83\0\0|  \0j\r\0\83\0\0d\v\0\18\14}
++\0|\ 5\0j\ e\0|      \0d      \0\83\ 2\0}\v\0|\v\0j\ f\0\83\0\0\ 1|\v\0j\10\0|\ 1\0\83\ 1\0\ 1|\ 5\0}\f\0|\f\0j\ 3\0|\v\0j\f\0\83\0\0\83\ 1\0\ 1|\f\0j\11\0|
++\0\83\ 1\0\ 1|\f\0j\10\0|\ 1\0\83\ 1\0\ 1|\f\0j\12\0\83\0\0\ 1|\f\0j\13\0\83\0\0}        \0|      \0j\10\0|\ 1\0\83\ 1\0\ 1t    \0j\14\0|\v\0j\f\0\83\0\0\83\ 1\0}\r\0|\r\0j\10\0|\ 1\0\83\ 1\0\ 1|\r\0d\f\0d\r\0d\ e\0g\ 3\0\19}\r\0t\15\0\83\0\0}\ e\0|\v\0|\ e\0d     \0<|\f\0|\ e\0d\ f\0<|   \0|\ e\0d\10\0<|\r\0|\ e\0d\11\0<t\ 5\0d\v\0d\f\0d\ 5\0d\ 4\0g\ 4\0\83\ 1\0}\ f\0|\ f\0j\10\0d\12\0\83\ 1\0\ 1t\ 5\0d     \0d\v\0g\ 2\0\83\ 1\0}\10\0|\10\0j\10\0d\13\0\83\ 1\0\ 1t\ 5\0d  \0d\v\0d\14\0d\15\0d\ e\0g\ 5\0\83\ 1\0}\11\0|\11\0j\10\0d\16\0\83\ 1\0\ 1t\ 5\0d\17\0d\ 6\0d\18\0d\19\0d\1a\0g\ 5\0\83\ 1\0}\12\0|\12\0j\10\0d\e\0\83\ 1\0\ 1t\ 5\0\0d\v\0d\1c\0d\b\0d\18\0g\ 5\0\83\ 1\0}\13\0|\13\0j\10\0d\1d\0\83\ 1\0\ 1t\ 5\0d\1e\0d\1f\0\0d!\0g\ 4\0\83\ 1\0}\14\0|\14\0j\10\0d"\0\83\ 1\0\ 1t\ 5\0d\f\0d\ 5\0d\r\0d\ 4\0d\1f\0d!\0g\ 6\0\83\ 1\0}\15\0|\15\0j\10\0d#\0\83\ 1\0\ 1|\ e\0j\16\0d      \0|\14\0|\15\0g\ 2\0\83\ 2\0\ 1|\ e\0j\16\0d\ f\0|\11\0|\12\0|\13\0g\ 3\0\83\ 2\0\ 1|\ e\0j\16\0d\10\0|\ f\0|\10\0g\ 2\0\83\ 2\0\ 1|\ e\0j\17\0d    \0d
++\0\83\ 2\0}\16\0|\16\0j\18\0|\ 3\0d\f\0\83\ 2\0\ 1|\16\0j\19\0d
++\0\83\ 1\0}\17\0|\0\0j\1a\0|\ e\0j\e\0|\17\0d$\0\83\ 2\0\0\19\83\ 1\0\ 1d\0\0S(%\0\0\0NR \ 2\0\0s\f\0\0\0Pyfile90.meds\f\0\0\0Pyfile91.medi\ 5\0\0\0i\ 3\0\0\0i\a\0\0\0i\v\0\0\0i\ f\0\0\0i\0\0\0\0g\0\0\0\0\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 4\0\0\0i
++\0\0\0iÿÿÿÿiþÿÿÿiýÿÿÿt\ 4\0\0\0Eastt\a\0\0\0Corner1i\b\0\0\0\0\0\0t    \0\0\0SouthFacei\ 6\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0t       \0\0\0NorthFacei\r\0\0\0t\b\0\0\0DiagFacei\14\0\0\0i\15\0\0\0i\17\0\0\0i\18\0\0\0t\ 4\0\0\0vol1t\ 4\0\0\0vol2g\11ê-\81\99\97q=(\1c\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0\ 1\0\0Rk\0\0\0\ 3\0\0\ 3\0\0\0\0\0R[\0\0\0\ 3\0\0\ 3\0\0\0\0\0\ 1\0\0\ 3\0\0R\9c\ 1\0\0RB\0\0\0t\16\0\0\0shiftNodeNumbersInConnR\0\ 2\0\0\ 2\0\0t\15\0\0\0Build0DMeshFromCoordsR>\0\0\0Rl\0\0\0t\11\0\0\0linearToQuadraticR\v\0\0\0t\11\0\0\0quadraticToLinearR0\0\0\0R1\0\0\0(\18\0\0\0R       \0\0\0\ 3\0\0R!\0\0\0t  \0\0\0fileName2RÔ\ 1\0\0R\83\0\0\0Re\ 1\0\0R\84\0\0\0R\85\0\0\0\ 3\0\0\ 1\0\0t\ 3\0\0\0m3Dt\ 3\0\0\0m2Dt\ 3\0\0\0m0DR\86\0\0\0t\b\0\0\0grpEdge0t\b\0\0\0grpEdge1t\f\0\0\0grpFaceSoutht\f\0\0\0grpFaceNortht\b\0\0\0diagFaceR=\ 4\0\0R>\ 4\0\0t\ 6\0\0\0mmOut1t\ 6\0\0\0mmOut2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt(\0\0\0testMEDFileUMeshLinearToQuadraticAndRev1\8c\11\0\0s|\0\0\0\0\ 1\ 6\ 1\ 6\ 1\ 6\ 1\f\0
++\ 1     \0\10\ 1\f\ 1\18\ 1
++\ 1\r\ 1\19\ 1\12\ 1\10\ 1\f\0
++\ 1     \0\r\0\f\0\10\ 1,\ 1\1a\ 1\12\ 1
++\ 1\r\ 1\ 6\0\13\0\r\0\r\0
++\ 1\f\0\r\ 1\15\0\r\0\13\ 2   \ 1
++\0
++\0
++\0
++\ 1\18\0\r\ 1\12\0\r\ 1\e\0\r\ 1\e\0\r\ 1\e\0\r\ 1\18\0\r\ 1\1e\0\r\ 1\16\ 1\19\ 1\16\ 2\12\ 1\10\ 1\ f\ 1\1d\ 1c\ 1\0\0\0\r\0\0\0
++\0\0\0C\0\0\0s\7f\ 3\0\0t\0\0\83\0\0}\ 1\0t\ 1\0d\ 1\0\83\ 1\0}\ 2\0|\ 2\0j\ 2\0\83\0\0\ 1t\ 1\0d\ 2\0\83\ 1\0}\ 3\0|\ 3\0j\ 2\0\83\0\0\ 1|\ 1\0j\ 3\0|\ 2\0|\ 3\0\83\ 2\0\ 1|\ 1\0j\ 4\0d\ 3\0\83\ 1\0\ 1t\ 5\0\83\0\0}\ 4\0|\ 4\0j\ 6\0|\ 1\0\83\ 1\0\ 1t\a\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0g\ 5\0\83\ 1\0}\ 5\0|\ 5\0j\ 4\0d        \0\83\ 1\0\ 1|\ 4\0j\b\0d
++\0|\ 5\0\83\ 2\0\ 1t\a\0d\ 4\0d\ 2\0d\ 5\0d\v\0d\f\0d\r\0d\b\0g\a\0\83\ 1\0}\ 6\0|\ 6\0j\ 4\0d\ e\0\83\ 1\0\ 1|\ 4\0j\b\0d
++\0|\ 6\0\83\ 2\0\ 1t\a\0d
++\0d\ f\0d\10\0d\11\0d\12\0g\ 5\0\83\ 1\0}\a\0|\a\0j\ 4\0d\13\0\83\ 1\0\ 1|\ 4\0j\b\0d
++\0|\a\0\83\ 2\0\ 1t\a\0d\14\0g\ 1\0\83\ 1\0}\b\0|\b\0j\ 4\0d\15\0\83\ 1\0\ 1|\ 4\0j\b\0d
++\0|\b\0\83\ 2\0\ 1xB\0|\ 5\0|\ 6\0|\a\0|\b\0g\ 4\0D].\0}       \0|\0\0j   \0|\ 4\0j
++\0d
++\0|    \0j\v\0\83\0\0\83\ 2\0j\f\0|  \0\83\ 1\0\83\ 1\0\ 1qU\ 1W|\0\0j\r\0|\ 4\0j\ e\0\83\0\0d\1c\0\83\ 2\0\ 1d\16\0}
++\0xW\0|\ 5\0|\ 6\0|\a\0|\b\0g\ 4\0D]C\0}      \0|      \0j\ f\0\83\0\0}\v\0|\v\0|
++\07}\v\0|\v\0j\ 4\0d\17\0|       \0j\v\0\83\0\0\16\83\ 1\0\ 1|\ 4\0j\b\0d\ f\0|\v\0\83\ 2\0\ 1\ 1W|\0\0j\r\0|\ 4\0j\ e\0\83\0\0d\1d\0\83\ 2\0\ 1xB\0|\ 5\0|\ 6\0|\a\0|\b\0g\ 4\0D].\0}   \0|\0\0j   \0|\ 4\0j
++\0d
++\0|    \0j\v\0\83\0\0\83\ 2\0j\f\0|  \0\83\ 1\0\83\ 1\0\ 1q&\ 2Wxg\0|\ 5\0|\ 6\0|\a\0|\b\0g\ 4\0D]S\0}     \0|      \0|
++\0\17}\f\0|\f\0j\ 4\0d\17\0|       \0j\v\0\83\0\0\16\83\ 1\0\ 1|\0\0j        \0|\ 4\0j
++\0d\ f\0d\17\0|      \0j\v\0\83\0\0\16\83\ 2\0j\f\0|\f\0\83\ 1\0\83\ 1\0\ 1qk\ 2W|\ 4\0j\10\0\83\0\0\ 1xB\0|\ 5\0|\ 6\0|\a\0|\b\0g\ 4\0D].\0}   \0|\0\0j   \0|\ 4\0j
++\0d
++\0|    \0j\v\0\83\0\0\83\ 2\0j\f\0|  \0\83\ 1\0\83\ 1\0\ 1\ 2Wxg\0|\ 5\0|\ 6\0|\a\0|\b\0g\ 4\0D]S\0}     \0|      \0|
++\0\17}\f\0|\f\0j\ 4\0d\17\0|       \0j\v\0\83\0\0\16\83\ 1\0\ 1|\0\0j        \0|\ 4\0j
++\0d\ f\0d\17\0|      \0j\v\0\83\0\0\16\83\ 2\0j\f\0|\f\0\83\ 1\0\83\ 1\0\ 1q$\ 3Wd\0\0S(\1e\0\0\0Ni \0\0\0i\ 4\0\0\0\ 2\0\0i\ 3\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\15\0\0\0i\16\0\0\0R\93\ 2\0\0i\0\0\0\0i\b\0\0\0i\12\0\0\0i\13\0\0\0R\95\ 2\0\0i\ 1\0\0\0i\ 2\0\0\0i
++\0\0\0i\v\0\0\0\ 1\0\0i\17\0\0\0R\8d\ 3\0\0i\f\0\0\0s\a\0\0\0%s_nodet     \0\0\0grp0_nodet   \0\0\0grp1_nodet   \0\0\0grp2_nodet   \0\0\0grp3_node(\ 4\0\0\0s\ 4\0\0\0grp0s\ 4\0\0\0grp1s\ 4\0\0\0grp2s\ 4\0\0\0grp3(\b\0\0\0s\ 4\0\0\0grp0RO\ 4\0\0s\ 4\0\0\0grp1RP\ 4\0\0s\ 4\0\0\0grp2RQ\ 4\0\0s\ 4\0\0\0grp3RR\ 4\0\0(\11\0\0\0\0\0\0RY\0\0\0Ry\ 1\0\0Rc\0\0\0RB\0\0\0\0\0\0\0\0\0Rk\0\0\0\ 2\0\0R0\0\0\0RG\0\0\0RC\0\0\0R1\0\0\0R+\0\0\0\ 1\0\0Rq\0\0\0R
++\ 3\0\0(\r\0\0\0R     \0\0\0R\83\0\0\0t\ 4\0\0\0arrXt\ 4\0\0\0arrYR\86\0\0\0R\93\ 2\0\0R\95\ 2\0\0\ 1\0\0R\8d\ 3\0\0\ 1\0\0\ 1\0\0\ 1\0\0t\ 6\0\0\0grpExp(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\18\0\0\0testMEDFileMeshAddGroup1·\11\0\0sZ\0\0\0\0\ 1 \ 1\f\0
++\ 1\f\0
++\ 1\10\ 1\r\ 1 \ 1\r\ 1\e\0\r\ 1\10\ 1!\0\r\ 1\10\ 1\e\0\r\ 1\10\ 1\ f\0\r\ 1\10\ 1\19\ 1,\ 1\16\ 1\ 6\ 1\19\ 1\f\0
++\0\17\ 1\14\ 1\16\ 1\19\ 1,\ 1\19\ 1
++\0\17\ 10\ 1
++\ 1\19\ 1,\ 1\19\ 1
++\0\17\ 10\ 1c\ 1\0\0\0\v\0\0\0
++\0\0\0C\0\0\0sZ\ 2\0\0d\ 1\0}\ 1\0t\0\0d\16\0d\17\0d\18\0g\ 3\0\83\ 1\0}\ 2\0|\ 2\0j\ 1\0d\ 5\0d\ 6\0d\a\0g\ 3\0\83\ 1\0\ 1t\ 2\0\83\0\0}\ 3\0|\ 3\0j\ 3\0|\ 2\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\b\0\83\ 1\0\ 1|\ 3\0j\ 5\0d       \0\83\ 1\0\ 1|\ 3\0j\ 6\0|\ 1\0d\ 4\0\83\ 2\0\ 1t\a\0t\b\0d\ 3\0d\ 4\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0g\b\0\83\ 1\0\83\ 1\0}\ 4\0t\a\0t\b\0d\10\0d\11\0d\12\0d\13\0g\ 4\0\83\ 1\0\0t      \0\83\ 3\0}\ 5\0t
++\0\83\0\0}\ 6\0|\ 6\0j\v\0|\ 5\0\83\ 1\0\ 1|\ 6\0j\v\0|\ 4\0\83\ 1\0\ 1t\f\0\83\0\0}\a\0|\a\0j\r\0|\ 6\0\83\ 1\0\ 1|\a\0j\ e\0d\b\0\83\ 1\0\ 1|\a\0j\ f\0d\b\0\83\ 1\0\ 1|\a\0j\ 5\0d\14\0\83\ 1\0\ 1|\a\0j\10\0d\15\0\83\ 1\0\ 1|\a\0j\11\0d\ 3\0\83\ 1\0\ 1|\0\0j\12\0|\a\0j\13\0\83\0\0d\b\0\83\ 2\0\ 1|\0\0j\12\0|\a\0j\14\0\83\0\0d\b\0\83\ 2\0\ 1|\0\0j\12\0|\a\0j\15\0\83\0\0d\14\0\83\ 2\0\ 1|\0\0j\12\0|\a\0j\16\0\83\0\0d\15\0\83\ 2\0\ 1|\0\0j\12\0|\a\0j\17\0\83\0\0d\ 3\0\83\ 2\0\ 1t\18\0\83\0\0}\b\0|\b\0j\19\0|\a\0\83\ 1\0\ 1|\b\0j\ 6\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\18\0|\ 1\0|\ 3\0j\1a\0\83\0\0\83\ 2\0}       \0|\0\0j\12\0|        \0j\e\0\83\0\0d\ 3\0\83\ 2\0\ 1\0j\1c\0d\ 2\0\83\ 1\0}
++\0|\0\0j\1d\0|
++\0j\1e\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\1f\0\0|      \0j\1c\0d\ 3\0\83\ 3\0\ 1|\0\0j\1f\0\0|   \0j!\0d\ 3\0\83\ 3\0\ 1|    \0j!\0d\ 2\0\83\ 1\0\ 1d\0\0S(\19\0\0\0Ns\f\0\0\0Pyfile92.medi\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0s\ 6\0\0\0x [cm]s\ 6\0\0\0y [cm]s\ 6\0\0\0z [cm]t\ 4\0\0\0maa1s\v\0\0\0un maillagei\ 3\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i  \0\0\0i
++\0\0\0i\v\0\0\0i\f\0\0\0t\11\0\0\0joint_descriptiont\a\0\0\0joint_1(\ 3\0\0\0i\0\0\0\0i\0\0\0\0i\0\0\0\0(\ 3\0\0\0i\ 1\0\0\0i\0\0\0\0i\0\0\0\0(\ 3\0\0\0i\ 2\0\0\0i\0\0\0\0i\0\0\0\0("\0\0\0RY\0\0\0\ 1\0\0R>\0\0\0Rc\0\0\0RB\0\0\0Ri\0\0\0R\v\0\0\0t\1a\0\0\0MEDFileJointCorrespondenceRk\0\0\0R_\0\0\0t\13\0\0\0MEDFileJointOneStept\12\0\0\0pushCorrespondencet\f\0\0\0MEDFileJointt\b\0\0\0pushStept\10\0\0\0setLocalMeshNamet\11\0\0\0setRemoteMeshNamet\f\0\0\0setJointNamet\ f\0\0\0setDomainNumberR+\0\0\0t\10\0\0\0getLocalMeshNamet\11\0\0\0getRemoteMeshNameR~\0\0\0t\f\0\0\0getJointNamet\ f\0\0\0getDomainNumbert\r\0\0\0MEDFileJointst        \0\0\0pushJointRC\0\0\0t\11\0\0\0getNumberOfJointst\r\0\0\0getJointAtPosR0\0\0\0R1\0\0\0R)\0\0\0R*\0\0\0t\11\0\0\0destroyJointAtPos(\v\0\0\0R       \0\0\0R!\0\0\0R\ 3\ 2\0\0R\86\0\0\0t\ f\0\0\0node_correspondt\ f\0\0\0cell_correspondt\ e\0\0\0one_step_jointt  \0\0\0one_jointt\ 6\0\0\0jointst\a\0\0\0jointsRt\ 2\0\0\0jR(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\11\0\0\0testMEDFileJoint1Ü\11\0\0sH\0\0\0\0\ 1\ 6\ 1\15\ 1\16\ 1     \ 1\r\ 1\r\ 1\r\ 1\10\ 1*\ 1$\ 1   \ 1\r\ 1\r\ 1   \ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1 \ 1\r\ 1\10\ 2\15\ 1\16\ 1\ f\ 1\16\ 1\16\ 1\16\ 1\r\ 1c\ 1\0\0\0\ e\0\0\0\ 6\0\0\0C\0\0\0s\91\ 2\0\0d\ 1\0}\ 1\0t\0\0d\14\0d\15\0d\16\0g\ 3\0\83\ 1\0}\ 2\0|\ 2\0j\ 1\0d\ 5\0d\ 6\0d\a\0g\ 3\0\83\ 1\0\ 1t\ 2\0\83\0\0}\ 3\0|\ 3\0j\ 3\0|\ 2\0\83\ 1\0\ 1|\ 3\0j\ 4\0d\b\0\83\ 1\0\ 1|\ 3\0j\ 5\0d    \0\83\ 1\0\ 1t\ 6\0t\a\0d
++\0d\v\0d\f\0d\r\0g\ 4\0\83\ 1\0\83\ 1\0}\ 4\0t\ 6\0t\a\0d\ e\0d\ f\0g\ 2\0\83\ 1\0t\b\0t  \0\83\ 3\0}\ 5\0t
++\0\83\0\0}\ 6\0t
++\0\83\0\0}\a\0t\v\0\83\0\0}\b\0t\v\0\83\0\0}       \0|\ 6\0j\f\0|\ 4\0\83\ 1\0\ 1|\b\0j\r\0|\ 6\0\83\ 1\0\ 1|\a\0j\f\0|\ 5\0\83\ 1\0\ 1|\a\0j\f\0|\ 4\0\83\ 1\0\ 1|  \0j\r\0|\a\0\83\ 1\0\ 1|\b\0j\ e\0d\b\0\83\ 1\0\ 1|\b\0j\ f\0d\b\0\83\ 1\0\ 1|\b\0j\ 5\0d\10\0\83\ 1\0\ 1|\b\0j\10\0d\11\0\83\ 1\0\ 1|\b\0j\11\0d\ 3\0\83\ 1\0\ 1|   \0j\ e\0d\b\0\83\ 1\0\ 1|    \0j\ f\0d\b\0\83\ 1\0\ 1|    \0j\ 5\0d\12\0\83\ 1\0\ 1|    \0j\10\0d\13\0\83\ 1\0\ 1|    \0j\11\0d\ 4\0\83\ 1\0\ 1t\12\0\83\0\0}
++\0|
++\0j\13\0|\b\0\83\ 1\0\ 1|
++\0j\13\0\0\83\ 1\0\ 1|\ 3\0j\14\0|
++\0\83\ 1\0\ 1|\ 3\0j\15\0|\ 1\0d\ 4\0\83\ 2\0\ 1t\16\0j\17\0|\ 1\0\83\ 1\0}\ 3\0|\0\0j\18\0|\ 3\0j\19\0\83\0\0d\ 4\0\83\ 2\0\ 1|\ 3\0j\1a\0\83\0\0}\v\0|\0\0j\18\0|\v\0j\e\0\83\0\0|\ 3\0j\1c\0\83\0\0\83\ 2\0\ 1|\0\0j\18\0t\1d\0|\v\0\83\ 1\0d\ 4\0\83\ 2\0\ 1|\v\0d\ 2\0\19}\f\0|\v\0d\ 3\0\19}\r\0|\0\0j\1e\0|\f\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\1e\0|\r\0d\0\0k\b\0\83\ 1\0\ 1|\0\0\0|\f\0j!\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0\0|\r\0j!\0\0\83\ 1\0\83\ 1\0\ 1d\0\0S(\17\0\0\0Ns\f\0\0\0Pyfile93.medi\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0s\ 6\0\0\0x [cm]s\ 6\0\0\0y [cm]s\ 6\0\0\0z [cm]RW\ 4\0\0s\v\0\0\0un maillagei\r\0\0\0i\ e\0\0\0i\ f\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0t\13\0\0\0joint_description_1RY\ 4\0\0t\13\0\0\0joint_description_2t\a\0\0\0joint_2(\ 3\0\0\0i\0\0\0\0i\0\0\0\0i\0\0\0\0(\ 3\0\0\0i\ 1\0\0\0i\0\0\0\0i\0\0\0\0(\ 3\0\0\0i\ 2\0\0\0i\0\0\0\0i\0\0\0\0("\0\0\0RY\0\0\0\ 1\0\0R>\0\0\0Rc\0\0\0RB\0\0\0Ri\0\0\0RZ\ 4\0\0Rk\0\0\0\ 3\0\0\ 3\0\0R[\ 4\0\0R]\ 4\0\0R\\ 4\0\0R^\ 4\0\0R_\ 4\0\0R`\ 4\0\0Ra\ 4\0\0Rb\ 4\0\0Rg\ 4\0\0Rh\ 4\0\0t   \0\0\0setJointsR\v\0\0\0R'\0\0\0R(\0\0\0R+\0\0\0Ri\ 4\0\0t  \0\0\0getJointst\v\0\0\0getMeshNameRC\0\0\0Ry\0\0\0t\v\0\0\0assertFalseR/\ 2\0\0R0\0\0\0R1\0\0\0(\ e\0\0\0R     \0\0\0t
++\0\0\0fileNameWrR\ 3\ 2\0\0R\86\0\0\0Rl\ 4\0\0Rm\ 4\0\0Rn\ 4\0\0t\ e\0\0\0two_step_jointRo\ 4\0\0t       \0\0\0two_jointRp\ 4\0\0Rq\ 4\0\0t\a\0\0\0jointR1t\a\0\0\0jointR2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\11\0\0\0testMEDFileJoint2\ 3\12\0\0sZ\0\0\0\0\ 1\ 6\ 1\15\ 1\16\ 1 \ 1\r\ 1\r\ 1\r\ 1\1e\ 1\1e\ 1     \ 1       \ 1       \ 1       \ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1 \ 1\r\ 1\r\ 1\r\ 1\10\ 2\ f\ 1\16\ 1\f\ 1\1c\ 1\16\ 1
++\ 1
++\ 1\13\ 1\13\ 1\16\ 1\16\ 1c\ 1\0\0\0\f\0\0\0
++\0\0\0C\0\0\0su\ 2\0\0t\0\0t\ 1\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0g\b\0\83\ 1\0\83\ 1\0}\ 1\0t\0\0t\ 1\0\0d
++\0d\v\0d\f\0g\ 4\0\83\ 1\0t\ 2\0t\ 2\0\83\ 3\0}\ 2\0t\0\0t\ 1\0d      \0d
++\0d\v\0g\ 3\0\83\ 1\0t\ 2\0t\ 2\0\83\ 3\0}\ 3\0t\0\0t\ 1\0\0d
++\0d\v\0d\f\0g\ 4\0\83\ 1\0t\ 2\0t\ 3\0\83\ 3\0}\ 4\0t\ 4\0\83\0\0}\ 5\0|\ 5\0j\ 5\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\ 5\0|\ 1\0\83\ 1\0\ 1t\ 4\0\83\0\0}\ 6\0|\ 6\0j\ 5\0|\ 2\0\83\ 1\0\ 1|\ 6\0j\ 5\0|\ 1\0\83\ 1\0\ 1t\ 4\0\83\0\0}\a\0|\a\0j\ 5\0|\ 1\0\83\ 1\0\ 1|\a\0j\ 5\0|\ 2\0\83\ 1\0\ 1t\ 4\0\83\0\0}\b\0|\b\0j\ 5\0|\ 2\0\83\ 1\0\ 1t\ 4\0\83\0\0}       \0|      \0j\ 5\0|\ 3\0\83\ 1\0\ 1t\ 4\0\83\0\0}
++\0|
++\0j\ 5\0|\ 4\0\83\ 1\0\ 1|\0\0j\ 6\0|\ 5\0j\a\0|\ 6\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 6\0|\ 5\0j\a\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\b\0|\ 5\0j\a\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j\b\0|\b\0j\a\0|    \0\83\ 1\0\83\ 1\0\ 1|\0\0j\b\0|\b\0j\a\0|
++\0\83\ 1\0\83\ 1\0\ 1t     \0\83\0\0}\v\0|\v\0j
++\0|\ 5\0\83\ 1\0\ 1|\v\0j\v\0d\r\0\83\ 1\0\ 1|\v\0j\f\0d\ e\0\83\ 1\0\ 1|\v\0j\r\0d\ f\0\83\ 1\0\ 1|\v\0j\ e\0d\10\0\83\ 1\0\ 1|\v\0j\ f\0d\ 1\0\83\ 1\0\ 1|\0\0j\10\0d\r\0|\v\0j\11\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ e\0|\v\0j\12\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ f\0|\v\0j\13\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\ 1\0|\v\0j\14\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0d\10\0|\v\0j\15\0\83\0\0\83\ 2\0\ 1d\0\0S(\11\0\0\0Ni\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0i    \0\0\0i
++\0\0\0i\v\0\0\0i\f\0\0\0RW\ 4\0\0t\ 4\0\0\0maa2RX\ 4\0\0RY\ 4\0\0(\16\0\0\0RZ\ 4\0\0Rk\0\0\0R_\0\0\0R`\0\0\0R[\ 4\0\0R\\ 4\0\0R0\0\0\0R1\0\0\0Rz\ 4\0\0R]\ 4\0\0R^\ 4\0\0R_\ 4\0\0R`\ 4\0\0Ri\0\0\0Ra\ 4\0\0Rb\ 4\0\0R+\0\0\0Rc\ 4\0\0Rd\ 4\0\0R~\0\0\0Rf\ 4\0\0Re\ 4\0\0(\f\0\0\0R        \0\0\0Rl\ 4\0\0Rm\ 4\0\0t\ f\0\0\0cell_correspon2t\ f\0\0\0cell_correspon3t
++\0\0\0joint1st_1t
++\0\0\0joint1st_2t
++\0\0\0joint1st_3t
++\0\0\0joint1st_4t
++\0\0\0joint1st_5t
++\0\0\0joint1st_6Ro\ 4\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyRs\ 4\0\03\12\0\0sJ\0\0\0\0\ 1*\ 1$\ 1!\ 1$\ 1  \ 1\r\ 1\r\ 1   \ 1\r\ 1\r\ 1   \ 1\r\ 1\r\ 1   \ 1\r\ 1     \ 1\r\ 1     \ 1\r\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1   \ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\r\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1t\ 5\0\0\0linuxs*\0\0\0stderr redirection not ported on Windows ?c\ 1\0\0\0
++\0\0\0\ 5\0\0\0C\0\0\0s`\ 1\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0d\ 4\0l\0\0}\ 3\0|\ 3\0j\ 1\0j\ 2\0|\ 1\0\83\ 1\0r:\0|\ 3\0j\ 3\0|\ 1\0\83\ 1\0\ 1n\0\0t\ 4\0\83\0\0}\ 4\0t\ 5\0d\ 5\0\83\ 1\0}\ 5\0|\ 5\0j\ 6\0\83\0\0\ 1|\ 4\0j\a\0|\ 5\0|\ 5\0\83\ 2\0\ 1t\b\0\83\0\0}\ 6\0|\ 6\0j        \0|\ 4\0\83\ 1\0\ 1|\ 6\0j
++\0d\ 6\0\83\ 1\0\ 1|\ 6\0j\v\0|\ 1\0d\a\0\83\ 2\0\ 1|\ 3\0j\f\0|\ 1\0d\b\0\83\ 2\0\ 1t\r\0t\ e\0\83\ 1\0}\a\0|\a\0j
++\0d    \0\83\ 1\0\ 1|\a\0j       \0|\ 4\0\83\ 1\0\ 1|\a\0j\ f\0t\ 5\0d
++\0\83\ 1\0\83\ 1\0\ 1d\v\0|\a\0j\10\0\83\0\0(|\a\0j\11\0\83\0\0\ 1t\12\0\83\0\0}\b\0|\b\0j\13\0|\a\0\83\ 1\0\ 1t\14\0|\ 2\0\83\ 1\0}       \0|\0\0j\15\0t\16\0|\b\0j\v\0|\ 1\0d\f\0\83\ 4\0\ 1~     \0|\ 3\0j\ 1\0j\ 2\0|\ 2\0\83\ 1\0r\\ 1|\ 3\0j\ 3\0|\ 2\0\83\ 1\0\ 1n\0\0d\ 4\0S(\r\0\0\0su\0\0\0 EDF11242 : check status of MED file calls to detect problems immediately. Sorry this test generates awful messages !s\f\0\0\0Pyfile94.meds\f\0\0\0Pyfile94.erriÿÿÿÿNi\v\0\0\0\ 2\0\0i\ 2\0\0\0i$\ 1\0\0R5\ 4\0\0id\0\0\0g\0\0\0\0\0\0Y@i\0\0\0\0(\17\0\0\0R\11\0\0\0t\ 4\0\0\0patht\ 6\0\0\0existst\ 6\0\0\0removeR±\0\0\0RY\0\0\0Ry\ 1\0\0Rc\0\0\0\0\0\0\0\0\0RB\0\0\0R\v\0\0\0t\ 5\0\0\0chmodRw\ 1\0\0R\13\ 1\0\0R{\ 1\0\0R)\ 1\0\0Rd\0\0\0\0\0\0R%\ 1\0\0R\ 6\0\0\0R)\0\0\0R*\0\0\0(
++\0\0\0R  \0\0\0R9\ 1\0\0t\b\0\0\0errfnameR\11\0\0\0R\83\0\0\0\ 1\0\0R\86\0\0\0R\b\0\0\0\0\0\0R\93\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\14\0\0\0testMEDFileSafeCall0Z\12\0\0s:\0\0\0\0\ 3\ 6\ 1\ 6\ 2\f\ 2\12\ 1\r\ 1\ 3\ 2      \ 1\f\0
++\ 1\10\ 1   \ 1\r\ 1\r\ 1\10\ 2\10\ 2\f\ 1\r\ 1\r\ 1\13\ 1\r\ 1
++\ 1     \ 1\r\ 2\f\ 1\19\ 1\ 3\ 2\12\ 1\10\ 2c\ 1\0\0\0\ 5\0\0\0\ 3\0\0\0C\0\0\0\0\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0\83\ 1\0}\ 2\0|\ 2\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}\ 3\0|\ 3\0j\ 3\0|\ 2\0|\ 2\0\83\ 2\0\ 1|\ 3\0j\ 4\0d\ 3\0\83\ 1\0\ 1t\ 5\0\83\0\0}\ 4\0|\ 4\0j\ 6\0|\ 3\0\83\ 1\0\ 1|\ 4\0j\a\0t\b\0\83\ 1\0\ 1|\ 4\0j    \0|\ 1\0d\ 4\0\83\ 2\0\ 1t\ 5\0|\ 1\0\83\ 1\0}\ 4\0|\0\0j
++\0|\ 4\0j\v\0\83\0\0d\ 5\0\83\ 2\0\ 1|\ 4\0j\a\0t\f\0\83\ 1\0\ 1|\ 4\0j    \0|\ 1\0d\ 4\0\83\ 2\0\ 1t\ 5\0|\ 1\0\83\ 1\0}\ 4\0|\0\0j\r\0|\ 4\0j\v\0\83\0\0d\ 5\0k\ 3\0\83\ 1\0\ 1d\ 6\0S(\a\0\0\0sE\0\0\0 Non regression test to check the effectiveness of univ write status.s\f\0\0\0Pyfile95.medi
++\0\0\0\ 2\0\0i\ 2\0\0\0R&\0\0\0N(\ e\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0RB\0\0\0\0\0\0\0\0\0t\13\0\0\0setUnivNameWrStatusRN\0\0\0R\v\0\0\0R+\0\0\0R{\0\0\0R.\0\0\0R0\0\0\0(\ 5\0\0\0R       \0\0\0R9\ 1\0\0\ 1\0\0R\83\0\0\0R\86\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ f\0\0\0testUnivStatus1\82\12\0\0s"\0\0\0\0\ 2\ 6\ 1\f\0
++\ 1     \0\10\0\r\ 1   \0\r\ 1\r\ 1\10\ 1\f\ 1\16\ 1\r\ 1\10\ 1\f\ 1\19\ 1c\ 1\0\0\0\ 6\0\0\0\ 5\0\0\0C\0\0\0\0\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 3\0\83\ 2\0}\ 2\0|\ 2\0j\ 1\0t\ 2\0g\0\0d\ 4\0d\ 3\0\83\ 3\0\83\ 1\0\ 1|\ 2\0j\ 3\0t\ 4\0g\0\0\83\ 1\0t\ 4\0d\ 4\0g\ 1\0\83\ 1\0\83\ 2\0\ 1t\ 5\0\83\0\0}\ 3\0|\ 3\0j\ 6\0d\ 4\0|\ 2\0\83\ 2\0\ 1|\ 3\0j\a\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\ 5\0|\ 1\0\83\ 1\0}\ 4\0|\0\0j\b\0d\ 2\0|\ 4\0j        \0\83\0\0\83\ 2\0\ 1|\ 4\0j
++\0\83\0\0}\ 5\0|\0\0j\b\0d\ 6\0|\ 5\0\83\ 2\0\ 1d\ 5\0S(\a\0\0\0si\0\0\0 MEDLoader should be able to consistently write and read an empty mesh (coords array
++      with 0 tuples s\f\0\0\0Pyfile96.medR\8b\ 2\0\0i\ 2\0\0\0i\0\0\0\0N(\0\0\0\0(\v\0\0\0R[\0\0\0Rc\0\0\0RY\0\0\0Rÿ\ 1\0\0Rk\0\0\0R>\0\0\0Rj\0\0\0R\v\0\0\0R+\0\0\0RC\0\0\0R,\0\0\0(\ 6\0\0\0R  \0\0\0R9\ 1\0\0R\83\0\0\0R  \ 2\0\0t\ 4\0\0\0mfu2t\ 3\0\0\0lvl(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testEmptyMesh\92\12\0\0s\16\0\0\0\0\ 3\ 6\ 1\ f\ 1\19\ 1\1f\ 1     \ 1\10\ 1\10\ 1\f\ 1\16\ 1\f\ 1c\ 1\0\0\0\11\0\0\0\ 4\0\0\0C\0\0\0s\85\ 1\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0d\ 4\0}\ 4\0d\ 5\0}\ 5\0t\0\0|\ 5\0\83\ 1\0}\ 6\0|\ 6\0j\ 1\0\83\0\0\ 1|\ 6\0|\ 5\0d\ 6\0\18:}\ 6\0|\ 6\0|\ 4\09}\ 6\0t\ 2\0\83\0\0}\a\0|\a\0j\ 3\0|\ 6\0|\ 6\0|\ 6\0\83\ 3\0\ 1|\a\0j\ 4\0\83\0\0}\a\0|\a\0j\ 5\0|\ 1\0\83\ 1\0\ 1t\ 6\0\83\0\0}\b\0|\a\0|\b\0d\a\0<|\a\0j\a\0\83\0\0\0|      \0|\b\0d\b\0<|       \0j\b\0\83\0\0d        \0d      \0\85\ 2\0d
++\0f\ 2\0\19}
++\0|
++\0j    \0|\ 4\0d\v\0\18|\ 4\0d\v\0\17\83\ 2\0}\v\0|\v\0j\ 5\0|\ 2\0\83\ 1\0\ 1|
++\0j    \0d\r\0d\ e\0\83\ 2\0}\f\0|\f\0j\ 5\0|\ 3\0\83\ 1\0\ 1|\b\0j
++\0d\b\0|\v\0|\f\0g\ 2\0\83\ 2\0\ 1t\v\0j\f\0|\b\0d
++\0\83\ 2\0}\r\0t\v\0j\r\0|\r\0\83\ 1\0}\ e\0t\v\0j\f\0|\ e\0d
++\0\83\ 2\0}\ f\0t\v\0j\r\0|\ f\0\83\ 1\0}\10\0|\0\0j\ e\0|\b\0j\ f\0|\10\0d\v\0\83\ 2\0d\a\0\19\83\ 1\0\ 1d  \0S(\ f\0\0\0s[\0\0\0 Check that pickalization can be performed on a unpickalized instance. Non regression test.t\ 6\0\0\0Mesh_1t\ 4\0\0\0HAUTt\ 4\0\0\0BASEg\0\0\0\0\0\0ð?i\ 3\0\0\0i\ 1\0\0\0i\0\0\0\0iÿÿÿÿNi\ 2\0\0\0g\11ê-\81\99\97q=g\0\0\0\0\0\0\0\0g\11ê-\81\99\97q½g\11ê-\81\99\97q=(\10\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0\ 1\0\0RB\0\0\0R>\0\0\0\ 2\0\0t\17\0\0\0computeCellCenterOfMasst\ e\0\0\0findIdsInRangeRl\0\0\0\ 3\0\0\ 3\0\0\ 3\0\0R0\0\0\0R1\0\0\0(\11\0\0\0R     \0\0\0Rh\ 1\0\0t\b\0\0\0grpName1t\b\0\0\0grpName2t\a\0\0\0hauteurt\10\0\0\0nbOfNodesPerAxisRÔ\ 1\0\0R\83\0\0\0\ 2\0\0R\84\0\0\0t\ 5\0\0\0bary1R\95\ 2\0\0\ 1\0\0R\r\0\0\0R\86\0\0\0t\ 3\0\0\0st2R¢\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testMEDFileUMeshPickeling2¡\12\0\0s:\0\0\0\0\ 3\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1\f\0
++\0\ e\0
++\ 1     \0\13\0\f\0\r\ 1 \0
++\ 1\f\0
++\ 2\1c\ 1\1a\0\r\ 1\12\0\r\ 1\16\ 2\12\ 1\ f\ 1\12\ 1\ f\ 1\1d\ 1c\ 1\0\0\0\11\0\0\0\81\0\0\0C\0\0\0s)    \0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0\83\0\0}\ 3\0t\ 1\0d\ 3\0d\ 3\0d\ 3\0f\ 3\0d\ 4\0d\ 3\0d\ 3\0f\ 3\0d\ 5\0d\ 3\0d\ 3\0f\ 3\0d\ 6\0d\ 3\0d\ 3\0f\ 3\0d\ 3\0d\a\0d\ 3\0f\ 3\0d\ 4\0d\a\0d\ 3\0f\ 3\0d\ 5\0d\a\0d\ 3\0f\ 3\0d\ 6\0d\a\0d\ 3\0f\ 3\0d\ 3\0d\b\0d\ 3\0f\ 3\0d\ 4\0d\b\0d\ 3\0f\ 3\0d\ 5\0d\b\0d\ 3\0f\ 3\0d\ 6\0d\b\0d\ 3\0f\ 3\0d\ 3\0d  \0d\ 3\0f\ 3\0d\ 4\0d     \0d\ 3\0f\ 3\0d\ 5\0d     \0d\ 3\0f\ 3\0d\ 6\0d     \0d\ 3\0f\ 3\0d\ 3\0d\ 3\0d\ 4\0f\ 3\0d\ 4\0d\ 3\0d\ 4\0f\ 3\0d\ 5\0d\ 3\0d\ 4\0f\ 3\0d\ 6\0d\ 3\0d\ 4\0f\ 3\0d\ 3\0d\a\0d\ 4\0f\ 3\0d\ 4\0d\a\0d\ 4\0f\ 3\0d\ 5\0d\a\0d\ 4\0f\ 3\0d\ 6\0d\a\0d\ 4\0f\ 3\0d\ 3\0d\b\0d\ 4\0f\ 3\0d\ 4\0d\b\0d\ 4\0f\ 3\0d\ 5\0d\b\0d\ 4\0f\ 3\0d\ 6\0d\b\0d\ 4\0f\ 3\0d\ 3\0d     \0d\ 4\0f\ 3\0d\ 4\0d     \0d\ 4\0f\ 3\0d\ 5\0d     \0d\ 4\0f\ 3\0d\ 6\0d     \0d\ 4\0f\ 3\0d\ 4\0d\ 3\0d
++\0f\ 3\0d\ 4\0d\v\0d\ 3\0f\ 3\0d\f\0d\ 3\0d\ 3\0f\ 3\0d\ 5\0d\ 3\0d
++\0f\ 3\0d\ 5\0d\v\0d\ 3\0f\ 3\0d\ 4\0d\a\0d
++\0f\ 3\0d\f\0d\a\0d\ 3\0f\ 3\0d\ 5\0d\a\0d
++\0f\ 3\0d\ 4\0d\v\0d\ 4\0f\ 3\0d\f\0d\ 3\0d\ 4\0f\ 3\0d\ 5\0d\v\0d\ 4\0f\ 3\0d\f\0d\a\0d\ 4\0f\ 3\0d\ 4\0d\v\0d
++\0f\ 3\0d\f\0d\ 3\0d
++\0f\ 3\0d\f\0d\v\0d\ 3\0f\ 3\0d\ 5\0d\v\0d
++\0f\ 3\0d\f\0d\a\0d
++\0f\ 3\0d\f\0d\v\0d\ 4\0f\ 3\0d\f\0d\v\0d
++\0f\ 3\0g3\0\83\ 1\0}\ 4\0|\ 4\0j\ 2\0d\r\0d\ e\0d\ f\0g\ 3\0\83\ 1\0\ 1t\ 3\0d\10\0d\11\0d\12\0d\13\0d\v\0d\14\0d\15\0d\ 4\0d\12\0d\13\0d\ 4\0d\15\0d\10\0d\16\0d\17\0d\18\0d\11\0d\19\0d\17\0d\16\0d\12\0d\1a\0d\17\0d\19\0d\13\0d\18\0d\17\0d\1a\0d\v\0d\e\0d\1c\0d\ 6\0d\14\0d\1d\0d\1c\0d\e\0d\15\0d\1e\0d\1c\0d\1d\0d\ 4\0d\ 6\0d\1c\0d\1e\0d\12\0d\1a\0d\1f\0\0d\13\0d!\0d\1f\0d\1a\0d\ 4\0d\1e\0d\1f\0d!\0d\15\0\0d\1f\0d\1e\0g<\0\83\ 1\0}\ 5\0t\ 4\0|\ 2\0t\ 5\0\83\ 2\0}\ 6\0|\ 6\0j\ 6\0|\ 4\0\83\ 1\0\ 1|\ 6\0j\a\0|\ 5\0\83\ 1\0\ 1|\ 6\0|\ 3\0d"\0<t\ 3\0d#\0d$\0d\11\0d\12\0d\a\0d\ 3\0d\10\0d\13\0d\15\0d\14\0d\ 5\0d%\0d\ 4\0d\v\0d
++\0d&\0\0d#\0d\12\0d'\0d(\0d\a\0d\13\0d)\0d'\0d\12\0d\15\0d*\0d)\0d\13\0d\ 4\0d+\0d*\0d\15\0d%\0d,\0d+\0d\ 4\0d&\0d-\0d.\0d      \0d'\0d/\0d0\0d(\0d)\0d\b\0d/\0d'\0d*\0d1\0d\b\0d)\0d+\0d2\0d1\0d*\0d,\0d3\0d2\0d+\0d-\0d4\0d\12\0d\19\0d5\0\0d\1a\0d\17\0d6\0d\1f\0d\19\0d\11\0d7\0d5\0d\17\0d\16\0d8\0d6\0d5\0d7\0d\14\0d\1d\0d6\0d8\0d\e\0d\1c\0\0d5\0d\1d\0d\15\0d\1f\0d6\0d\1c\0d\1e\0d\17\0d\16\0d8\0d6\0d\18\0d\10\0d9\0d:\0d\1a\0d\17\0d6\0d\1f\0d\13\0d\18\0d:\0d!\0d\1f\0d6\0d\1c\0d\1e\0d!\0d:\0d\ 6\0d\ 4\0d6\0d8\0d\e\0d\1c\0d:\0d9\0d\v\0d\ 6\0g\80\0\83\ 1\0}\a\0t\ 4\0|\ 2\0t\b\0\83\ 2\0}\b\0|\b\0j\ 6\0|\ 4\0\83\ 1\0\ 1|\b\0j\a\0|\a\0\83\ 1\0\ 1|\b\0|\ 3\0d\ 3\0<d;\0|\ 3\0j  \0d"\0\83\ 1\0(d\ 3\0|\ 3\0\0d\ 3\0\83\ 1\0(|\ 3\0j
++\0d<\0d"\0\83\ 2\0\ 1|\ 3\0j
++\0d=\0d;\0\83\ 2\0\ 1|\ 3\0j
++\0d>\0d?\0\83\ 2\0\ 1|\ 3\0j\v\0d@\0d"\0d;\0d?\0g\ 3\0\83\ 2\0\ 1dA\0}      \0dB\0}
++\0|\ 3\0j\f\0\83\0\0\ 1|\ 3\0j\r\0\83\0\0}\v\0|\v\0j\ e\0|        \0\83\ 1\0}\f\0|\f\0j\ f\0|
++\0\83\ 1\0\ 1t\ 3\0d\ 3\0d
++\0f\ 2\0d\ 3\0d\a\0f\ 2\0d\ 3\0d\13\0f\ 2\0d\ 3\0d\ 4\0f\ 2\0d\10\0d&\0f\ 2\0d\10\0d(\0f\ 2\0d\10\0d)\0f\ 2\0d\10\0d+\0f\ 2\0d\v\0d-\0f\ 2\0d\v\0d0\0f\ 2\0d\v\0d\b\0f\ 2\0d\v\0d2\0f\ 2\0g\f\0\83\ 1\0}\r\0|\f\0j\10\0d"\0|\r\0\83\ 2\0\ 1|\0\0j\11\0|\f\0j\12\0\83\0\0j\13\0\83\0\0d\10\0\83\ 2\0\ 1|\0\0j\14\0|\f\0j\12\0\83\0\0j\15\0t\ 5\0\83\ 1\0j\16\0|\r\0\83\ 1\0\83\ 1\0\ 1|\f\0j\12\0\83\0\0j\17\0\83\0\0\ 1|\0\0j\11\0|\f\0j\12\0\83\0\0j\13\0\83\0\0d\ 3\0\83\ 2\0\ 1|\f\0j\12\0\83\0\0j\18\0t\ 5\0|\r\0\83\ 2\0\ 1|\0\0j\11\0|\f\0j\12\0\83\0\0j\13\0\83\0\0d\10\0\83\ 2\0\ 1|\0\0j\14\0|\f\0j\12\0\83\0\0j\15\0t\ 5\0\83\ 1\0j\16\0|\r\0\83\ 1\0\83\ 1\0\ 1|\ 3\0j\19\0\83\0\0\ 1|\ 3\0j\f\0\83\0\0\ 1|\ 3\0j\r\0\83\0\0}\v\0|\v\0j\ e\0|   \0\83\ 1\0}\f\0|\f\0j\ f\0|
++\0\83\ 1\0\ 1|\f\0j\1a\0\83\0\0}\ e\0|\ e\0j\18\0t\ 5\0|\r\0\83\ 2\0\ 1|\0\0j\11\0|\f\0j\12\0\83\0\0j\13\0\83\0\0d\10\0\83\ 2\0\ 1|\0\0j\14\0|\f\0j\12\0\83\0\0j\15\0t\ 5\0\83\ 1\0j\16\0|\r\0\83\ 1\0\83\ 1\0\ 1|\ 3\0j\e\0\83\0\0}\ f\0|\0\0j\14\0|\ 3\0j\16\0|\ f\0dC\0\83\ 2\0d\ 3\0\19\83\ 1\0\ 1|\0\0j\11\0|\ f\0j\r\0\83\0\0j\13\0\83\0\0d\10\0\83\ 2\0\ 1|\0\0j\14\0|\ f\0j\r\0\83\0\0j\1c\0d\ 3\0\83\ 1\0j\12\0\83\0\0j\15\0t\ 5\0\83\ 1\0j\16\0|\r\0\83\ 1\0\83\ 1\0\ 1d\v\0|\ f\0j\r\0\83\0\0j\1c\0d\ 3\0\83\ 1\0j\12\0\83\0\0j\15\0t\ 5\0\83\ 1\0d\ 3\0d\ 3\0f\ 2\0<|\0\0j\14\0|\ 3\0j\16\0|\ f\0dC\0\83\ 2\0d\ 3\0\19\f\83\ 1\0\ 1d\ 3\0|\ f\0j\r\0\83\0\0j\1c\0d\ 3\0\83\ 1\0j\12\0\83\0\0j\15\0t\ 5\0\83\ 1\0d\ 3\0d\ 3\0f\ 2\0<|\0\0j\14\0|\ 3\0j\16\0|\ f\0dC\0\83\ 2\0d\ 3\0\19\83\ 1\0\ 1|\ 3\0j\1d\0|\ 1\0d\v\0\83\ 2\0\ 1t\1e\0j\1f\0|\ 1\0\83\ 1\0}\10\0|\0\0j\14\0|\ 3\0j\16\0|\10\0dC\0\83\ 2\0d\ 3\0\19\83\ 1\0\ 1dD\0S(E\0\0\0s9\0\0\0 First check of equivalence implementation in MEDFileMeshs\f\0\0\0Pyfile97.medt\ 4\0\0\0M_01i\0\0\0\0i\ 6\0\0\0i\13\0\0\0i$\0\0\0i\ 4\0\0\0i\r\0\0\0i\18\0\0\0i\ 3\0\0\0i\ 2\0\0\0g\0\0\0\0\0\0)@s\ e\0\0\0X [Sans_unite]s\ e\0\0\0Y [Sans_unite]s\ e\0\0\0Z [Sans_unite]i\ 1\0\0\0i\11\0\0\0i\15\0\0\0i\ 5\0\0\0i\12\0\0\0i\16\0\0\0\0\0\0i,\0\0\0i!\0\0\0i(\0\0\0i%\0\0\0i#\0\0\0i/\0\0\0i*\0\0\0i'\0\0\0i0\0\0\0i+\0\0\0i&\0\0\0iÿÿÿÿi\14\0\0\0i\10\0\0\0i\17\0\0\0i\a\0\0\0i\19\0\0\0i\b\0\0\0i  \0\0\0i\1a\0\0\0i
++\0\0\0i\e\0\0\0i\v\0\0\0i\1c\0\0\0i\1d\0\0\0i\f\0\0\0i\1e\0\0\0i\ e\0\0\0i\1f\0\0\0i\ f\0\0\0i1\0\0\0i2\0\0\0i)\0\0\0i-\0\0\0i"\0\0\0i.\0\0\0iþÿÿÿs\10\0\0\0HOMARD________-1s\10\0\0\0HOMARD________-2s\10\0\0\0HOMARD________-3iýÿÿÿt\ 6\0\0\0HOMARDt\1f\0\0\0MAILLES_A_RECOLLER_APRES_HOMARDs¾\0\0\0Cette equivalence decrit les mailles a recoller. Dans chaque correspondance, le premier numero est celui de la maille coupee ; le second numero est celui d'une des petites mailles en regard.g\11ê-\81\99\97q=N( \0\0\0R>\0\0\0RY\0\0\0\ 1\0\0Rk\0\0\0Rz\0\0\0R`\0\0\0Rc\0\0\0R&\ 4\0\0\0\0\0R\9e\0\0\0\0\0\0\0\0\0t\16\0\0\0initializeEquivalencest\ f\0\0\0getEquivalencest\1e\0\0\0appendEmptyEquivalenceWithNameRi\0\0\0R{\ 1\0\0R+\0\0\0t\a\0\0\0getCellt\ 4\0\0\0sizeR0\0\0\0R)\ 1\0\0R1\0\0\0t\ 5\0\0\0cleart\ f\0\0\0setArrayForTypet\10\0\0\0killEquivalencest\b\0\0\0initCellRq\0\0\0t\ e\0\0\0getEquivalenceR\v\0\0\0R'\0\0\0R(\0\0\0(\11\0\0\0R        \0\0\0R!\0\0\0\ 3\0\0R\86\0\0\0R\ 3\ 2\0\0t\ 6\0\0\0connQ4R\84\0\0\0t\ 6\0\0\0connH8Rá\0\0\0t\ 6\0\0\0eqNamet\ 6\0\0\0descEqt\ 3\0\0\0eqst\ 3\0\0\0eq0t\ 4\0\0\0corrR\80\0\0\0\0\0\0t\ 3\0\0\0mm3(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\17\0\0\0testMEDFileEquivalence1º\12\0\0sx\0\0\0\0\ 2\ 6\ 1\ 6\ 1   \ 1ÿ\0ÿ\0r\ 1\16\ 1À\ 1\ f\0\r\0\r\0
++\ 1ÿ\0\8d\ 1\ f\0\r\0\r\0
++\ 1\10\ 1\10\ 1\10\ 1\10\ 1\10\ 1\19\ 2\ 6\ 1\ 6\ 1
++\ 1\f\ 1\ f\ 1\r\ 1x\ 1\10\ 1\1c\ 1%\ 1\10\ 1\1c\ 1\16\ 1\1c\ 1%\ 1
++\ 1
++\ 1\f\ 1\ f\ 1\r\ 1\f\ 1\10\ 1\1c\ 1%\ 1\f\ 1\1d\ 1\1c\ 14\ 1.\ 1\1e\ 1.\ 1\1d\ 1\10\ 2\ f\ 1\1d\ 1c\ 1\0\0\0    \0\0\0\ 6\0\0\0C\0\0\0sÿ\ 1\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0t\0\0j\ 1\0\83\0\0\16}\ 3\0t\ 2\0d\ 4\0\83\ 1\0}\ 4\0|\ 4\0j\ 3\0\83\0\0\ 1t\ 4\0\83\0\0}\ 5\0|\ 5\0j\ 5\0|\ 4\0|\ 4\0\83\ 2\0\ 1|\ 5\0j\ 6\0\83\0\0}\ 5\0t\a\0\83\0\0}\ 6\0|\ 5\0|\ 6\0d\ 5\0<|\ 6\0j\b\0|\ 2\0\83\ 1\0\ 1|\ 6\0j     \0d\ 6\0d\ 5\0\83\ 2\0\ 1d\a\0|\ 6\0j
++\0d\ 5\0\83\ 1\0d\b\0)|\ 6\0j       \0d      \0|\ 3\0d\ 5\0\16\16d\a\0\83\ 2\0\ 1|\ 6\0j\v\0\0|\ 3\0d\ 5\0\16\16d
++\0g\ 1\0\83\ 2\0\ 1t\f\0d\v\0\83\ 1\0}\a\0d\ 5\0|\a\0(d\f\0|\a\0d\r\0d\ e\0d\ 4\0d\ f\0g\ 4\0<|\ 6\0j\r\0d\r\0|\a\0\83\ 2\0\ 1|\ 6\0\0d      \0|\ 3\0d\r\0\16\16d\f\0\83\ 2\0\ 1|\ 6\0j\v\0\0|\ 3\0d\r\0\16\16d
++\0g\ 1\0\83\ 2\0\ 1|\0\0j\ e\0|\ 6\0j\ f\0\83\0\0d\15\0\83\ 2\0\ 1|\0\0j\ e\0|\ 6\0j\10\0\83\0\0d\16\0\83\ 2\0\ 1|\0\0j\ e\0|\ 6\0j\11\0d
++\0\83\ 1\0d\17\0\83\ 2\0\ 1|\ 6\0j\12\0|\ 1\0d\ e\0\83\ 2\0\ 1t\0\0j\13\0|\ 1\0\83\ 1\0}\b\0|\0\0j\14\0|\ 6\0j\15\0|\b\0d\13\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ e\0|\b\0j\ f\0\83\0\0d\18\0\83\ 2\0\ 1|\0\0j\ e\0|\b\0j\10\0\83\0\0d\19\0\83\ 2\0\ 1|\0\0j\ e\0|\b\0j\11\0d
++\0\83\ 1\0d\1a\0\83\ 2\0\ 1d\14\0S(\e\0\0\0s}\0\0\0Non regression bug EDF11911. For serial killers using same family name to store both cells and nodes ! Only sky is the limit.s\f\0\0\0Pyfile98.medR \ 2\0\0s\a\0\0\0%s%%04ii\ 4\0\0\0i\0\0\0\0R\9a\ 2\0\0iüÿÿÿiýÿÿÿs\ 6\0\0\0RIDF%st\ 3\0\0\0RIDi\10\0\0\0i\ 3\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 5\0\0\0s\ e\0\0\0RIDF!/__\!0000s\ e\0\0\0RIDF!/__\!0001t\ 4\0\0\0RIDFg¼\89Ø\97²Ò\9c<N(\ 3\0\0\0s\f\0\0\0FAMILLE_ZEROs\ e\0\0\0RIDF!/__\!0000s\ e\0\0\0RIDF!/__\!0001(\ 3\0\0\0s\f\0\0\0FAMILLE_ZEROR¹\ 4\0\0\ 4\0\0(\ 2\0\0\0iüÿÿÿi\ 3\0\0\0(\ 3\0\0\0s\f\0\0\0FAMILLE_ZEROs\ e\0\0\0RIDF!/__\!0000s\ e\0\0\0RIDF!/__\!0001(\ 3\0\0\0s\f\0\0\0FAMILLE_ZEROR¹\ 4\0\0\ 4\0\0(\ 2\0\0\0iüÿÿÿi\ 3\0\0\0(\16\0\0\0R'\0\0\0t\11\0\0\0GetMagicFamilyStrRY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0\ 1\0\0R>\0\0\0RB\0\0\0\0\0\0R\9e\0\0\0\ 3\0\0Rk\0\0\0\0\0\0R+\0\0\0\ 1\0\0t#\0\0\0getFamiliesNamesWithFilePointOfViewR\v\ 3\0\0R\v\0\0\0R(\0\0\0R0\0\0\0R1\0\0\0(  \0\0\0R    \0\0\0R!\0\0\0\ 3\0\0t\a\0\0\0magicStRÔ\ 1\0\0R\83\0\0\0R\86\0\0\0Re\ 1\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1d\0\0\0testMEDFileForFamiliesPlayer1ò\12\0\0s>\0\0\0\0\ 2\ 6\ 1\ 6\ 1\10\ 1\f\0
++\ 1     \0\10\ 1\f\ 1   \ 1
++\ 1\r\ 1\10\ 1\13\ 1\18\ 1\e\ 1\f\0\a\0\16\ 1\10\ 1\18\ 1\e\ 1\16\ 1\16\ 1\19\ 1\10\ 2\ f\ 1\19\ 1\16\ 1\16\ 1\19\ 1c\ 1\0\0\0\r\0\0\0\ 6\0\0\0C\0\0\0s)\f\0\0t\0\0d\ 1\0\83\ 1\0}\ 1\0|\ 1\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}\ 2\0|\ 2\0j\ 3\0|\ 1\0|\ 1\0\83\ 2\0\ 1|\ 2\0j\ 4\0\83\0\0}\ 2\0t\ 5\0\83\0\0}\ 3\0|\ 2\0|\ 3\0d\ 2\0<|\ 3\0j\ 6\0\83\0\0\ 1t\a\0d\ 3\0\83\ 1\0}\ 4\0d\ 2\0|\ 4\0(t\a\0d\ 4\0\83\ 1\0}\ 5\0d\ 2\0|\ 5\0(|\ 3\0j\b\0d\ 2\0|\ 5\0\83\ 2\0\ 1|\ 3\0j\b\0d\ 5\0|\ 4\0\83\ 2\0\ 1|\ 3\0j     \0d\ 6\0\83\ 1\0\ 1|\ 3\0j
++\0d\a\0\83\ 1\0\ 1|\ 3\0j\v\0d\b\0d\ 1\0\0\83\ 3\0\ 1|\ 3\0j\f\0d
++\0d\v\0\83\ 2\0\ 1|\ 3\0j\r\0d\f\0d
++\0g\ 1\0\83\ 2\0\ 1|\ 3\0j\ e\0d\r\0\83\ 1\0\ 1|\ 3\0j\ f\0\83\0\0j\10\0\83\0\0}\ 6\0|\ 3\0d\ 2\0\19j\11\0\83\0\0j\10\0\83\0\0}\a\0|\0\0j\12\0|\ 6\0|\ 3\0d\ 2\0\19j\ f\0\83\0\0j\10\0\83\0\0\83\ 2\0\ 1|\ 3\0d\ 2\0\19j\13\0\83\0\0j\10\0\83\0\0}\b\0|\ 3\0j\14\0t\15\0\83\ 1\0j\11\0\83\0\0j\10\0\83\0\0}  \0|\0\0j\12\0|\ 6\0|\ 3\0j\14\0t\15\0\83\ 1\0j\ f\0\83\0\0j\10\0\83\0\0\83\ 2\0\ 1|\ 3\0j\16\0t\17\0\83\ 1\0\ 1|\ 3\0j\18\0\83\0\0}
++\0|\0\0j\12\0|
++\0j\19\0\83\0\0t\1a\0\83\ 2\0\ 1|\ 3\0j\16\0t\1a\0\83\ 1\0\ 1|\0\0j\e\0t\1c\0|
++\0t\ 5\0\83\ 2\0\83\ 1\0\ 1|\0\0j\e\0|\ 3\0j\10\0\83\0\0|
++\0j\10\0\83\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\e\0|\ 6\0|\ 3\0j\ f\0\83\0\0j\10\0\83\0\0k\ 2\0\83\ 1\0\ 1|\0\0j\e\0|\ 6\0|
++\0j\ f\0\83\0\0j\10\0\83\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\12\0|
++\0j\ f\0\83\0\0j\10\0\83\0\0|
++\0d\ 2\0\19j\ f\0\83\0\0j\10\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\ f\0\83\0\0j\10\0\83\0\0|
++\0j\14\0t\15\0\83\ 1\0j\ f\0\83\0\0j\10\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0d\ 2\0\19j\11\0\83\0\0j\10\0\83\0\0|\a\0\83\ 2\0\ 1|\0\0j\12\0|
++\0d\ 2\0\19j\13\0\83\0\0j\10\0\83\0\0|\b\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\14\0t\15\0\83\ 1\0j\11\0\83\0\0j\10\0\83\0\0|       \0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1d\0\83\0\0|\ 3\0j\1d\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1e\0\83\0\0|\ 3\0j\1e\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1f\0\83\0\0|\ 3\0j\1f\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1f\0\83\0\0|\ 3\0j\1f\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0\0\83\0\0|\ 3\0\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j!\0\83\0\0|\ 3\0j!\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j"\0\83\0\0|\ 3\0j"\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0g\0\0|
++\0j"\0\83\0\0D]\15\0}\v\0|
++\0j#\0|\v\0\83\ 1\0^\ 2\0\ 3g\0\0|\ 3\0j"\0\83\0\0D]\15\0}\f\0|\ 3\0j#\0|\f\0\83\ 1\0^\ 2\0q\ 6\ 4\83\ 2\0\ 1|\0\0j\12\0|\ 3\0j$\0d\ 2\0\83\ 1\0j\10\0\83\0\0|\ 5\0j\10\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j$\0d\ 2\0\83\ 1\0j\10\0\83\0\0|\ 5\0j\10\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|\ 3\0j$\0d\ 5\0\83\ 1\0j\10\0\83\0\0|\ 4\0j\10\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j$\0d\ 5\0\83\ 1\0j\10\0\83\0\0|\ 4\0j\10\0\83\0\0\83\ 2\0\ 1|\ 3\0j\16\0t\1a\0\83\ 1\0\ 1|\ 3\0j\18\0\83\0\0}
++\0|\0\0j\12\0|
++\0j\19\0\83\0\0t\1a\0\83\ 2\0\ 1|\0\0j\e\0t\1c\0|
++\0t\ 5\0\83\ 2\0\83\ 1\0\ 1|\0\0j\e\0|\ 3\0j\10\0\83\0\0|
++\0j\10\0\83\0\0k\ 2\0\83\ 1\0\ 1t\0\0d\ 1\0\83\ 1\0}\ 1\0|\ 1\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}\ 2\0|\ 2\0j\ 3\0|\ 1\0|\ 1\0\83\ 2\0\ 1|\ 2\0j%\0\83\0\0}\ 2\0t&\0\83\0\0}\ 3\0|\ 3\0j'\0|\ 2\0\83\ 1\0\ 1|\ 3\0j\16\0t\17\0\83\ 1\0\ 1|\ 3\0j\b\0d\ 2\0|\ 5\0\83\ 2\0\ 1|\ 3\0j\b\0d\ 5\0|\ 4\0\83\ 2\0\ 1|\ 3\0j      \0d\ 6\0\83\ 1\0\ 1|\ 3\0j
++\0d\a\0\83\ 1\0\ 1|\ 3\0j\v\0d\b\0d\ 1\0\0\83\ 3\0\ 1|\ 3\0j\f\0d
++\0d\v\0\83\ 2\0\ 1|\ 3\0j\r\0d\f\0d
++\0g\ 1\0\83\ 2\0\ 1|\ 3\0j\ e\0d\r\0\83\ 1\0\ 1|\ 3\0j(\0\83\0\0j\ f\0\83\0\0j\10\0\83\0\0}\ 6\0|\ 3\0j\18\0\83\0\0}
++\0|\0\0j\12\0|
++\0j\19\0\83\0\0t\1a\0\83\ 2\0\ 1|\0\0j\e\0t\1c\0|
++\0t&\0\83\ 2\0\83\ 1\0\ 1|\0\0j\e\0|\ 3\0j\10\0\83\0\0|
++\0j\10\0\83\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\e\0|\ 6\0|\ 3\0j(\0\83\0\0j\ f\0\83\0\0j\10\0\83\0\0k\ 2\0\83\ 1\0\ 1|\0\0j\e\0|\ 6\0|
++\0j(\0\83\0\0j\ f\0\83\0\0j\10\0\83\0\0k\ 3\0\83\ 1\0\ 1|\0\0j\12\0|
++\0j(\0\83\0\0j)\0\83\0\0|\ 3\0j(\0\83\0\0j)\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1d\0\83\0\0|\ 3\0j\1d\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1e\0\83\0\0|\ 3\0j\1e\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1f\0\83\0\0|\ 3\0j\1f\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1f\0\83\0\0|\ 3\0j\1f\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0\0\83\0\0|\ 3\0\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j!\0\83\0\0|\ 3\0j!\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j"\0\83\0\0|\ 3\0j"\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0g\0\0|
++\0j"\0\83\0\0D]\15\0}\v\0|
++\0j#\0|\v\0\83\ 1\0^\ 2\0\ag\0\0|\ 3\0j"\0\83\0\0D]\15\0}\f\0|\ 3\0j#\0|\f\0\83\ 1\0^\ 2\0\a\83\ 2\0\ 1|\0\0j\12\0|\ 3\0j$\0d\ 2\0\83\ 1\0j\10\0\83\0\0|\ 5\0j\10\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j$\0d\ 2\0\83\ 1\0j\10\0\83\0\0|\ 5\0j\10\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|\ 3\0j$\0d\ 5\0\83\ 1\0j\10\0\83\0\0|\ 4\0j\10\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j$\0d\ 5\0\83\ 1\0j\10\0\83\0\0|\ 4\0j\10\0\83\0\0\83\ 2\0\ 1|\ 3\0j\16\0t\1a\0\83\ 1\0\ 1|\ 3\0j\18\0\83\0\0}
++\0|\0\0j\12\0|
++\0j\19\0\83\0\0t\1a\0\83\ 2\0\ 1|\0\0j\e\0t\1c\0|
++\0t&\0\83\ 2\0\83\ 1\0\ 1|\0\0j\e\0|\ 3\0j\10\0\83\0\0|
++\0j\10\0\83\0\0k\ 2\0\83\ 1\0\ 1t\0\0d\ 1\0\83\ 1\0}\ 1\0|\ 1\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}\ 2\0|\ 2\0j\ 3\0|\ 1\0|\ 1\0\83\ 2\0\ 1t*\0\83\0\0}\ 3\0|\ 3\0j'\0|\ 2\0\83\ 1\0\ 1|\ 3\0j\16\0t\17\0\83\ 1\0\ 1|\ 3\0j\b\0d\ 2\0|\ 5\0\83\ 2\0\ 1|\ 3\0j\b\0d\ 5\0|\ 4\0\83\ 2\0\ 1|\ 3\0j  \0d\ 6\0\83\ 1\0\ 1|\ 3\0j
++\0d\a\0\83\ 1\0\ 1|\ 3\0j\v\0d\b\0d\ 1\0\0\83\ 3\0\ 1|\ 3\0j\f\0d
++\0d\v\0\83\ 2\0\ 1|\ 3\0j\r\0d\f\0d
++\0g\ 1\0\83\ 2\0\ 1|\ 3\0j\ e\0d\r\0\83\ 1\0\ 1|\ 3\0j\18\0\83\0\0}
++\0|\0\0j\12\0|
++\0j\19\0\83\0\0t\1a\0\83\ 2\0\ 1|\0\0j\e\0t\1c\0|
++\0t&\0\83\ 2\0\83\ 1\0\ 1|\0\0j\12\0|
++\0j(\0\83\0\0j)\0\83\0\0|\ 3\0j(\0\83\0\0j)\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1d\0\83\0\0|\ 3\0j\1d\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1e\0\83\0\0|\ 3\0j\1e\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1f\0\83\0\0|\ 3\0j\1f\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j\1f\0\83\0\0|\ 3\0j\1f\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0\0\83\0\0|\ 3\0\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j!\0\83\0\0|\ 3\0j!\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j"\0\83\0\0|\ 3\0j"\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0g\0\0|
++\0j"\0\83\0\0D]\15\0}\v\0|
++\0j#\0|\v\0\83\ 1\0^\ 2\0
++g\0\0|\ 3\0j"\0\83\0\0D]\15\0}\f\0|\ 3\0j#\0|\f\0\83\ 1\0^\ 2\0q\11\v\83\ 2\0\ 1|\0\0j\12\0|\ 3\0j$\0d\ 2\0\83\ 1\0j\10\0\83\0\0|\ 5\0j\10\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j$\0d\ 2\0\83\ 1\0j\10\0\83\0\0|\ 5\0j\10\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|\ 3\0j$\0d\ 5\0\83\ 1\0j\10\0\83\0\0|\ 4\0j\10\0\83\0\0\83\ 2\0\ 1|\0\0j\12\0|
++\0j$\0d\ 5\0\83\ 1\0j\10\0\83\0\0|\ 4\0j\10\0\83\0\0\83\ 2\0\ 1|\ 3\0j\16\0t\1a\0\83\ 1\0\ 1|\ 3\0j\18\0\83\0\0}
++\0|\0\0j\12\0|
++\0j\19\0\83\0\0t\1a\0\83\ 2\0\ 1|\0\0j\e\0t\1c\0|
++\0t*\0\83\ 2\0\83\ 1\0\ 1|\0\0j\e\0|\ 3\0j\10\0\83\0\0|
++\0j\10\0\83\0\0k\ 2\0\83\ 1\0\ 1d\ e\0S(\ f\0\0\0sl\0\0\0 This test is advanced to be sure that no unnecessary copies had been made during cartesianization process. i\ 4\0\0\0i\0\0\0\0i\10\0\0\0i      \0\0\0i\ 1\0\0\0\ 2\0\0\ 2\0\0i\ 3\0\0\0g\0\0\0\0\0\0\14@R\80\0\0\0iüÿÿÿRe\ 1\0\0\0\0\0N(+\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0\ 1\0\0R>\0\0\0\ 3\0\0Rk\0\0\0\0\0\0RB\0\0\0Ri\0\0\0\0\0\0\0\0\0R\9b\ 2\0\0\0\0\0\0\0\0\ 3\0\0Rv\0\0\0R+\0\0\0Rw\0\0\0Rs\0\0\0R`\0\0\0\ 3\0\0\ 3\0\0t\f\0\0\0cartesianizeRò\ 3\0\0\ 3\0\0R0\0\0\0Rt\0\0\0RC\0\0\0R~\0\0\0\0\0\0\0\0\0\ 1\0\0\ 1\0\0R)\ 4\0\0R\9e\0\0\0t\10\0\0\0buildCurveLinearR²\ 2\0\0\0\0\0\0\0\0t\14\0\0\0getNodeGridStructureR¯\0\0\0(\r\0\0\0\0\0\0\ 1\0\0R\83\0\0\0R\86\0\0\0t\ 2\0\0\0d0Rú\ 2\0\0\ 1\0\0\ 1\0\0\ 1\0\0t\ 4\0\0\0ref3R¢\0\0\0\0\0\0t\ 4\0\0\0elt2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\12\0\0\0testCartesianizer1\11\13\0\0s\f\ 1\0\0\0\ 3\f\0
++\0     \0\10\0\f\ 1   \0
++\0
++\ 1\f\0\a\ 1\f\0\a\ 1\10\0\10\ 1\r\0\r\0\13\0\10\0\13\0\r\ 1\12\ 1\16\ 1 \ 1\16\ 1\e\ 1%\ 1\r\ 1\f\ 1\16\ 1\r\ 1\16\ 1\1f\ 1\1f\ 1\1f\ 1,\ 11\ 1 \ 1 \ 1%\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1T\ 1%\ 1%\ 1%\ 1%\ 2\r\ 1\f\ 1\16\ 1\16\ 1\1f\ 2\f\0
++\0     \0\10\0\f\ 1   \0\r\0\r\ 1\10\0\10\ 1\r\0\r\0\13\0\10\0\13\0\r\ 1\18\ 1\f\ 1\16\ 1\16\ 1\1f\ 1%\ 1%\ 1(\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1T\ 1%\ 1%\ 1%\ 1%\ 2\r\ 1\f\ 1\16\ 1\16\ 1\1f\ 2\f\0
++\0     \0\10\ 1     \0\r\0\r\ 1\10\0\10\ 1\r\0\r\0\13\0\10\0\13\0\r\ 1\f\ 1\16\ 1\16\ 1(\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1T\ 1%\ 1%\ 1%\ 1%\ 2\r\ 1\f\ 1\16\ 1\16\ 1\1f\ 1c\ 1\0\0\0\a\0\0\0
++\0\0\0C\0\0\0s{\ 4\0\0t\0\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0|\ 1\0j\ 1\0t\ 2\0d\ e\0g\ 1\0d\ 5\0\14d\ 5\0d\ 2\0\83\ 3\0\83\ 1\0\ 1|\ 1\0j\ 3\0t\ 4\0t\ 5\0d\ 6\0d\a\0d\ 2\0t\ 5\0d\a\0d\ 2\0d\b\0g\b\0\83\ 1\0t\ 4\0d\ 6\0d\ 5\0d  \0g\ 3\0\83\ 1\0\83\ 2\0\ 1|\ 1\0j\ 6\0\83\0\0\\ 5\0}\ 2\0}\ 3\0}\ 3\0}\ 3\0}\ 3\0t\a\0\83\0\0}\ 4\0|\ 4\0j\b\0d\ 6\0|\ 1\0\83\ 2\0\ 1|\ 4\0j\b\0d
++\0|\ 2\0\83\ 2\0\ 1|\ 4\0j  \0\83\0\0\ 1|\ 4\0j
++\0\83\0\0}\ 5\0t\ 4\0d\ 2\0g\ 1\0d\ 5\0\14\83\ 1\0}\ 6\0|\ 4\0j\v\0d\a\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\f\0d\v\0\83\ 1\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j  \0\83\ 2\0\ 1|\ 5\0}\ 4\0|\ 4\0j
++\0\83\0\0}\ 5\0t\ 4\0d\ 2\0g\ 1\0d\ 5\0\14\83\ 1\0}\ 6\0|\ 4\0j\ f\0d\a\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\f\0d\v\0\83\ 1\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j  \0\83\ 2\0\ 1|\ 5\0}\ 4\0|\ 4\0j
++\0\83\0\0}\ 5\0|\ 4\0j\ f\0d\a\0t\ 4\0d\ 2\0g\ 1\0d\ 5\0\14\83\ 1\0\83\ 2\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j     \0\83\ 2\0\ 1|\ 5\0}\ 4\0|\ 4\0j
++\0\83\0\0}\ 5\0t\10\0d\f\0g\ 1\0d\ 5\0\14\83\ 1\0}\ 6\0|\ 4\0j\11\0d\a\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\f\0d\v\0\83\ 1\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j  \0\83\ 2\0\ 1|\ 5\0}\ 4\0|\ 4\0j
++\0\83\0\0}\ 5\0t\ 4\0d\ 2\0g\ 1\0d\ 2\0\14\83\ 1\0}\ 6\0|\ 4\0j\v\0d\ 6\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\f\0d\v\0\83\ 1\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j  \0\83\ 2\0\ 1|\ 5\0}\ 4\0|\ 4\0j
++\0\83\0\0}\ 5\0t\ 4\0d\ 2\0g\ 1\0d\ 2\0\14\83\ 1\0}\ 6\0|\ 4\0j\ f\0d\ 6\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\f\0d\v\0\83\ 1\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j  \0\83\ 2\0\ 1|\ 5\0}\ 4\0|\ 4\0j
++\0\83\0\0}\ 5\0|\ 4\0j\ f\0d\ 6\0t\ 4\0d\ 2\0g\ 1\0d\ 2\0\14\83\ 1\0\83\ 2\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j     \0\83\ 2\0\ 1|\ 5\0}\ 4\0|\ 4\0j
++\0\83\0\0}\ 5\0t\10\0d\f\0g\ 1\0d\ 2\0\14\83\ 1\0}\ 6\0|\ 4\0j\11\0d\ 6\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\f\0d\v\0\83\ 1\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j  \0\83\ 2\0\ 1|\ 5\0}\ 4\0|\ 4\0j
++\0\83\0\0}\ 5\0t\ 4\0d\ 2\0g\ 1\0d\r\0\14\83\ 1\0}\ 6\0|\ 4\0j\v\0d
++\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\f\0d\v\0\83\ 1\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j    \0\83\ 2\0\ 1|\ 5\0}\ 4\0|\ 4\0j
++\0\83\0\0}\ 5\0t\ 4\0d\ 2\0g\ 1\0d\r\0\14\83\ 1\0}\ 6\0|\ 4\0j\ f\0d
++\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\f\0d\v\0\83\ 1\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j    \0\83\ 2\0\ 1|\ 5\0}\ 4\0|\ 4\0j
++\0\83\0\0}\ 5\0|\ 4\0j\ f\0d
++\0t\ 4\0d\ 2\0g\ 1\0d\r\0\14\83\ 1\0\83\ 2\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j    \0\83\ 2\0\ 1|\ 5\0}\ 4\0|\ 4\0j
++\0\83\0\0}\ 5\0t\10\0d\f\0g\ 1\0d\r\0\14\83\ 1\0}\ 6\0|\ 4\0j\11\0d
++\0|\ 6\0\83\ 2\0\ 1|\ 6\0j\f\0d\v\0\83\ 1\0\ 1|\0\0j\r\0t\ e\0|\ 4\0j    \0\83\ 2\0\ 1d\0\0S(\ f\0\0\0Nt\ 2\0\0\02di\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0i\0\0\0\0i\ 1\0\0\0i\ 3\0\0\0i\b\0\0\0iÿÿÿÿi#\0\0\0s\10\0\0\0tutu           xi\ 5\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\12\0\0\0R[\0\0\0Rc\0\0\0RY\0\0\0Rÿ\ 1\0\0Rk\0\0\0R_\0\0\0R\9b\ 1\0\0R>\0\0\0Rj\0\0\0R\0\ 2\0\0Rq\0\0\0\0\0\0t\a\0\0\0reAllocR)\0\0\0R*\0\0\0R\98\0\0\0\ 2\0\0\ 2\0\0(\a\0\0\0R   \0\0\0R\85\0\0\0R\84\0\0\0R\ 6\ 2\0\0t\ 3\0\0\0mumt\ 4\0\0\0mum2RÔ\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\12\0\0\0testCheckCoherency{\13\0\0s\92\0\0\0\0\ 1\ f\ 1 \ 1=\ 1\e\ 1    \ 1\10\ 1\10\ 1
++\ 1\f\ 3\13\ 1\10\0\r\ 1\13\ 1\ 6\0\f\ 1\13\ 1\10\0\r\ 1\13\ 1\ 6\0\f\ 1\1d\ 1\13\ 1\ 6\0\f\ 1\13\ 1\10\0\r\ 1\13\ 3\ 6\0\f\ 1\13\ 1\10\0\r\ 1\13\ 1\ 6\0\f\ 1\13\ 1\10\0\r\ 1\13\ 1\ 6\0\f\ 1\1d\ 1\13\ 1\ 6\0\f\ 1\13\ 1\10\0\r\ 1\13\ 3\ 6\0\f\ 1\13\ 1\10\0\r\ 1\13\ 1\ 6\0\f\ 1\13\ 1\10\0\r\ 1\13\ 1\ 6\0\f\ 1\1d\ 1\13\ 1\ 6\0\f\ 1\13\ 1\10\0\r\ 1c\ 1\0\0\0\a\0\0\0
++\0\0\0C\0\0\0s]\ 1\0\0t\0\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0|\ 1\0j\ 1\0t\ 2\0d\f\0g\ 1\0d\ 5\0\14d\ 5\0d\ 2\0\83\ 3\0\83\ 1\0\ 1|\ 1\0j\ 3\0t\ 4\0t\ 5\0d\ 6\0d\a\0d\ 2\0t\ 5\0d\a\0d\ 2\0d\b\0g\b\0\83\ 1\0t\ 4\0d\ 6\0d\ 5\0d  \0g\ 3\0\83\ 1\0\83\ 2\0\ 1|\ 1\0j\ 6\0\83\0\0\\ 5\0}\ 2\0}\ 3\0}\ 3\0}\ 3\0}\ 3\0t\a\0\83\0\0}\ 4\0|\ 4\0j\b\0d\ 6\0|\ 1\0\83\ 2\0\ 1|\ 4\0j\b\0d
++\0|\ 2\0\83\ 2\0\ 1|\ 4\0j  \0\83\0\0\ 1|\ 4\0j
++\0\83\0\0\ 1t\ 4\0|\ 1\0j\v\0\83\0\0d\a\0\83\ 2\0}\ 5\0|\ 5\0j\f\0d\a\0\83\ 1\0\ 1t\ 4\0|\ 2\0j\v\0\83\0\0d\a\0\83\ 2\0}\ 6\0|\ 6\0j\f\0d\a\0\83\ 1\0\ 1|\ 4\0j\r\0d\ 6\0|\ 5\0\83\ 2\0\ 1|\ 4\0j\r\0d
++\0|\ 6\0\83\ 2\0\ 1|\0\0j\ e\0t\ f\0|\ 4\0j
++\0\83\ 2\0\ 1|\ 4\0j\r\0d
++\0|\ 6\0d\v\0\17\83\ 2\0\ 1|\ 4\0j
++\0\83\0\0\ 1d\0\0S(\r\0\0\0NRÅ\ 4\0\0i\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0i\0\0\0\0i\ 1\0\0\0i\ 3\0\0\0i\b\0\0\0iÿÿÿÿid\0\0\0(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\10\0\0\0R[\0\0\0Rc\0\0\0RY\0\0\0Rÿ\ 1\0\0Rk\0\0\0R_\0\0\0R\9b\ 1\0\0R>\0\0\0Rj\0\0\0R\0\ 2\0\0t\15\0\0\0checkSMESHConsistencyR§\0\0\0Ry\ 1\0\0R\98\0\0\0R)\0\0\0R*\0\0\0(\a\0\0\0\0\0\0R\85\0\0\0R\84\0\0\0R\ 6\ 2\0\0\ 4\0\0\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\19\0\0\0testCheckSMESHConsistency¸\13\0\0s&\0\0\0\0\ 1\ f\ 1 \ 1=\ 1\e\ 1    \ 1\10\ 1\10\ 1
++\ 1
++\ 1\15\0\r\ 1\15\0\r\ 1\10\ 1\10\ 1\13\ 1\14\ 1
++\ 1c\ 1\0\0\0\a\0\0\0
++\0\0\0C\0\0\0s6\ 1\0\0t\0\0d\ 1\0d\ 2\0\83\ 2\0}\ 1\0|\ 1\0j\ 1\0t\ 2\0d\v\0g\ 1\0d\ 5\0\14d\ 5\0d\ 2\0\83\ 3\0\83\ 1\0\ 1|\ 1\0j\ 3\0t\ 4\0t\ 5\0d\ 6\0d\a\0d\ 2\0t\ 5\0d\a\0d\ 2\0d\b\0g\b\0\83\ 1\0t\ 4\0d\ 6\0d\ 5\0d  \0g\ 3\0\83\ 1\0\83\ 2\0\ 1|\ 1\0j\ 6\0\83\0\0\\ 5\0}\ 2\0}\ 3\0}\ 3\0}\ 3\0}\ 3\0t\a\0\83\0\0}\ 4\0|\ 4\0j\b\0d\ 6\0|\ 1\0\83\ 2\0\ 1|\ 4\0j\b\0d
++\0|\ 2\0\83\ 2\0\ 1|\ 4\0j  \0\83\0\0\ 1t\ 4\0|\ 1\0j
++\0\83\0\0d\a\0\83\ 2\0}\ 5\0|\ 5\0j\v\0d\a\0\83\ 1\0\ 1t\ 4\0|\ 2\0j
++\0\83\0\0d\a\0\83\ 2\0}\ 6\0|\ 6\0j\v\0d\a\0\83\ 1\0\ 1|\ 4\0j\f\0d\ 6\0|\ 5\0\83\ 2\0\ 1|\ 4\0j\f\0d
++\0|\ 6\0\83\ 2\0\ 1|\ 4\0j\r\0\83\0\0\ 1|\ 4\0j\ e\0\83\0\0\ 1d\0\0S(\f\0\0\0NRÅ\ 4\0\0i\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?i\ 4\0\0\0i\0\0\0\0i\ 1\0\0\0i\ 3\0\0\0i\b\0\0\0iÿÿÿÿ(\ 2\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ f\0\0\0R[\0\0\0Rc\0\0\0RY\0\0\0Rÿ\ 1\0\0Rk\0\0\0R_\0\0\0R\9b\ 1\0\0R>\0\0\0Rj\0\0\0R\0\ 2\0\0\0\0\0Ry\ 1\0\0R\98\0\0\0t\17\0\0\0clearNodeAndCellNumbersRÊ\ 4\0\0(\a\0\0\0R  \0\0\0R\85\0\0\0R\84\0\0\0R\ 6\ 2\0\0\ 4\0\0\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\e\0\0\0testClearNodeAndCellNumbersË\13\0\0s"\0\0\0\0\ 1\ f\ 1 \ 1=\ 1\e\ 1  \ 1\10\ 1\10\ 1
++\ 1\15\0\r\ 1\15\0\r\ 1\10\ 1\10\ 1
++\ 1
++\ 1c\ 1\0\0\0\v\0\0\0\r\0\0\0C\0\0\0s1\ 2\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 4\0\83\ 1\0}\ 3\0t\0\0d\ 3\0d\ 4\0d\ 5\0g\ 3\0\83\ 1\0}\ 4\0t\ 1\0\83\0\0}\ 5\0|\ 5\0j\ 2\0|\ 3\0|\ 4\0\83\ 2\0\ 1|\ 5\0j\ 3\0|\ 1\0\83\ 1\0\ 1t\ 4\0\83\0\0}\ 6\0|\ 6\0j\ 5\0|\ 5\0\83\ 1\0\ 1t\ 6\0d\ 3\0d\a\0d\a\0d\b\0d\a\0d\ 3\0g\ 6\0\83\ 1\0}\a\0t\ 6\0d\ 3\0d\ 3\0d\ 3\0d\ 6\0d    \0d\ 4\0d\ 5\0d
++\0d\ 5\0d\ 4\0d\ 3\0d\ 3\0g\f\0\83\ 1\0}\b\0|\ 6\0j\a\0d\ 3\0|\a\0\83\ 2\0\ 1|\ 6\0j\a\0d\ 4\0|\b\0\83\ 2\0\ 1|\ 6\0j\b\0|\ 2\0d\ 5\0\83\ 2\0\ 1t       \0j
++\0|\ 2\0\83\ 1\0}\ 6\0|\0\0j\v\0|\ 6\0j\f\0d\ 3\0\83\ 1\0d\0\0k      \0\83\ 1\0\ 1|\0\0j\v\0|\ 6\0j\f\0d\ 4\0\83\ 1\0d\0\0k     \0\83\ 1\0\ 1|\ 6\0j\a\0d\ 3\0d\0\0\83\ 2\0\ 1|\ 6\0j\a\0d\ 4\0d\0\0\83\ 2\0\ 1|\0\0j\v\0|\ 6\0j\f\0d\ 3\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\v\0|\ 6\0j\f\0d\ 4\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\ 6\0j\ e\0\83\0\0\0|\0\0j\v\0|        \0j\f\0d\ 3\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\v\0|     \0j\f\0d\ 4\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\ 6\0j\b\0|\ 2\0d\ 5\0\83\ 2\0\ 1t   \0j
++\0|\ 2\0\83\ 1\0}
++\0|\0\0j\v\0|
++\0j\f\0d\ 3\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1|\0\0j\v\0|
++\0j\f\0d\ 4\0\83\ 1\0d\0\0k\b\0\83\ 1\0\ 1d\0\0S(\v\0\0\0NR \ 2\0\0s\f\0\0\0Pyfile99.medi\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0iþÿÿÿiÿÿÿÿi\ 4\0\0\0i\a\0\0\0(\ f\0\0\0RY\0\0\0\0\0\0Rc\0\0\0RB\0\0\0\0\0\0\0\0\0Rk\0\0\0\0\0\0R\v\0\0\0R'\0\0\0R(\0\0\0R0\0\0\0R\9e\0\0\0R/\ 2\0\0Rq\0\0\0(\v\0\0\0R    \0\0\0\ 3\0\0R9\ 1\0\0RS\ 4\0\0RT\ 4\0\0R\83\0\0\0R\86\0\0\0t
++\0\0\0famCellIdst
++\0\0\0famNodeIdsR¶\ 4\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1e\0\0\0testCMeshSetFamilyFieldArrNullÜ\13\0\0s:\0\0\0\0\ 1\ 6\ 1\ 6\ 1\18\ 1\15\ 1       \0\10\0\r\ 1   \0\r\ 1\1e\ 10\ 1\10\ 1\10\ 1\10\ 1\ f\ 1\1c\ 1\1c\ 1\10\ 1\10\ 1\1c\ 1\1c\ 1\f\ 1\1c\ 1\1c\ 1\10\ 1\ f\ 1\1c\ 1\1c\ 1c\ 1\0\0\0\10\0\0\0\ 5\0\0\0C\0\0\0sq\ 2\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0g\ 4\0\83\ 1\0}\ 2\0t\0\0d\ 2\0d\ 3\0d\ 4\0g\ 3\0\83\ 1\0}\ 3\0t\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 2\0|\ 2\0|\ 3\0\83\ 2\0\ 1|\ 4\0j\ 3\0d\ 6\0\83\ 1\0\ 1t\ 4\0\83\0\0}\ 5\0|\ 5\0j\ 5\0|\ 4\0\83\ 1\0\ 1t\ 6\0\83\0\0}\ 6\0d\a\0}\a\0t\a\0d\ 3\0d\ 5\0d\b\0g\ 3\0\83\ 1\0}\b\0|\b\0j\ 3\0|\a\0\83\ 1\0\ 1t\b\0t     \0\83\ 1\0}   \0|      \0j\ 5\0|\ 4\0\83\ 1\0\ 1d    \0}
++\0|    \0j
++\0d
++\0d\ 3\0d\ 3\0\83\ 3\0\ 1|  \0j\ 3\0|
++\0\83\ 1\0\ 1t\a\0d\v\0d\f\0d\r\0g\ 3\0\83\ 1\0}\v\0|   \0j\v\0|\v\0\83\ 1\0\ 1|\ 6\0j\f\0|      \0|\ 5\0d\ 2\0|\b\0\83\ 4\0\ 1|\ 5\0j\r\0|\ 1\0d\ 4\0\83\ 2\0\ 1|\ 6\0j\r\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\ e\0j\ f\0|\ 1\0\83\ 1\0}\ 5\0t\10\0j\ f\0|\ 1\0\83\ 1\0}\ 6\0|\0\0j\11\0t\12\0|\ 6\0t\ 6\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0|\ 6\0j\14\0\83\0\0|
++\0\83\ 2\0\ 1|\0\0j\13\0t\15\0|\ 6\0\83\ 1\0d\ 3\0\83\ 2\0\ 1|\ 6\0d\ 2\0\19}\f\0|\f\0j\16\0t  \0d\ 2\0|\ 5\0\83\ 3\0\\ 2\0}\r\0}\ e\0|\0\0j\13\0|\ e\0j\14\0\83\0\0|\a\0\83\ 2\0\ 1|\0\0j\13\0|\r\0j\14\0\83\0\0|
++\0\83\ 2\0\ 1|\0\0j\11\0|\r\0j\17\0|\v\0\83\ 1\0\83\ 1\0\ 1|\f\0j\18\0t    \0d\ 2\0|\ 5\0\83\ 3\0}\ f\0|\0\0j\11\0|\ f\0j\19\0\83\0\0j\17\0|\v\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ f\0j\1a\0\83\0\0|       \0j\1a\0\83\0\0\83\ 2\0\ 1|\0\0j\13\0|\ f\0j\e\0\83\0\0j\1c\0\83\0\0t\15\0|\v\0\83\ 1\0\83\ 2\0\ 1d\0\0S(\ e\0\0\0Ns\r\0\0\0Pyfile100.medi\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0Rn\ 2\0\0t\ 3\0\0\0PFLi\ 5\0\0\0\ 3\0\0g333333ó?ie\0\0\0if\0\0\0ig\0\0\0(\1d\0\0\0RY\0\0\0\0\0\0Rc\0\0\0RB\0\0\0\0\0\0\0\0\0R#\ 3\0\0Rk\0\0\0R&\ 3\0\0R\13\ 1\0\0\0\0\0R{\ 1\0\0R\89\ 1\0\0R\v\0\0\0R'\0\0\0R(\0\0\0R"\ 3\0\0R0\0\0\0Rt\0\0\0R+\0\0\0RC\0\0\0Ry\0\0\0R~\ 1\0\0R\7f\ 1\0\0R\97\ 1\0\0R)\ 1\0\0\0\0\0\0\0\0\0\0\0(\10\0\0\0R        \0\0\0R9\ 1\0\0RS\ 4\0\0RT\ 4\0\0\ 2\0\0R\86\0\0\0Rm\ 1\0\0t\a\0\0\0pflNameR\83\ 1\0\0R\b\0\0\0Rg\ 3\0\0\ 1\0\0\0\0\0t\ 5\0\0\0ftestR2\ 2\0\0t\ 6\0\0\0ftest2(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt \0\0\0testAppendFieldProfileOnIntFieldø\13\0\0sJ\0\0\0\0\ 1\ 6\ 1\18\ 1\15\ 1        \0\10\0\r\ 1   \ 1\r\ 2     \ 1\ 6\ 1\15\0\r\ 1\f\0\r\ 1\ 6\ 1\13\0\r\ 1\15\0\r\ 1\16\ 2\10\ 1\10\ 2\ f\ 1\ f\ 1\16\ 1\16\ 1\16\ 1
++\ 1\e\ 1\16\ 1\16\ 1\16\ 1\15\ 1\1c\ 1\1c\ 1"\ 1c\ 1\0\0\0\15\0\0\0\19\0\0\0C\0\0\0\ 6\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0\83\0\0}\ 3\0t\ 1\0dE\0dF\0dG\0g\ 3\0\83\ 1\0}\ 4\0t\ 2\0d\f\0d\ 4\0\83\ 2\0}\ 5\0|\ 5\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\ 5\0j\ 4\0\83\0\0\ 1|\ 5\0j\ 5\0t\ 6\0d\r\0d\ 5\0d\ 4\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d\ 3\0d\ e\0d      \0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d\b\0d\a\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d
++\0d\v\0d\ f\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\a\0d\10\0d\11\0d\12\0d\13\0g\ 4\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\a\0d\14\0d\15\0d\16\0d\17\0g\ 4\0\83\ 2\0\ 1|\ 5\0|\ 3\0d\r\0<|\ 3\0j\b\0|\ 1\0d\ 4\0\83\ 2\0\ 1t\ 1\0d\v\0d\ f\0d\18\0d\19\0d\10\0d\11\0g\ 6\0\83\ 1\0}\ 6\0t       \0t
++\0\83\ 1\0}\a\0|\a\0j\v\0|\ 6\0\83\ 1\0\ 1|\a\0j\f\0|\ 5\0\83\ 1\0\ 1|\a\0j\r\0|\ 2\0\83\ 1\0\ 1|\a\0j\ e\0d\1a\0d\b\0d\a\0\83\ 3\0\ 1|\a\0j\ f\0\83\0\0}\b\0t\10\0\83\0\0}  \0|      \0j\11\0|\a\0\83\ 1\0\ 1|    \0j\b\0|\ 1\0d\r\0\83\ 2\0\ 1|\ 6\0d\e\0\17}
++\0|\a\0j\v\0|
++\0\83\ 1\0\ 1|\a\0j\ e\0d\1c\0d\ 6\0d
++\0\83\ 3\0\ 1t\12\0\83\0\0}  \0|      \0j\13\0|\a\0\83\ 1\0\ 1|    \0j\b\0|\ 1\0d\r\0\83\ 2\0\ 1|\a\0j\ f\0\83\0\0}\v\0t\14\0j\15\0|\ 1\0\83\ 1\0}\ 3\0t\12\0|\ 1\0|\ 2\0d\b\0d\a\0\83\ 4\0}\f\0|\f\0j\16\0|\ 3\0\83\ 1\0}\r\0|\0\0j\17\0|\b\0j\18\0|\r\0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1t\12\0|\ 1\0|\ 2\0d\ 6\0d
++\0\83\ 4\0}\f\0|\f\0j\16\0|\ 3\0\83\ 1\0}\ e\0|\0\0j\17\0|\v\0j\18\0|\ e\0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1t\10\0|\ 1\0|\ 2\0\83\ 2\0}\ f\0|\0\0j\17\0|\v\0j\18\0|\ f\0j\16\0d\ 6\0d
++\0|\ 3\0\83\ 3\0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1\0t\19\0\83\ 1\0}\10\0t\ 1\0d\1e\0d\1f\0\0g\ 3\0\83\ 1\0}
++\0|
++\0j\1a\0d\r\0d!\0\83\ 2\0\ 1|\10\0j\v\0|
++\0\83\ 1\0\ 1|\10\0j\f\0|\ 5\0\83\ 1\0\ 1|\10\0j\ e\0d"\0d#\0d$\0\83\ 3\0\ 1|\10\0j\r\0|\ 2\0\83\ 1\0\ 1|\ 3\0j\b\0|\ 1\0d\ 4\0\83\ 2\0\ 1t\12\0\83\0\0}     \0|      \0j\13\0|\10\0\83\ 1\0\ 1|    \0j\b\0|\ 1\0d\r\0\83\ 2\0\ 1t\14\0j\15\0|\ 1\0\83\ 1\0}\ 3\0t\12\0|\ 1\0|\ 2\0d#\0d$\0\83\ 4\0}\f\0|\0\0j\17\0|\10\0j\18\0|\f\0j\16\0|\ 3\0\83\ 1\0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1t\10\0|\ 1\0|\ 2\0\83\ 2\0}\ f\0|\0\0j\17\0|\10\0j\18\0|\ f\0j\16\0d#\0d$\0|\ 3\0\83\ 3\0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1t      \0t\e\0\83\ 1\0}\11\0|\11\0j\f\0|\ 5\0\83\ 1\0\ 1t\ 1\0d\r\0d\ 5\0d\ 4\0d\ 3\0d\ e\0d      \0d\b\0d\a\0d\ 6\0d
++\0d\v\0d\ f\0d\18\0d\19\0d%\0d&\0d'\0d(\0d)\0d*\0g\14\0\83\ 1\0}\12\0|\11\0j\v\0|\12\0\83\ 1\0\ 1|\11\0j\ e\0d+\0d\ 4\0d\ 3\0\83\ 3\0\ 1|\11\0j\r\0|\ 2\0\83\ 1\0\ 1|\11\0j\1c\0\83\0\0\ 1|\ 3\0j\b\0|\ 1\0d\ 4\0\83\ 2\0\ 1t\12\0\83\0\0}        \0|      \0j\13\0|\11\0\83\ 1\0\ 1|    \0j\b\0|\ 1\0d\r\0\83\ 2\0\ 1t\14\0j\15\0|\ 1\0\83\ 1\0}\ 3\0t\12\0|\ 1\0|\ 2\0d\ 4\0d\ 3\0\83\ 4\0}\f\0|\0\0j\17\0|\11\0j\18\0|\f\0j\16\0|\ 3\0\83\ 1\0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1t        \0t\1d\0\83\ 1\0}\13\0|\13\0j\f\0|\ 5\0\83\ 1\0\ 1|\13\0j\r\0|\ 2\0\83\ 1\0\ 1|\13\0j\1e\0t\ 6\0d,\0d,\0d-\0d,\0d-\0d-\0g\ 6\0d.\0d.\0d/\0d/\0d0\0d0\0d1\0d1\0d+\0d+\0g
++\0d/\0d0\0d.\0d2\0d3\0g\ 5\0\83\ 4\0\ 1|\13\0j\1e\0t\a\0d,\0d,\0d-\0d,\0d-\0d-\0d,\0d-\0g\b\0d0\0d1\0d4\0d5\0g\ 4\0d5\0d0\0g\ 2\0\83\ 4\0\ 1|\13\0j\ e\0d6\0d\ e\0d  \0\83\ 3\0\ 1t\ 1\0d\r\0d\ 5\0d\ 4\0d\ 3\0d\ e\0d\v\0d\ f\0d\18\0d\19\0d%\0d7\0d8\0d9\0d#\0d$\0d:\0d;\0d<\0d=\0d>\0d?\0d@\0dA\0dB\0g\18\0\83\ 1\0}\14\0|\14\0j\1a\0d\r\0dC\0\83\ 2\0\ 1|\13\0j\v\0|\14\0\83\ 1\0\ 1|\13\0j\1c\0\83\0\0\ 1|\ 3\0j\b\0|\ 1\0d\ 4\0\83\ 2\0\ 1t\12\0\83\0\0\0|      \0j\13\0|\13\0\83\ 1\0\ 1|    \0j\b\0|\ 1\0d\r\0\83\ 2\0\ 1t\14\0j\15\0|\ 1\0\83\ 1\0}\ 3\0t\12\0|\ 1\0|\ 2\0d\ e\0d      \0\83\ 4\0}\f\0|\0\0j\17\0|\13\0j\18\0|\f\0j\16\0|\ 3\0\83\ 1\0d\1d\0d\1d\0\83\ 3\0\83\ 1\0\ 1dD\0S(H\0\0\0s\99\0\0\0Check for all spatial discretization of field (cells,nodes,elno,gauss) for double field that all is OK. Here no profile and only top level is considered.s\r\0\0\0Pyfile101.medt\ 6\0\0\0field1i\ 3\0\0\0i\ 2\0\0\0i\ 1\0\0\0i\b\0\0\0i\a\0\0\0i\ 6\0\0\0i\ 5\0\0\0i    \0\0\0i
++\0\0\0\ 2\0\0i\0\0\0\0i\ 4\0\0\0i\v\0\0\0id\0\0\0ie\0\0\0if\0\0\0ig\0\0\0ih\0\0\0ii\0\0\0ij\0\0\0ik\0\0\0i\f\0\0\0i\r\0\0\0g\0\0\0\0\0\0\0@iè\ 3\0\0g\0\0\0\0\0\0\b@g\11ê-\81\99\97q=iÈ\0\0\0\0\0\0\0\0\0t\ 4\0\0\0tutug\0\0\0\0\0\06@i\17\0\0\0i\18\0\0\0i\ e\0\0\0i\ f\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\9a\99\99\99\99\99¹?g\9a\99\99\99\99\99É?g333333Ó?g\9a\99\99\99\99\99Ù?g\9a\99\99\99\99\99©?gffffffÖ?g333333ã?gffffffæ?g\0\0\0\0\0\0Ð?i\14\0\0\0i\15\0\0\0i\16\0\0\0i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i-\0\0\0i.\0\0\0i7\0\0\0i8\0\0\0\ 3\0\0N(\ 3\0\0\0i\ 3\0\0\0i\ 2\0\0\0i\ 1\0\0\0(\ 3\0\0\0i\b\0\0\0i\a\0\0\0i\ 6\0\0\0(\ 3\0\0\0i\ 5\0\0\0i   \0\0\0i
++\0\0\0(\1f\0\0\0R>\0\0\0RY\0\0\0R[\0\0\0Rc\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0R\v\0\0\0Rw\ 1\0\0R\13\ 1\0\0R{\ 1\0\0\0\0\0RB\0\0\0\0\0\0Rq\0\0\0\0\0\0RY\ 1\0\0\0\0\0R%\ 1\0\0R'\0\0\0R(\0\0\0R5\ 4\0\0R0\0\0\0R1\0\0\0R\1c\ 1\0\0R\97\0\0\0R\ f\ 1\0\0Rd\0\0\0R\a\ 1\0\0t\1a\0\0\0setGaussLocalizationOnType(\15\0\0\0R   \0\0\0R9\ 1\0\0Rg\ 3\0\0R\86\0\0\0R\ 3\ 2\0\0R\83\0\0\0R\17\ 3\0\0R\b\0\0\0\0\0\0\0\0\0R\ 2\ 3\0\0\0\0\0\0\0\0t\ 5\0\0\0ftst0t\ 5\0\0\0ftst1Rm\ 1\0\0\0\0\0R
++\ 1\0\0t\ 4\0\0\0arr3R\f\ 1\0\0t\ 4\0\0\0arr4(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testMEDFileFieldEasyField1\1c\14\0\0\0\0\0\0\ 3\ 6\ 1\ 6\ 1    \ 1\15\ 1\ f\0\r\ 1
++\ 1\19\ 1\19\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1
++\ 1\10\ 1\1e\ 1\f\0\r\0\r\ 1\r\0\13\ 1\f\ 1     \0\r\ 1\10\ 1
++\0\r\ 1\13\0 \0\r\ 1\10\ 1\f\ 2\ f\ 1\15\ 1\ f\ 1\1c\ 1\15\ 1\ f\ 1\1c\ 1\ f\ 1+\ 2\f\0\15\0\10\0\r\0\r\0\13\ 1\r\ 1\10\ 1       \0\r\0\10\ 2\ f\ 1\15\ 1%\ 1\ f\ 1+\ 2\f\0\r\0H\0\r\0\13\ 1\r\0
++\ 1\10\0   \0\r\0\10\ 2\ f\ 1\15\ 1%\ 2\f\0\r\0\r\ 1U\ 1@\0\13\ 1T\0\10\0\r\ 1
++\ 1\10\0   \0\r\0\10\ 2\ f\ 1\15\ 1%\ 1c\ 1\0\0\0\15\0\0\0\19\0\0\0C\0\0\0\ 6\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0\83\0\0}\ 3\0t\ 1\0dE\0dF\0dG\0g\ 3\0\83\ 1\0}\ 4\0t\ 2\0d\f\0d\ 4\0\83\ 2\0}\ 5\0|\ 5\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\ 5\0j\ 4\0\83\0\0\ 1|\ 5\0j\ 5\0t\ 6\0d\r\0d\ 5\0d\ 4\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d\ 3\0d\ e\0d      \0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d\b\0d\a\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d
++\0d\v\0d\ f\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\a\0d\10\0d\11\0d\12\0d\13\0g\ 4\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\a\0d\14\0d\15\0d\16\0d\17\0g\ 4\0\83\ 2\0\ 1|\ 5\0|\ 3\0d\r\0<|\ 3\0j\b\0|\ 1\0d\ 4\0\83\ 2\0\ 1t     \0d\v\0d\ f\0d\18\0d\19\0d\10\0d\11\0g\ 6\0\83\ 1\0}\ 6\0t
++\0t\v\0\83\ 1\0}\a\0|\a\0j\f\0|\ 6\0\83\ 1\0\ 1|\a\0j\r\0|\ 5\0\83\ 1\0\ 1|\a\0j\ e\0|\ 2\0\83\ 1\0\ 1|\a\0j\ f\0d\1a\0d\b\0d\a\0\83\ 3\0\ 1|\a\0j\10\0\83\0\0}\b\0t\11\0\83\0\0}       \0|      \0j\12\0|\a\0\83\ 1\0\ 1|    \0j\b\0|\ 1\0d\r\0\83\ 2\0\ 1|\ 6\0d\e\0\17}
++\0|\a\0j\f\0|
++\0\83\ 1\0\ 1|\a\0j\ f\0d\1c\0d\ 6\0d
++\0\83\ 3\0\ 1t\13\0\83\0\0}  \0|      \0j\14\0|\a\0\83\ 1\0\ 1|    \0j\b\0|\ 1\0d\r\0\83\ 2\0\ 1|\a\0j\10\0\83\0\0}\v\0t\15\0j\16\0|\ 1\0\83\ 1\0}\ 3\0t\13\0|\ 1\0|\ 2\0d\b\0d\a\0\83\ 4\0}\f\0|\f\0j\17\0|\ 3\0\83\ 1\0}\r\0|\0\0j\18\0|\b\0j\19\0|\r\0d\1d\0d\r\0\83\ 3\0\83\ 1\0\ 1t\13\0|\ 1\0|\ 2\0d\ 6\0d
++\0\83\ 4\0}\f\0|\f\0j\17\0|\ 3\0\83\ 1\0}\ e\0|\0\0j\18\0|\v\0j\19\0|\ e\0d\1d\0d\r\0\83\ 3\0\83\ 1\0\ 1t\11\0|\ 1\0|\ 2\0\83\ 2\0}\ f\0|\0\0j\18\0|\v\0j\19\0|\ f\0j\17\0d\ 6\0d
++\0|\ 3\0\83\ 3\0d\1d\0d\r\0\83\ 3\0\83\ 1\0\ 1t
++\0t\1a\0\83\ 1\0}\10\0t   \0d\1e\0d\1f\0\0g\ 3\0\83\ 1\0}
++\0|
++\0j\e\0d\r\0d!\0\83\ 2\0\ 1|\10\0j\f\0|
++\0\83\ 1\0\ 1|\10\0j\r\0|\ 5\0\83\ 1\0\ 1|\10\0j\ f\0d"\0d#\0d$\0\83\ 3\0\ 1|\10\0j\ e\0|\ 2\0\83\ 1\0\ 1|\ 3\0j\b\0|\ 1\0d\ 4\0\83\ 2\0\ 1t\13\0\83\0\0}     \0|      \0j\14\0|\10\0\83\ 1\0\ 1|    \0j\b\0|\ 1\0d\r\0\83\ 2\0\ 1t\15\0j\16\0|\ 1\0\83\ 1\0}\ 3\0t\13\0|\ 1\0|\ 2\0d#\0d$\0\83\ 4\0}\f\0|\0\0j\18\0|\10\0j\19\0|\f\0j\17\0|\ 3\0\83\ 1\0d\1d\0d\r\0\83\ 3\0\83\ 1\0\ 1t\11\0|\ 1\0|\ 2\0\83\ 2\0}\ f\0|\0\0j\18\0|\10\0j\19\0|\ f\0j\17\0d#\0d$\0|\ 3\0\83\ 3\0d\1d\0d\r\0\83\ 3\0\83\ 1\0\ 1t
++\0t\1c\0\83\ 1\0}\11\0|\11\0j\r\0|\ 5\0\83\ 1\0\ 1t      \0d\r\0d\ 5\0d\ 4\0d\ 3\0d\ e\0d       \0d\b\0d\a\0d\ 6\0d
++\0d\v\0d\ f\0d\18\0d\19\0d%\0d&\0d'\0d(\0d)\0d*\0g\14\0\83\ 1\0}\12\0|\11\0j\f\0|\12\0\83\ 1\0\ 1|\11\0j\ f\0d+\0d\ 4\0d\ 3\0\83\ 3\0\ 1|\11\0j\ e\0|\ 2\0\83\ 1\0\ 1|\11\0j\1d\0\83\0\0\ 1|\ 3\0j\b\0|\ 1\0d\ 4\0\83\ 2\0\ 1t\13\0\83\0\0}        \0|      \0j\14\0|\11\0\83\ 1\0\ 1|    \0j\b\0|\ 1\0d\r\0\83\ 2\0\ 1t\15\0j\16\0|\ 1\0\83\ 1\0}\ 3\0t\13\0|\ 1\0|\ 2\0d\ 4\0d\ 3\0\83\ 4\0}\f\0|\0\0j\18\0|\11\0j\19\0|\f\0j\17\0|\ 3\0\83\ 1\0d\1d\0d\r\0\83\ 3\0\83\ 1\0\ 1t
++\0t\1e\0\83\ 1\0}\13\0|\13\0j\r\0|\ 5\0\83\ 1\0\ 1|\13\0j\ e\0|\ 2\0\83\ 1\0\ 1|\13\0j\1f\0t\ 6\0d,\0d,\0d-\0d,\0d-\0d-\0g\ 6\0d.\0d.\0d/\0d/\0d0\0d0\0d1\0d1\0d+\0d+\0g
++\0d/\0d0\0d.\0d2\0d3\0g\ 5\0\83\ 4\0\ 1|\13\0j\1f\0t\a\0d,\0d,\0d-\0d,\0d-\0d-\0d,\0d-\0g\b\0d0\0d1\0d4\0d5\0g\ 4\0d5\0d0\0g\ 2\0\83\ 4\0\ 1|\13\0j\ f\0d6\0d\ e\0d  \0\83\ 3\0\ 1t  \0d\r\0d\ 5\0d\ 4\0d\ 3\0d\ e\0d\v\0d\ f\0d\18\0d\19\0d%\0d7\0d8\0d9\0d#\0d$\0d:\0d;\0d<\0d=\0d>\0d?\0d@\0dA\0dB\0g\18\0\83\ 1\0}\14\0|\14\0j\e\0d\r\0dC\0\83\ 2\0\ 1|\13\0j\f\0|\14\0\83\ 1\0\ 1|\13\0j\1d\0\83\0\0\ 1|\ 3\0j\b\0|\ 1\0d\ 4\0\83\ 2\0\ 1t\13\0\83\0\0}        \0|      \0j\14\0|\13\0\83\ 1\0\ 1|    \0j\b\0|\ 1\0d\r\0\83\ 2\0\ 1t\15\0j\16\0|\ 1\0\83\ 1\0}\ 3\0t\13\0|\ 1\0|\ 2\0d\ e\0d      \0\83\ 4\0}\f\0|\0\0j\18\0|\13\0j\19\0|\f\0j\17\0|\ 3\0\83\ 1\0d\1d\0d\r\0\83\ 3\0\83\ 1\0\ 1dD\0S(H\0\0\0\0\0\0Same thantestMEDFileFieldEasyField1 except that here intfields are considered.
++        Check for all spatial discretization of field (cells,nodes,elno,gauss) for int field that all is OK. Here no profile and only top level is considered.s\r\0\0\0Pyfile102.medRÖ\ 4\0\0i\ 3\0\0\0i\ 2\0\0\0i\ 1\0\0\0i\b\0\0\0i\a\0\0\0i\ 6\0\0\0i\ 5\0\0\0i     \0\0\0i
++\0\0\0\ 2\0\0i\0\0\0\0i\ 4\0\0\0i\v\0\0\0id\0\0\0ie\0\0\0if\0\0\0ig\0\0\0ih\0\0\0ii\0\0\0ij\0\0\0ik\0\0\0i\f\0\0\0i\r\0\0\0g\0\0\0\0\0\0\0@iè\ 3\0\0g\0\0\0\0\0\0\b@g\11ê-\81\99\97q=iÈ\0\0\0\0\0\0\0\0\0\ 4\0\0g\0\0\0\0\0\06@i\17\0\0\0i\18\0\0\0i\ e\0\0\0i\ f\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\9a\99\99\99\99\99¹?g\9a\99\99\99\99\99É?g333333Ó?g\9a\99\99\99\99\99Ù?g\9a\99\99\99\99\99©?gffffffÖ?g333333ã?gffffffæ?g\0\0\0\0\0\0Ð?i\14\0\0\0i\15\0\0\0i\16\0\0\0i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i-\0\0\0i.\0\0\0i7\0\0\0i8\0\0\0\ 3\0\0N(\ 3\0\0\0i\ 3\0\0\0i\ 2\0\0\0i\ 1\0\0\0(\ 3\0\0\0i\b\0\0\0i\a\0\0\0i\ 6\0\0\0(\ 3\0\0\0i\ 5\0\0\0i       \0\0\0i
++\0\0\0\0\0\0R>\0\0\0RY\0\0\0R[\0\0\0Rc\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0R\v\0\0\0Rk\0\0\0R&\ 3\0\0R\13\ 1\0\0R{\ 1\0\0\0\0\0RB\0\0\0\0\0\0Rq\0\0\0R#\ 3\0\0RY\ 1\0\0R\1e\ 3\0\0R%\ 1\0\0R'\0\0\0R(\0\0\0R5\ 4\0\0R0\0\0\0R1\0\0\0R\1c\ 1\0\0R\97\0\0\0R\ f\ 1\0\0Rd\0\0\0R\a\ 1\0\0\ 4\0\0(\15\0\0\0R        \0\0\0R9\ 1\0\0Rg\ 3\0\0R\86\0\0\0R\ 3\ 2\0\0R\83\0\0\0R\17\ 3\0\0R\b\0\0\0\0\0\0\0\0\0R\ 2\ 3\0\0\0\0\0\0\0\0\ 4\0\0\ 4\0\0Rm\ 1\0\0\0\0\0R
++\ 1\0\0\ 4\0\0R\f\ 1\0\0\ 4\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testMEDFileFieldEasyField2a\14\0\0\0\0\0\0\ 4\ 6\ 1\ 6\ 1    \ 1\15\ 1\ f\0\r\ 1
++\ 1\19\ 1\19\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1
++\ 1\10\ 1\1e\ 1\f\0\r\0\r\ 1\r\0\13\ 1\f\ 1     \0\r\ 1\10\ 1
++\0\r\ 1\13\0 \0\r\ 1\10\ 1\f\ 2\ f\ 1\15\ 1\ f\ 1\1c\ 1\15\ 1\ f\ 1\1c\ 1\ f\ 1+\ 2\f\0\15\0\10\0\r\0\r\0\13\ 1\r\ 1\10\ 1       \0\r\0\10\ 2\ f\ 1\15\ 1%\ 1\ f\ 1+\ 2\f\0\r\0H\0\r\0\13\ 1\r\0
++\ 1\10\0   \0\r\0\10\ 2\ f\ 1\15\ 1%\ 2\f\0\r\0\r\ 1U\ 1@\0\13\ 1T\0\10\0\r\ 1
++\ 1\10\0   \0\r\0\10\ 2\ f\ 1\15\ 1%\ 1c\ 1\0\0\0\ e\0\0\0\19\0\0\0C\0\0\0s   \ 6\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0\83\0\0}\ 3\0t\ 1\0d@\0dA\0dB\0g\ 3\0\83\ 1\0}\ 4\0t\ 2\0d\f\0d\ 4\0\83\ 2\0}\ 5\0|\ 5\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\ 5\0j\ 4\0\83\0\0\ 1|\ 5\0j\ 5\0t\ 6\0d\r\0d\ 5\0d\ 4\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d\ 3\0d\ e\0d    \0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d\b\0d\a\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d
++\0d\v\0d\ f\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\a\0d\10\0d\11\0d\12\0d\13\0g\ 4\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\a\0d\14\0d\15\0d\16\0d\17\0g\ 4\0\83\ 2\0\ 1|\ 5\0|\ 3\0d\18\0<t\ 2\0d\f\0d\ 3\0\83\ 2\0}\ 6\0|\ 6\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\ 6\0j\ 4\0\83\0\0\ 1|\ 6\0j\ 5\0t\b\0d\ 3\0d\ 4\0d        \0d\r\0g\ 4\0\83\ 2\0\ 1|\ 6\0j\ 5\0t\b\0d\a\0d\b\0d\ 3\0d\ 4\0g\ 4\0\83\ 2\0\ 1|\ 6\0|\ 3\0d\r\0<|\ 3\0j   \0|\ 1\0d\ 4\0\83\ 2\0\ 1t
++\0t\v\0\83\ 1\0}\a\0|\a\0j\f\0|\ 2\0\83\ 1\0\ 1|\a\0j\r\0t\ 1\0dC\0dD\0g\ 2\0\83\ 1\0\83\ 1\0\ 1|\a\0j\ e\0|\ 3\0d\r\0\19\83\ 1\0\ 1|\a\0j\ f\0d\19\0d\ 5\0d\ 4\0\83\ 3\0\ 1t\10\0\83\0\0}\b\0|\b\0j\11\0|\a\0\83\ 1\0\ 1|\b\0j        \0|\ 1\0d\r\0\83\ 2\0\ 1t\12\0j\13\0|\ 1\0\83\ 1\0}\ 3\0t\10\0|\ 1\0|\ 2\0d\ 5\0d\ 4\0\83\ 4\0}\b\0|\0\0j\14\0|\a\0j\15\0|\b\0j\16\0|\ 3\0\83\ 1\0d\1a\0d\1a\0\83\ 3\0\83\ 1\0\ 1t
++\0t\v\0\83\ 1\0}\a\0|\a\0j\f\0|\ 2\0\83\ 1\0\ 1|\a\0j\r\0t\ 1\0dE\0dF\0dG\0dH\0dI\0dJ\0g\ 6\0\83\ 1\0\83\ 1\0\ 1|\a\0j\ e\0|\ 3\0d\18\0\19\83\ 1\0\ 1|\a\0j\ f\0d\e\0d\ 3\0d\ e\0\83\ 3\0\ 1|\a\0j\17\0\83\0\0\ 1|\ 3\0j        \0|\ 1\0d\ 4\0\83\ 2\0\ 1t\10\0\83\0\0}\b\0|\b\0j\11\0|\a\0\83\ 1\0\ 1|\b\0j   \0|\ 1\0d\r\0\83\ 2\0\ 1t\12\0j\13\0|\ 1\0\83\ 1\0}\ 3\0t\10\0|\ 1\0|\ 2\0d\ 3\0d\ e\0\83\ 4\0}\b\0|\0\0j\14\0|\a\0j\15\0|\b\0j\16\0|\ 3\0\83\ 1\0d\1a\0d\1a\0\83\ 3\0\83\ 1\0\ 1t
++\0t\18\0\83\ 1\0}      \0|      \0j\ e\0|\ 3\0d\18\0\19\83\ 1\0\ 1t\ 1\0d\r\0d\ 5\0d\ 4\0d\ 3\0d\ e\0d      \0d\b\0d\a\0d\ 6\0d
++\0d\v\0d\ f\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0d#\0g\14\0\83\ 1\0}
++\0|    \0j\r\0|
++\0\83\ 1\0\ 1|        \0j\ f\0d$\0d\ 4\0d\ 3\0\83\ 3\0\ 1|      \0j\f\0|\ 2\0\83\ 1\0\ 1|    \0j\17\0\83\0\0\ 1|\ 3\0j    \0|\ 1\0d\ 4\0\83\ 2\0\ 1t\10\0\83\0\0}\v\0|\v\0j\11\0|     \0\83\ 1\0\ 1|\v\0j       \0|\ 1\0d\r\0\83\ 2\0\ 1t\12\0j\13\0|\ 1\0\83\ 1\0}\ 3\0t\10\0|\ 1\0|\ 2\0d\ 4\0d\ 3\0\83\ 4\0}\b\0|\0\0j\14\0|  \0j\15\0|\b\0j\16\0|\ 3\0\83\ 1\0d\1a\0d\1a\0\83\ 3\0\83\ 1\0\ 1t
++\0t\19\0\83\ 1\0}\f\0|\f\0j\ e\0|\ 3\0d\18\0\19\83\ 1\0\ 1|\f\0j\f\0|\ 2\0\83\ 1\0\ 1|\f\0j\1a\0t\ 6\0d%\0d%\0d&\0d%\0d&\0d&\0g\ 6\0d'\0d'\0d(\0d(\0d)\0d)\0d*\0d*\0d$\0d$\0g
++\0d(\0d)\0d'\0d+\0d,\0g\ 5\0\83\ 4\0\ 1|\f\0j\1a\0t\a\0d%\0d%\0d&\0d%\0d&\0d&\0d%\0d&\0g\b\0d)\0d*\0d-\0d.\0g\ 4\0d.\0d)\0g\ 2\0\83\ 4\0\ 1|\f\0j\ f\0d/\0d\ e\0d  \0\83\ 3\0\ 1t\ 1\0d\r\0d\ 5\0d\ 4\0d\ 3\0d\ e\0d\v\0d\ f\0d\1c\0d\1d\0d\1e\0d0\0d1\0d2\0d3\0d4\0d5\0d6\0d7\0d8\0d9\0d:\0d;\0d<\0d=\0g\18\0\83\ 1\0}\r\0|\r\0j\e\0d\r\0d>\0\83\ 2\0\ 1|\f\0j\r\0|\r\0\83\ 1\0\ 1|\f\0j\17\0\83\0\0\ 1|\ 3\0j    \0|\ 1\0d\ 4\0\83\ 2\0\ 1t\10\0\83\0\0}\v\0|\v\0j\11\0|\f\0\83\ 1\0\ 1|\v\0j   \0|\ 1\0d\r\0\83\ 2\0\ 1t\12\0j\13\0|\ 1\0\83\ 1\0}\ 3\0t\10\0|\ 1\0|\ 2\0d\ e\0\0\83\ 4\0}\b\0|\0\0j\14\0|\f\0j\15\0|\b\0j\16\0|\ 3\0\83\ 1\0d\1a\0d\1a\0\83\ 3\0\83\ 1\0\ 1d?\0S(K\0\0\0s\9f\0\0\0Here a multi level mesh. And field on cells lying on different level of this mesh. Show how "field" method deal with that. Here on field double are considered.s\r\0\0\0Pyfile103.medRÖ\ 4\0\0i\ 3\0\0\0i\ 2\0\0\0i\ 1\0\0\0i\b\0\0\0i\a\0\0\0i\ 6\0\0\0i\ 5\0\0\0i    \0\0\0i
++\0\0\0\ 2\0\0i\0\0\0\0i\ 4\0\0\0i\v\0\0\0id\0\0\0ie\0\0\0if\0\0\0ig\0\0\0ih\0\0\0ii\0\0\0ij\0\0\0ik\0\0\0iÿÿÿÿg\0\0\0\0\0\0\10@g\11ê-\81\99\97q=g\0\0\0\0\0\00@i\f\0\0\0i\r\0\0\0i\ e\0\0\0i\ f\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\9a\99\99\99\99\99¹?g\9a\99\99\99\99\99É?g333333Ó?g\9a\99\99\99\99\99Ù?g\9a\99\99\99\99\99©?gffffffÖ?g333333ã?gffffffæ?g\0\0\0\0\0\0Ð?i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i-\0\0\0i.\0\0\0i7\0\0\0i8\0\0\0\ 3\0\0N(\ 3\0\0\0i\ 3\0\0\0i\ 2\0\0\0i\ 1\0\0\0(\ 3\0\0\0i\b\0\0\0i\a\0\0\0i\ 6\0\0\0(\ 3\0\0\0i\ 5\0\0\0i    \0\0\0i
++\0\0\0(\ 2\0\0\0i\0\0\0\0id\0\0\0(\ 2\0\0\0i\ 1\0\0\0ie\0\0\0(\ 2\0\0\0i\0\0\0\0id\0\0\0(\ 2\0\0\0i\ 1\0\0\0ie\0\0\0(\ 2\0\0\0i\0\0\0\0id\0\0\0(\ 2\0\0\0i\ 1\0\0\0ie\0\0\0(\ 2\0\0\0i\0\0\0\0id\0\0\0(\ 2\0\0\0i\ 1\0\0\0ie\0\0\0(\1c\0\0\0R>\0\0\0RY\0\0\0R[\0\0\0Rc\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0\ 3\0\0R\v\0\0\0Rw\ 1\0\0R\13\ 1\0\0RB\0\0\0R{\ 1\0\0\0\0\0\0\0\0\0\0\0R%\ 1\0\0R'\0\0\0R(\0\0\0R0\0\0\0R1\0\0\0R5\ 4\0\0Rd\0\0\0R\ f\ 1\0\0R\a\ 1\0\0\ 4\0\0R\97\0\0\0(\ e\0\0\0R    \0\0\0R9\ 1\0\0Rg\ 3\0\0R\86\0\0\0R\ 3\ 2\0\0R\83\0\0\0\0\0\0\0\0\0\0\0\0R
++\ 1\0\0\ 4\0\0\0\0\0R\f\ 1\0\0\ 4\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testMEDFileFieldEasyField3§\14\0\0s\9a\0\0\0\0\ 2\ 6\ 1\ 6\ 1       \ 1\15\ 1\ f\0\r\ 1
++\ 1\19\ 1\19\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1
++\ 1\ f\0\r\ 1
++\ 1\1c\ 1\1c\ 1
++\ 1\10\ 2\f\0\r\0\19\0\11\0\13\ 1 \0\r\0\10\ 2\ f\0\15\ 1%\ 2\f\0\r\0%\ 1\11\ 1\13\ 1
++\ 1\10\ 1   \0\r\0\10\ 2\ f\0\15\ 1%\ 2\f\ 1\11\ 1H\0\r\0\13\ 1\r\0
++\ 1\10\0   \0\r\0\10\ 2\ f\0\15\ 1%\ 2\f\ 1\11\ 1\r\ 1U\ 1@\0\13\ 1T\0\10\0\r\ 1
++\ 1\10\0   \0\r\0\10\ 1\ f\0\15\ 1%\ 1c\ 1\0\0\0\ e\0\0\0\19\0\0\0C\0\0\0s   \ 6\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0\83\0\0}\ 3\0t\ 1\0d@\0dA\0dB\0g\ 3\0\83\ 1\0}\ 4\0t\ 2\0d\f\0d\ 4\0\83\ 2\0}\ 5\0|\ 5\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\ 5\0j\ 4\0\83\0\0\ 1|\ 5\0j\ 5\0t\ 6\0d\r\0d\ 5\0d\ 4\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d\ 3\0d\ e\0d    \0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d\b\0d\a\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d
++\0d\v\0d\ f\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\a\0d\10\0d\11\0d\12\0d\13\0g\ 4\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\a\0d\14\0d\15\0d\16\0d\17\0g\ 4\0\83\ 2\0\ 1|\ 5\0|\ 3\0d\18\0<t\ 2\0d\f\0d\ 3\0\83\ 2\0}\ 6\0|\ 6\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\ 6\0j\ 4\0\83\0\0\ 1|\ 6\0j\ 5\0t\b\0d\ 3\0d\ 4\0d        \0d\r\0g\ 4\0\83\ 2\0\ 1|\ 6\0j\ 5\0t\b\0d\a\0d\b\0d\ 3\0d\ 4\0g\ 4\0\83\ 2\0\ 1|\ 6\0|\ 3\0d\r\0<|\ 3\0j   \0|\ 1\0d\ 4\0\83\ 2\0\ 1t
++\0t\v\0\83\ 1\0}\a\0|\a\0j\f\0|\ 2\0\83\ 1\0\ 1|\a\0j\r\0t\ e\0dC\0dD\0g\ 2\0\83\ 1\0\83\ 1\0\ 1|\a\0j\ f\0|\ 3\0d\r\0\19\83\ 1\0\ 1|\a\0j\10\0d\19\0d\ 5\0d\ 4\0\83\ 3\0\ 1t\11\0\83\0\0}\b\0|\b\0j\12\0|\a\0\83\ 1\0\ 1|\b\0j        \0|\ 1\0d\r\0\83\ 2\0\ 1t\13\0j\14\0|\ 1\0\83\ 1\0}\ 3\0t\11\0|\ 1\0|\ 2\0d\ 5\0d\ 4\0\83\ 4\0}\b\0|\0\0j\15\0|\a\0j\16\0|\b\0j\17\0|\ 3\0\83\ 1\0d\1a\0d\r\0\83\ 3\0\83\ 1\0\ 1t
++\0t\v\0\83\ 1\0}\a\0|\a\0j\f\0|\ 2\0\83\ 1\0\ 1|\a\0j\r\0t\ e\0dE\0dF\0dG\0dH\0dI\0dJ\0g\ 6\0\83\ 1\0\83\ 1\0\ 1|\a\0j\ f\0|\ 3\0d\18\0\19\83\ 1\0\ 1|\a\0j\10\0d\e\0d\ 3\0d\ e\0\83\ 3\0\ 1|\a\0j\18\0\83\0\0\ 1|\ 3\0j        \0|\ 1\0d\ 4\0\83\ 2\0\ 1t\11\0\83\0\0}\b\0|\b\0j\12\0|\a\0\83\ 1\0\ 1|\b\0j   \0|\ 1\0d\r\0\83\ 2\0\ 1t\13\0j\14\0|\ 1\0\83\ 1\0}\ 3\0t\11\0|\ 1\0|\ 2\0d\ 3\0d\ e\0\83\ 4\0}\b\0|\0\0j\15\0|\a\0j\16\0|\b\0j\17\0|\ 3\0\83\ 1\0d\1a\0d\r\0\83\ 3\0\83\ 1\0\ 1t
++\0t\19\0\83\ 1\0}      \0|      \0j\ f\0|\ 3\0d\18\0\19\83\ 1\0\ 1t\ e\0d\r\0d\ 5\0d\ 4\0d\ 3\0d\ e\0d      \0d\b\0d\a\0d\ 6\0d
++\0d\v\0d\ f\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0d#\0g\14\0\83\ 1\0}
++\0|    \0j\r\0|
++\0\83\ 1\0\ 1|        \0j\10\0d$\0d\ 4\0d\ 3\0\83\ 3\0\ 1|      \0j\f\0|\ 2\0\83\ 1\0\ 1|    \0j\18\0\83\0\0\ 1|\ 3\0j    \0|\ 1\0d\ 4\0\83\ 2\0\ 1t\11\0\83\0\0}\v\0|\v\0j\12\0|     \0\83\ 1\0\ 1|\v\0j       \0|\ 1\0d\r\0\83\ 2\0\ 1t\13\0j\14\0|\ 1\0\83\ 1\0}\ 3\0t\11\0|\ 1\0|\ 2\0d\ 4\0d\ 3\0\83\ 4\0}\b\0|\0\0j\15\0|  \0j\16\0|\b\0j\17\0|\ 3\0\83\ 1\0d\1a\0d\r\0\83\ 3\0\83\ 1\0\ 1t
++\0t\1a\0\83\ 1\0}\f\0|\f\0j\ f\0|\ 3\0d\18\0\19\83\ 1\0\ 1|\f\0j\f\0|\ 2\0\83\ 1\0\ 1|\f\0j\e\0t\ 6\0d%\0d%\0d&\0d%\0d&\0d&\0g\ 6\0d'\0d'\0d(\0d(\0d)\0d)\0d*\0d*\0d$\0d$\0g
++\0d(\0d)\0d'\0d+\0d,\0g\ 5\0\83\ 4\0\ 1|\f\0j\e\0t\a\0d%\0d%\0d&\0d%\0d&\0d&\0d%\0d&\0g\b\0d)\0d*\0d-\0d.\0g\ 4\0d.\0d)\0g\ 2\0\83\ 4\0\ 1|\f\0j\10\0d/\0d\ e\0d  \0\83\ 3\0\ 1t\ e\0d\r\0d\ 5\0d\ 4\0d\ 3\0d\ e\0d\v\0d\ f\0d\1c\0d\1d\0d\1e\0d0\0d1\0d2\0d3\0d4\0d5\0d6\0d7\0d8\0d9\0d:\0d;\0d<\0d=\0g\18\0\83\ 1\0}\r\0|\r\0j\1c\0d\r\0d>\0\83\ 2\0\ 1|\f\0j\r\0|\r\0\83\ 1\0\ 1|\f\0j\18\0\83\0\0\ 1|\ 3\0j    \0|\ 1\0d\ 4\0\83\ 2\0\ 1t\11\0\83\0\0}\v\0|\v\0j\12\0|\f\0\83\ 1\0\ 1|\v\0j   \0|\ 1\0d\r\0\83\ 2\0\ 1t\13\0j\14\0|\ 1\0\83\ 1\0}\ 3\0t\11\0|\ 1\0|\ 2\0d\ e\0\0\83\ 4\0}\b\0|\0\0j\15\0|\f\0j\16\0|\b\0j\17\0|\ 3\0\83\ 1\0d\1a\0d\r\0\83\ 3\0\83\ 1\0\ 1d?\0S(K\0\0\0s7\0\0\0 Same than testMEDFileFieldEasyField3 but with integerss\r\0\0\0Pyfile104.medRÖ\ 4\0\0i\ 3\0\0\0i\ 2\0\0\0i\ 1\0\0\0i\b\0\0\0i\a\0\0\0i\ 6\0\0\0i\ 5\0\0\0i    \0\0\0i
++\0\0\0\ 2\0\0i\0\0\0\0i\ 4\0\0\0i\v\0\0\0id\0\0\0ie\0\0\0if\0\0\0ig\0\0\0ih\0\0\0ii\0\0\0ij\0\0\0ik\0\0\0iÿÿÿÿg\0\0\0\0\0\0\10@g\11ê-\81\99\97q=g\0\0\0\0\0\00@i\f\0\0\0i\r\0\0\0i\ e\0\0\0i\ f\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\9a\99\99\99\99\99¹?g\9a\99\99\99\99\99É?g333333Ó?g\9a\99\99\99\99\99Ù?g\9a\99\99\99\99\99©?gffffffÖ?g333333ã?gffffffæ?g\0\0\0\0\0\0Ð?i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i-\0\0\0i.\0\0\0i7\0\0\0i8\0\0\0\ 3\0\0N(\ 3\0\0\0i\ 3\0\0\0i\ 2\0\0\0i\ 1\0\0\0(\ 3\0\0\0i\b\0\0\0i\a\0\0\0i\ 6\0\0\0(\ 3\0\0\0i\ 5\0\0\0i    \0\0\0i
++\0\0\0(\ 2\0\0\0i\0\0\0\0id\0\0\0(\ 2\0\0\0i\ 1\0\0\0ie\0\0\0(\ 2\0\0\0i\0\0\0\0id\0\0\0(\ 2\0\0\0i\ 1\0\0\0ie\0\0\0(\ 2\0\0\0i\0\0\0\0id\0\0\0(\ 2\0\0\0i\ 1\0\0\0ie\0\0\0(\ 2\0\0\0i\0\0\0\0id\0\0\0(\ 2\0\0\0i\ 1\0\0\0ie\0\0\0(\1d\0\0\0R>\0\0\0RY\0\0\0R[\0\0\0Rc\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0\ 3\0\0R\v\0\0\0R&\ 3\0\0R\13\ 1\0\0RB\0\0\0R{\ 1\0\0Rk\0\0\0\0\0\0\0\0\0R\1e\ 3\0\0R%\ 1\0\0R'\0\0\0R(\0\0\0R0\0\0\0R1\0\0\0R5\ 4\0\0Rd\0\0\0R\ f\ 1\0\0R\a\ 1\0\0\ 4\0\0R\97\0\0\0(\ e\0\0\0R       \0\0\0R9\ 1\0\0Rg\ 3\0\0R\86\0\0\0R\ 3\ 2\0\0R\83\0\0\0\0\0\0\0\0\0\0\0\0R
++\ 1\0\0\ 4\0\0\0\0\0R\f\ 1\0\0\ 4\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testMEDFileFieldEasyField4â\14\0\0s\9a\0\0\0\0\ 2\ 6\ 1\ 6\ 1       \ 1\15\ 1\ f\0\r\ 1
++\ 1\19\ 1\19\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1
++\ 1\ f\0\r\ 1
++\ 1\1c\ 1\1c\ 1
++\ 1\10\ 2\f\0\r\0\19\0\11\0\13\ 1 \0\r\0\10\ 2\ f\0\15\ 1%\ 2\f\0\r\0%\ 1\11\ 1\13\ 1
++\ 1\10\ 1   \0\r\0\10\ 2\ f\0\15\ 1%\ 2\f\ 1\11\ 1H\0\r\0\13\ 1\r\0
++\ 1\10\0   \0\r\0\10\ 2\ f\0\15\ 1%\ 2\f\ 1\11\ 1\r\ 1U\ 1@\0\13\ 1T\0\10\0\r\ 1
++\ 1\10\0   \0\r\0\10\ 1\ f\0\15\ 1%\ 1c\ 1\0\0\0\ e\0\0\0\ 6\0\0\0C\0\0\0s\15\ 3\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0\83\0\0}\ 3\0t\ 1\0d\1f\0\0d!\0g\ 3\0\83\ 1\0}\ 4\0t\ 2\0d\f\0d\ 4\0\83\ 2\0}\ 5\0|\ 5\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\ 5\0j\ 4\0\83\0\0\ 1|\ 5\0j\ 5\0t\ 6\0d\r\0d\ 5\0d\ 4\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d\ 3\0d\ e\0d      \0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d\b\0d\a\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\ 6\0d
++\0d\v\0d\ f\0g\ 3\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\a\0d\10\0d\11\0d\12\0d\13\0g\ 4\0\83\ 2\0\ 1|\ 5\0j\ 5\0t\a\0d\14\0d\15\0d\16\0d\17\0g\ 4\0\83\ 2\0\ 1|\ 5\0|\ 3\0d\r\0<|\ 3\0j\b\0|\ 1\0d\ 4\0\83\ 2\0\ 1t     \0d\r\0d\ 4\0d\ 3\0d     \0g\ 4\0\83\ 1\0}\ 6\0|\ 6\0j
++\0d\18\0\83\ 1\0\ 1|\ 5\0j\v\0\83\0\0|\ 6\0\19}\a\0|\a\0j
++\0|\ 5\0j\f\0\83\0\0\83\ 1\0\ 1t\ 1\0d\v\0d\ f\0d\19\0d\1a\0g\ 4\0\83\ 1\0}\b\0t\r\0t\ e\0\83\ 1\0}      \0|      \0j\ f\0|\b\0\83\ 1\0\ 1|    \0j\10\0|\a\0\83\ 1\0\ 1|    \0j
++\0|\ 2\0\83\ 1\0\ 1|     \0j\11\0d\e\0d\b\0d\a\0\83\ 3\0\ 1|      \0j\12\0\83\0\0\ 1t\13\0\83\0\0}
++\0|
++\0j\14\0\0|\ 3\0d\r\0|\ 6\0\83\ 4\0\ 1|
++\0j\b\0|\ 1\0d\r\0\83\ 2\0\ 1t\15\0j\16\0|\ 1\0\83\ 1\0}\ 3\0t\17\0|\ 1\0|\ 2\0d\b\0d\a\0\83\ 4\0}\v\0|\0\0j\18\0|     \0j\19\0|\v\0j\1a\0|\ 3\0\83\ 1\0d\1c\0d\1c\0\83\ 3\0\83\ 1\0\ 1t\ 2\0d\f\0d\ 3\0\83\ 2\0}\f\0|\f\0j\ 3\0|\ 4\0\83\ 1\0\ 1|\f\0j\ 4\0\83\0\0\ 1|\f\0j\ 5\0t\e\0d\ 3\0d\ 4\0d     \0d\r\0g\ 4\0\83\ 2\0\ 1|\f\0j\ 5\0t\e\0d\a\0d\b\0d\ 3\0d\ 4\0g\ 4\0\83\ 2\0\ 1t\0\0\83\0\0}\r\0|\f\0|\r\0d\r\0<|\ 5\0|\r\0d\1d\0<t\17\0\83\0\0}
++\0|
++\0j\1c\0\0|\r\0d\1d\0|\ 6\0\83\ 4\0\ 1t\15\0j\16\0|\ 1\0\83\ 1\0}\ 3\0t\17\0|\ 1\0|\ 2\0d\b\0d\a\0\83\ 4\0}\v\0|\0\0j\18\0|       \0j\19\0|\v\0j\1a\0|\ 3\0\83\ 1\0d\1c\0d\1c\0\83\ 3\0\83\ 1\0\ 1d\1e\0S("\0\0\0sO\0\0\0More and more difficult now look at how profiles are managed by "field" method.s\r\0\0\0Pyfile105.medRÖ\ 4\0\0i\ 3\0\0\0i\ 2\0\0\0i\ 1\0\0\0i\b\0\0\0i\a\0\0\0i\ 6\0\0\0i\ 5\0\0\0i   \0\0\0i
++\0\0\0\ 2\0\0i\0\0\0\0i\ 4\0\0\0i\v\0\0\0id\0\0\0ie\0\0\0if\0\0\0ig\0\0\0ih\0\0\0ii\0\0\0ij\0\0\0ik\0\0\0R\83\ 1\0\0i\f\0\0\0i\r\0\0\0g\0\0\0\0\0\0\0@g\11ê-\81\99\97q=iÿÿÿÿN(\ 3\0\0\0i\ 3\0\0\0i\ 2\0\0\0i\ 1\0\0\0(\ 3\0\0\0i\b\0\0\0i\a\0\0\0i\ 6\0\0\0(\ 3\0\0\0i\ 5\0\0\0i     \0\0\0i
++\0\0\0(\1d\0\0\0R>\0\0\0RY\0\0\0R[\0\0\0Rc\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0R\v\0\0\0Rk\0\0\0RB\0\0\0Rq\0\0\0RC\0\0\0Rw\ 1\0\0R\13\ 1\0\0R{\ 1\0\0\0\0\0\0\0\0Rd\0\0\0\0\0\0R\89\ 1\0\0R'\0\0\0R(\0\0\0\0\0\0R0\0\0\0R1\0\0\0R5\ 4\0\0\ 3\0\0R|\ 1\0\0(\ e\0\0\0R       \0\0\0R9\ 1\0\0Rg\ 3\0\0R\86\0\0\0R\ 3\ 2\0\0R\83\0\0\0R\83\ 1\0\0R\85\0\0\0R\17\ 3\0\0R\b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testMEDFileFieldEasyField5\1d\15\0\0s\\0\0\0\0\ 2\ 6\ 1\ 6\ 1    \ 1\15\ 1\ f\0\r\ 1
++\ 1\19\ 1\19\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1
++\ 1\10\ 1\18\0\r\ 1\10\0\13\ 2\18\ 1\f\0\r\0\r\ 1\r\0\13\0
++\ 1     \0\16\ 1\10\ 2\ f\0\15\ 1%\ 2\ f\0\r\ 1
++\ 1\1c\ 1\1c\ 1 \ 1
++\0
++\ 2     \0\16\ 2\ f\0\15\ 1%\ 1c\ 1\0\0\0$\0\0\0\11\0\0\0C\0\0\0sC\v\0\0t\0\0d?\0d@\0dA\0dB\0dC\0dD\0dE\0dF\0dG\0dH\0dI\0dJ\0dK\0dL\0dM\0g\ f\0\83\ 1\0}\ 1\0d\ 6\0}\ 2\0t\ 1\0|\ 2\0d\ 3\0\83\ 2\0}\ 3\0|\ 3\0j\ 2\0|\ 1\0\83\ 1\0\ 1|\ 3\0j\ 3\0\83\0\0\ 1|\ 3\0j\ 4\0t\ 5\0d\a\0d\ 5\0d\ 4\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 4\0t\ 5\0d\a\0d\b\0d\ 5\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 4\0t\ 5\0d        \0d
++\0d\a\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 4\0t\ 5\0\0d\v\0d
++\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 1\0d\f\0d\ 2\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 1\0d\r\0d\f\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 4\0t\ 6\0d\ 2\0d\f\0d    \0d\ 3\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 4\0t\ 6\0d\ 3\0d        \0d\a\0d\ 4\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 4\0t\ 6\0d\a\0d
++\0d\ e\0d\b\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 4\0t\ 6\0d\f\0d\ f\0d\v\0d     \0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 4\0t\ 6\0d\r\0d\10\0d\ f\0d\f\0g\ 4\0\83\ 2\0\ 1t\ 1\0|\ 2\0d\ 2\0\83\ 2\0}\ 4\0|\ 4\0j\ 2\0|\ 1\0\83\ 1\0\ 1|\ 4\0j\ 3\0\83\0\0\ 1|\ 4\0j\ 4\0t\a\0d\10\0d\r\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\a\0d\r\0d\ 1\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\a\0d\ 1\0d\ 2\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\a\0d\ 2\0d\ 3\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\a\0d\ 3\0d\ 4\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\a\0d\ 4\0d\ 5\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\a\0d\ 5\0d\b\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\a\0d\b\0d\ e\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\a\0d\ e\0d
++\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\a\0d
++\0d\v\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\a\0d\v\0d\ f\0g\ 2\0\83\ 2\0\ 1|\ 4\0j\ 4\0t\a\0d\ f\0d\10\0g\ 2\0\83\ 2\0\ 1t\b\0\83\0\0}\ 5\0|\ 3\0|\ 5\0d\ 1\0<|\ 4\0|\ 5\0d\11\0<t \0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\f\0d    \0d\a\0d\v\0d
++\0g
++\0\83\ 1\0}\ 6\0i\0\0}\a\0t        \0d\ 1\0d\ 3\0d\ 4\0d\ 5\0d\f\0d       \0g\ 6\0\83\ 1\0|\a\0d\ 1\0<t \0d\ 3\0d\ 4\0d\ 5\0d\r\0d\b\0g\ 5\0\83\ 1\0|\a\0d\11\0<t
++\0\83\0\0}\b\0|\0\0j\v\0|\ 5\0j\f\0|\a\0\83\ 1\0j\r\0|\ 6\0\83\ 1\0\83\ 1\0\ 1|\ 6\0|\a\0d\ 2\0<d\12\0}  \0t\ e\0\83\0\0}
++\0|\b\0j\ f\0|
++\0\83\ 1\0\ 1dN\0}\v\0d\14\0g\ 1\0}\f\0t\0\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0g\v\0\83\ 1\0}\r\0|\r\0j\10\0|\f\0\83\ 1\0\ 1t\11\0t\12\0\83\ 1\0}\ e\0|\ e\0j\13\0|\v\0\8c\0\0\ 1|\ e\0j\14\0|\r\0\83\ 1\0\ 1|\ e\0j\15\0|\ 3\0\83\ 1\0\ 1|\ e\0j\16\0|      \0\83\ 1\0\ 1t\11\0t\12\0\83\ 1\0}\ f\0|\ f\0j\13\0|\v\0\8c\0\0\ 1|\ f\0j\14\0t\0\0\0d!\0d"\0d#\0d$\0d%\0d&\0d'\0d(\0d)\0d*\0d+\0g\f\0\83\ 1\0\83\ 1\0\ 1|\ f\0j\15\0|\ 4\0\83\ 1\0\ 1|\ f\0j\16\0|       \0\83\ 1\0\ 1|\ f\0j\17\0\83\0\0j\10\0|\f\0\83\ 1\0\ 1t\11\0t\18\0\83\ 1\0}\10\0|\10\0j\13\0|\v\0\8c\0\0\ 1|\10\0j\14\0t\0\0d,\0d-\0d.\0d/\0d0\0d1\0d2\0d3\0d4\0d5\0d6\0d7\0d8\0d9\0d:\0g\ f\0\83\ 1\0\83\ 1\0\ 1|\10\0j\15\0|\ 3\0\83\ 1\0\ 1|\10\0j\16\0|   \0\83\ 1\0\ 1|\10\0j\17\0\83\0\0j\10\0|\f\0\83\ 1\0\ 1t\19\0\83\0\0}\11\0|\11\0j\1a\0|\ e\0\83\ 1\0\ 1|\11\0j\1a\0|\ f\0\83\ 1\0\ 1|\11\0j\1a\0|\10\0\83\ 1\0\ 1|
++\0j\e\0|\11\0\83\ 1\0\ 1|\ 5\0j\1c\0|\a\0\83\ 1\0}\12\0|\b\0j\1c\0|\a\0|\ 5\0\83\ 2\0}\13\0|\0\0j\1d\0t\1e\0|\13\0\83\ 1\0d\ 2\0\83\ 2\0\ 1|\13\0d\ 1\0\19}\14\0|\0\0j\1d\0t\1e\0|\14\0\83\ 1\0d\ 2\0\83\ 2\0\ 1|\14\0d\ 1\0\19}\11\0|\0\0j\1f\0\0|\11\0j!\0|\12\0\83\ 3\0\ 1|\0\0j\v\0|\12\0d\ 1\0\19j"\0\83\0\0j\r\0|\ 3\0|\a\0d\ 1\0\19\19j"\0\83\0\0d;\0\83\ 2\0\83\ 1\0\ 1|\0\0j\v\0|\12\0d\11\0\19j"\0\83\0\0j\r\0|\ 4\0|\a\0d\11\0\19\19j"\0\83\0\0d;\0\83\ 2\0\83\ 1\0\ 1|\ 3\0j#\0\83\0\0|\a\0d\ 1\0\19\19}\15\0|\15\0j$\0|\a\0d\ 2\0\19j%\0|\ 5\0j&\0\83\0\0\83\ 1\0t\1e\0|\a\0d\ 2\0\19\83\ 1\0\83\ 2\0\ 1|\15\0j\16\0|\ 3\0j'\0\83\0\0\83\ 1\0\ 1|\0\0j\v\0|\12\0d\ 1\0\19j\r\0|\15\0d;\0\83\ 2\0\83\ 1\0\ 1|\ 4\0j#\0\83\0\0|\a\0d\11\0\19\19}\16\0|\16\0j$\0|\a\0d\ 2\0\19j%\0|\ 5\0j&\0\83\0\0\83\ 1\0t\1e\0|\a\0d\ 2\0\19\83\ 1\0\83\ 2\0\ 1|\16\0j\16\0|\ 3\0j'\0\83\0\0\83\ 1\0\ 1|\0\0j\v\0|\12\0d\ 1\0\19j\r\0|\15\0d;\0\83\ 2\0\83\ 1\0\ 1|\0\0j\v\0|\12\0d\11\0\19j\r\0|\16\0d;\0\83\ 2\0\83\ 1\0\ 1|\11\0j(\0t\12\0d\ 1\0|\12\0\83\ 3\0}\17\0|\17\0j)\0\83\0\0\ 1|\0\0j\1d\0|\17\0j*\0\83\0\0t\12\0\83\ 2\0\ 1|\0\0j\v\0|\17\0j+\0\83\0\0j\r\0|\15\0d;\0\83\ 2\0\83\ 1\0\ 1t\0\0d\15\0d\17\0d\18\0d\19\0d\e\0d\1c\0g\ 6\0\83\ 1\0}\18\0|\18\0j\10\0|\f\0\83\ 1\0\ 1|\0\0j\v\0|\17\0j\17\0\83\0\0j\r\0|\18\0d;\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1d\0|\17\0j,\0\83\0\0t-\0|\v\0\83\ 1\0\83\ 2\0\ 1|\11\0j(\0t\12\0d\11\0|\12\0\83\ 3\0}\19\0|\19\0j)\0\83\0\0\ 1|\0\0j\1d\0|\19\0j*\0\83\0\0t\12\0\83\ 2\0\ 1|\0\0j\v\0|\19\0j+\0\83\0\0j\r\0|\16\0d;\0\83\ 2\0\83\ 1\0\ 1t\0\0d"\0d#\0d$\0d%\0d)\0g\ 5\0\83\ 1\0}\1a\0|\1a\0j\10\0|\f\0\83\ 1\0\ 1|\0\0j\v\0|\19\0j\17\0\83\0\0j\r\0|\1a\0d;\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1d\0|\19\0j,\0\83\0\0t-\0|\v\0\83\ 1\0\83\ 2\0\ 1|\11\0j(\0t\18\0d\ 1\0|\12\0\83\ 3\0}\e\0|\e\0j)\0\83\0\0\ 1t\0\0d,\0d-\0d.\0d/\0d0\0d2\0d3\0d4\0d8\0d9\0g
++\0\83\ 1\0}\1c\0|\1c\0j\10\0|\f\0\83\ 1\0\ 1|\0\0j\v\0|\e\0j\17\0\83\0\0j\r\0|\1c\0d;\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1d\0|\e\0j,\0\83\0\0t-\0|\v\0\83\ 1\0\83\ 2\0\ 1t
++\0\83\0\0}\b\0t\ e\0\83\0\0}
++\0|\b\0j\ f\0|
++\0\83\ 1\0\ 1dO\0dP\0dQ\0g\ 3\0}\1d\0x\9e\0t.\0|\1d\0\83\ 1\0D]\90\0\\ 2\0}\1e\0}\1f\0t\11\0t\12\0\83\ 1\0}\ e\0|\ e\0j\13\0|\1f\0\8c\0\0\ 1|\r\0|\1e\0d>\0\14\17\0|\ e\0j\14\0\0\83\ 1\0\ 1|\ e\0j\15\0|\ 3\0\83\ 1\0\ 1|\ e\0j\16\0\0\83\ 1\0\ 1|\ e\0j\17\0\83\0\0j\10\0|\f\0\83\ 1\0\ 1t\19\0\83\0\0}\11\0|\11\0j\1a\0|\ e\0\83\ 1\0\ 1|
++\0j\e\0|\11\0\83\ 1\0\ 1qo W|\b\0j\1c\0|\a\0|\ 5\0\83\ 2\0}!\0|\0\0j\1d\0t\1e\0|!\0\83\ 1\0d\ 2\0\83\ 2\0\ 1|!\0d\ 1\0\19}\14\0|\0\0j\1d\0t\1e\0|\14\0\83\ 1\0t\1e\0|\1d\0\83\ 1\0\83\ 2\0\ 1\0t.\0t/\0|\14\0|\1d\0\83\ 2\0\83\ 1\0D]Ô\0\\ 2\0}\1e\0\\ 2\0}"\0}\1f\0|"\0j!\0|\12\0\83\ 1\0}#\0|#\0j)\0\83\0\0\ 1|\0\0j\1d\0|#\0j*\0\83\0\0t\12\0\83\ 2\0\ 1t\0\0d\15\0d\17\0d\18\0d\19\0d\e\0d\1c\0g\ 6\0\83\ 1\0}\18\0|\18\0j\10\0|\f\0\83\ 1\0\ 1|\18\0|\1e\0d>\0\147}\18\0|\0\0j\v\0|#\0j+\0\83\0\0j\r\0|\15\0d;\0\83\ 2\0\83\ 1\0\ 1|\0\0j\v\0|#\0j\17\0\83\0\0j\r\0|\18\0d;\0\83\ 2\0\83\ 1\0\ 1|\0\0j\1d\0|#\0j,\0\83\0\0t-\0|\1f\0\83\ 1\0\83\ 2\0\ 1qg
++Wd\0\0S(R\0\0\0Ni\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0\ 2\0\0i\b\0\0\0i       \0\0\0i\a\0\0\0i\r\0\0\0i\f\0\0\0i\ 6\0\0\0i\ 5\0\0\0i\ e\0\0\0i\v\0\0\0i
++\0\0\0iÿÿÿÿt\ 6\0\0\0Field0g\0\0\0\0\0\800@s\b\0\0\0toto [m]id\0\0\0ie\0\0\0if\0\0\0ig\0\0\0ih\0\0\0ii\0\0\0ij\0\0\0ik\0\0\0il\0\0\0im\0\0\0in\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i,\ 1\0\0i-\ 1\0\0i.\ 1\0\0i/\ 1\0\0i0\ 1\0\0i1\ 1\0\0i2\ 1\0\0i3\ 1\0\0i4\ 1\0\0i5\ 1\0\0i6\ 1\0\0i7\ 1\0\0i8\ 1\0\0i9\ 1\0\0i:\ 1\0\0g\11ê-\81\99\97q=g\0\0\0\0\0\801@g\0\0\0\0\0\802@g\0\0\0\0\0@\8f@(\ 2\0\0\0i\0\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 2\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\ 2\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\ 1\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 2\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 3\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\ 2\0\0\0(\ 3\0\0\0g\0\0\0\0\0\800@i\ 3\0\0\0i\ 4\0\0\0(\ 3\0\0\0g\0\0\0\0\0\800@i\ 3\0\0\0i\ 4\0\0\0(\ 3\0\0\0g\0\0\0\0\0\801@i\ 4\0\0\0i\ 5\0\0\0(\ 3\0\0\0g\0\0\0\0\0\802@i\ 5\0\0\0i\ 6\0\0\0(0\0\0\0RY\0\0\0R[\0\0\0Rc\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0Re\0\0\0R>\0\0\0Rk\0\0\0R[\ 1\0\0R0\0\0\0\0\0\0deduceNodeSubPartFromCellSubPartR1\0\0\0\0\0\0R\\ 1\0\0\ 1\0\0Rw\ 1\0\0R\13\ 1\0\0\0\0\0R{\ 1\0\0\0\0\0RB\0\0\0R)\ 1\0\0R\1c\ 1\0\0\0\0\0R%\ 1\0\0RE\ 3\0\0t\v\0\0\0extractPartR+\0\0\0Ry\0\0\0R)\0\0\0R*\0\0\0R5\ 4\0\0R\99\ 4\0\0Rq\0\0\0t\r\0\0\0renumberNodest\12\0\0\0invertArrayN2O2O2NRÐ\ 1\0\0RC\0\0\0R\97\ 1\0\0Rd\0\0\0\ 1\0\0\0\0\0\0\0\0Rm\0\0\0\0\0\0RS\ 1\0\0($\0\0\0R     \0\0\0R\ 3\ 2\0\0\ 3\0\0\0\0\0R\84\0\0\0R\86\0\0\0R\17\ 3\0\0t\ 3\0\0\0tabRl\ 1\0\0t\ 6\0\0\0fname0Rm\ 1\0\0t\ 2\0\0\0t0t\ 2\0\0\0ict\ 6\0\0\0arr0_0Rä\0\0\0\0\0\0\0\0\0\0\0\0t\ 5\0\0\0mmOutt\a\0\0\0fsPart0t\ 5\0\0\0fmtsPt\ 6\0\0\0m0Partt\ 6\0\0\0m1Partt\ 6\0\0\0f0Partt\a\0\0\0arr0Expt\ 6\0\0\0f1Partt\a\0\0\0arr1Expt\ 6\0\0\0f2Partt\a\0\0\0arr2Expt\ 3\0\0\0tssRî\0\0\0\0\0\0t\ 5\0\0\0myarrt\a\0\0\0fsPart1t\ 5\0\0\0f1tsPt\ 5\0\0\0fPart(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\10\0\0\0testExtractPart1F\15\0\0s\1c\ 1\0\0\0\ 19\ 1\ 6\ 1\ f\0\r\0
++\ 1\19\ 1\19\ 1\19\ 1\19\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 2\ f\0\r\0
++\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1\16\ 1     \ 1
++\0
++\ 1*\ 1\ 6\ 1"\ 1\1f\ 1     \ 1\1f\ 1
++\ 2\ 6\ 1   \0\r\ 1\ 6\ 1   \ 1-\0\r\ 1\f\0\r\0\r\ 1\r\0\r\ 1\f\0\r\07\ 1\r\0\r\0\13\ 1\f\0\r\0@\ 1\r\0\r\0\13\ 1 \0\r\0\r\0\r\ 1\r\ 2\ f\ 2\12\ 1\16\ 1
++\ 1\16\ 1
++\ 1\16\ 21\ 11\ 2\14\0-\0\13\ 1\1d\ 1\14\0-\0\13\ 1\1d\ 1\1d\ 2\15\0
++\ 1\16\ 1\1f\ 1\1e\0\r\ 1\1f\0\1c\ 1\15\0
++\ 1\16\ 1\1f\ 1\e\0\r\ 1\1f\0\1c\ 2\15\0
++\ 1*\0\r\ 1\1f\0\1c\ 2     \0       \0\r\ 1\ f\ 1\19\ 1\f\0\r\ 1\ e\ 1\r\ 1\r\0\r\0\13\ 1   \0\r\0\r\ 1\ 4\ 1\12\ 1\16\ 1
++\ 1\1c\ 1(\ 1\ f\0
++\ 1\16\ 1\1e\0\r\0\ e\ 1\1f\ 1\1f\ 1\1c\ 1\ 4\ 1c\ 1\0\0\0!\0\0\0\10\0\0\0\ 3\0\0\0\f\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0d\ 3\0}\ 3\0d\ 4\0}\ 4\0t\0\0\83\0\0}\ 5\0t\ 1\0d\ 5\0d\ 6\0d\a\0d\b\0d      \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0g\f\0d       \0d\b\0\83\ 3\0}\ 6\0|\ 6\0j\ 2\0d\11\0d\12\0d\13\0g\ 3\0\83\ 1\0\ 1|\ 5\0j\ 3\0|\ 6\0\83\ 1\0\ 1t\ 4\0|\ 4\0d\b\0\83\ 2\0}\a\0|\a\0j\ 5\0\83\0\0\ 1|\a\0j\ 3\0|\ 6\0\83\ 1\0\ 1|\a\0j\ 6\0t\a\0d\14\0d\ 5\0d\ 6\0d\b\0g\ 4\0\83\ 2\0\ 1|\a\0j\ 6\0t\a\0d       \0d\v\0d\f\0d\ e\0g\ 4\0\83\ 2\0\ 1|\a\0j\ 6\0t\b\0d\ f\0d\15\0d\a\0d
++\0d\r\0d\10\0g\ 6\0\83\ 2\0\ 1|\a\0j\ 6\0t\b\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0g\ 6\0\83\ 2\0\ 1|\a\0j\ 6\0t\b\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0g\ 6\0\83\ 2\0\ 1|\a\0|\ 5\0d\14\0<|\ 5\0j      \0d\14\0t
++\0d\ 5\0d\ 6\0d\b\0d   \0d\v\0g\ 5\0\83\ 1\0\83\ 2\0\ 1|\ 5\0j\v\0d\14\0t
++\0d
++\0d\r\0d\10\0d\16\0d\17\0g\ 5\0\83\ 1\0\83\ 2\0\ 1t\ 4\0|\ 4\0d\ 6\0\83\ 2\0}\b\0|\b\0j\ 5\0\83\0\0\ 1|\b\0j\ 3\0|\ 6\0\83\ 1\0\ 1|\b\0j\ 6\0t\f\0d\14\0d\ 5\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\b\0j\ 6\0t\f\0d\b\0d   \0d\v\0g\ 3\0\83\ 2\0\ 1|\b\0j\ 6\0t\r\0d\f\0d\ e\0d\ f\0d\15\0g\ 4\0\83\ 2\0\ 1|\b\0j\ 6\0t\r\0d\a\0d
++\0d\r\0d\10\0g\ 4\0\83\ 2\0\ 1|\b\0j\ 6\0t\r\0d\16\0d\17\0d\18\0d\19\0g\ 4\0\83\ 2\0\ 1|\b\0j\ 6\0t\r\0d\1a\0d\e\0d\1c\0d\1d\0g\ 4\0\83\ 2\0\ 1|\b\0|\ 5\0d"\0<|\ 5\0j  \0d"\0t
++\0d\f\0d\ e\0d\ f\0d\15\0d\a\0d
++\0g\ 6\0\83\ 1\0\83\ 2\0\ 1|\ 5\0j\v\0d"\0t
++\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0g\ 6\0\83\ 1\0\83\ 2\0\ 1x+\0t\ e\0d\ 5\0d\a\0\83\ 2\0D]\1a\0}     \0|\ 5\0j\ f\0d#\0|     \0\16|     \0\83\ 2\0\ 1\ 2W|\ 5\0j\ f\0d$\0d\14\0\83\ 2\0\ 1|\ 5\0j\ f\0d%\0d&\0\83\ 2\0\ 1|\ 5\0j\10\0d'\0d(\0d)\0g\ 2\0\83\ 2\0\ 1|\ 5\0j\10\0d*\0d(\0d)\0g\ 2\0\83\ 2\0\ 1|\ 5\0j       \0d\ 5\0t
++\0d\r\0d\10\0d\16\0d\17\0g\ 4\0\83\ 1\0\83\ 2\0\ 1|\ 5\0j\v\0d\ 5\0t
++\0d\1e\0d\1f\0\0d!\0g\ 4\0\83\ 1\0\83\ 2\0\ 1t\0\0\83\0\0}
++\0t\ 1\0d\15\0d\a\0d+\0d
++\0d\r\0d,\0d\10\0d\16\0d-\0d\17\0d\18\0d.\0d\19\0d\1a\0d/\0g\ f\0d\v\0d\b\0\83\ 3\0}\ 6\0|\ 6\0j\ 2\0d\11\0d\12\0d\13\0g\ 3\0\83\ 1\0\ 1|
++\0j\ 3\0|\ 6\0\83\ 1\0\ 1t\ 4\0|\ 4\0d\b\0\83\ 2\0}\v\0|\v\0j\ 5\0\83\0\0\ 1|\v\0j\ 3\0|\ 6\0\83\ 1\0\ 1|\v\0j\ 6\0t\a\0d&\0d0\0d1\0d2\0g\ 4\0\83\ 2\0\ 1|\v\0j\ 6\0t\a\0d3\0d4\0d5\0d6\0g\ 4\0\83\ 2\0\ 1|\v\0j\ 6\0t\a\0d7\0d8\0d9\0d:\0g\ 4\0\83\ 2\0\ 1|\v\0j\ 6\0t\b\0d;\0d<\0d=\0d>\0d?\0d@\0g\ 6\0\83\ 2\0\ 1|\v\0|
++\0d\14\0<|
++\0j    \0d\14\0t
++\0dA\0dB\0dC\0dD\0g\ 4\0\83\ 1\0\83\ 2\0\ 1|
++\0j\v\0d\14\0t
++\0dE\0dF\0dG\0dH\0g\ 4\0\83\ 1\0\83\ 2\0\ 1t\ 4\0|\ 4\0d\ 6\0\83\ 2\0}\f\0|\f\0j\ 5\0\83\0\0\ 1|\f\0j\ 3\0|\ 6\0\83\ 1\0\ 1|\f\0j\ 6\0t\f\0d&\0d0\0d1\0g\ 3\0\83\ 2\0\ 1|\f\0j\ 6\0t\f\0d2\0d3\0d4\0g\ 3\0\83\ 2\0\ 1|\f\0j\ 6\0t\f\0d5\0d6\0d7\0g\ 3\0\83\ 2\0\ 1|\f\0j\ 6\0t\r\0d8\0d9\0d:\0d;\0g\ 4\0\83\ 2\0\ 1|\f\0j\ 6\0t\r\0d<\0d=\0d>\0d?\0g\ 4\0\83\ 2\0\ 1|\f\0j\ 6\0t\r\0d@\0dI\0dJ\0dK\0g\ 4\0\83\ 2\0\ 1|\f\0j\ 6\0t\r\0dL\0dM\0dN\0dO\0g\ 4\0\83\ 2\0\ 1|\f\0j\ 6\0t\r\0dP\0dQ\0dR\0dS\0g\ 4\0\83\ 2\0\ 1|\f\0|
++\0d"\0<|
++\0j    \0d"\0t
++\0dT\0dU\0dV\0dW\0dX\0dY\0dZ\0d[\0g\b\0\83\ 1\0\83\ 2\0\ 1|
++\0j\v\0d"\0t
++\0d\\0d]\0d^\0d_\0d`\0da\0db\0dc\0g\b\0\83\ 1\0\83\ 2\0\ 1x/\0t\ e\0d\ 5\0d\r\0\83\ 2\0D]\1e\0}       \0|
++\0j\ f\0dd\0|      \0\16|     \0d+\0\17\83\ 2\0\ 1q:\ 6W|
++\0j\ f\0d%\0d&\0\83\ 2\0\ 1|
++\0j\ f\0d$\0d\14\0\83\ 2\0\ 1|
++\0j\10\0d'\0de\0df\0g\ 2\0\83\ 2\0\ 1|
++\0j\10\0dg\0dh\0di\0g\ 2\0\83\ 2\0\ 1|
++\0j    \0d\ 5\0t
++\0d;\0d<\0d=\0d>\0d?\0g\ 5\0\83\ 1\0\83\ 2\0\ 1|
++\0j\v\0d\ 5\0t
++\0dM\0dN\0dO\0dP\0dQ\0g\ 5\0\83\ 1\0\83\ 2\0\ 1t\0\0j\11\0|\ 5\0|
++\0g\ 2\0\83\ 1\0}\r\0dj\0\84\0\0\89\0\0\88\0\0\88\a\0|\r\0\83\ 2\0\ 1dk\0}\ e\0d\91\0}\ f\0d\92\0\89\b\0dn\0do\0g\ 2\0}\10\0t\12\0\83\0\0}\11\0t\13\0\83\0\0}\12\0t\14\0t\15\0\83\ 1\0\89\ 1\0\88\ 1\0j\16\0|\ 5\0d\14\0\19\83\ 1\0\ 1\88\ 1\0j\17\0|\ e\0\83\ 1\0\ 1t\ 1\0d\93\0d\94\0d\95\0d\96\0d\97\0g\ 5\0\83\ 1\0}\13\0|\13\0j\ 2\0|\10\0\83\ 1\0\ 1\88\ 1\0j\18\0|\13\0\83\ 1\0\ 1\88\ 1\0j\19\0|\ f\0\8c\0\0\ 1\88\ 1\0j\1a\0dp\0\83\ 1\0\ 1\88\ 1\0j\e\0\83\0\0\ 1|\12\0j\1c\0\88\ 1\0\83\ 1\0\ 1t\14\0t\15\0\83\ 1\0\89\ 2\0\88\ 2\0j\16\0|\ 5\0d"\0\19\83\ 1\0\ 1\88\ 2\0j\17\0|\ e\0\83\ 1\0\ 1t\ 1\0d\98\0d\99\0d\9a\0d\9b\0d\9c\0d\9d\0g\ 6\0\83\ 1\0}\14\0|\14\0j\ 2\0|\10\0\83\ 1\0\ 1\88\ 2\0j\18\0|\14\0\83\ 1\0\ 1\88\ 2\0j\19\0|\ f\0\8c\0\0\ 1\88\ 2\0j\1a\0dp\0\83\ 1\0\ 1\88\ 2\0j\e\0\83\0\0\ 1|\12\0j\1c\0\88\ 2\0\83\ 1\0\ 1t\14\0t\1d\0\83\ 1\0\89\ 3\0\88\ 3\0j\16\0|\ 5\0d\14\0\19\83\ 1\0\ 1\88\ 3\0j\17\0|\ e\0\83\ 1\0\ 1t\ 1\0d\9e\0d\9f\0\0\0g\ 4\0\83\ 1\0}\15\0|\15\0j\ 2\0|\10\0\83\ 1\0\ 1\88\ 3\0j\18\0|\15\0\83\ 1\0\ 1\88\ 3\0j\19\0|\ f\0\8c\0\0\ 1\88\ 3\0j\1a\0dp\0\83\ 1\0\ 1\88\ 3\0j\e\0\83\0\0\ 1|\12\0j\1c\0\88\ 3\0\83\ 1\0\ 1|\11\0j\1e\0|\12\0\83\ 1\0\ 1|\12\0j\1f\0\83\0\0}\16\0|\16\0j\19\0\88\b\0d\ 5\0\19\88\b\0d\ 6\0\19\88\b\0d\14\0\19\83\ 3\0\ 1|\16\0\0\83\0\0\ 4\1edq\07\ 2(|\11\0j\1e\0|\16\0\83\ 1\0\ 1t\12\0\83\0\0}\17\0t\13\0\83\0\0}\18\0t\14\0t\15\0\83\ 1\0\89\ 4\0\88\ 4\0j\16\0|
++\0d\14\0\19\83\ 1\0\ 1\88\ 4\0j\17\0|\ e\0\83\ 1\0\ 1t\ 1\0\0\0\0\0g\ 4\0\83\ 1\0}\19\0|\19\0j\ 2\0|\10\0\83\ 1\0\ 1\88\ 4\0j\18\0|\19\0\83\ 1\0\ 1\88\ 4\0j\19\0|\ f\0\8c\0\0\ 1\88\ 4\0j\1a\0dp\0\83\ 1\0\ 1\88\ 4\0j\e\0\83\0\0\ 1|\18\0j\1c\0\88\ 4\0\83\ 1\0\ 1t\14\0t\15\0\83\ 1\0\89\ 5\0\88\ 5\0j\16\0|
++\0d"\0\19\83\ 1\0\ 1\88\ 5\0j\17\0|\ e\0\83\ 1\0\ 1t\ 1\0\0\0\0\0\0\0\0\0g\b\0\83\ 1\0}\1a\0|\1a\0j\ 2\0|\10\0\83\ 1\0\ 1\88\ 5\0j\18\0|\1a\0\83\ 1\0\ 1\88\ 5\0j\19\0|\ f\0\8c\0\0\ 1\88\ 5\0j\1a\0dp\0\83\ 1\0\ 1\88\ 5\0j\e\0\83\0\0\ 1|\18\0j\1c\0\88\ 5\0\83\ 1\0\ 1t\14\0t\1d\0\83\ 1\0\89\ 6\0\88\ 6\0j\16\0|
++\0d\14\0\19\83\ 1\0\ 1\88\ 6\0j\17\0|\ e\0\83\ 1\0\ 1t\ 1\0\0\0\0\0\0g\ 5\0\83\ 1\0}\e\0|\e\0j\ 2\0|\10\0\83\ 1\0\ 1\88\ 6\0j\18\0|\e\0\83\ 1\0\ 1\88\ 6\0j\19\0|\ f\0\8c\0\0\ 1\88\ 6\0j\1a\0dp\0\83\ 1\0\ 1\88\ 6\0j\e\0\83\0\0\ 1|\18\0j\1c\0\88\ 6\0\83\ 1\0\ 1|\17\0j\1e\0|\18\0\83\ 1\0\ 1|\18\0j\1f\0\83\0\0}\1c\0|\1c\0j\19\0\88\b\0d\ 5\0\19\88\b\0d\ 6\0\19\88\b\0d\14\0\19\83\ 3\0\ 1|\1c\0\0\83\0\0\ 4\1edq\07\ 2(|\17\0j\1e\0|\1c\0\83\ 1\0\ 1t!\0\83\0\0}\1d\0|\1d\0j"\0t#\0\83\0\0\83\ 1\0\ 1|\1d\0j$\0\83\0\0j%\0|\ 5\0\83\ 1\0\ 1|\1d\0j&\0t'\0\83\0\0\83\ 1\0\ 1|\1d\0j(\0\83\0\0j)\0|\11\0\83\ 1\0\ 1t!\0\83\0\0}\1e\0|\1e\0j"\0t#\0\83\0\0\83\ 1\0\ 1|\1e\0j$\0\83\0\0j%\0|
++\0\83\ 1\0\ 1|\1e\0j&\0t'\0\83\0\0\83\ 1\0\ 1|\1e\0j(\0\83\0\0j)\0|\17\0\83\ 1\0\ 1t!\0j\11\0|\1d\0|\1e\0g\ 2\0\83\ 1\0}\1f\0\87\0\0\87\ 1\0\87\ 2\0\87\ 3\0\87\ 4\0\87\ 5\0\87\ 6\0\87\a\0\87\b\0f     \0d\8f\0\86\0\0\0\0\88\a\0|\1f\0\83\ 2\0\ 1|\1d\0j*\0|\ 1\0d\ 6\0\83\ 2\0\ 1|\1e\0j*\0|\ 2\0d\ 6\0\83\ 2\0\ 1t!\0j\11\0t!\0|\ 1\0\83\ 1\0t!\0|\ 2\0\83\ 1\0g\ 2\0\83\ 1\0}\1f\0\0\88\a\0|\1f\0\83\ 2\0\ 1d\90\0S(³\0\0\0sj\0\0\0 Testing of MEDFileData::Aggregate and MEDFileUMesh::Aggregate and MEDFileUMesh::getAllDistributionOfType s\ f\0\0\0Pyfile106_1.meds\ f\0\0\0Pyfile106_2.meds\ f\0\0\0Pyfile106_3.medR \ 2\0\0i\ 1\0\0\0i\ 2\0\0\0i
++\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\v\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\f\0\0\0i\a\0\0\0i\b\0\0\0i\r\0\0\0s\ 6\0\0\0aa [m]s\b\0\0\0bbb [kg]s     \0\0\0cccc [MW]i\0\0\0\0i      \0\0\0i\ e\0\0\0i\ f\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\19\0\0\0iÿÿÿÿs\ 3\0\0\0F%dR\9a\ 2\0\0t\ 2\0\0\0H1id\0\0\0t\ 5\0\0\0myGRPR\85\ 1\0\0t\ 2\0\0\0F6t\ 6\0\0\0myGRP1i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0ie\0\0\0if\0\0\0ig\0\0\0ih\0\0\0ii\0\0\0ij\0\0\0ik\0\0\0il\0\0\0im\0\0\0in\0\0\0io\0\0\0ip\0\0\0iq\0\0\0ir\0\0\0is\0\0\0it\0\0\0iu\0\0\0i(\0\0\0i)\0\0\0i*\0\0\0i+\0\0\0i2\0\0\0i3\0\0\0i4\0\0\0i5\0\0\0iv\0\0\0iw\0\0\0ix\0\0\0iy\0\0\0iz\0\0\0i{\0\0\0i|\0\0\0i}\0\0\0i~\0\0\0i\7f\0\0\0i\80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i,\ 1\0\0i-\ 1\0\0i.\ 1\0\0i/\ 1\0\0i0\ 1\0\0i1\ 1\0\0i2\ 1\0\0i3\ 1\0\0s\ 3\0\0\0G%dRW\0\0\0t\ 2\0\0\0G6t\ 6\0\0\0myGRP2t\ 2\0\0\0G4t\ 2\0\0\0G7c\ 2\0\0\0\ 5\0\0\0D\0\0\0S\0\0\0\ 4\0\0t\0\0d~\0d\7f\0d\80\0d\81\0d\82\0d\83\0d\84\0d\85\0d\86\0g   \0\83\ 1\0}\ 2\0|\ 2\0j\ 1\0d\18\0d\19\0d\1a\0g\ 3\0\83\ 1\0\ 1|\0\0j\ 2\0|\ 1\0j\ 3\0\83\0\0j\ 4\0|\ 2\0d\e\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ 2\0|\ 1\0d\1c\0\19j\ 5\0\83\0\0j\ 4\0t\ 6\0d\10\0d\1c\0d\ 1\0d\ 2\0d\ 4\0d\10\0d\ 5\0d\a\0d\b\0d
++\0d\10\0d\1d\0d\1e\0d\1f\0\0d\10\0d!\0d"\0d#\0d$\0d\10\0d%\0d&\0d'\0d(\0d\13\0d\v\0d\r\0d\ 3\0d\ 6\0d        \0d\f\0d\13\0d\10\0d\12\0d\13\0d\15\0d\16\0d)\0d\13\0d*\0d+\0d,\0d-\0d.\0d/\0d\13\0d0\0d1\0d2\0d3\0d4\0d5\0g5\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 2\0|\ 1\0d\1c\0\19j\a\0\83\0\0j\ 4\0t\ 6\0d\1c\0d\a\0d\ 3\0d\12\0d*\0d/\0d\11\0d6\0d7\0d8\0g
++\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 2\0|\ 1\0d9\0\19j\ 5\0\83\0\0j\ 4\0t\ 6\0d\ 4\0d\1c\0d\ 1\0d\ 2\0d\ 4\0d\ 4\0d\ 5\0d\a\0d\ 4\0d\1d\0d\1e\0d\1f\0d\ 4\0\0d!\0d"\0d\ 4\0d#\0d$\0d%\0d\ 5\0d\b\0d
++\0d\v\0d\r\0d\ 5\0d\ 3\0d\ 6\0d     \0d\f\0d\ 5\0d\10\0d\12\0d\13\0d\15\0d\ 5\0d\16\0d)\0d*\0d+\0d\ 5\0d&\0d'\0d(\0d0\0d\ 5\0d1\0d2\0d3\0d4\0d\ 5\0d5\0d:\0d;\0d<\0d\ 5\0d=\0d>\0d?\0d@\0d\ 5\0dA\0dB\0dC\0dD\0gA\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 2\0|\ 1\0d9\0\19j\a\0\83\0\0j\ 4\0t\ 6\0d\1c\0d\ 5\0d\v\0d   \0d\13\0d*\0d/\0d\ e\0dE\0dF\0dG\0dH\0dI\0dJ\0dK\0g\ f\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 2\0|\ 1\0j\b\0d\1c\0\83\ 1\0j\ 4\0t\ 6\0d\ 1\0d\ 2\0dF\0dL\0dM\0d\ 4\0d\ 5\0d\a\0dN\0g     \0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 2\0|\ 1\0j   \0d\1c\0\83\ 1\0j\ 4\0t\ 6\0d\ 6\0d       \0dH\0dO\0dP\0d\f\0d\10\0d\12\0d8\0\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 2\0|\ 1\0j\b\0d9\0\83\ 1\0j\ 4\0t\ 6\0d\b\0d
++\0dQ\0dR\0dS\0d\v\0d\r\0d\ 3\0d\ 6\0dT\0dU\0dV\0dW\0dX\0g\ e\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 2\0|\ 1\0j  \0d9\0\83\ 1\0j\ 4\0t\ 6\0d\13\0d\15\0dY\0dZ\0d[\0d\16\0d)\0d*\0d+\0d\\0d]\0d^\0d_\0d`\0g\ e\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1d\87\0d\88\0d\89\0d\8a\0d\8b\0d\8c\0d\8d\0d\8e\0d\8f\0d\90\0d\91\0d\92\0d\93\0d\94\0d\95\0d\96\0d\97\0d\98\0d\99\0d\9a\0d\9b\0d\9c\0g\16\0}\ 3\0|\0\0j
++\0t\v\0|\ 1\0j\f\0\83\0\0\83\ 1\0t\v\0g\0\0|\ 3\0D]\10\0}\ 4\0|\ 4\0d\1c\0\19^\ 2\0q&\ 4\83\ 1\0\83\ 2\0\ 1|\0\0j
++\0t\v\0g\0\0|\ 1\0j\f\0\83\0\0D]\15\0}\ 4\0|\ 1\0j\r\0|\ 4\0\83\ 1\0^\ 2\0qV\ 4\83\ 1\0t\v\0g\0\0|\ 3\0D]\10\0}\ 4\0|\ 4\0d\ 1\0\19^\ 2\0q{\ 4\83\ 1\0\83\ 2\0\ 1|\0\0j
++\0|\ 1\0j\ e\0\83\0\0d\9d\0\83\ 2\0\ 1|\0\0j
++\0|\ 1\0j\ f\0\83\0\0t\10\0d\a\0f\ 2\0t\11\0d\r\0f\ 2\0t\12\0d\a\0f\ 2\0t\13\0d\ 5\0f\ 2\0t\14\0d\r\0f\ 2\0g\ 5\0\83\ 2\0\ 1d\0\0S(\9e\0\0\0Ni\ 1\0\0\0i\ 2\0\0\0i
++\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\v\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\f\0\0\0i\a\0\0\0i\b\0\0\0i\r\0\0\0i     \0\0\0i\1e\0\0\0i\1f\0\0\0i\ e\0\0\0\0\0\0i\ f\0\0\0i\10\0\0\0i!\0\0\0i\11\0\0\0i\12\0\0\0i"\0\0\0s\ 6\0\0\0aa [m]s\b\0\0\0bbb [kg]s  \0\0\0cccc [MW]g\11ê-\81\99\97q=i\0\0\0\0ih\0\0\0ii\0\0\0ij\0\0\0ik\0\0\0il\0\0\0im\0\0\0in\0\0\0io\0\0\0ip\0\0\0iq\0\0\0ir\0\0\0is\0\0\0i\13\0\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\19\0\0\0it\0\0\0iu\0\0\0iv\0\0\0iw\0\0\0ix\0\0\0iy\0\0\0i'\0\0\0i.\0\0\0i5\0\0\0iÿÿÿÿiz\0\0\0i{\0\0\0i|\0\0\0i}\0\0\0i~\0\0\0i\7f\0\0\0i\80\0\0\0i\81\0\0\0i\82\0\0\0i\83\0\0\0i\84\0\0\0i#\0\0\0i(\0\0\0i-\0\0\0i2\0\0\0i7\0\0\0i<\0\0\0iA\0\0\0i)\0\0\0i*\0\0\0i+\0\0\0i3\0\0\0i4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i,\ 1\0\0i-\ 1\0\0i.\ 1\0\0i/\ 1\0\0i0\ 1\0\0i1\ 1\0\0i2\ 1\0\0i3\ 1\0\0R\9a\ 2\0\0Rr\ 1\0\0R\85\ 1\0\0t\ 2\0\0\0F3t\ 2\0\0\0F4t\ 2\0\0\0F5Rÿ\ 4\0\0t\ 2\0\0\0F7t\ 2\0\0\0F8t\ 2\0\0\0F9RV\0\0\0t\ 3\0\0\0G10t\ 3\0\0\0G11RW\0\0\0t\ 2\0\0\0G3R\ 3\ 5\0\0t\ 2\0\0\0G5R\ 1\ 5\0\0i$\0\0\0R\ 4\ 5\0\0i%\0\0\0t\ 2\0\0\0G8i&\0\0\0t\ 2\0\0\0G9Rý\ 4\0\0id\0\0\0\ 4\0\0R\0\ 5\0\0R\ 2\ 5\0\0(\ 3\0\0\0i\ 1\0\0\0i\ 2\0\0\0i
++\0\0\0(\ 3\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\v\0\0\0(\ 3\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\f\0\0\0(\ 3\0\0\0i\a\0\0\0i\b\0\0\0i\r\0\0\0(\ 3\0\0\0\0\0\0i
++\0\0\0i\1e\0\0\0(\ 3\0\0\0i\v\0\0\0i\f\0\0\0i\1f\0\0\0(\ 3\0\0\0i\r\0\0\0i\ e\0\0\0\0\0\0(\ 3\0\0\0i\ f\0\0\0i\10\0\0\0i!\0\0\0(\ 3\0\0\0i\11\0\0\0i\12\0\0\0i"\0\0\0(\ 2\0\0\0s\f\0\0\0FAMILLE_ZEROi\0\0\0\0(\ 2\0\0\0s\ 2\0\0\0F1i\ 1\0\0\0(\ 2\0\0\0s\ 2\0\0\0F2i\ 2\0\0\0(\ 2\0\0\0R\ 5\ 5\0\0i\ 3\0\0\0(\ 2\0\0\0R\ 6\ 5\0\0i\ 4\0\0\0(\ 2\0\0\0R\a\ 5\0\0i\ 5\0\0\0(\ 2\0\0\0Rÿ\ 4\0\0i\ 6\0\0\0(\ 2\0\0\0R\b\ 5\0\0i\a\0\0\0(\ 2\0\0\0R        \ 5\0\0i\b\0\0\0(\ 2\0\0\0R
++\ 5\0\0i  \0\0\0(\ 2\0\0\0s\ 2\0\0\0G1i\1f\0\0\0(\ 2\0\0\0R\v\ 5\0\0i(\0\0\0(\ 2\0\0\0R\f\ 5\0\0i)\0\0\0(\ 2\0\0\0s\ 2\0\0\0G2i \0\0\0(\ 2\0\0\0R\r\ 5\0\0i!\0\0\0(\ 2\0\0\0R\ 3\ 5\0\0i"\0\0\0(\ 2\0\0\0R\ e\ 5\0\0i#\0\0\0(\ 2\0\0\0R\ 1\ 5\0\0i$\0\0\0(\ 2\0\0\0R\ 4\ 5\0\0i%\0\0\0(\ 2\0\0\0R\ f\ 5\0\0i&\0\0\0(\ 2\0\0\0R\10\ 5\0\0i'\0\0\0(\ 2\0\0\0\ 4\0\0id\0\0\0(\ 3\0\0\0\ 4\0\0R\0\ 5\0\0R\ 2\ 5\0\0(\15\0\0\0RY\0\0\0\ 1\0\0R0\0\0\0\0\0\0R1\0\0\0Rv\0\0\0Rk\0\0\0Rw\0\0\0R\9e\0\0\0R\8c\ 2\0\0R+\0\0\0R\ 1\ 2\0\0\ 1\0\0R)\ 4\0\0\ 1\0\0t\19\0\0\0getAllDistributionOfTypesR_\0\0\0R`\0\0\0\ 3\0\0\ 3\0\0\ 3\0\0(\ 5\0\0\0t\ 6\0\0\0testerR\86\0\0\0t\ 6\0\0\0cooExpt \0\0\0refFamIdsRü\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt    \0\0\0CheckMesh\0\16\0\0s"\0\0\0\0\ 1'\0\16\ 1\1f\ 1Å\ 1D\ 1é\ 1S\ 1@\ 1@\ 1O\ 1O\ 1H\ 19\ 1U\ 1\16\ 1C\ 1t\a\0\0\0zeFieldgffffff\ 2@gffffff\16@s\ 6\0\0\0dd [W]s\b\0\0\0eee [kA]R­\0\0\0\a\0\0i\96\0\0\0i\97\0\0\0i\98\0\0\0i\99\0\0\0i6\0\0\0i\9a\0\0\0i7\0\0\0i\9b\0\0\0i8\0\0\0i\9c\0\0\0i9\0\0\0i\9d\0\0\0i\9e\0\0\0i;\0\0\0i\9f\0\0\0i<\0\0\0\0\0\0i=\0\0\0\0\0\0i>\0\0\0\0\0\0i?\0\0\0\0\0\0i@\0\0\0\0\0\0iA\0\0\0\0\0\0iB\0\0\0\0\0\0c\ 2\0\0\0\f\0\0\0\ 5\0\0\0\13\0\0\0\ 3\0\0|\0\0j\0\0t\ 1\0|\ 1\0j\ 2\0\83\0\0\83\ 1\0d\ 1\0\83\ 2\0\ 1|\0\0j\0\0t\ 1\0|\ 1\0j\ 3\0\83\0\0\83\ 1\0d\ 1\0\83\ 2\0\ 1\88\0\0\88\a\0|\ 1\0j\ 2\0\83\0\0d\ 2\0\19\83\ 2\0\ 1|\0\0j\0\0t\ 1\0|\ 1\0j\ 3\0\83\0\0d\ 2\0\19\83\ 1\0d\ 3\0\83\ 2\0\ 1|\ 1\0j\ 3\0\83\0\0d\ 2\0\19d\ 2\0\19}\ 2\0|\ 2\0j\ 4\0t\ 5\0d\ 2\0|\ 1\0j\ 2\0\83\0\0d\ 2\0\19\83\ 3\0}\ 3\0t\ 6\0j\a\0\88\ 1\0\88\ 4\0g\ 2\0\83\ 1\0}\ 4\0|\ 4\0j\b\0\83\0\0\0\83\0\0j
++\0\83\0\0}\ 5\0|\ 4\0j\v\0|\ 5\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0|\ 3\0d\ 4\0d\ 4\0\83\ 3\0\83\ 1\0\ 1|\ 2\0j\ 4\0t\ 5\0d\ 5\0|\ 1\0j\ 2\0\83\0\0d\ 2\0\19\83\ 3\0}\ 6\0t\ 6\0j\a\0\88\ 2\0\88\ 5\0g\ 2\0\83\ 1\0}\ 4\0|\ 4\0j\b\0\83\0\0j        \0\83\0\0j
++\0\83\0\0}\ 5\0|\ 4\0j\v\0|\ 5\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0|\ 6\0d\ 4\0d\ 4\0\83\ 3\0\83\ 1\0\ 1|\ 2\0j\ 4\0t\ e\0d\ 2\0|\ 1\0j\ 2\0\83\0\0d\ 2\0\19\83\ 3\0}\a\0t\ 6\0j\a\0\88\ 3\0\88\ 6\0g\ 2\0\83\ 1\0}\ 4\0|\ 4\0j\b\0\83\0\0j        \0\83\0\0j
++\0\83\0\0}\ 5\0|\ 4\0j\v\0|\ 5\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0|\a\0d\ 4\0d\ 4\0\83\ 3\0\83\ 1\0\ 1|\ 1\0j\ 3\0\83\0\0d\ 2\0\19d\ 1\0\19}\b\0|\b\0j\ 4\0t\ 5\0d\ 2\0|\ 1\0j\ 2\0\83\0\0d\ 2\0\19\83\ 3\0}     \0t\ 6\0j\a\0\88\ 1\0\88\ 4\0g\ 2\0\83\ 1\0}\ 4\0|\ 4\0j\b\0\83\0\0j        \0\83\0\0j
++\0\83\0\0}\ 5\0|\ 4\0j\v\0|\ 5\0\83\ 1\0\ 1|\ 4\0j\ f\0\88\b\0\8c\0\0\ 1|\ 4\0j\10\0\83\0\0\ 4\1ed\ 6\07\ 2(|\0\0j\f\0|\ 4\0j\r\0|       \0d\ 4\0d\ 4\0\83\ 3\0\83\ 1\0\ 1|\b\0j\ 4\0t\ 5\0d\ 5\0|\ 1\0j\ 2\0\83\0\0d\ 2\0\19\83\ 3\0}
++\0t\ 6\0j\a\0\88\ 2\0\88\ 5\0g\ 2\0\83\ 1\0}\ 4\0|\ 4\0j\b\0\83\0\0j      \0\83\0\0j
++\0\83\0\0}\ 5\0|\ 4\0j\v\0|\ 5\0\83\ 1\0\ 1|\ 4\0j\ f\0\88\b\0\8c\0\0\ 1|\ 4\0j\10\0\83\0\0\ 4\1ed\ 6\07\ 2(|\0\0j\f\0|\ 4\0j\r\0|
++\0d\ 4\0d\ 4\0\83\ 3\0\83\ 1\0\ 1|\b\0j\ 4\0t\ e\0d\ 2\0|\ 1\0j\ 2\0\83\0\0d\ 2\0\19\83\ 3\0}\v\0t\ 6\0j\a\0\88\ 3\0\88\ 6\0g\ 2\0\83\ 1\0}\ 4\0|\ 4\0j\b\0\83\0\0j  \0\83\0\0j
++\0\83\0\0}\ 5\0|\ 4\0j\v\0|\ 5\0\83\ 1\0\ 1|\ 4\0j\ f\0\88\b\0\8c\0\0\ 1|\ 4\0j\10\0\83\0\0\ 4\1ed\ 6\07\ 2(|\0\0j\f\0|\ 4\0j\r\0|\v\0d\ 4\0d\ 4\0\83\ 3\0\83\ 1\0\ 1d\0\0S(\a\0\0\0Ni\ 1\0\0\0i\0\0\0\0i\ 2\0\0\0g\11ê-\81\99\97q=iÿÿÿÿiÐ\a\0\0(\11\0\0\0R+\0\0\0Ry\0\0\0RT\ 1\0\0Ra\ 1\0\0R\97\ 1\0\0R\13\ 1\0\0Rw\ 1\0\0t\v\0\0\0MergeFieldsR¹\0\0\0Rq\0\0\0R\9c\ 1\0\0R\88\ 1\0\0R0\0\0\0R1\0\0\0R\1c\ 1\0\0\0\0\0R)\ 1\0\0(\f\0\0\0R\12\ 5\0\0R>\ 2\0\0t\ 4\0\0\0zeF1t\ 6\0\0\0zeF1_1R0\ 2\0\0R\8f\ 2\0\0t\ 6\0\0\0zeF1_2t\ 6\0\0\0zeF1_3t\ 4\0\0\0zeF2t\ 6\0\0\0zeF2_1t\ 6\0\0\0zeF2_2t\ 6\0\0\0zeF2_3( \0\0\0R\15\ 5\0\0t\ 4\0\0\0f1_1t\ 4\0\0\0f1_2t\ 4\0\0\0f1_3t\ 4\0\0\0f2_1t\ 4\0\0\0f2_2t\ 4\0\0\0f2_3R \0\0\0t\ 2\0\0\0t2(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\b\0\0\0CheckMFD\\16\0\0sT\0\0\0\0\ 1\1c\ 1\1c\ 1\17\ 1 \ 1\14\ 1\1f\ 1\15\ 1\18\ 1\r\ 1\1c\ 1\1f\ 1\15\ 1\18\ 1\r\ 1\1c\ 1\1f\ 1\15\ 1\18\ 1\r\ 1\1c\ 2\14\ 1\1f\ 1\15\ 1\18\ 1\r\ 1\r\0\11\ 1\1c\ 1\1f\ 1\15\ 1\18\ 1\r\ 1\r\0\11\ 1\1c\ 1\1f\ 1\15\ 1\18\ 1\r\ 1\r\0\11\ 1N(\ 3\0\0\0gffffff\ 2@i\ 3\0\0\0i\ 5\0\0\0(\ 3\0\0\0gffffff\16@i\a\0\0\0i\f\0\0\0(\ 2\0\0\0i
++\0\0\0in\0\0\0(\ 2\0\0\0i\v\0\0\0io\0\0\0(\ 2\0\0\0i\f\0\0\0ip\0\0\0(\ 2\0\0\0i\r\0\0\0iq\0\0\0(\ 2\0\0\0i\ e\0\0\0ir\0\0\0(\ 2\0\0\0i\ f\0\0\0is\0\0\0(\ 2\0\0\0i\10\0\0\0it\0\0\0(\ 2\0\0\0i\11\0\0\0iu\0\0\0(\ 2\0\0\0i\12\0\0\0iv\0\0\0(\ 2\0\0\0i\13\0\0\0iw\0\0\0(\ 2\0\0\0i\14\0\0\0ix\0\0\0(\ 2\0\0\0i\15\0\0\0iy\0\0\0(\ 2\0\0\0i\16\0\0\0iz\0\0\0(\ 2\0\0\0i\17\0\0\0i{\0\0\0(\ 2\0\0\0i\18\0\0\0i|\0\0\0(\ 2\0\0\0i2\0\0\0i\96\0\0\0(\ 2\0\0\0i3\0\0\0i\97\0\0\0(\ 2\0\0\0i4\0\0\0i\98\0\0\0(\ 2\0\0\0i5\0\0\0i\99\0\0\0(\ 2\0\0\0i6\0\0\0i\9a\0\0\0(\ 2\0\0\0i7\0\0\0i\9b\0\0\0(\ 2\0\0\0i8\0\0\0i\9c\0\0\0(\ 2\0\0\0i9\0\0\0i\9d\0\0\0(\ 2\0\0\0i\9e\0\0\0i\9e\0\0\0(\ 2\0\0\0i;\0\0\0i\9f\0\0\0(\ 2\0\0\0i<\0\0\0\0\0\0(\ 2\0\0\0i=\0\0\0\0\0\0(\ 2\0\0\0i>\0\0\0\0\0\0(\ 2\0\0\0i?\0\0\0\0\0\0(\ 2\0\0\0i@\0\0\0\0\0\0(\ 2\0\0\0iA\0\0\0\0\0\0(\ 2\0\0\0iB\0\0\0\0\0\0(+\0\0\0R>\0\0\0RY\0\0\0\ 1\0\0Rc\0\0\0R[\0\0\0R]\0\0\0R^\0\0\0\ 3\0\0\ 3\0\0\0\0\0Rk\0\0\0R\98\0\0\0R_\0\0\0R`\0\0\0Rn\0\0\0\0\0\0R\9b\ 2\0\0\ 2\0\0\0\0\0\0\0\0Rw\ 1\0\0R\13\ 1\0\0\0\0\0RB\0\0\0R{\ 1\0\0\0\0\0\0\0\0Rd\0\0\0R%\ 1\0\0R\1c\ 1\0\0RE\ 3\0\0Rq\0\0\0R+\ 1\0\0RK\ 1\0\0RR\ 1\0\0RP\ 1\0\0RT\ 1\0\0R7\ 2\0\0R]\ 1\0\0R[\ 1\0\0Ra\ 1\0\0R\\ 1\0\0R\v\0\0\0(!\0\0\0R   \0\0\0t\ 6\0\0\0fname1Rn\ 1\0\0t\ 6\0\0\0fname3RÊ\ 3\0\0R:\ 1\0\0\0\0\0t\ 5\0\0\0mm1_0t\ 5\0\0\0mm1_1Rî\0\0\0\0\0\0t\ 5\0\0\0mm2_0t\ 5\0\0\0mm2_1R\86\0\0\0Rg\ 3\0\0t\ 2\0\0\0t1t\ 5\0\0\0infoct\ 5\0\0\0fmts1t\ 5\0\0\0f1ts1Rz\ 2\0\0R\ 2\ 3\0\0\ 4\0\0t\ 5\0\0\0f1ts2R\1a\ 4\0\0t\ 5\0\0\0f1ts3RÜ\ 4\0\0t\ 4\0\0\0arr5t\ 4\0\0\0arr6t\ 5\0\0\0f1ts4t\ 4\0\0\0mfd1t\ 4\0\0\0mfd2R>\ 2\0\0R'\ 5\0\0(\0\0\0\0(       \0\0\0R\15\ 5\0\0\ 5\0\0R!\ 5\0\0R"\ 5\0\0R#\ 5\0\0R$\ 5\0\0R%\ 5\0\0\0\0\0R&\ 5\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1f\0\0\0testSymmetryPlusAggregationMFD1³\15\0\0s\\ 1\0\0\0\ 2\ 6\ 1\ 6\ 1\ 6\ 1\ 6\ 1 \ 16\0\16\ 1\r\ 1\ f\0
++\ 1\r\ 1\1c\ 1\1c\ 1"\ 1"\ 1"\ 1
++\ 1%\ 1%\ 2\ f\0
++\ 1\r\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1
++\ 1(\ 1(\ 1\16\ 1\18\ 1\10\ 1\10\ 1\16\ 1\16\ 1"\ 1"\ 2 \ 1?\0\16\ 1\r\ 1\ f\0
++\ 1\r\ 1\1c\ 1\1c\ 1\1c\ 1"\ 1
++\ 1"\ 1"\ 2\ f\0
++\ 1\r\ 1\19\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1\1c\ 1
++\ 1.\ 1.\ 1\16\ 1\1c\ 1\10\ 1\10\ 1\16\ 1\16\ 1%\ 1%\ 2\15\ 2       \11\r\ 2\ 6\ 1\ 6\ 1\ 6\ 1\f\ 2     \ 1       \ 1\f\0\11\0\r\ 1\e\ 1\r\ 1\r\0\r\0\r\ 1
++\ 1\r\ 2\f\0\11\0\r\ 1\1e\ 1\r\ 1\r\0\r\0\r\ 1
++\ 1\r\ 1\f\0\11\0\r\ 1\18\ 1\r\ 1\r\0\r\0\r\ 1
++\ 1\r\ 1\r\ 2\f\ 1\1f\ 1\11\ 1\r\ 2 \ 1       \ 1\f\0\11\0\r\ 1\18\ 1\r\ 1\r\0\r\0\r\ 1
++\ 1\r\ 1\f\0\11\0\r\ 1$\ 1\r\ 1\r\0\r\0\r\ 1
++\ 1\r\ 1\f\0\11\0\r\ 1\e\ 1\r\ 1\r\0\r\0\r\ 1
++\ 1\r\ 1\r\ 2\f\ 1\1f\ 1\11\ 1\r\ 2 \ 1\10\ 1\13\ 1\10\ 1\13\ 2       \ 1\10\ 1\13\ 1\10\ 1\13\ 2\15\ 1')\r\ 1\10\0\10\ 1!\ 1\r\ 1c\ 1\0\0\0\v\0\0\0\a\0\0\0C\0\0\0s\ 5\ 1\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0g\ 4\0\83\ 1\0}\ 2\0t\0\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 5\0\83\ 1\0}\ 3\0t\0\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0g\ 6\0\83\ 1\0}\ 4\0t\ 1\0\83\0\0}\ 5\0|\ 5\0j\ 2\0|\ 2\0|\ 3\0|\ 4\0\83\ 3\0\ 1|\ 5\0j\ 3\0d\b\0\83\ 1\0\ 1t\ 4\0|\ 5\0\83\ 1\0}\ 6\0t\ 5\0|\ 6\0\83\ 1\0}\a\0|\a\0j\ 6\0|\ 1\0d\ 4\0\83\ 2\0\ 1|\a\0j\a\0\83\0\0}\b\0t\b\0j   \0|\ 1\0\83\ 1\0}        \0|      \0j\a\0\83\0\0}
++\0|\0\0j
++\0|\ 6\0j\v\0|\b\0d   \0\83\ 2\0\83\ 1\0\ 1|\0\0j
++\0|\ 6\0j\v\0|
++\0d    \0\83\ 2\0\83\ 1\0\ 1d\0\0S(
++\0\0\0Ns\r\0\0\0Pyfile107.medi\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 5\0\0\0\ 2\0\0g\11ê-\81\99\97q=(\f\0\0\0RY\0\0\0\0\0\0Rc\0\0\0RB\0\0\0t\1d\0\0\0MEDCouplingMappedExtrudedMeshR>\0\0\0R\v\0\0\0t\15\0\0\0convertToExtrudedMeshR'\0\0\0R(\0\0\0R0\0\0\0R1\0\0\0(\v\0\0\0R   \0\0\0R9\ 1\0\0RS\ 4\0\0RT\ 4\0\0t\ 4\0\0\0arrZt\ 6\0\0\0mesh3Dt\ 2\0\0\0exR\86\0\0\0t\ 3\0\0\0ex2R¢\0\0\0t\ 3\0\0\0ex3(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\11\0\0\0testExtrudedMesh1\8b\16\0\0\0\0\0\0\ 1\ 6\ 1\18\0\e\0\1e\ 1      \0\13\0\r\ 1\f\ 1\f\ 1\10\ 1\f\ 1\ f\ 1\f\ 1\19\ 1\19\ 1s\ 5\0\0\03.2.1s1\0\0\0This test requires at least MEDFile version 3.2.1s\ 5\0\0\04.0.0s@\0\0\0This test is not compatible with MEDFile version 4.0.0 and abovec\ 1\0\0\0\ 6\0\0\0\ 6\0\0\0C\0\0\0s)\ 1\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0d\ 3\0d\ 4\0\83\ 2\0}\ 3\0|\ 3\0j\ 1\0t\ 2\0d\ 5\0d\ 5\0d\ 4\0d\ 4\0g\ 4\0d\ 6\0d\ 6\0\83\ 3\0\83\ 1\0\ 1|\ 3\0j\ 3\0\83\0\0\ 1|\ 3\0j\ 4\0t\ 5\0d\ 4\0d\ 5\0g\ 2\0\83\ 2\0\ 1t\ 6\0\83\0\0}\ 4\0|\ 3\0|\ 4\0d\ 5\0<|\ 4\0j\a\0d\a\0d\ 5\0\83\ 2\0\ 1|\ 4\0j\b\0|\ 1\0d\ 6\0\83\ 2\0\ 1t  \0t
++\0|\ 1\0\83\ 1\0\83\ 1\0j\v\0d\ 6\0 d\b\0d\ 5\0g\ 2\0k\ 2\0\0t\f\0\82\ 1\0t\ 6\0|\ 1\0\83\ 1\0}\ 5\0|\0\0j\r\0|\ 4\0j\ e\0|\ 5\0d    \0\83\ 2\0\83\ 1\0\ 1|\ 4\0j\ f\0|\ 2\0d\ 6\0\83\ 2\0\ 1t       \0t
++\0|\ 2\0\83\ 1\0\83\ 1\0j\v\0d\ 6\0 t\10\0t\11\0\83\0\0d\ 6\0 \83\ 1\0k\ 2\0s%\ 1t\f\0\82\ 1\0d\0\0S(
++\0\0\0Ns\r\0\0\0Pyfile108.meds\r\0\0\0Pyfile109.medR \ 2\0\0i\ 1\0\0\0i\0\0\0\0i\ 2\0\0\0R\9a\ 2\0\0i\ 3\0\0\0g\11ê-\81\99\97q=(\12\0\0\0R[\0\0\0Rc\0\0\0RY\0\0\0R]\0\0\0R^\0\0\0Re\0\0\0R>\0\0\0\0\0\0t\a\0\0\0write30R\ 5\0\0\0t\17\0\0\0MEDFileVersionOfFileStrt\a\0\0\0versiont\ e\0\0\0AssertionErrorR0\0\0\0R1\0\0\0R\v\0\0\0Rm\0\0\0t\ e\0\0\0MEDFileVersion(\ 6\0\0\0\0\0\0R9\ 1\0\0Rn\ 1\0\0R\83\0\0\0R\86\0\0\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\ f\0\0\0testWriteInto30\99\16\0\0\0\0\0\0\ 4\ 6\ 1\ 6\ 1\ f\0%\0
++\0\16\ 1   \0
++\ 1\10\ 2\10\ 1+\ 1\f\ 1\19\ 2\10\ 12\ 1c\ 1\0\0\0#\0\0\0\13\0\0\0C\0\0\0s1\a\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 2\0d\ 3\0d\ 2\0d\ 4\0d\ 2\0d\ 2\0d\ 3\0d\ 3\0d\ 3\0d\ 4\0d\ 3\0d\ 2\0d\ 4\0d\ 3\0d\ 4\0d\ 4\0d\ 4\0g\12\0d\ 5\0d\ 6\0\83\ 3\0}\ 2\0t\ 1\0d\a\0d\ 6\0\83\ 2\0}\ 3\0|\ 3\0j\ 2\0d\b\0\83\ 1\0\ 1|\ 3\0j\ 3\0t\ 4\0d     \0d
++\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 4\0d
++\0d\b\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 5\0d\v\0d\f\0d
++\0d    \0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 5\0d\f\0d\r\0d\ e\0d
++\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 3\0t\ 5\0d
++\0d\ e\0d\ f\0d\b\0g\ 4\0\83\ 2\0\ 1|\ 3\0j\ 6\0\83\0\0\ 1|\ 3\0j\a\0|\ 2\0\83\ 1\0\ 1t\ 1\0|\ 3\0j\b\0\83\0\0\0\83\ 2\0}\ 4\0|\ 4\0j\ 2\0d\ 5\0\83\ 1\0\ 1d\v\0d        \0d\v\0d\f\0d\f\0d
++\0d
++\0d    \0d\b\0d
++\0d\ 6\0d
++\0d    \0d\ 6\0d\f\0d\r\0d\b\0d\ f\0g\12\0}\ 5\0x7\0t      \0d\ 5\0\83\ 1\0D])\0}\ 6\0|\ 4\0j\ 3\0t
++\0|\ 5\0d\ 6\0|\ 6\0\14d\ 6\0|\ 6\0\14d\ 6\0\17!\83\ 2\0\ 1qr\ 1W|\ 4\0j\ 6\0\83\0\0\ 1|\ 4\0j\a\0|\ 2\0\83\ 1\0\ 1t\v\0\83\0\0}\a\0|\a\0j\f\0d\v\0|\ 3\0\83\ 2\0\ 1|\a\0j\f\0d\10\0|\ 4\0\83\ 2\0\ 1d\f\0}\b\0d\ 6\0}     \0d\11\0}
++\0t\r\0t\ e\0t\ f\0\83\ 2\0}\v\0|\v\0j\10\0d\12\0\83\ 1\0\ 1|\v\0j\11\0|
++\0|\b\0\0\83\ 3\0\ 1t\12\0d\v\0d    \0d\ 6\0d\f\0d
++\0g\ 5\0\83\ 1\0}\f\0|\f\0j\10\0d\13\0\83\ 1\0\ 1t\0\0d\14\0d\15\0d\16\0d\17\0d\18\0g\ 5\0\83\ 1\0}\r\0|\v\0j\13\0|\r\0\83\ 1\0\ 1t\14\0\83\0\0}\ e\0|\ e\0j\15\0|\v\0|\a\0d\v\0|\f\0\83\ 4\0\ 1t\r\0t\ e\0t\ f\0\83\ 2\0}\ f\0|\ f\0j\10\0d\19\0\83\ 1\0\ 1|\ f\0j\11\0|
++\0|\b\0\0\83\ 3\0\ 1t\12\0d\v\0d    \0d\ 6\0d\f\0d
++\0d\b\0d\r\0g\a\0\83\ 1\0}\10\0|\10\0j\10\0d\1a\0\83\ 1\0\ 1t\0\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0g\a\0\83\ 1\0}\11\0|\ f\0j\13\0|\11\0\83\ 1\0\ 1t\14\0\83\0\0}\12\0|\12\0j\15\0|\ f\0|\a\0d\10\0|\10\0\83\ 4\0\ 1t\16\0\83\0\0}\13\0|\13\0j\17\0t\18\0\83\0\0\83\ 1\0\ 1|\13\0j\19\0t\1a\0\83\0\0\83\ 1\0\ 1|\13\0j\e\0\83\0\0j\1c\0|\a\0\83\ 1\0\ 1t\1d\0\83\0\0}\14\0|\14\0j\1e\0|\ e\0\83\ 1\0\ 1|\13\0j\1f\0\83\0\0\0|\14\0\83\ 1\0\ 1|\13\0j!\0\83\0\0}\15\0t\16\0|\15\0\83\ 1\0}\16\0|\0\0j"\0t#\0|\16\0j\e\0\83\0\0\83\ 1\0\0\83\ 2\0\ 1|\0\0j"\0t#\0|\16\0j\1f\0\83\0\0\83\ 1\0d     \0\83\ 2\0\ 1|\0\0j"\0t#\0|\16\0j\1f\0\83\0\0d\v\0\19\83\ 1\0\0\83\ 2\0\ 1|\0\0j$\0|\16\0j\e\0\83\0\0d\v\0\19j%\0|\13\0j\e\0\83\0\0d\v\0\19d"\0\83\ 2\0\83\ 1\0\ 1|\16\0j\1f\0\83\0\0d\v\0\19d\v\0\19j&\0|\16\0j\e\0\83\0\0d\v\0\19\83\ 1\0}\17\0|\13\0j\1f\0\83\0\0d\v\0\19d\v\0\19j&\0|\13\0j\e\0\83\0\0d\v\0\19\83\ 1\0}\18\0|\0\0j$\0|\17\0j%\0|\18\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1t'\0j(\0|\13\0t'\0j)\0\83\ 2\0}\19\0t'\0j*\0|\19\0\83\ 1\0}\1a\0|\0\0j"\0t#\0|\1a\0j\e\0\83\0\0\83\ 1\0d  \0\83\ 2\0\ 1|\0\0j"\0t#\0|\1a\0j\1f\0\83\0\0\83\ 1\0d     \0\83\ 2\0\ 1|\0\0j"\0t#\0|\1a\0j\1f\0\83\0\0d\v\0\19\83\ 1\0\0\83\ 2\0\ 1|\0\0j$\0|\1a\0j\e\0\83\0\0d\v\0\19j%\0|\13\0j\e\0\83\0\0d\v\0\19d"\0\83\ 2\0\83\ 1\0\ 1|\1a\0j\1f\0\83\0\0d\v\0\19d\v\0\19j&\0|\1a\0j\e\0\83\0\0d\v\0\19\83\ 1\0}\e\0|\0\0j$\0|\e\0j%\0|\18\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1t'\0j(\0|\13\0j\1f\0\83\0\0t'\0j)\0\83\ 2\0}\19\0t'\0j*\0|\19\0\83\ 1\0}\1c\0|\1c\0d\v\0\19d\v\0\19j&\0|\1a\0j\e\0\83\0\0d\v\0\19\83\ 1\0}\1d\0|\0\0j$\0|\1d\0j%\0|\18\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1t'\0j(\0|\13\0j\1f\0\83\0\0d\v\0\19t'\0j)\0\83\ 2\0}\19\0t'\0j*\0|\19\0\83\ 1\0}\1e\0|\1e\0d\v\0\19j&\0|\1a\0j\e\0\83\0\0d\v\0\19\83\ 1\0}\1f\0|\0\0j$\0|\1f\0j%\0|\18\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1t'\0j(\0|\13\0j\1f\0\83\0\0d\v\0\19d\v\0\19t'\0j)\0\83\ 2\0}\19\0t'\0j*\0|\19\0\83\ 1\0\0\0j&\0|\1a\0j\e\0\83\0\0d\v\0\19\83\ 1\0}!\0|\0\0j$\0|!\0j%\0|\18\0d"\0d"\0\83\ 3\0\83\ 1\0\ 1t'\0j(\0|\13\0j\e\0\83\0\0t'\0j)\0\83\ 2\0}\19\0t'\0j*\0|\19\0\83\ 1\0}"\0|\0\0j"\0t#\0|"\0\83\ 1\0d    \0\83\ 2\0\ 1|\0\0j$\0|"\0d\v\0\19j%\0|\13\0j\e\0\83\0\0d\v\0\19d"\0\83\ 2\0\83\ 1\0\ 1d\0\0S(#\0\0\0Ns\r\0\0\0Pyfile110.medg\0\0\0\0\0\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0ð?i    \0\0\0i\ 2\0\0\0Rn\ 2\0\0i\ 5\0\0\0i\ 1\0\0\0i\ 4\0\0\0i\0\0\0\0i\ 3\0\0\0i\ 6\0\0\0i\a\0\0\0i\b\0\0\0iÿÿÿÿg\0\0\0\0\0\0\12@Ro\ 2\0\0Rp\ 2\0\0i
++\0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0i\ e\0\0\0Rq\ 2\0\0Rr\ 2\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\19\0\0\0i\1a\0\0\0g\11ê-\81\99\97q=(+\0\0\0RY\0\0\0R[\0\0\0R]\0\0\0R^\0\0\0R_\0\0\0R`\0\0\0Rb\0\0\0Rc\0\0\0RC\0\0\0Rn\0\0\0Re\0\0\0R>\0\0\0Rj\0\0\0Rw\ 1\0\0R\1c\ 1\0\0RX\ 1\0\0RB\0\0\0\0\0\0Rk\0\0\0R{\ 1\0\0\0\0\0R|\ 1\0\0RK\ 1\0\0RR\ 1\0\0RP\ 1\0\0R]\ 1\0\0R[\ 1\0\0RT\ 1\0\0R7\ 2\0\0\0\0\0RE\ 3\0\0Ra\ 1\0\0R\\ 1\0\0t      \0\0\0serializeR+\0\0\0Ry\0\0\0R0\0\0\0R1\0\0\0R5\ 4\0\0\ 3\0\0\ 3\0\0\ 3\0\0\ 3\0\0(#\0\0\0\0\0\0R9\ 1\0\0R\ 3\ 2\0\0\0\0\0R\84\0\0\0Rt\ 2\0\0\0\0\0R\83\0\0\0Ru\ 2\0\0Rv\ 2\0\0Rw\ 2\0\0Ro\ 2\0\0Rx\ 2\0\0\ 1\0\0\0\0\0Rq\ 2\0\0Ry\ 2\0\0Rz\ 2\0\0\0\0\0R>\ 2\0\0Rm\ 1\0\0Re\ 1\0\0R8\ 5\0\0RC\ 1\0\0\0\0\0R\r\0\0\0t\ 4\0\0\0mfd3R      \ 1\0\0\ 3\0\0R\v\ 1\0\0t\ 5\0\0\0fmts5t\ 3\0\0\0ff5t\ 5\0\0\0f1ts6t\ 3\0\0\0ff6t\ 3\0\0\0ms7(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt"\0\0\0testPickelizationOfMEDFileObjects1¬\16\0\0\0\0\0\0\ 2\ 6\ 1H\ 1\ f\ 1\r\ 1\19\ 1\19\ 1\1c\ 1\1c\ 1\1c\ 1
++\ 1\r\ 1\15\ 1\r\ 1<\ 1\13\ 1#\ 1\ 4\ 1
++\ 1\r\ 2   \ 1\10\ 1\10\ 2\ 6\0\ 6\0\ 6\ 1\ f\ 1\r\ 1\13\ 1\e\0\r\ 1\e\ 1\r\ 1       \ 1\16\ 1\ f\ 1\r\ 1\13\ 1!\0\r\ 1!\ 1\r\ 1       \ 1\16\ 1     \ 1\10\0\10\ 1\13\ 1 \0\r\ 1\13\ 2\f\ 1\f\ 1\1c\ 1\1c\ 1 \ 1-\ 1'\ 1'\ 1\1c\ 2\15\ 1\ f\ 2\1c\ 1\1c\ 1 \ 1-\ 1'\ 1\1c\ 2\e\ 1\ f\ 1!\ 1\1c\ 2\1f\ 1\ f\ 1\1d\ 1\1c\ 2#\ 1\ f\ 1\19\ 1\1c\ 2\e\ 1\ f\ 1\16\ 1'\ 1c\ 1\0\0\0\f\0\0\0\ 5\0\0\0C\0\0\0s\14\ 3\0\0|\0\0j\0\0\83\0\0\ 1t\ 1\0j\ 2\0d\ 1\0\83\ 1\0}\ 1\0|\0\0j\ 3\0t\ 4\0|\ 1\0t\ 5\0\83\ 2\0\83\ 1\0\ 1t\ 6\0j\a\0|\ 1\0t\ 6\0j\b\0\83\ 2\0}\ 2\0t\ 6\0j   \0|\ 2\0\83\ 1\0}\ 3\0|\0\0j\ 3\0t\ 4\0|\ 3\0t\ 5\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ 3\0|\ 1\0j
++\0\83\0\0j\v\0|\ 3\0j
++\0\83\0\0d\ 2\0\83\ 2\0\83\ 1\0\ 1|\0\0j\f\0\83\0\0\ 1t\ 1\0j\ 2\0d\ 3\0\83\ 1\0}\ 1\0|\0\0j\ 3\0t\ 4\0|\ 1\0t\r\0\83\ 2\0\83\ 1\0\ 1t\ 6\0j\a\0|\ 1\0t\ 6\0j\b\0\83\ 2\0}\ 2\0t\ 6\0j        \0|\ 2\0\83\ 1\0}\ 4\0|\0\0j\ 3\0t\ 4\0|\ 4\0t\r\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ 3\0|\ 1\0j
++\0\83\0\0j\v\0|\ 4\0j
++\0\83\0\0d\ 2\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ e\0\83\0\0\ 1t\ f\0d\ 4\0\83\ 1\0}\ 5\0t\10\0d\ 4\0\83\ 1\0}\ 6\0|\0\0j\ 3\0t\ 4\0|\ 5\0d\ 5\0\19t\11\0\83\ 2\0\83\ 1\0\ 1t\ 6\0j\a\0|\ 5\0d\ 5\0\19t\ 6\0j\b\0\83\ 2\0}\ 2\0t\ 6\0j       \0|\ 2\0\83\ 1\0}\a\0|\0\0j\12\0t\13\0|\ 5\0d\ 5\0\19\83\ 1\0t\13\0|\a\0\83\ 1\0\83\ 2\0\ 1|\0\0j\ 3\0t\ 4\0|\a\0t\11\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ 3\0|\a\0d\ 5\0\19j\14\0|\ 6\0d\ 5\0\19\83\ 1\0j\v\0|\ 5\0d\ 5\0\19d\ 5\0\19j\14\0|\ 6\0d\ 5\0\19\83\ 1\0d\ 2\0d\ 5\0\83\ 3\0\83\ 1\0\ 1t\ 6\0j\a\0|\ 5\0d\ 5\0\19d\ 5\0\19t\ 6\0j\b\0\83\ 2\0}\ 2\0t\ 6\0j     \0|\ 2\0\83\ 1\0}\b\0|\0\0j\ 3\0t\ 4\0|\b\0t\15\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ 3\0|\b\0j\14\0|\ 6\0d\ 5\0\19\83\ 1\0j\v\0|\ 5\0d\ 5\0\19d\ 5\0\19j\14\0|\ 6\0d\ 5\0\19\83\ 1\0d\ 2\0d\ 5\0\83\ 3\0\83\ 1\0\ 1|\0\0j\16\0\83\0\0\ 1t\17\0d\ 6\0\83\ 1\0}      \0t\ 6\0j\a\0|        \0t\ 6\0j\b\0\83\ 2\0}\ 2\0t\ 6\0j       \0|\ 2\0\83\ 1\0}
++\0|\0\0j\12\0t\13\0|   \0\83\ 1\0t\13\0|
++\0\83\ 1\0\83\ 2\0\ 1x?\0t\18\0t\13\0|    \0\83\ 1\0\83\ 1\0D]+\0}\v\0|\0\0j\ 3\0|   \0|\v\0\19j\v\0|
++\0|\v\0\19d\ 2\0\83\ 2\0d\ 5\0\19\83\ 1\0\ 1\ 2Wd\0\0S(\a\0\0\0Ns\10\0\0\0MEDFileMesh5.medg\11ê-\81\99\97q=s\f\0\0\0Pyfile55.meds\f\0\0\0Pyfile63.medi\0\0\0\0s\f\0\0\0Pyfile56.med(\19\0\0\0R¿\0\0\0R'\0\0\0R(\0\0\0R0\0\0\0Rt\0\0\0\0\0\0\ 3\0\0\ 3\0\0\ 3\0\0\ 3\0\0\0\0\0R1\0\0\0\ 2\0\0\ 2\0\0R6\ 3\0\0R[\ 1\0\0RP\ 1\0\0R#\ 3\0\0R+\0\0\0Ry\0\0\0R5\ 4\0\0R\1e\ 3\0\0\ 2\0\0\ 2\0\0Rn\0\0\0(\f\0\0\0R       \0\0\0R\86\0\0\0R\r\0\0\0\0\0\0\ 4\0\0\ 3\0\0t\ 3\0\0\0ms4RJ\ 5\0\0RL\ 5\0\0t\ 6\0\0\0paramst\a\0\0\0params7Rî\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt"\0\0\0testPickelizationOfMEDFileObjects2\ 6\17\0\0sH\0\0\0\0\ 3
++\ 1\ f\ 1\16\ 1\15\ 1\ f\ 1\16\ 1%\ 2
++\ 1\ f\ 1\16\ 1\15\ 1\ f\ 1\16\ 1%\ 1
++\ 2\f\ 1\f\ 1\1a\ 1\19\ 1\ f\ 1 \ 1\16\ 1B\ 2\1d\ 1\ f\ 1\16\ 1>\ 2
++\ 1\f\ 1\15\ 1\ f\ 1\1c\ 1\19\ 1%\ 1\ 4\ 1c\ 1\0\0\0\b\0\0\0\b\0\0\0C\0\0\0\ 1\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0\83\ 1\0}\ 2\0|\ 2\0j\ 1\0\83\0\0\ 1t\ 2\0j\ 3\0|\ 2\0\83\ 1\0}\ 3\0|\ 3\0j\ 4\0d\ 3\0\83\ 1\0\ 1t\ 5\0\83\0\0}\ 4\0|\ 3\0|\ 4\0d\ 4\0<|\0\0j\ 6\0|\ 4\0j\a\0d\ 5\0\83\ 1\0\f\83\ 1\0\ 1t\b\0d\ 6\0d\a\0d\b\0d  \0d\ 4\0g\ 5\0\83\ 1\0}\ 5\0|\ 5\0j       \0\83\0\0}\ 6\0|\ 4\0j
++\0d\ 5\0|\ 5\0\83\ 2\0\ 1|\ 4\0j\v\0\83\0\0\ 1|\0\0j\f\0t\r\0|\ 4\0j
++\0d\ 5\0|\ 5\0d
++\0d
++\0d    \0\85\ 3\0\19\83\ 4\0\ 1|\ 4\0j\v\0\83\0\0\ 1|\0\0j\ e\0|\ 5\0j\ f\0\83\0\0|\ 4\0j\a\0d\ 5\0\83\ 1\0j\ f\0\83\0\0\83\ 2\0\ 1|\0\0j\ 6\0|\ 4\0j\a\0d\ 5\0\83\ 1\0j\10\0|\ 6\0\83\ 1\0\83\ 1\0\ 1|\ 4\0j\11\0|\ 1\0d       \0\83\ 2\0\ 1t\12\0j\13\0|\ 1\0\83\ 1\0}\a\0|\0\0j\ 6\0|\ 4\0j\10\0|\a\0d\v\0\83\ 2\0d\ 4\0\19\83\ 1\0\ 1|\0\0j\ 6\0|\a\0j\a\0d\ 5\0\83\ 1\0j\10\0|\ 6\0\83\ 1\0\83\ 1\0\ 1|\a\0j\a\0d\ 5\0\83\ 1\0j\14\0d\ 4\0d\ 4\0d\f\0\83\ 3\0\ 1|\0\0j\ 6\0|\ 4\0j\10\0|\a\0d\v\0\83\ 2\0d\ 4\0\19\f\83\ 1\0\ 1|\a\0j\a\0d\ 5\0\83\ 1\0j\14\0d\ 4\0d\ 4\0d\ 6\0\83\ 3\0\ 1|\0\0j\ 6\0|\ 4\0j\10\0|\a\0d\v\0\83\ 2\0d\ 4\0\19\83\ 1\0\ 1d
++\0S(\r\0\0\0s8\0\0\0Test global number on nodes here. Used by partitionners.s\r\0\0\0Pyfile112.medi\ 5\0\0\0\ 2\0\0i\0\0\0\0i\ 1\0\0\0i\a\0\0\0i\b\0\0\0\0\0\0i\ 2\0\0\0Ng\11ê-\81\99\97q=i
++\0\0\0(\15\0\0\0RY\0\0\0Ry\ 1\0\0R[\0\0\0t\15\0\0\0Build1DMeshFromCoordsRB\0\0\0R>\0\0\0R0\0\0\0t\18\0\0\0getGlobalNumFieldAtLevelRk\0\0\0Rq\0\0\0t\18\0\0\0setGlobalNumFieldAtLevelR\0\ 2\0\0R)\0\0\0R*\0\0\0R+\0\0\0\ 3\0\0R1\0\0\0R\v\0\0\0R'\0\0\0R(\0\0\0R\9f\0\0\0(\b\0\0\0R  \0\0\0R9\ 1\0\0\ 1\0\0R\83\0\0\0R\86\0\0\0Re\ 1\0\0t\ 4\0\0\0dRefR¢\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\15\0\0\0testGlobalNumOnNodes12\17\0\0s2\0\0\0\0\ 2\ 6\ 1\f\0
++\ 1\ f\ 1\r\ 1 \ 1
++\ 1\17\ 1\e\ 1\f\ 1\10\ 1
++\ 1&\ 1
++\ 1%\ 1\1f\ 1\10\ 1\ f\ 1\1d\ 1\1f\ 1\1c\ 1\1e\ 1\1c\ 1\1d\ 1c\ 1\0\0\0\11\0\0\0\a\0\0\0C\0\0\0\ 2\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0\83\ 1\0}\ 2\0|\ 2\0j\ 1\0\83\0\0\ 1t\ 2\0j\ 3\0|\ 2\0\83\ 1\0}\ 3\0|\ 3\0j\ 4\0d\ 3\0\83\ 1\0\ 1t\ 5\0\83\0\0}\ 4\0|\ 3\0|\ 4\0d\ 4\0<d\ 5\0}\ 5\0d\18\0}\ 6\0t\ 6\0t\a\0\83\ 1\0}\a\0|\a\0j\b\0|\ 3\0\83\ 1\0\ 1|\a\0j\ 4\0|\ 5\0\83\ 1\0\ 1|\a\0j  \0t\0\0d   \0d
++\0d\v\0d\f\0d\r\0g\ 5\0\83\ 1\0\83\ 1\0\ 1|\a\0j
++\0|\ 6\0\8c\0\0\ 1t\ 6\0t\v\0\83\ 1\0}\b\0|\b\0j\b\0|\ 3\0\83\ 1\0\ 1|\b\0j\ 4\0|\ 5\0\83\ 1\0\ 1|\b\0j    \0t\0\0d\ e\0d\ f\0d\10\0d\11\0g\ 4\0\83\ 1\0\83\ 1\0\ 1|\b\0j
++\0|\ 6\0\8c\0\0\ 1t\f\0\83\0\0}       \0|      \0j\r\0|\a\0\83\ 1\0\ 1|    \0j\r\0|\b\0\83\ 1\0\ 1|\0\0j\ e\0t\ f\0|   \0j\10\0\83\0\0\83\ 1\0t\ f\0t\a\0t\v\0g\ 2\0\83\ 1\0\83\ 2\0\ 1|  \0j\11\0\83\0\0}
++\0|
++\0j\12\0\83\0\0\ 4\1ed\b\07\ 2(|
++\0j
++\0d\12\0d\13\0d\14\0\83\ 3\0\ 1t\13\0\83\0\0}\v\0|\v\0j\14\0|        \0\83\ 1\0\ 1|\v\0j\14\0|
++\0\83\ 1\0\ 1|\ 4\0j\15\0|\ 1\0d\b\0\83\ 2\0\ 1|\v\0j\15\0|\ 1\0d\ 4\0\83\ 2\0\ 1t\16\0j\17\0t\a\0t\18\0f\ 2\0g\ 1\0\83\ 1\0}\f\0t\19\0j\1a\0|\ 1\0\83\ 1\0}\ 4\0t\e\0|\ 1\0t\1c\0|\f\0\83\ 3\0}\r\0|\r\0j\1d\0\83\0\0\ 1|\0\0j\ e\0t\1e\0|\r\0\83\ 1\0d\a\0\83\ 2\0\ 1|\r\0d\ 4\0\19}\v\0|\0\0j\ e\0t\1e\0|\v\0\83\ 1\0d\b\0\83\ 2\0\ 1|\v\0d\ 4\0\19}\ e\0|\v\0d\a\0\19}\ f\0|\0\0j\ e\0|\ e\0j\10\0\83\0\0t\a\0g\ 1\0\83\ 2\0\ 1|\0\0j\1f\0|\ e\0\0|\ 4\0\83\ 1\0j!\0|\a\0d\15\0d\15\0\83\ 3\0\83\ 1\0\ 1|\a\0j\11\0\83\0\0}\10\0|\10\0d\16\07}\10\0|\10\0j
++\0d\14\0d\12\0d\13\0\83\ 3\0\ 1|\0\0j\1f\0|\ f\0\0|\ 4\0\83\ 1\0j!\0|\10\0d\15\0d\15\0\83\ 3\0\83\ 1\0\ 1d\17\0S(\19\0\0\0ss\0\0\0Test for advanced API on read to speed up read phase for users with "huge" number of time steps (more than 10 000).s\r\0\0\0Pyfile113.medi\ 5\0\0\0\ 2\0\0i\0\0\0\0\ 3\0\0g\0\0\0\0\0\0\14@i\ 1\0\0\0i\ 2\0\0\0g\0\0\0\0\0\0\0\0g\9a\99\99\99\99\99¹?g\9a\99\99\99\99\99É?g333333Ó?g\9a\99\99\99\99\99Ù?g\0\0\0\0\0\0ð?g\9a\99\99\99\99\99ñ?g333333ó?gÍÌÌÌÌÌô?i\ 3\0\0\0i\ 4\0\0\0g\0\0\0\0\0\0\18@g\11ê-\81\99\97q=g\0\0\0\0\0\0\0@N(\ 3\0\0\0g\0\0\0\0\0\0\14@i\ 1\0\0\0i\ 2\0\0\0("\0\0\0RY\0\0\0Ry\ 1\0\0R[\0\0\0RT\ 5\0\0RB\0\0\0R>\0\0\0Rw\ 1\0\0R\1c\ 1\0\0\0\0\0R{\ 1\0\0\0\0\0R\13\ 1\0\0\0\0\0R%\ 1\0\0R+\0\0\0R\ 1\ 2\0\0R\81\ 1\0\0Rq\0\0\0R+\ 1\0\0\0\0\0RE\ 3\0\0R\v\0\0\0t\ f\0\0\0MEDFileEntitiest  \0\0\0BuildFromRù\ 3\0\0R'\0\0\0R(\0\0\0R[\ 1\0\0RN\0\0\0Rv\ 3\0\0Ry\0\0\0R0\0\0\0R5\ 4\0\0R1\0\0\0(\11\0\0\0R    \0\0\0R9\ 1\0\0\ 1\0\0R\83\0\0\0R\86\0\0\0Rg\ 3\0\0t\ 3\0\0\0ts1Rã\0\0\0\0\0\0\0\0\0t\ 6\0\0\0f1ts_2Rm\ 1\0\0t\ 3\0\0\0entRl\ 1\0\0RB\ 2\0\0R;\ 1\0\0R
++\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testPartialReadOfEntities1M\17\0\0s^\0\0\0\0\ 2\ 6\ 1\f\0
++\ 1\ f\ 1\r\ 1 \ 1
++\ 2\ 6\ 1\ 6\ 1\f\0\r\0\r\ 1"\ 1\r\ 1\f\0\r\0\r\ 1\1f\ 1\r\ 1     \ 1\r\ 1\r\ 1(\ 1\f\ 1\11\ 1\13\ 1   \ 1\r\ 1\r\ 2\10\ 1\10\ 2\18\ 1\ f\ 1\12\ 1
++\ 1\16\ 1
++\ 1\16\ 1
++\0
++\ 1\19\ 1%\ 1\f\0
++\0\13\ 1%\ 1c\ 1\0\0\0\e\0\0\0        \0\0\0C\0\0\0
++\0\0d\ 1\0}\ 1\0t\0\0j\ 1\0\83\0\0}\ 2\0|\ 2\0j\ 2\0\83\0\0}\ 2\0|\ 2\0j\ 3\0\83\0\0}\ 3\0t\ 4\0j\ 5\0\83\0\0}\ 4\0|\ 4\0j\ 6\0|\ 3\0j\a\0\83\0\0\83\ 1\0\ 1|\ 4\0j\b\0d\ 2\0|\ 3\0\83\ 2\0\ 1|\ 4\0j       \0|\ 3\0j
++\0\83\0\0\83\ 1\0\ 1|\ 4\0j\v\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\f\0\83\0\0}\ 5\0|\ 5\0j\r\0|\ 2\0\83\ 1\0\ 1|\ 5\0j\ e\0d\ 2\0t\ f\0|\ 4\0\83\ 3\0}\ 6\0|\0\0j\10\0|\ 6\0j\11\0\83\0\0j\12\0\83\0\0d\ 4\0d\ 5\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\0\0j\13\0|\ 6\0j\14\0|\ 2\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|\ 5\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1|\ 5\0j\15\0\83\0\0\\ 2\0}\ 6\0}\a\0|\0\0j\10\0|\ 6\0j\16\0\83\0\0|\ 5\0j\17\0\83\0\0j\16\0\83\0\0\83\ 2\0\ 1|\0\0j\10\0|\a\0d)\0d*\0f\ 2\0d+\0d,\0f\ 2\0d-\0d.\0f\ 2\0d/\0d0\0f\ 2\0g\ 4\0\83\ 2\0\ 1t\18\0j\ 5\0|\ 1\0\83\ 1\0}\b\0|\0\0j\10\0|\b\0j
++\0\83\0\0d\f\0\83\ 2\0\ 1|\0\0j\10\0|\b\0j\19\0\83\0\0d\ 2\0d\r\0d\ e\0g\ 3\0\83\ 2\0\ 1|\0\0j\13\0t\1a\0|\b\0t\f\0\83\ 2\0\83\ 1\0\ 1|\ 5\0j\ e\0t\ f\0d\ 2\0|\ 4\0\83\ 3\0}\ 6\0|\0\0j\10\0|\ 6\0j\11\0\83\0\0j\12\0\83\0\0d\ 4\0d\ 5\0d\ 6\0g\ 3\0\83\ 2\0\ 1|\0\0j\13\0|\ 6\0j\14\0|\ 2\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|\b\0j\e\0d\r\0d\ 3\0d\ f\0\83\ 3\0\ 1|\b\0j\17\0\83\0\0}   \0|      \0d\ 3\09}  \0|\b\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\1c\0j\ 5\0|\ 1\0d\f\0\83\ 2\0}
++\0|\0\0j\10\0|
++\0j\1d\0\83\0\0d1\0d2\0g\ 2\0\83\ 2\0\ 1|\0\0j\10\0t\1e\0|
++\0\83\ 1\0d\ 3\0\83\ 2\0\ 1|\0\0j\13\0t\1a\0|
++\0t\1f\0\83\ 2\0\83\ 1\0\ 1|
++\0d\ e\0\19j\ e\0t\ f\0d\ 2\0|\ 4\0\83\ 3\0}\ 6\0|\0\0j\13\0|\ 6\0j\14\0|\ 2\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|
++\0j\ e\0t\ f\0d\ 2\0d\r\0d\ 2\0|\ 4\0\83\ 5\0}\ 6\0|\0\0j\13\0|\ 6\0j\14\0|\ 2\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|
++\0\0\83\0\0}\v\0|\v\0j!\0\83\0\0\ 1|\v\0j!\0\83\0\0}\f\0|\f\0j\ e\0d\ 2\0t\ f\0|\ 4\0\83\ 3\0}\ 6\0|\0\0j\13\0|\ 6\0j\11\0\83\0\0j\14\0d\ 3\0|\ 2\0j\11\0\83\0\0\14d\10\0\83\ 2\0\83\ 1\0\ 1|\ 2\0j\e\0d\ f\0d\r\0d\ 3\0\83\ 3\0\ 1|\ 2\0j\11\0\83\0\0\ 4\1ed\ 3\09\ 2(|\0\0j\13\0|\ 6\0j\14\0|\ 2\0d\a\0d\a\0\83\ 3\0\83\ 1\0\ 1|\ 2\0j\11\0\83\0\0\ 4\1ed\ 3\0:\ 2(t"\0d
++\0d\b\0\83\ 2\0}\r\0d\ 2\0|\r\0(|\r\0j#\0d\ 4\0d\ 5\0d\ 6\0g\ 3\0\83\ 1\0\ 1x3\0|
++\0D]+\0}\v\0|\v\0j\ e\0t\ f\0d\ 2\0|\ 4\0\83\ 3\0}\ 6\0|\r\0|\ 6\0j\11\0\83\0\07}\r\0\ 3W|\0\0j\13\0|\r\0j\14\0d\b\0|\ 2\0j\11\0\83\0\0\14d\10\0\83\ 2\0\83\ 1\0\ 1t$\0t%\0\83\ 1\0}\ e\0|\ e\0j\e\0d\11\0d\12\0d\13\0\83\ 3\0\ 1|\ e\0j&\0|\ 2\0j\ 3\0\83\0\0\83\ 1\0\ 1t"\0d\14\0d\ 3\0\83\ 2\0}\ f\0|\ f\0j#\0d\15\0d\16\0g\ 2\0\83\ 1\0\ 1t'\0t(\0d\14\0\83\ 1\0\83\ 1\0|\ f\0d\17\0d\17\0\85\ 2\0d\ 2\0f\ 2\0<d\ 3\0|\ f\0d\17\0d\17\0\85\ 2\0d\ 2\0f\ 2\0\19\14|\ f\0d\17\0d\17\0\85\ 2\0d\r\0f\ 2\0<|\ e\0j      \0d\18\0\83\ 1\0\ 1|\ e\0j)\0|\ f\0\83\ 1\0\ 1t\f\0j\ 5\0\83\0\0}\10\0|\10\0j\r\0|\ e\0\83\ 1\0\ 1|\0\0j\10\0|\10\0j*\0\83\0\0d3\0\83\ 2\0\ 1|\0\0j\10\0|\10\0j\19\0\83\0\0d\12\0d\13\0d\11\0g\ 3\0\83\ 2\0\ 1|\10\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1t$\0t%\0\83\ 1\0}\11\0|\11\0j\e\0d\19\0d\1a\0d\e\0\83\ 3\0\ 1|\11\0j&\0|\ 2\0j\ 3\0\83\0\0\83\ 1\0\ 1t"\0d\1c\0d\ 3\0\83\ 2\0}\12\0|\ f\0j#\0d\1d\0d\1e\0g\ 2\0\83\ 1\0\ 1t'\0t(\0d\1c\0\83\ 1\0\83\ 1\0|\12\0d\17\0d\17\0\85\ 2\0d\ 2\0f\ 2\0<|\12\0d\17\0d\17\0\85\ 2\0d\ 2\0f\ 2\0c\ 2\0\19d\12\07\ 3<d\b\0|\12\0d\17\0d\17\0\85\ 2\0d\ 2\0f\ 2\0\19\14|\12\0d\17\0d\17\0\85\ 2\0d\r\0f\ 2\0<|\11\0j     \0d\1f\0\83\ 1\0\ 1|\12\0j    \0|\11\0j
++\0\83\0\0\83\ 1\0\ 1|\11\0j)\0|\12\0\83\ 1\0\ 1t\f\0j\ 5\0\83\0\0}\13\0t+\0d\r\0d\ 3\0d   \0d\v\0d
++\0\0d\12\0d!\0g\b\0\83\ 1\0}\14\0|\14\0j       \0d"\0\83\ 1\0\ 1|\13\0j,\0|\11\0|\ 4\0d\ 2\0|\14\0\83\ 4\0\ 1|\13\0j-\0t%\0d\ 2\0|\ 4\0\83\ 3\0\ 1|\13\0j-\0t%\0d\ 2\0|\ 4\0\83\ 3\0\\ 2\0}\ 6\0}\a\0|\a\0j        \0|\14\0j
++\0\83\0\0\83\ 1\0\ 1|\0\0j\13\0|\a\0j\14\0|\14\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 6\0j\14\0|\12\0d\10\0\83\ 2\0\83\ 1\0\ 1|\13\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\f\0|\ 1\0d\1f\0\83\ 2\0}\15\0|\15\0j-\0t%\0d\ 2\0|\ 4\0\83\ 3\0\\ 2\0}\ 6\0}\a\0|\a\0\0|\14\0j
++\0\83\0\0\83\ 1\0\ 1|\0\0j\13\0|\a\0j\14\0|\14\0\83\ 1\0\83\ 1\0\ 1|\0\0j\13\0|\ 6\0j\14\0|\12\0d\10\0\83\ 2\0\83\ 1\0\ 1t.\0t%\0\83\ 1\0}\16\0|\16\0j       \0d#\0\83\ 1\0\ 1|\16\0j\e\0d$\0d%\0d&\0\83\ 3\0\ 1|\16\0j&\0|\ 2\0j\ 3\0\83\0\0\83\ 1\0\ 1|\16\0j)\0|\ 2\0j\ 3\0\83\0\0j\a\0\83\0\0\83\ 1\0\ 1t/\0j\ 5\0\83\0\0}\17\0|\17\0j\r\0|\16\0\83\ 1\0\ 1|\17\0j\v\0|\ 1\0d\ 2\0\83\ 2\0\ 1t0\0|\ 1\0\83\ 1\0}\18\0|\0\0j\10\0t\1e\0|\18\0\83\ 1\0d    \0\83\ 2\0\ 1g\0\0|\18\0D]\f\0}\v\0|\v\0^\ 2\0q/\b}\19\0|\0\0j\13\0t\1a\0|\19\0d\ 2\0\19t\1f\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0t\1a\0|\19\0d\r\0\19t\1f\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0t\1a\0|\19\0d\ 3\0\19t1\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0t\1a\0|\19\0d\b\0\19t\1f\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0|\18\0d\f\0\19d\ 2\0\19j\17\0\83\0\0j2\0|\ 2\0j\11\0\83\0\0d\10\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0|\18\0d\f\0\19d4\0\19j\17\0\83\0\0j2\0d\ 3\0|\ 2\0j\11\0\83\0\0\14d\10\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0|\18\0d\1f\0\19d\ 2\0\19j\17\0\83\0\0j2\0|\12\0d\10\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0|\18\0d\18\0\19d\11\0\19j\17\0\83\0\0j2\0|\ f\0d\10\0\83\ 2\0\83\ 1\0\ 1|\0\0j\13\0|\18\0d#\0\19d$\0\19j\17\0\83\0\0j2\0|\ 2\0j\ 3\0\83\0\0j\a\0\83\0\0d\a\0\83\ 2\0\83\ 1\0\ 1t1\0|\ 1\0d#\0\83\ 2\0}\1a\0|\0\0j\13\0|\1a\0d$\0\19j\17\0\83\0\0j2\0|\ 2\0j\ 3\0\83\0\0j\a\0\83\0\0d\a\0\83\ 2\0\83\ 1\0\ 1|\0\0j3\0t4\0t\1f\0j\ 5\0|\ 1\0d#\0\83\ 4\0\ 1|\0\0j3\0t4\0t1\0j\ 5\0|\ 1\0d\18\0\83\ 4\0\ 1t/\0j\ 5\0|\ 1\0d#\0d%\0d&\0\83\ 4\0\ 1|\0\0j3\0t4\0t\f\0j\ 5\0|\ 1\0d#\0d%\0d&\0\83\ 6\0\ 1t\f\0j\ 5\0|\ 1\0d\18\0d\12\0d\13\0\83\ 4\0\ 1|\0\0j3\0t4\0t/\0j\ 5\0|\ 1\0d\18\0d\12\0d\13\0\83\ 6\0\ 1|\0\0j\10\0|\18\0j5\0\83\0\0d5\0\83\ 2\0\ 1|\0\0j\13\0|\18\0j6\0d6\0g\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\10\0|\18\0j5\0\83\0\0d7\0\83\ 2\0\ 1|\0\0j\13\0|\18\0j6\0d8\0g\ 1\0\83\ 1\0\f\83\ 1\0\ 1d\17\0S(9\0\0\0s5\0\0\0Like testInt32InMEDFileFieldStar1 but with float32 :)s\r\0\0\0Pyfile114.medi\0\0\0\0i\ 2\0\0\0s\ e\0\0\0power [MW/m^3]s\10\0\0\0density [g/cm^3]s\ f\0\0\0temperature [K]g\11ê-\81\99\97q=i\ 3\0\0\0i\ 4\0\0\0i\ 6\0\0\0i\ 5\0\0\0\ 1\0\0i\ 1\0\0\0g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@gH¯¼\9aò×z>g\0\0\0\0\0\0"@i
++\0\0\0iÿÿÿÿi\f\0\0\0s\a\0\0\0aa [u1]s\v\0\0\0bbbvv [ppp]NR\18\ 1\0\0g\0\0\0\0\0\03@i\14\0\0\0iõÿÿÿi\b\0\0\0s
++\0\0\0aapfl [u1]s\ e\0\0\0bbbvvpfl [ppp]R\19\ 3\0\0i\a\0\0\0i\v\0\0\0R\1a\ 3\0\0R\e\ 3\0\0g\0\0\0\0\0\0=@i\1e\0\0\0iëÿÿÿR\19\ 1\0\0R\1c\ 3\0\0(\ 2\0\0\0i\ 3\0\0\0i\0\0\0\0(\ 2\0\0\0i\0\0\0\0i\ 2\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 2\0\0\0i\ 4\0\0\0(\ 2\0\0\0i\ 6\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 4\0\0\0i\ 5\0\0\0(\ 2\0\0\0i\ 5\0\0\0i\0\0\0\0(\ 2\0\0\0i\ 5\0\0\0i\ 6\0\0\0(\ 3\0\0\0i\0\0\0\0i\ 1\0\0\0g\0\0\0\0\0\0\0@(\ 3\0\0\0i\ 1\0\0\0i\ 2\0\0\0g\0\0\0\0\0\0\b@(\ 2\0\0\0s\a\0\0\0aa [u1]s\v\0\0\0bbbvv [ppp](\ 2\0\0\0i\ 1\0\0\0i\ 2\0\0\0(\ 4\0\0\0s\f\0\0\03DSurfMesh_1s\f\0\0\03DSurfMesh_1s\f\0\0\03DSurfMesh_1s\f\0\0\03DSurfMesh_1(\ 2\0\0\0s\f\0\0\03DSurfMesh_1s
++\0\0\03DSurfMesh(\ 4\0\0\0s
++\0\0\03DSurfMeshs
++\0\0\03DSurfMeshs
++\0\0\03DSurfMeshs
++\0\0\03DSurfMesh(\ 2\0\0\0s\f\0\0\03DSurfMesh_1s
++\0\0\03DSurfMesh(7\0\0\0R\ 4\0\0\0R$\ 1\0\0t\13\0\0\0convertToFloatFieldR¹\0\0\0R>\0\0\0R(\0\0\0Rc\0\0\0\0\0\0Rj\0\0\0RB\0\0\0RC\0\0\0R\v\0\0\0t\14\0\0\0MEDFileFloatField1TSR%\ 1\0\0R\97\ 1\0\0R\13\ 1\0\0R+\0\0\0R)\ 1\0\0R\1f\ 3\0\0R0\0\0\0R1\0\0\0R(\ 1\0\0\ 3\0\0R+\ 1\0\0R!\ 3\0\0\0\0\0Rt\0\0\0\0\0\0R"\ 3\0\0\0\0\0Ry\0\0\0t\18\0\0\0MEDFileFloatFieldMultiTSR$\ 3\0\0R%\ 3\0\0t\ e\0\0\0DataArrayFloatRÃ\ 1\0\0t\15\0\0\0MEDCouplingFieldFloatR\1c\ 1\0\0\0\0\0Rm\0\0\0Rn\0\0\0R{\ 1\0\0R'\ 3\0\0Rk\0\0\0R|\ 1\0\0R~\ 1\0\0Rw\ 1\0\0\0\0\0R[\ 1\0\0\0\0\0R\7f\ 1\0\0R)\0\0\0R*\0\0\0RU\ 1\0\0R(\ 3\0\0(\e\0\0\0\0\0\0R9\ 1\0\0\0\0\0R\84\0\0\0R:\ 1\0\0R;\ 1\0\0\ 2\0\0\ 2\0\0RC\ 1\0\0R\80\0\0\0R)\ 3\0\0Rv\ 2\0\0R*\ 3\0\0R+\ 3\0\0R,\ 3\0\0R-\ 3\0\0R.\ 3\0\0R/\ 3\0\0R0\ 3\0\0R1\ 3\0\0R\1a\ 3\0\0R2\ 3\0\0R3\ 3\0\0R4\ 3\0\0Rl\ 1\0\0\ 1\0\0R5\ 3\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1e\0\0\0testFloat32InMEDFileFieldStar1z\17\0\0\0\0\0\0\ 2\ 6\ 1\f\ 1\f\ 1\f\ 1\f\ 1\13\ 1\10\ 1\13\ 1\10\ 1 \ 1\r\ 1\15\ 1%\ 1\1c\ 1\10\ 1\12\ 1"\ 14\ 1\ f\ 1\16\ 1\1f\ 1\16\ 1\15\ 1%\ 1\1c\ 1\13\ 1\f\0
++\ 1\10\ 1\12\ 1\1c\ 1\16\ 1\16\ 1\19\ 1\1c\ 1\e\ 1\1c\ 1\f\0
++\0\f\ 1\15\ 1)\ 1\13\0\11\ 1\1c\0\11\ 1\ f\0\a\0\16\ 1\r\ 1\15\ 1\10\ 1\ 4\ 1#\ 1\f\ 1\13\ 1\13\ 1\ f\0\13\0"\0*\ 1\r\0\r\ 1\f\ 1\r\ 1\16\ 1\1f\ 1\10\ 2\f\ 1\13\ 1\13\ 1\ f\0\13\0"\0\1c\0*\ 1\r\0\13\0\r\ 1\f\ 1$\0\r\ 1\16\ 1\13\ 1\e\0\13\ 1\16\ 1\19\ 1\10\ 1\ f\ 1\e\0\13\ 1\16\ 1\19\ 2\f\ 1\r\ 1\13\ 1\13\ 1\19\ 1\f\ 1\r\ 1\10\ 1\f\ 1\16\ 1\19\ 1\1a\ 1\1a\ 1\1a\ 1\1a\ 2-\ 11\ 1'\ 1'\ 13\ 2\ f\ 1/\ 1\19\ 1\19\ 1\16\ 1\1f\ 1\16\ 1\1f\ 2\16\ 1\19\ 1\16\ 1\1a\ 1c\ 1\0\0\0\f\0\0\0\15\0\0\0C\0\0\0\ 1\0\0d\ 1\0}\ 1\0t\0\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0g\12\0\83\ 1\0}\ 2\0t\ 1\0d\ 5\0d\ 6\0\83\ 2\0}\ 3\0|\ 3\0j\ 2\0|\ 2\0\83\ 1\0\ 1|\ 3\0j\ 3\0d\a\0\83\ 1\0\ 1|\ 3\0j\ 4\0t\ 5\0t\ 6\0t\a\0d\b\0\83\ 1\0\83\ 1\0\83\ 2\0\ 1|\ 3\0j\b\0\83\0\0\ 1\0t
++\0\83\ 1\0}\ 4\0|\ 4\0j\v\0|\ 3\0\83\ 1\0\ 1|\ 4\0j\f\0d   \0\83\ 1\0\ 1|\ 4\0j\r\0t\0\0t\ 6\0t\a\0d\b\0\83\ 1\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\ 4\0j\b\0\83\0\0\ 1|\ 3\0j\ e\0\83\0\0\\ 5\0}\ 5\0}\ 6\0}\a\0}\b\0\0t      \0t
++\0\83\ 1\0}
++\0|
++\0j\v\0|\ 3\0\83\ 1\0\ 1|
++\0j\f\0d
++\0\83\ 1\0\ 1|
++\0j\r\0t\0\0t\ 6\0t\a\0d\b\0\83\ 1\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|
++\0j\b\0\83\0\0\ 1t\ f\0|\ 1\0|
++\0t\10\0\83\ 3\0\ 1t\11\0|\ 1\0\83\ 1\0}\v\0|\0\0j\12\0|
++\0j\13\0|\v\0d\v\0d\v\0\83\ 3\0\83\ 1\0\ 1|\0\0j\14\0|\v\0j\15\0\83\0\0j\16\0\83\0\0d\a\0\83\ 2\0\ 1|\0\0j\14\0|\v\0j\15\0\83\0\0j\17\0d\f\0\83\ 1\0t\ 5\0\83\ 2\0\ 1d\r\0S( \0\0\0s'\0\0\0EDF8478 : Test of read/write of penta18s\r\0\0\0Pyfile115.medg\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0à?R \ 2\0\0i\ 3\0\0\0i\ 1\0\0\0i\12\0\0\0t\ e\0\0\0FieldOnPenta18t\11\0\0\0FieldOnPenta18Subg\11ê-\81\99\97q=i\0\0\0\0N(\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0ð?(\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 3\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0(\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 3\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0ð?(\ 3\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?(\ 3\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0à?g\0\0\0\0\0\0ð?(\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0\0\0(\ 3\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0(\ 3\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0à?g\0\0\0\0\0\0\0\0(\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0à?(\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0à?(\ 3\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0à?(\ 3\0\0\0g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0à?(\ 3\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0\0\0g\0\0\0\0\0\0à?(\ 3\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0à?g\0\0\0\0\0\0à?(\18\0\0\0RY\0\0\0R[\0\0\0Rc\0\0\0R]\0\0\0R^\0\0\0t\f\0\0\0NORM_PENTA18Rm\0\0\0Rn\0\0\0Rd\0\0\0Rw\ 1\0\0R\1c\ 1\0\0\0\0\0RB\0\0\0R{\ 1\0\0R\9b\ 1\0\0R_\ 2\0\0R.\0\0\0t  \0\0\0ReadFieldR0\0\0\0R1\0\0\0R+\0\0\0\0\0\0\0\0\0t\r\0\0\0getTypeOfCell(\f\0\0\0R   \0\0\0R9\ 1\0\0\ 1\0\0R\83\0\0\0R\b\0\0\0R\85\0\0\0Re\ 1\0\0t\ 2\0\0\0dit\ 2\0\0\0rdt\ 3\0\0\0rdiRâ\0\0\0R
++\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\r\0\0\0testPenta18_1í\17\0\0s<\0\0\0\0\ 2\ 6\ 1\ 3\ 1        \ 1       \ 1       \ 1       \ 1       \ 1\12\ 1\ f\ 1\r\ 1\r\ 1\1c\ 1
++\ 2\f\ 1\r\ 1\r\ 1\1f\ 1
++\ 2\e\ 2\f\ 1\r\ 1\r\ 1\1f\ 1
++\ 1\10\ 1\f\ 1\1c\ 1\1c\ 1\1f\ 1c\ 1\0\0\0\f\0\0\0\ 5\0\0\0C\0\0\0\ 1\0\0d\ 1\0}\ 1\0d\ 2\0}\ 2\0t\0\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0g\ 4\0\83\ 1\0}\ 3\0t\ 1\0\83\0\0}\ 4\0|\ 4\0j\ 2\0|\ 3\0|\ 3\0\83\ 2\0\ 1|\ 4\0j\ 3\0\83\0\0}\ 4\0|\ 4\0j\ 4\0d\a\0\83\ 1\0\ 1t\ 5\0\83\0\0}\ 5\0|\ 4\0|\ 5\0d\ 3\0<t\ 6\0t\a\0\83\ 1\0}\ 6\0|\ 6\0j\b\0|\ 4\0\83\ 1\0\ 1t  \0|\ 4\0j
++\0\83\0\0\83\ 1\0}\a\0|\a\0j\v\0\83\0\0\ 1|\ 6\0j\f\0|\a\0\83\ 1\0\ 1|\ 6\0j\ 4\0d\b\0\83\ 1\0\ 1t\r\0\83\0\0}\b\0|\b\0j\ e\0|\ 6\0\83\ 1\0\ 1|\ 5\0j\ f\0|\ 1\0d\ 5\0\83\ 2\0\ 1|\b\0j\ f\0|\ 1\0d\ 3\0\83\ 2\0\ 1t\10\0t\a\0\83\ 1\0}\ 6\0|\ 6\0j\b\0|\ 4\0\83\ 1\0\ 1t\11\0|\ 4\0j
++\0\83\0\0\83\ 1\0}\a\0|\a\0j\v\0\83\0\0\ 1|\ 6\0j\f\0|\a\0\83\ 1\0\ 1|\ 6\0j\ 4\0d      \0\83\ 1\0\ 1t\12\0\83\0\0}\b\0|\b\0j\ e\0|\ 6\0\83\ 1\0\ 1d
++\0d\0\0l\13\0}      \0d
++\0d\0\0l\14\0}
++\0t\15\0|\ 2\0\83\ 1\0}\v\0|\0\0j\16\0t\17\0|\b\0j\ f\0|\ 1\0d\ 3\0\83\ 4\0\ 1~\v\0|
++\0j\18\0d\ 3\0\83\ 1\0\ 1|  \0j\19\0j\1a\0|\ 2\0\83\ 1\0\ 1|       \0j\e\0|\ 2\0\83\ 1\0\ 1n\0\0d\0\0S(\v\0\0\0Ns\r\0\0\0Pyfile116.meds\r\0\0\0Pyfile116.erri\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0\ 2\0\0R5\ 4\0\0R6\ 4\0\0iÿÿÿÿ(\1c\0\0\0RY\0\0\0\0\0\0Rc\0\0\0\ 1\0\0RB\0\0\0R>\0\0\0R&\ 3\0\0R\13\ 1\0\0\0\0\0Rk\0\0\0\0\0\0Ry\ 1\0\0R{\ 1\0\0R\1e\ 3\0\0R%\ 1\0\0RB\ 5\0\0Rc\ 5\0\0Rb\ 5\0\0R`\ 5\0\0R\11\0\0\0t\ 2\0\0\0gcR\ 6\0\0\0R)\0\0\0R*\0\0\0t\a\0\0\0collectR\8b\ 4\0\0R\8c\ 4\0\0R\8d\ 4\0\0(\f\0\0\0R    \0\0\0R9\ 1\0\0R\8f\ 4\0\0R\80\0\0\0R\83\0\0\0R\86\0\0\0R\b\0\0\0R\ 2\ 3\0\0\0\0\0R\11\0\0\0Rn\ 5\0\0R\93\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt9\0\0\0testMedFileCapabilityToCryOnNewFeatureWritingIntoOldFiles\11\18\0\0sF\0\0\0\0\ 4\ 6\ 1\ 6\ 1\18\ 1     \ 1\10\ 1\f\ 1\r\ 1 \ 1
++\ 1\f\ 1\r\0\12\0
++\ 1\r\ 1\r\ 1 \ 1\r\ 1\10\ 1\10\ 2\f\ 1\r\0\12\0
++\ 1\r\ 1\r\ 1 \ 1\r\ 2\18\ 1\f\ 1\19\ 1\ 3\ 1\r\ 1\12\ 1\10\ 1c\ 1\0\0\0\11\0\0\0\ 4\0\0\0C\0\0\0sd\ 2\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 3\0g\ 2\0\83\ 1\0}\ 2\0t\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0|\ 2\0|\ 2\0|\ 2\0\83\ 3\0\ 1|\ 3\0j\ 3\0\83\0\0}\ 3\0|\ 3\0j\ 4\0\83\0\0}\ 4\0|\ 4\0j\ 5\0d\ 4\0d\ 2\0d\ 2\0g\ 3\0\83\ 1\0\ 1t\ 6\0j\a\0|\ 3\0|\ 4\0g\ 2\0\83\ 1\0}\ 5\0|\ 5\0j\b\0d\ 5\0\83\ 1\0\ 1t    \0\83\0\0}\ 6\0|\ 5\0|\ 6\0d\ 2\0<|\ 6\0j
++\0d\ 2\0\83\ 1\0}\a\0t\v\0\83\0\0}\b\0|\b\0j\f\0|\ 6\0\83\ 1\0\ 1t\v\0\83\0\0}       \0|      \0j\f\0|\a\0\83\ 1\0\ 1t\r\0t\ e\0\83\ 1\0}
++\0|
++\0j\b\0d\ 6\0\83\ 1\0\ 1|
++\0j\ f\0|\ 5\0\83\ 1\0\ 1|
++\0j\10\0d\a\0d\ 3\0d\ 4\0\83\ 3\0\ 1t\0\0|\ 5\0j\11\0\83\0\0\83\ 1\0}\ 2\0|\ 2\0j\12\0\83\0\0\ 1|
++\0j\13\0|\ 2\0\83\ 1\0\ 1t\14\0\83\0\0}\v\0|\v\0j\15\0|
++\0\83\ 1\0\ 1t\16\0\83\0\0}\f\0|\f\0j\17\0|\v\0\83\ 1\0\ 1|\v\0j\ 4\0\83\0\0}\r\0|\r\0j\10\0d\b\0d     \0d
++\0\83\ 3\0\ 1|\r\0j\18\0\83\0\0\ 4\1ed\v\09\ 2(|\f\0j\17\0|\r\0\83\ 1\0\ 1t\19\0\83\0\0}\ e\0|\ e\0j\1a\0|\f\0\83\ 1\0\ 1|\ e\0j
++\0|\b\0\0\83\ 2\0}\ f\0|\0\0j\e\0|\ f\0|       \0d\ 2\0\19\83\ 2\0\ 1|\b\0j\1c\0|\ 1\0d\ 4\0\83\ 2\0\ 1|\ e\0j\1c\0|\ 1\0d\ 2\0\83\ 2\0\ 1t\v\0|\ 1\0\83\ 1\0}\b\0t\19\0|\ 1\0\83\ 1\0}\ e\0|\b\0d\ 2\0\19j
++\0d\ 2\0\83\ 1\0}\a\0t\v\0\83\0\0}\10\0|\10\0j\f\0|\a\0\83\ 1\0\ 1|\ e\0j
++\0|\b\0|\10\0\83\ 2\0}\ f\0|\0\0j\e\0|\ f\0|\10\0d\ 2\0\19\83\ 2\0\ 1d\0\0S(\f\0\0\0Ns\r\0\0\0Pyfile117.medi\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0\ 2\0\0R5\ 4\0\0g\0\0\0\0\0\0\b@i\ 3\0\0\0i\ 4\0\0\0g\0\0\0\0\0\0\14@g\0\0\0\0\0\0\0@(\1d\0\0\0RY\0\0\0\0\0\0Rc\0\0\0\ 1\0\0Rq\0\0\0\ 1\0\0R[\0\0\0R[\ 2\0\0RB\0\0\0R>\0\0\0RA\ 4\0\0RP\ 1\0\0R7\ 2\0\0Rw\ 1\0\0R\1c\ 1\0\0\0\0\0\0\0\0\ 1\0\0Ry\ 1\0\0R{\ 1\0\0\0\0\0R%\ 1\0\0\0\0\0RE\ 3\0\0R+\ 1\0\0R[\ 1\0\0R\\ 1\0\0t      \0\0\0myTester1R\v\0\0\0(\11\0\0\0\0\0\0R9\ 1\0\0\ 1\0\0R\83\0\0\0R\85\0\0\0R\16\ 2\0\0R\86\0\0\0t\ 3\0\0\0mmqt\ 3\0\0\0mmst\ 4\0\0\0mmsqR\b\0\0\0\0\0\0Rm\ 1\0\0R\\ 5\0\0Rl\ 1\0\0RV\ 3\0\0t\ 4\0\0\0mmqs(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\e\0\0\0testFieldsLinearToQuadratic7\18\0\0sZ\0\0\0\0\ 1\ 6\ 1\12\ 1      \ 1\13\ 1\f\ 1\f\ 1\16\ 1\15\ 1\r\ 1   \ 1
++\ 1\ f\ 1   \0\r\ 1     \0\r\ 2\f\ 1\r\ 1\r\ 1\13\ 1\12\ 1
++\ 1\r\ 1   \ 1\r\ 1     \ 1\r\ 1\f\ 1\13\ 1\11\ 1\r\ 1     \ 1\r\ 1\12\ 1\14\ 2\10\0\10\ 1\f\0\f\ 1\13\0       \0\r\ 1\12\ 1\14\ 1c\ 3\0\0\0\b\0\0\0y\0\0\0C\0\0\0\ 3\0\0t\0\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 1\0d\ 1\0d\ 2\0d\ 2\0d\ 1\0d\ 2\0d\ 1\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 2\0d\ 3\0d\ 1\0d\ 1\0d\ 4\0d\ 1\0d\ 1\0d\ 3\0d\ 2\0d\ 1\0d\ 4\0d\ 2\0d\ 1\0d\ 3\0d\ 1\0d\ 2\0d\ 4\0d\ 1\0d\ 2\0d\ 3\0d\ 2\0d\ 2\0d\ 4\0d\ 2\0d\ 2\0d\ 5\0d\ 1\0d\ 1\0d\ 1\0d\ 5\0d\ 1\0d\ 5\0d\ 2\0d\ 1\0d\ 2\0d\ 5\0d\ 1\0d\ 5\0d\ 1\0d\ 2\0d\ 1\0d\ 5\0d\ 2\0d\ 5\0d\ 2\0d\ 2\0d\ 2\0d\ 5\0d\ 2\0d\ 2\0d\ 1\0d\ 5\0d\ 1\0d\ 1\0d\ 5\0d\ 1\0d\ 2\0d\ 5\0d\ 2\0d\ 2\0d\ 5\0d\ 6\0d\ 1\0d\ 1\0d\ 3\0d\ 5\0d\ 1\0d\ 6\0d\ 2\0d\ 1\0d\ 4\0d\ 5\0d\ 1\0d\ 6\0d\ 1\0d\ 2\0d\ 3\0d\ 5\0d\ 2\0d\ 6\0d\ 2\0d\ 2\0d\ 4\0d\ 5\0d\ 2\0d\ 4\0d\ 1\0d\ 5\0d\ 3\0d\ 1\0d\ 5\0d\ 3\0d\ 2\0d\ 5\0d\ 4\0d\ 2\0d\ 5\0gx\0d\a\0d\b\0\83\ 3\0}\ 3\0t\ 1\0d     \0d
++\0d\v\0d\b\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0d\15\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0d#\0d$\0d%\0d&\0d'\0d(\0d)\0d*\0d+\0d,\0d-\0d.\0d/\0g(\0\83\ 1\0}\ 4\0t\0\0d
++\0d    \0d\v\0d\b\0d\r\0d\f\0d\ e\0d\ f\0d\1d\0d\1c\0d\1e\0d\1f\0d!\0\0d"\0d#\0d\ 5\0\0d\ 6\0d\v\0d0\0d\f\0d1\0d\ e\0d\b\0d\v\0d\r\0d\f\0d2\0d\1c\0d3\0d\1e\0d4\0\0d5\0d"\0d\1f\0d\1e\0d!\0\0g(\0\83\ 1\0}\ 5\0|\ 1\0d
++\0\19d
++\0\19j\ 2\0|\ 2\0\83\ 1\0}\ 6\0|\0\0j\ 3\0|\ 6\0j\ 4\0\83\0\0d\ 4\0d     \0d\v\0g\ 3\0\83\ 2\0\ 1t\ 5\0|\ 6\0j\ 6\0\83\0\0\83\ 1\0}\a\0|\0\0j\a\0|\a\0j\b\0\83\0\0j   \0|\ 4\0\83\ 1\0\83\ 1\0\ 1|\0\0j\a\0|\a\0j
++\0\83\0\0\0|\ 3\0d6\0\83\ 2\0\83\ 1\0\ 1|\0\0j\a\0|\ 6\0j\v\0\83\0\0j  \0|\ 5\0d6\0\83\ 2\0\83\ 1\0\ 1|\ 1\0d
++\0\19d   \0\19j\ 2\0|\ 2\0\83\ 1\0}\ 6\0|\0\0j\ 3\0|\ 6\0j\ 4\0\83\0\0d7\0d\b\0d\r\0g\ 3\0\83\ 2\0\ 1t\ 5\0|\ 6\0j\ 6\0\83\0\0\83\ 1\0}\a\0|\0\0j\a\0|\a\0j\b\0\83\0\0\0|\ 4\0\83\ 1\0\83\ 1\0\ 1|\0\0j\a\0|\a\0j
++\0\83\0\0\0|\ 3\0d6\0\83\ 2\0\83\ 1\0\ 1|\0\0j\a\0|\ 6\0j\v\0\83\0\0j  \0d\v\0|\ 5\0\14d6\0\83\ 2\0\83\ 1\0\ 1d\0\0S(8\0\0\0Ng\0\0\0\0\0\0\0\0g\0\0\0\0\0\0ð?g\0\0\0\0\0\0\0@g\0\0\0\0\0\0\b@g\0\0\0\0\0\0à?g\0\0\0\0\0\0\ 4@i(\0\0\0i\ 3\0\0\0i\ 1\0\0\0i\0\0\0\0i\ 2\0\0\0i\ 5\0\0\0i\ 4\0\0\0i\ 6\0\0\0i\a\0\0\0i\10\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0i\14\0\0\0i\15\0\0\0i\16\0\0\0i\17\0\0\0i\18\0\0\0i\19\0\0\0i\1a\0\0\0i\e\0\0\0i    \0\0\0i\b\0\0\0i
++\0\0\0i\v\0\0\0i\r\0\0\0i\f\0\0\0i\ e\0\0\0i\ f\0\0\0i\1c\0\0\0i\1d\0\0\0i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i#\0\0\0i$\0\0\0i%\0\0\0i&\0\0\0i'\0\0\0g\0\0\0\0\0\0\12@g\0\0\0\0\0\0\1a@g\0\0\0\0\0\0!@g\0\0\0\0\0\0%@g\0\0\0\0\0\0)@g\0\0\0\0\0\0-@g\11ê-\81\99\97q=g\0\0\0\0\0\0\14@(\f\0\0\0RY\0\0\0Rk\0\0\0R5\ 4\0\0R+\0\0\0\0\0\0Rz\0\0\0\0\0\0R0\0\0\0Rv\0\0\0R1\0\0\0\0\0\0R)\ 1\0\0(\b\0\0\0R       \0\0\0RV\ 3\0\0Rr\ 5\0\0t\a\0\0\0dataExpt\b\0\0\0dataExp1t\b\0\0\0dataExp2t\a\0\0\0fToTestt\ 5\0\0\0mTest(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyRq\ 5\0\0b\18\0\0s"\0\0\0\0\ 1ÿ\0{\ 1\84\ 1\84\ 1\17\ 1\1f\ 1\12\ 1\1c\ 1\1f\ 1\1f\ 2\17\ 1\1f\ 1\12\ 1\1c\ 1\1f\ 1#\ 1c\ 1\0\0\0\15\0\0\0\16\0\0\0C\0\0\0s0\ 5\0\0d\ 1\0}\ 1\0t\0\0d\ 2\0d\ 3\0g\ 2\0\83\ 1\0}\ 2\0t\ 1\0\83\0\0}\ 3\0|\ 3\0j\ 2\0|\ 2\0|\ 2\0|\ 2\0\83\ 3\0\ 1|\ 3\0j\ 3\0\83\0\0}\ 3\0|\ 3\0j\ 4\0\83\0\0}\ 4\0|\ 4\0j\ 5\0d\ 4\0d\ 2\0d\ 2\0g\ 3\0\83\ 1\0\ 1t\ 6\0j\a\0|\ 3\0|\ 4\0g\ 2\0\83\ 1\0}\ 5\0|\ 5\0j\b\0d\ 5\0\83\ 1\0\ 1|\ 5\0j\ 2\0t\0\0\0|\ 5\0j
++\0\83\0\0t\0\0d\ 6\0d\ 6\0d\ 6\0g\ 3\0d\ 3\0d\a\0\83\ 3\0\83\ 2\0\83\ 1\0\ 1t\v\0\83\0\0}\ 6\0|\ 5\0|\ 6\0d\ 2\0<|\ 6\0j\f\0d\ 2\0\83\ 1\0}\a\0t\r\0\83\0\0}\b\0|\b\0j\ e\0|\ 6\0\83\ 1\0\ 1t\r\0\83\0\0}    \0|      \0j\ e\0|\a\0\83\ 1\0\ 1t\ f\0t\10\0\83\ 1\0}
++\0|
++\0j\b\0d\b\0\83\ 1\0\ 1|
++\0j\11\0|\ 5\0\83\ 1\0\ 1|
++\0j\12\0\0d\ 3\0d\ 4\0\83\ 3\0\ 1t\0\0d
++\0\83\ 1\0}\ 2\0|\ 2\0j\13\0\83\0\0\ 1|\ 2\0j\13\0\83\0\0\ 1|
++\0j\14\0|\ 2\0\83\ 1\0\ 1t\15\0\83\0\0}\v\0t\16\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0g\b\0\83\ 1\0}\f\0|\f\0j\b\0d\12\0\83\ 1\0\ 1|\v\0j\17\0|
++\0|\ 6\0d\ 2\0|\f\0\83\ 4\0\ 1|\v\0j\ 4\0\83\0\0}\r\0|\r\0j\12\0d\a\0d\13\0d\14\0\83\ 3\0\ 1|\r\0j\18\0\83\0\0\ 4\1ed\15\09\ 2(t\19\0\83\0\0}\ e\0|\ e\0j\1a\0|\v\0\83\ 1\0\ 1|\ e\0j\1a\0|\r\0\83\ 1\0\ 1t\e\0\83\0\0}\ f\0|\ f\0j\1c\0|\ e\0\83\ 1\0\ 1|\ f\0j\f\0|\b\0|     \0\83\ 2\0}\10\0|\b\0j\1d\0|\ 1\0d\ 4\0\83\ 2\0\ 1|\ f\0j\1d\0|\ 1\0d\ 2\0\83\ 2\0\ 1|\0\0j\1e\0|\10\0|\a\0\83\ 2\0\ 1t\r\0|\ 1\0\83\ 1\0}\b\0t\e\0|\ 1\0\83\ 1\0}\ f\0|\b\0d\ 2\0\19j\f\0d\ 2\0\83\ 1\0}\a\0t\r\0\83\0\0}\11\0|\11\0j\ e\0|\a\0\83\ 1\0\ 1|\ f\0j\f\0|\b\0|\11\0\83\ 2\0}\10\0|\0\0j\1e\0|\10\0|\a\0\83\ 2\0\ 1t\v\0\83\0\0}\ 6\0|\ 5\0|\ 6\0d\ 2\0<|\ 6\0j\f\0d\ 2\0\83\ 1\0}\a\0t\r\0\83\0\0}\b\0|\b\0j\ e\0|\ 6\0\83\ 1\0\ 1t\r\0\83\0\0}       \0|      \0j\ e\0|\a\0\83\ 1\0\ 1t\ f\0t\10\0\83\ 1\0}
++\0|
++\0j\b\0d\b\0\83\ 1\0\ 1|
++\0j\11\0|\ 5\0\83\ 1\0\ 1|
++\0j\12\0\0d\ 3\0d\ 4\0\83\ 3\0\ 1t\0\0d\v\0\83\ 1\0}\ 2\0|\ 2\0j\13\0\83\0\0\ 1|\ 2\0j\13\0\83\0\0\ 1|
++\0j\14\0|\ 2\0\83\ 1\0\ 1t\15\0\83\0\0}\v\0t\16\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\16\0g    \0\83\ 1\0}\f\0|\f\0j\b\0d\12\0\83\ 1\0\ 1|\v\0j\17\0|
++\0|\ 6\0d\ 2\0|\f\0\83\ 4\0\ 1t\19\0\83\0\0}\ e\0|\ e\0j\1a\0|\v\0\83\ 1\0\ 1t\e\0\83\0\0}\ f\0|\ f\0j\1c\0|\ e\0\83\ 1\0\ 1|\ f\0j\f\0|\b\0|  \0\83\ 2\0}\10\0t\16\0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\1f\0\0d!\0d"\0g\15\0\83\ 1\0}\12\0|\12\0j\b\0d#\0\83\ 1\0\ 1|\10\0d\ 2\0\19d\ 2\0\19}\13\0t\0\0d\ 2\0d\ 3\0d\ 4\0d\a\0d\13\0d$\0d%\0d&\0d
++\0d'\0d\ 3\0d(\0d\ 4\0d)\0d$\0d*\0d%\0d\a\0d\ 4\0d\13\0d$\0g\15\0\83\ 1\0}\14\0|\13\0j\1f\0d#\0\83\ 1\0\0|\12\0\83\ 1\0\ 4t!\0\82\ 1\0|\13\0j\18\0\83\0\0\0|\14\0d+\0\83\ 2\0\ 4t!\0\82\ 1\0|\13\0j"\0\83\0\0d"\0d\ 3\0d/\0d#\0d-\0f\ 4\0g\ 1\0f\ 2\0g\ 1\0k\ 2\0s,\ 5t!\0\82\ 1\0d.\0S(0\0\0\0s?\0\0\0Same than testFieldsLinearToQuadratic but with profile on NODESs\r\0\0\0Pyfile118.medi\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0\ 2\0\0g\0\0\0\0\0\0ø?i\ 3\0\0\0R5\ 4\0\0g\0\0\0\0\0\0\b@i\b\0\0\0i       \0\0\0i
++\0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0i\ e\0\0\0i\ f\0\0\0R\83\ 1\0\0i\ 4\0\0\0g\0\0\0\0\0\0\14@g\0\0\0\0\0\0\10@i\10\0\0\0i\1d\0\0\0i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i#\0\0\0i$\0\0\0i%\0\0\0i&\0\0\0i'\0\0\0i(\0\0\0t\b\0\0\0pfl_NODEi\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0\ 4@g\0\0\0\0\0\0\12@g\0\0\0\0\0\0\1a@g\11ê-\81\99\97q=i\15\0\0\0R&\0\0\0N(\ 2\0\0\0i\0\0\0\0i\15\0\0\0(#\0\0\0RY\0\0\0\0\0\0Rc\0\0\0\ 1\0\0Rq\0\0\0\ 1\0\0R[\0\0\0R[\ 2\0\0RB\0\0\0\ 2\0\0\0\0\0R>\0\0\0RA\ 4\0\0RP\ 1\0\0R7\ 2\0\0Rw\ 1\0\0R\1c\ 1\0\0\0\0\0\0\0\0Ry\ 1\0\0R{\ 1\0\0\0\0\0Rk\0\0\0R|\ 1\0\0R+\ 1\0\0\0\0\0RE\ 3\0\0R[\ 1\0\0R\\ 1\0\0R\v\0\0\0t      \0\0\0myTester2R=\ 2\0\0R1\0\0\0RE\ 5\0\0\ 1\0\0(\15\0\0\0R  \0\0\0R9\ 1\0\0\ 1\0\0R\83\0\0\0R\85\0\0\0R\16\ 2\0\0R\86\0\0\0Rr\ 5\0\0Rs\ 5\0\0Rt\ 5\0\0R\b\0\0\0\0\0\0R\83\ 1\0\0R\\ 5\0\0Rm\ 1\0\0Rl\ 1\0\0RV\ 3\0\0Ru\ 5\0\0t\v\0\0\0pflExpectedt
++\0\0\0f1tsToTestt\ 4\0\0\0exp1(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1c\0\0\0testFieldsLinearToQuadratic2u\18\0\0\0\0\0\0\ 2\ 6\ 1\12\ 1      \ 1\13\ 1\f\ 1\f\ 1\16\ 1\15\ 1\r\ 24\ 2 \ 1
++\ 1\ f\ 1   \0\r\ 1     \0\r\ 2\f\ 1\r\ 1\r\ 1\13\ 1\f\0
++\ 1
++\ 1\r\ 1   \ 1$\0\r\ 1\16\ 1\f\ 1\13\ 1\11\ 1   \ 1\r\ 1\r\ 1   \ 1\r\ 1\12\ 1\10\0\10\ 2\10\ 2\f\0\f\ 1\13\0       \0\r\ 1\12\ 1\10\ 2 \ 1
++\ 1\ f\ 1   \0\r\ 1     \0\r\ 2\f\ 1\r\ 1\r\ 1\13\ 1\f\0
++\ 1
++\ 1\r\ 1   \ 1'\0\r\ 1\16\ 1 \ 1\r\ 1     \ 1\r\ 1\12\ 2K\0\r\ 1\ e\ 1K\ 1\1e\ 1\1e\ 10\ 1c\ 3\0\0\0\b\0\0\0\19\0\0\0C\0\0\0si\ 5\0\0t\0\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d   \0d
++\0d\v\0d\f\0d\r\0d\ e\0d\ f\0d\10\0d\11\0d\12\0d\13\0d\14\0g\14\0\83\ 1\0}\ 3\0|\ 3\0j\ 1\0d\15\0\83\ 1\0\ 1|\ 1\0d\16\0\19d\16\0\19}\ 4\0t\ 2\0d\16\0d\17\0d\18\0d\19\0d\1a\0d\e\0d\1c\0d\1d\0d\1e\0d\17\0d\1f\0d\18\0\0d\e\0d!\0d\1c\0d\19\0d\18\0d\1a\0d\e\0g\14\0\83\ 1\0}\ 5\0|\0\0j\ 3\0|\ 4\0j\ 4\0d\15\0\83\ 1\0j\ 5\0|\ 3\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 3\0|\ 4\0j\ 6\0\83\0\0j\ 5\0|\ 5\0d"\0\83\ 2\0\83\ 1\0\ 1|\0\0j\a\0|\ 4\0j\b\0\83\0\0t     \0d\17\0d\16\0d#\0f\ 2\0d\15\0d$\0f\ 4\0g\ 1\0f\ 2\0g\ 1\0\83\ 2\0\ 1|\ 1\0d\16\0\19d\16\0\19j
++\0|\ 2\0\83\ 1\0}\ 6\0|\0\0j\a\0|\ 6\0j\v\0\83\0\0d%\0d\17\0d\18\0g\ 3\0\83\ 2\0\ 1t\f\0|\ 6\0j\r\0\83\0\0\83\ 1\0}\a\0|\0\0j\ 3\0|\a\0j\ e\0\83\0\0j\ 5\0t\0\0d\17\0d\16\0d\18\0d\19\0d\e\0d\1a\0d\1c\0d\1d\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d&\0d'\0d(\0d)\0g\14\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 3\0|\a\0j\ f\0\83\0\0j\ 5\0t\ 2\0d\18\0d\16\0d\16\0f\ 3\0d\19\0d\16\0d\16\0f\ 3\0d\18\0d\17\0d\16\0f\ 3\0d\19\0d\17\0d\16\0f\ 3\0d\18\0d\16\0d\17\0f\ 3\0d\19\0d\16\0d\17\0f\ 3\0d\18\0d\17\0d\17\0f\ 3\0d\19\0d\17\0d\17\0f\ 3\0d\1f\0d\16\0d\16\0f\ 3\0d\18\0d\1e\0d\16\0f\ 3\0d\1f\0d\17\0d\16\0f\ 3\0d\19\0d\1e\0d\16\0f\ 3\0d\1f\0d\16\0d\17\0f\ 3\0d\18\0d\1e\0d\17\0f\ 3\0d\1f\0d\17\0d\17\0f\ 3\0d\19\0d\1e\0d\17\0f\ 3\0d\19\0d\16\0d\1e\0f\ 3\0d\18\0d\16\0d\1e\0f\ 3\0d\18\0d\17\0d\1e\0f\ 3\0d\19\0d\17\0d\1e\0f\ 3\0g\14\0d#\0d\19\0\83\ 3\0d"\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ 3\0|\ 6\0j\10\0\83\0\0j\ 5\0|\ 5\0d"\0\83\ 2\0\83\ 1\0\ 1|\ 1\0d\16\0\19d\17\0\19}\ 4\0|\0\0j\ 3\0|\ 4\0j\ 4\0d\15\0\83\ 1\0j\ 5\0|\ 3\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 3\0|\ 4\0j\ 6\0\83\0\0j\ 5\0d\1a\0|\ 5\0\14d"\0\83\ 2\0\83\ 1\0\ 1|\0\0j\a\0|\ 4\0j\b\0\83\0\0t   \0d\17\0d\16\0d#\0f\ 2\0d\15\0d$\0f\ 4\0g\ 1\0f\ 2\0g\ 1\0\83\ 2\0\ 1|\ 1\0d\16\0\19d\17\0\19j
++\0|\ 2\0\83\ 1\0}\ 6\0|\0\0j\a\0|\ 6\0j\v\0\83\0\0d*\0d\19\0d\1a\0g\ 3\0\83\ 2\0\ 1t\f\0|\ 6\0j\r\0\83\0\0\83\ 1\0}\a\0|\0\0j\ 3\0|\a\0j\ e\0\83\0\0j\ 5\0t\0\0d\17\0d\16\0d\18\0d\19\0d\e\0d\1a\0d\1c\0d\1d\0d\ 1\0d\ 2\0d\ 3\0d\ 4\0d\ 5\0d\ 6\0d\a\0d\b\0d&\0d'\0d(\0d)\0g\14\0\83\ 1\0\83\ 1\0\83\ 1\0\ 1|\0\0j\ 3\0|\a\0j\ f\0\83\0\0j\ 5\0t\ 2\0d\18\0d\16\0d\16\0f\ 3\0d\19\0d\16\0d\16\0f\ 3\0d\18\0d\17\0d\16\0f\ 3\0d\19\0d\17\0d\16\0f\ 3\0d\18\0d\16\0d\17\0f\ 3\0d\19\0d\16\0d\17\0f\ 3\0d\18\0d\17\0d\17\0f\ 3\0d\19\0d\17\0d\17\0f\ 3\0d\1f\0d\16\0d\16\0f\ 3\0d\18\0d\1e\0d\16\0f\ 3\0d\1f\0d\17\0d\16\0f\ 3\0d\19\0d\1e\0d\16\0f\ 3\0d\1f\0d\16\0d\17\0f\ 3\0d\18\0d\1e\0d\17\0f\ 3\0d\1f\0d\17\0d\17\0f\ 3\0d\19\0d\1e\0d\17\0f\ 3\0d\19\0d\16\0d\1e\0f\ 3\0d\18\0d\16\0d\1e\0f\ 3\0d\18\0d\17\0d\1e\0f\ 3\0d\19\0d\17\0d\1e\0f\ 3\0g\14\0d#\0d\19\0\83\ 3\0d"\0\83\ 2\0\83\ 1\0\ 1|\0\0j\ 3\0|\ 6\0j\10\0\83\0\0j\ 5\0d\1a\0|\ 5\0\14d"\0\83\ 2\0\83\ 1\0\ 1d\0\0S(+\0\0\0Ni\b\0\0\0i       \0\0\0i
++\0\0\0i\v\0\0\0i\f\0\0\0i\r\0\0\0i\ e\0\0\0i\ f\0\0\0i\1d\0\0\0i\1e\0\0\0i\1f\0\0\0\0\0\0i!\0\0\0i"\0\0\0i#\0\0\0i$\0\0\0i%\0\0\0i&\0\0\0i'\0\0\0i(\0\0\0R|\ 5\0\0i\0\0\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 3\0\0\0i\ 4\0\0\0i\ 5\0\0\0i\ 6\0\0\0i\a\0\0\0g\0\0\0\0\0\0à?g\0\0\0\0\0\0\ 4@g\0\0\0\0\0\0\12@g\0\0\0\0\0\0\1a@g\11ê-\81\99\97q=i\14\0\0\0R&\0\0\0g\0\0\0\0\0\0\b@i\10\0\0\0i\11\0\0\0i\12\0\0\0i\13\0\0\0g\0\0\0\0\0\0\14@(\11\0\0\0Rk\0\0\0RB\0\0\0RY\0\0\0R0\0\0\0R=\ 2\0\0R1\0\0\0R+\ 1\0\0R+\0\0\0\ 1\0\0\ 3\0\0R5\ 4\0\0\0\0\0Rz\0\0\0\0\0\0Rv\0\0\0\0\0\0R)\ 1\0\0(\b\0\0\0R    \0\0\0RV\ 3\0\0Rr\ 5\0\0R~\ 5\0\0R\7f\ 5\0\0R\80\ 5\0\0Rz\ 5\0\0R{\ 5\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyR}\ 5\0\0Ã\18\0\0s4\0\0\0\0\ 1H\0\r\ 1\ e\ 1H\ 1\1f\ 1\1f\ 14\ 1\17\ 1\1f\ 1\12\ 1^\ 1ÿ\0\1c\ 1\1f\ 2\ e\ 1\1f\ 1#\ 14\ 1\17\ 1\1f\ 1\12\ 1^\ 1ÿ\0\1c\ 1#\ 2c\ 1\0\0\0
++\0\0\0\ 6\0\0\0C\0\0\0\ 2\0\0t\0\0d\ 1\0\83\ 1\0}\ 1\0|\ 1\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}\ 2\0|\ 2\0j\ 3\0|\ 1\0|\ 1\0\83\ 2\0\ 1|\ 2\0j\ 4\0\83\0\0}\ 2\0|\ 2\0j\ 5\0\83\0\0}\ 3\0|\ 3\0j\ 6\0d\ 2\0\83\ 1\0\ 1t\a\0j\b\0|\ 3\0|\ 2\0\83\ 2\0}\ 2\0|\ 2\0j    \0d\ 3\0\83\ 1\0\ 1t
++\0\83\0\0}\ 4\0|\ 2\0|\ 4\0d\ 2\0<t\v\0t\f\0\83\ 1\0}\ 5\0|\ 5\0j\r\0|\ 2\0\83\ 1\0\ 1t\0\0|\ 2\0j\ e\0\83\0\0\83\ 1\0}\ 1\0|\ 1\0j\ 1\0\83\0\0\ 1|\ 5\0j\ f\0|\ 1\0\83\ 1\0\ 1|\ 5\0j       \0d\ 4\0\83\ 1\0\ 1t\10\0|\ 2\0j\ e\0\83\0\0\83\ 1\0}\ 6\0|\ 6\0j\ 1\0\83\0\0\ 1|\ 6\0j        \0d\ 5\0\83\ 1\0\ 1d\ 6\0d\ 2\0d\12\0d\b\0d\b\0f\ 4\0g\ 1\0f\ 2\0d       \0d\ 2\0d\13\0d\b\0d\b\0f\ 4\0g\ 1\0f\ 2\0g\ 2\0}\a\0d\ 6\0d\ 2\0d\14\0d\v\0d\b\0f\ 4\0g\ 1\0f\ 2\0d   \0d\ 2\0d\15\0d\f\0d\b\0f\ 4\0g\ 1\0f\ 2\0g\ 2\0}\b\0t\11\0\83\0\0}     \0|      \0j\12\0|\ 5\0|\ 4\0d\ 2\0|\ 6\0\83\ 4\0\ 1|\0\0j\13\0|     \0j\14\0\83\0\0d\16\0\83\ 2\0\ 1|\0\0j\13\0|   \0j\15\0\83\0\0|\a\0\83\ 2\0\ 1|\0\0j\16\0|   \0j\17\0|\ 4\0\83\ 1\0j\18\0|\ 5\0d\r\0d\r\0\83\ 3\0\83\ 1\0\ 1t\11\0\83\0\0}    \0|      \0j\19\0|\ 5\0|\ 4\0d\ 2\0|\ 6\0\83\ 4\0\ 1|\0\0j\13\0|     \0j\14\0\83\0\0d\ e\0|\ 6\0j\1a\0\83\0\0\16d\ f\0|\ 6\0j\1a\0\83\0\0\16f\ 2\0\83\ 2\0\ 1|\0\0j\13\0\0j\15\0\83\0\0|\b\0\83\ 2\0\ 1|\0\0j\16\0|   \0j\17\0|\ 4\0\83\ 1\0j\18\0|\ 5\0d\r\0d\r\0\83\ 3\0\83\ 1\0\ 1|\0\0j\16\0|    \0j\e\0d\v\0\83\ 1\0j\1c\0d\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\16\0|  \0j\e\0d\f\0\83\ 1\0j\1c\0d\10\0\83\ 1\0\83\ 1\0\ 1d\11\0S(\17\0\0\0\0\0\0 Sometimes for downstream code fan of profiles, profile are requested unconditionally. setFieldProfile try to reduce at most profile usage. So setFieldProfileFlatly has been added to always create
++        a profile.i
++\0\0\0i\0\0\0\0\ 2\0\0R5\ 4\0\0R\83\ 1\0\0i\ 3\0\0\0\0\0\0R&\0\0\0i\ 4\0\0\0\0\0\0t\r\0\0\0pfl_NORM_TRI3RX\ 3\0\0g\11ê-\81\99\97q=s\f\0\0\0%s_NORM_TRI3s\r\0\0\0%s_NORM_QUAD4iQ\0\0\0N(\ 2\0\0\0i\0\0\0\0\0\0\0(\ 2\0\0\0\0\0\0\0\0\0(\ 2\0\0\0i\0\0\0\0\0\0\0(\ 2\0\0\0\0\0\0\0\0\0(\0\0\0\0(\1d\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0\ 1\0\0Rq\0\0\0\ 3\0\0R[\0\0\0R[\ 2\0\0RB\0\0\0R>\0\0\0Rw\ 1\0\0R\13\ 1\0\0\0\0\0\0\0\0R{\ 1\0\0Rk\0\0\0\0\0\0R|\ 1\0\0R+\0\0\0R]\ 2\0\0\ 1\0\0R0\0\0\0R5\ 4\0\0R1\0\0\0t\15\0\0\0setFieldProfileFlatlyRC\0\0\0R=\ 2\0\0R\98\ 1\0\0(
++\0\0\0R  \0\0\0\ 1\0\0R\83\0\0\0R\85\0\0\0R\86\0\0\0R\b\0\0\0R\83\ 1\0\0t\ 5\0\0\0refSpt\ 6\0\0\0refSp1Rú\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\1a\0\0\0testSetFieldProfileFlatly1Þ\18\0\0sF\0\0\0\0\ 3\f\0
++\ 1     \0\10\ 1\f\ 1\f\ 1\r\ 1\12\ 1\r\ 1   \ 1
++\ 1\f\ 1\r\ 1\12\ 1
++\ 1\r\ 1\r\ 1\12\0
++\0\r\ 26\ 16\ 2       \ 1\16\ 1\16\ 1\16\ 1%\ 2       \ 1\16\ 10\ 1\16\ 1%\ 1\1f\ 1\1f\ 1c\ 1\0\0\0
++\0\0\0\ 6\0\0\0C\0\0\0s*\ 4\0\0t\0\0d\ 1\0\83\ 1\0}\ 1\0|\ 1\0j\ 1\0\83\0\0\ 1t\ 2\0\83\0\0}\ 2\0|\ 2\0j\ 3\0|\ 1\0|\ 1\0\83\ 2\0\ 1|\ 2\0j\ 4\0\83\0\0}\ 2\0|\ 2\0j\ 5\0d\ 2\0\83\ 1\0\ 1|\ 2\0j\ 6\0\83\0\0d\ 3\0\19}\ 3\0t\a\0\83\0\0}\ 4\0|\ 2\0|\ 4\0d\ 3\0<|\ 3\0|\ 4\0d\ 4\0<d\ 5\0}\ 5\0t\b\0d\ 3\0d\ 6\0d\a\0d\b\0g\ 4\0\83\ 1\0}\ 6\0|\ 6\0j\ 5\0|\ 5\0\83\ 1\0\ 1t\b\0d\ 3\0d\ 6\0d\a\0\0g\ 4\0\83\ 1\0}\a\0|\a\0j\ 5\0|\ 5\0\83\ 1\0\ 1t\b\0d\ 6\0d\a\0d
++\0d\v\0d\b\0g\ 5\0\83\ 1\0}\b\0|\b\0j\ 5\0d\f\0\83\ 1\0\ 1t\b\0d\a\0d
++\0d\v\0d\r\0g\ 4\0\83\ 1\0}        \0|      \0j\ 5\0d\ e\0\83\ 1\0\ 1|\ 4\0\0d\ 3\0|\b\0\83\ 2\0\ 1|\ 4\0\0d\ 4\0|   \0\83\ 2\0\ 1|\ 4\0j       \0d\ 3\0|\ 6\0\83\ 2\0\ 1|\ 4\0\0d\ 4\0|\a\0\83\ 2\0\ 1|\0\0j
++\0|\ 4\0j\v\0|\ 5\0\83\ 1\0d\11\0\83\ 2\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 3\0|\ 5\0\83\ 2\0j\ e\0|\ 6\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 4\0|\ 5\0\83\ 2\0j\ e\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 3\0d\f\0\83\ 2\0j\ e\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 4\0d\ e\0\83\ 2\0j\ e\0|   \0\83\ 1\0\83\ 1\0\ 1|\0\0j\ f\0t\10\0|\ 4\0j   \0d\ 4\0|\a\0\83\ 4\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 3\0|\ 5\0\83\ 2\0j\ e\0|\ 6\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 4\0|\ 5\0\83\ 2\0j\ e\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 3\0d\f\0\83\ 2\0j\ e\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 4\0d\ e\0\83\ 2\0j\ e\0|      \0\83\ 1\0\83\ 1\0\ 1|\ 4\0j\11\0d\ 3\0|\ 5\0\83\ 2\0\ 1|\0\0j
++\0|\ 4\0j\v\0|\ 5\0\83\ 1\0d\12\0\83\ 2\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 4\0|\ 5\0\83\ 2\0j\ e\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 3\0d\f\0\83\ 2\0j\ e\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 4\0d\ e\0\83\ 2\0j\ e\0|     \0\83\ 1\0\83\ 1\0\ 1|\ 4\0j\11\0d\ 4\0|\ 5\0\83\ 2\0\ 1|\0\0j
++\0|\ 4\0j\v\0|\ 5\0\83\ 1\0d\13\0\83\ 2\0\ 1|\0\0j\ f\0t\10\0|\ 4\0j\11\0d\ f\0|\ 5\0\83\ 4\0\ 1|\ 4\0j     \0d\ 4\0|\a\0\83\ 2\0\ 1|\ 4\0\0d\ 3\0|\ 6\0\83\ 2\0\ 1|\0\0j
++\0|\ 4\0j\v\0|\ 5\0\83\ 1\0d\14\0\83\ 2\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 3\0|\ 5\0\83\ 2\0j\ e\0|\ 6\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 4\0|\ 5\0\83\ 2\0j\ e\0|\a\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 3\0d\f\0\83\ 2\0j\ e\0|\b\0\83\ 1\0\83\ 1\0\ 1|\0\0j\f\0|\ 4\0j\r\0d\ 4\0d\ e\0\83\ 2\0j\ e\0|   \0\83\ 1\0\83\ 1\0\ 1d\10\0S(\15\0\0\0s$\0\0\0 Here multi level groups are createdi\v\0\0\0\ 2\0\0i\0\0\0\0iÿÿÿÿR\93\ 2\0\0i\ 1\0\0\0i\ 2\0\0\0i\ 6\0\0\0i\a\0\0\0i\ 3\0\0\0i\ 5\0\0\0R\95\ 2\0\0i\b\0\0\0\ 1\0\0iþÿÿÿN(\ 2\0\0\0i\0\0\0\0iÿÿÿÿ(\ 1\0\0\0iÿÿÿÿ(\0\0\0\0(\ 2\0\0\0i\0\0\0\0iÿÿÿÿ(\12\0\0\0RY\0\0\0Ry\ 1\0\0\0\0\0Rc\0\0\0\ 1\0\0RB\0\0\0R\9b\ 1\0\0R>\0\0\0Rk\0\0\0\ 2\0\0R+\0\0\0\0\0\0R0\0\0\0RG\0\0\0R1\0\0\0R)\0\0\0R*\0\0\0t\12\0\0\0removeGroupAtLevel(
++\0\0\0R  \0\0\0\ 1\0\0R\83\0\0\0R\84\0\0\0R\86\0\0\0\ 2\0\0t\ 6\0\0\0grp0_0t\ 6\0\0\0grp0_1R\95\ 2\0\0\ 1\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt+\0\0\0testRmGroupAtSpeLevelAndMultiLevGrpCreation\ 4\19\0\0sb\0\0\0\0\ 2\f\0
++\ 1     \0\10\ 1\f\ 1\r\ 1\10\ 1       \ 1
++\0
++\ 2\ 6\ 1\18\0\r\ 1\18\0\r\ 1\e\0\r\ 1\18\0\r\ 2\10\ 1\10\ 1\10\ 1\10\ 1\19\ 1"\ 1"\ 1"\ 1"\ 1\19\ 1"\ 1"\ 1"\ 1"\ 1\10\ 1\19\ 1"\ 1"\ 1"\ 1\10\ 1\19\ 1\19\ 1\10\ 1\10\ 1\19\ 1"\ 1"\ 1"\ 1"\ 1(\83\0\0\0R\12\0\0\0R\13\0\0\0R9\0\0\0RS\0\0\0R\91\0\0\0\0\0\0\0\0\0R¿\0\0\0\0\0\0\0\0\0\0\0\0R\ 3\ 1\0\0R\r\ 1\0\0R\11\ 1\0\0R\17\ 1\0\0R\1f\ 1\0\0R"\ 1\0\0RF\ 1\0\0Rq\ 1\0\0R\84\ 1\0\0R\8b\ 1\0\0R\8e\ 1\0\0R\8f\ 1\0\0R\94\ 1\0\0R\96\ 1\0\0R\9a\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0\ 1\0\0R\11\ 2\0\0R\19\ 2\0\0R\1f\ 2\0\0R%\ 2\0\0R1\ 2\0\0RI\ 2\0\0Rm\ 2\0\0R\87\ 2\0\0R\8a\ 2\0\0R\90\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0\ 2\0\0R\ 5\ 3\0\0R\12\ 3\0\0R\18\ 3\0\0R6\ 3\0\0R<\ 3\0\0RW\ 3\0\0R]\ 3\0\0Rh\ 3\0\0Rs\ 3\0\0R{\ 3\0\0R\8c\ 3\0\0R\97\ 3\0\0R\9a\ 3\0\0R\9b\ 3\0\0\ 3\0\0\ 3\0\0\ 3\0\0\ 3\0\0\ 3\0\0\ 3\0\0\ 3\0\0\ 3\0\0\ 3\0\0\ 3\0\0\ 3\0\0t\b\0\0\0unittestt
++\0\0\0skipUnlesst\e\0\0\0MEDCouplingHasNumPyBindingsRö\ 3\0\0\ 3\0\0R\1e\ 4\0\0R3\ 4\0\0R7\ 4\0\0RN\ 4\0\0RV\ 4\0\0Rs\ 4\0\0R\80\ 4\0\0t\b\0\0\0platformt\ 6\0\0\0systemt\ 5\0\0\0lowerR\90\ 4\0\0R\92\ 4\0\0R\95\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0\ 4\0\0R9\ 5\0\0RA\ 5\0\0R\ 5\0\0\0t\11\0\0\0MEDFileVersionStrRG\ 5\0\0RO\ 5\0\0RS\ 5\0\0RX\ 5\0\0R^\ 5\0\0Rd\ 5\0\0Rm\ 5\0\0Rp\ 5\0\0Rv\ 5\0\0Rq\ 5\0\0R\81\ 5\0\0R}\ 5\0\0R\86\ 5\0\0R\8a\ 5\0\0(\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyR$\0\0\0A\0\0\0\0\0\0\ 6\ 1      \ e       +       s       k       \v       1       (       \ 5       \18                       \12       \f       \15       \11                       d       9       '       $       \1a       !       \e       &       \17       /       \1c       \19       \ 6       +               F       U       2       2       *       5       <       %       \1d       \14       A       \9c       Z       Y       \1a       F       G       %       (       6       A       '       \a       .       p       ,       r               Q       A       E       b       o       ¡       t       R       \13       7       7       F       $       ?       S       3       \ e       7       \v       Q\1eb     E       L       ;       )       +       %       '       0       '-(     \10       \ f\1e\19     8       \1f       j       =       \13       \11       \1c       $       E       F       ;       ;       )       m       Ø       \ e$\ 1\1e\ 1\15\11\1eZ\1e,     \e       -       s       $!\ 1\1e\ 1\15$ +       \13       N       \e       &       /t\b\0\0\0__main__(\15\0\0\0t    \0\0\0MEDLoaderR\8b\ 5\0\0R\8e\ 5\0\0t\ 4\0\0\0mathR\ 1\0\0\0R\ 2\0\0\0R\ 3\0\0\0R\ 4\0\0\0t\11\0\0\0distutils.versionR\ 5\0\0\0R\15\0\0\0t\f\0\0\0version_infot\ 5\0\0\0majort\a\0\0\0cPickleRî\ 3\0\0R\1f\0\0\0R\ 6\0\0\0t\b\0\0\0TestCaseR$\0\0\0R\12\0\0\0t\ 4\0\0\0main(\0\0\0\0(\0\0\0\0(\0\0\0\0ss\0\0\0/volatile/home/salome/Test_Archives/SALOME-S-8.5.0-CO7-SRC/SOURCES/MEDCOUPLING/src/MEDLoader/Swig/MEDLoaderTest3.pyt\b\0\0\0<module>\16\0\0\0sL\0\0\0
++\ 1\f\ 1\f\ 1\1c\ 1\10\ 1\10\ 2\f\ 1\12\ 1\ f\ 2\f\ 2\16\1e\19ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0ÿ\0\r\f\ 1
+\ Pas de fin de ligne à la fin du fichier
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTest4.py MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTest4.py
+--- MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTest4.py       2018-04-19 17:04:36.768223341 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTest4.py       2018-04-19 17:25:17.766797930 +0200
+@@ -17,7 +17,7 @@
+ #
+ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+ #
+-# Author : Anthony Geay (CEA/DEN)
++# Author : Anthony Geay (EDF R&D)
+ from MEDLoader import *
+ import unittest
+@@ -4119,7 +4119,7 @@
+         pass
+     def test28(self):
+-        """ This test defines 2 fields f0,f1,f2,f3 lying on an unstructured mesh whith cells including NORM_POINT1.
++        """ This test defines 2 fields f0,f1,f2,f3 lying on an unstructured mesh with cells including NORM_POINT1.
+         Both f0 and f1 are on NODES and f2 and f3 are on cells. f1 and f2 share the same support.
+         f0 is on a nodal support that is not matchable with any cells (including NORM_POINT1)
+         This test is a more aggressive version of test26.
+@@ -4792,7 +4792,7 @@
+         mml2=mml.prepare()
+         self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
+         ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
+-        self.assertTrue(not ncc)# false beacause 2D in MED file
++        self.assertTrue(not ncc)# false because 2D in MED file
+         self.assertTrue(a0.isEqual(DataArrayDouble([(5.5,0.5,0),(5.5,-0.5,0),(6.5,0.5,0),(6.5,-0.5,0),(6.5,1.5,0),(7.5,0.5,0),(7.5,-0.5,0),(7.5,1.5,0),(7.5,2.5,0),(8.5,0.5,0),(8.5,-0.5,0),(8.5,1.5,0),(8.5,2.5,0),(8.5,3.5,0),(8.55,0.5,0),(8.55,-0.5,0),(8.55,1.5,0),(8.55,2.5,0),(8.55,3.5,0)]),1e-12))
+         self.assertTrue(a1.isEqual(DataArrayByte([9,9,9,9,9,9,7,7,7,7])))
+         self.assertTrue(a2.isEqual(DataArrayInt([0,5,10,15,20,25,30,35,40,45])))# the bug was here.
+@@ -4959,7 +4959,7 @@
+         pass
+     def test35(self):
+-        """ Emulate MEDReader in // mode context. Here a Simple mesh having more nodes than really needed. This test focuses on that point particulary."""
++        """ Emulate MEDReader in // mode context. Here a Simple mesh having more nodes than really needed. This test focuses on that point particularly."""
+         fname="ForMEDReader35.med"
+         arrX=DataArrayDouble(7) ; arrX.iota()
+         arrY=DataArrayDouble([0.,1.])
+@@ -5515,6 +5515,74 @@
+         assert(v1.isEqual(DataArrayDouble([101,102,103,104,106,107,108,109,111,112,113,114,116,117,118,119,121,122,123,124]),1e-12))
+         pass
++    def test42(self):
++        """ EDF14869 - SEG4 """
++        fname="ForMEDReader42.med"
++        meshName="mesh"
++        #
++        a0exp=DataArrayDouble([0.,1.,0.3,0.7])
++        m=MEDCouplingUMesh("mesh",1)
++        m.setCoords(a0exp)
++        m.allocateCells()
++        m.insertNextCell(NORM_SEG4,[0,1,2,3])
++        mm=MEDFileUMesh() ; mm[0]=m
++        #
++        f=MEDCouplingFieldDouble(ON_CELLS) ; f.setMesh(m) ; f.setName("Field")
++        arr=DataArrayDouble(m.getNumberOfCells()) ; arr.iota() ; arr*=0.1 ; f.setArray(arr) ; f.checkConsistencyLight()
++        ff=MEDFileField1TS() ; ff.setFieldNoProfileSBT(f)
++        fmts=MEDFileFieldMultiTS() ; fmts.pushBackTimeStep(ff)
++        #
++        ms=MEDFileMeshes() ; ms.pushMesh(mm)
++        fields=MEDFileFields() ; fields.pushField(fmts)
++        ms.write(fname,2) ; fields.write(fname,0)
++        #
++        ms=MEDFileMeshes(fname) 
++        fields=MEDFileFields(fname,False)
++        fields.removeFieldsWithoutAnyTimeStep()
++        fields_per_mesh=[fields.partOfThisLyingOnSpecifiedMeshName(meshName) for meshName in ms.getMeshesNames()]
++        allFMTSLeavesToDisplay=[]
++        for fields in fields_per_mesh:
++            allFMTSLeavesToDisplay2=[]
++            for fmts in fields:
++                tmp=fmts.splitDiscretizations()
++                for itmp in tmp:
++                    self.assertTrue(not itmp.presenceOfMultiDiscPerGeoType())
++                    pass
++                allFMTSLeavesToDisplay2+=tmp
++                pass
++            allFMTSLeavesToDisplay.append(allFMTSLeavesToDisplay2)
++            pass
++        #
++        self.assertEqual(len(allFMTSLeavesToDisplay),1)
++        self.assertEqual(len(allFMTSLeavesToDisplay[0]),1)
++        allFMTSLeavesPerTimeSeries=MEDFileAnyTypeFieldMultiTS.SplitIntoCommonTimeSeries(sum(allFMTSLeavesToDisplay,[]))
++        self.assertEqual(len(allFMTSLeavesPerTimeSeries),1)
++        allFMTSLeavesPerCommonSupport1=MEDFileAnyTypeFieldMultiTS.SplitPerCommonSupport(allFMTSLeavesToDisplay[0],ms[ms.getMeshesNames()[0]])
++        self.assertEqual(len(allFMTSLeavesPerCommonSupport1),1)
++        #
++        mst=MEDFileMeshStruct.New(ms[0])
++        fcscp=allFMTSLeavesPerCommonSupport1[0][1]
++        mml=fcscp.buildFromScratchDataSetSupport(0,fields)
++        mml2=mml.prepare()
++        self.assertTrue(isinstance(mml2,MEDUMeshMultiLev))
++        ncc,a0,a1,a2,a3,a4,a5=mml2.buildVTUArrays()
++        self.assertTrue(not ncc)
++        self.assertTrue(a0.isEqual(a0exp.changeNbOfComponents(3,0.),1e-12))
++        self.assertTrue(a1.isEqual(DataArrayByte([35])))# VTK_CUBIC_LINE
++        self.assertTrue(a2.isEqual(DataArrayInt([0])))
++        self.assertTrue(a3.isEqual(DataArrayInt([4,0,1,2,3])))
++        self.assertTrue(a4 is None)
++        self.assertTrue(a5 is None)
++        self.assertTrue(mml2.retrieveGlobalNodeIdsIfAny() is None)
++        for i in range(1):
++            ffCell=allFMTSLeavesPerCommonSupport1[0][0][0][i]
++            fsst=MEDFileField1TSStructItem.BuildItemFrom(ffCell,mst)
++            ffCell.loadArraysIfNecessary()
++            v=mml2.buildDataArray(fsst,fields,ffCell.getUndergroundDataArray())
++            self.assertEqual(v.getHiddenCppPointer(),ffCell.getUndergroundDataArray().getHiddenCppPointer())
++            self.assertTrue(v.isEqual(DataArrayDouble([0.0]),1e-14))
++        pass
++    
+     pass
+ if __name__ == "__main__":
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTypemaps.i MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTypemaps.i
+--- MEDCOUPLING_old/src/MEDLoader/Swig/MEDLoaderTypemaps.i     2018-04-19 17:04:36.768223341 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/MEDLoaderTypemaps.i     2018-04-19 17:25:17.786798325 +0200
+@@ -16,7 +16,7 @@
+ //
+ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+ //
+-// Author : Anthony Geay (CEA/DEN)
++// Author : Anthony Geay (EDF R&D)
+ #include <vector>
+@@ -402,3 +402,41 @@
+     }
+ }
++template<class T>
++PyObject *MEDFileField1TS_getFieldWithProfile(const typename MLFieldTraits<T>::F1TSType *self, TypeOfField type, int meshDimRelToMax, const MEDFileMesh *mesh) 
++{
++  DataArrayInt *ret1(NULL);
++  typename MEDCoupling::Traits<T>::ArrayType *ret0(self->getFieldWithProfile(type,meshDimRelToMax,mesh,ret1));
++  PyObject *ret(PyTuple_New(2));
++  PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(ret0),SWIGTITraits<T>::TI, SWIG_POINTER_OWN | 0 ));
++  PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(ret1),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
++  return ret;
++}
++
++template<class T>
++PyObject *MEDFileField1TS_getUndergroundDataArrayExt(const typename MLFieldTraits<T>::F1TSType *self)
++{
++  std::vector< std::pair<std::pair<INTERP_KERNEL::NormalizedCellType,int>,std::pair<int,int> > > elt1Cpp;
++  typename MEDCoupling::Traits<T>::ArrayType *elt0=self->getUndergroundDataArrayExt(elt1Cpp);
++  if(elt0)
++    elt0->incrRef();
++  PyObject *ret=PyTuple_New(2);
++  PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(elt0),SWIGTITraits<T>::TI, SWIG_POINTER_OWN | 0 ));
++  std::size_t sz=elt1Cpp.size();
++  PyObject *elt=PyList_New(sz);
++  for(std::size_t i=0;i<sz;i++)
++    {
++      PyObject *elt1=PyTuple_New(2);
++      PyObject *elt2=PyTuple_New(2);
++      PyTuple_SetItem(elt2,0,SWIG_From_int((int)elt1Cpp[i].first.first));
++      PyTuple_SetItem(elt2,1,SWIG_From_int(elt1Cpp[i].first.second));
++      PyObject *elt3=PyTuple_New(2);
++      PyTuple_SetItem(elt3,0,SWIG_From_int(elt1Cpp[i].second.first));
++      PyTuple_SetItem(elt3,1,SWIG_From_int(elt1Cpp[i].second.second));
++      PyTuple_SetItem(elt1,0,elt2);
++      PyTuple_SetItem(elt1,1,elt3);
++      PyList_SetItem(elt,i,elt1);
++    }
++  PyTuple_SetItem(ret,1,elt);
++  return ret;
++}
+diff -Naur MEDCOUPLING_old/src/MEDLoader/Swig/SauvLoaderTest.py MEDCOUPLING_new/src/MEDLoader/Swig/SauvLoaderTest.py
+--- MEDCOUPLING_old/src/MEDLoader/Swig/SauvLoaderTest.py       2018-04-19 17:04:36.768223341 +0200
++++ MEDCOUPLING_new/src/MEDLoader/Swig/SauvLoaderTest.py       2018-04-19 17:25:17.769797989 +0200
+@@ -248,6 +248,58 @@
+         os.remove(sauvFile)
+         pass
++    def testSauvReaderOnBigMesh(self):
++        # create a box with 1 million cells
++        mesh_dim = 3
++        nb_segs = [100, 100, 100]
++        box_sizes = [1., 1., 1.]
++        compo_names = ["x", "y", "z"]
++        box_steps = [box_sizes[i]/nb_segs[i] for i in range(mesh_dim)]
++        mesh = MEDCouplingCMesh.New("Mesh_box")
++
++        # axes coords
++        axes_arrays = []
++        for i in range(mesh_dim):
++          axe_coords = [j*box_steps[i] for j in range(nb_segs[i]+1)]
++
++          axe_arr = DataArrayDouble.New(axe_coords)
++          axe_arr.setInfoOnComponent(0,compo_names[i])
++
++          axes_arrays.append(axe_arr)
++
++        mesh.setCoords(*axes_arrays)
++        umesh = mesh.buildUnstructured()
++
++        m=MEDFileUMesh.New()
++        m.setMeshAtLevel(0,umesh)
++
++        # MED file data
++        ms=MEDFileMeshes.New()
++        ms.setMeshAtPos(0,m)
++        meddata=MEDFileData.New()
++        meddata.setMeshes(ms)
++
++        # write to SAUV
++        sauvFile = "box.sauv"
++        sw=SauvWriter();
++        sw.setMEDFileDS(meddata);
++        sw.write(sauvFile);
++
++        # read SAUV
++        sr=SauvReader(sauvFile);
++        d2=sr.loadInMEDFileDS();
++        mm = d2.getMeshes()
++        m = mm.getMeshAtPos(0)
++
++        # check
++        coords = m.getCoords()
++        nb_coords_values = coords.getNbOfElems()
++        nb_coords_values_expected = mesh_dim*((nb_segs[0]+1)*(nb_segs[1]+1)*(nb_segs[2]+1))
++        self.assertEqual(nb_coords_values, nb_coords_values_expected)
++
++        os.remove( sauvFile )
++        pass
++
+     @unittest.skipUnless(HasXDR(),"requires XDR")
+     def testMissingGroups(self):
+         """test for issue 0021749: [CEA 601] Some missing groups in mesh after reading a SAUV file with SauvReader."""
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/CMakeLists.txt MEDCOUPLING_new/src/MEDPartitioner/CMakeLists.txt
+--- MEDCOUPLING_old/src/MEDPartitioner/CMakeLists.txt  2018-04-19 17:04:36.769223361 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/CMakeLists.txt  2018-04-19 17:25:17.685796329 +0200
+@@ -46,6 +46,11 @@
+ # VERY IMPORTANT PUT METIS BEFORE SCOTCH because
+ # metis.h is also in SCOTCH install dir !!!
+ ########
++IF(MEDCOUPLING_PARTITIONER_PTSCOTCH)
++  ADD_DEFINITIONS(${PTSCOTCH_DEFINITIONS})
++  INCLUDE_DIRECTORIES(${PTSCOTCH_INCLUDE_DIRS})
++ENDIF(MEDCOUPLING_PARTITIONER_PTSCOTCH)
++
+ IF(MEDCOUPLING_PARTITIONER_SCOTCH)
+   ADD_DEFINITIONS(${SCOTCH_DEFINITIONS})
+   INCLUDE_DIRECTORIES(${SCOTCH_INCLUDE_DIRS})
+@@ -103,8 +108,9 @@
+   ${STDLIB}
+   ${LIBXML2_LIBRARIES}
+   interpkernel
+-  medcoupling
++  medcouplingcpp
+   medloader
++  -lpthread
+ )
+ IF(MEDCOUPLING_PARTITIONER_PARMETIS)
+   SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_ParMetisGraph.hxx)
+@@ -124,6 +130,12 @@
+   SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
+   SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${SCOTCH_LIBRARIES})
+ ENDIF(MEDCOUPLING_PARTITIONER_SCOTCH)
++IF(MEDCOUPLING_PARTITIONER_PTSCOTCH)
++  SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_PTScotchGraph.hxx)
++  SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_PTScotchGraph.cxx)
++  SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${PTSCOTCH_DEFINITIONS}")
++  SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${PTSCOTCH_LIBRARIES})
++ENDIF(MEDCOUPLING_PARTITIONER_PTSCOTCH)
+ IF(${MEDCOUPLING_USE_MPI})
+   SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_UtilsPara.cxx MEDPARTITIONER_JointFinder.cxx)
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/medpartitioner.cxx MEDCOUPLING_new/src/MEDPartitioner/medpartitioner.cxx
+--- MEDCOUPLING_old/src/MEDPartitioner/medpartitioner.cxx      2018-04-19 17:04:36.772223421 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/medpartitioner.cxx      2018-04-19 17:25:17.722797060 +0200
+@@ -72,7 +72,7 @@
+   //sequential : no MPI
+   MyGlobals::_World_Size=1;
+   MyGlobals::_Rank=0;
+-  MyGlobals::_Creates_Boundary_Faces=0;
++  MyGlobals::_Create_Boundary_Faces=0;
+   MyGlobals::_Create_Joints=0;
+   // Primitive parsing of command-line options
+@@ -86,8 +86,8 @@
+   //user can choose!
+                "\t--split-method=<string>  : name of the splitting library (metis/scotch), default is metis\n"
+ #endif
+-               "\t--creates-boundary-faces : creates boundary faces mesh in the output files\n"
+-               "\t--creates-joints         : creates joints in the output files\n"
++               "\t--create-boundary-faces  : creates boundary faces mesh in the output files\n"
++               "\t--create-joints          : creates joints in the output files\n"
+                "\t--dump-cpu-memory        : dumps passed CPU time and maximal increase of used memory\n"
+                );
+@@ -112,7 +112,7 @@
+       else if (TestArg(argv[i],"--output-file",value)) output=value;
+       else if (TestArg(argv[i],"--split-method",value)) library=value;
+       else if (TestArg(argv[i],"--ndomains",value)) ndomains=atoi(value.c_str());
+-      else if (TestArg(argv[i],"--creates-boundary-faces",value)) MyGlobals::_Creates_Boundary_Faces=1;
++      else if (TestArg(argv[i],"--create-boundary-faces",value)) MyGlobals::_Create_Boundary_Faces=1;
+       else if (TestArg(argv[i],"--create-joints",value)) MyGlobals::_Create_Joints=1;
+       else if (TestArg(argv[i],"--dump-cpu-memory",value)) mesure_memory=true;
+       else 
+@@ -153,7 +153,7 @@
+       cout << "  output-file = " << output << endl;
+       cout << "  split-method = " << library << endl;
+       cout << "  ndomains = " << ndomains << endl;
+-      cout << "  creates_boundary_faces = " << MyGlobals::_Creates_Boundary_Faces << endl;
++      cout << "  create_boundary_faces = " << MyGlobals::_Create_Boundary_Faces << endl;
+       cout << "  create-joints = " << MyGlobals::_Create_Joints<< endl;
+       cout << "  dump-cpu-memory = " << mesure_memory<< endl;
+       cout << "  verbose = " << MyGlobals::_Verbose << endl;
+@@ -267,7 +267,7 @@
+       if (MyGlobals::_Is0verbose) 
+         cout << "generalInformations : \n"<<ReprVectorOfString(finalInformations);
+     
+-      //new_collection.setSubdomainBoundaryCreates(creates_boundary_faces);
++      //new_collection.setSubdomainBoundaryCreates(create_boundary_faces);
+       if (MyGlobals::_Is0verbose) cout << "Writing "<<ndomains<<" output files "<<output<<"xx.med"<<" and "<<output<<".xml"<<endl;
+       new_collection.write(output);
+   
+@@ -302,7 +302,7 @@
+     }
+   catch(...)
+     {
+-      cerr<<"an unknown type exception error was occured"<<endl;
++      cerr<<"an unknown type exception error has occurred"<<endl;
+       fflush(stderr);
+       return 1;
+     }
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_Graph.hxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_Graph.hxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_Graph.hxx        2018-04-19 17:04:36.770223381 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_Graph.hxx        2018-04-19 17:25:17.719797001 +0200
+@@ -38,7 +38,7 @@
+   class MEDPARTITIONER_EXPORT Graph
+   {
+   public:
+-    typedef enum {METIS,SCOTCH} splitter_type;
++    typedef enum {METIS,SCOTCH,PTSCOTCH} splitter_type;
+     Graph();
+     //creates a graph from a SKYLINEARRAY- WARNING!! Graph takes ownership of the array.
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_MEDPartitioner.cxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_MEDPartitioner.cxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_MEDPartitioner.cxx       2018-04-19 17:04:36.770223381 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_MEDPartitioner.cxx       2018-04-19 17:25:17.723797080 +0200
+@@ -30,6 +30,9 @@
+ #ifdef MED_ENABLE_SCOTCH
+ #  include "MEDPARTITIONER_ScotchGraph.hxx"
+ #endif
++#ifdef MED_ENABLE_PTSCOTCH
++#  include "MEDPARTITIONER_PTScotchGraph.hxx"
++#endif
+ #include "MEDPARTITIONER_MeshCollectionDriver.hxx"
+ #include "MEDCouplingUMesh.hxx"
+@@ -38,12 +41,16 @@
+ #include <iostream>
+ #include <vector>
+-MEDPARTITIONER::MEDPartitioner::MEDPartitioner(const std::string& filename, int ndomains, const std::string& library,bool creates_boundary_faces, bool create_joints, bool mesure_memory):
++const char MEDPARTITIONER::MEDPartitioner::METIS_PART_ALG[]="Metis";
++const char MEDPARTITIONER::MEDPartitioner::SCOTCH_PART_ALG[]="Scotch";
++const char MEDPARTITIONER::MEDPartitioner::PTSCOTCH_PART_ALG[]="PTScotch";
++
++MEDPARTITIONER::MEDPartitioner::MEDPartitioner(const std::string& filename, int ndomains, const std::string& library,bool create_boundary_faces, bool create_joints, bool mesure_memory):
+   _input_collection( 0 ), _output_collection( 0 ), _new_topology( 0 )
+ {
+   MyGlobals::_World_Size = 1;
+   MyGlobals::_Rank = 0;
+-  MyGlobals::_Creates_Boundary_Faces = creates_boundary_faces;
++  MyGlobals::_Create_Boundary_Faces = create_boundary_faces;
+   MyGlobals::_Create_Joints = create_joints;
+   ParaDomainSelector parallelizer(mesure_memory);
+@@ -54,17 +61,17 @@
+     (MEDPARTITIONER::ParallelTopology*) _input_collection->getTopology();
+   aPT->setGlobalNumerotationDefault( _input_collection->getParaDomainSelector() );
+   _input_collection->prepareFieldDescriptions();
+-  createPartitionCollection(ndomains, library, creates_boundary_faces, create_joints, mesure_memory);
++  createPartitionCollection(ndomains, library, create_boundary_faces, create_joints, mesure_memory);
+   parallelizer.evaluateMemory();
+ }
+-MEDPARTITIONER::MEDPartitioner::MEDPartitioner(const MEDCoupling::MEDFileData* filedata, int ndomains, const std::string& library,bool creates_boundary_faces, bool create_joints, bool mesure_memory):
++MEDPARTITIONER::MEDPartitioner::MEDPartitioner(const MEDCoupling::MEDFileData* filedata, int ndomains, const std::string& library,bool create_boundary_faces, bool create_joints, bool mesure_memory):
+   _input_collection( 0 ), _output_collection( 0 ), _new_topology( 0 )
+ {
+   MyGlobals::_World_Size = 1;
+   MyGlobals::_Rank = 0;
+-  MyGlobals::_Creates_Boundary_Faces = creates_boundary_faces;
++  MyGlobals::_Create_Boundary_Faces = create_boundary_faces;
+   MyGlobals::_Create_Joints = create_joints;
+   ParaDomainSelector parallelizer(mesure_memory);
+@@ -76,17 +83,17 @@
+     (MEDPARTITIONER::ParallelTopology*) _input_collection->getTopology();
+   aPT->setGlobalNumerotationDefault( _input_collection->getParaDomainSelector() );
+   _input_collection->prepareFieldDescriptions();
+-  createPartitionCollection(ndomains, library, creates_boundary_faces, create_joints, mesure_memory);
++  createPartitionCollection(ndomains, library, create_boundary_faces, create_joints, mesure_memory);
+   parallelizer.evaluateMemory();
+ }
+-MEDPARTITIONER::MEDPartitioner::MEDPartitioner(const MEDCoupling::MEDFileData* filedata, MEDPARTITIONER ::Graph* graph, bool creates_boundary_faces, bool create_joints, bool mesure_memory):
++MEDPARTITIONER::MEDPartitioner::MEDPartitioner(const MEDCoupling::MEDFileData* filedata, MEDPARTITIONER ::Graph* graph, bool create_boundary_faces, bool create_joints, bool mesure_memory):
+   _input_collection( 0 ), _output_collection( 0 ), _new_topology( 0 )
+ {
+   MyGlobals::_World_Size = 1;
+   MyGlobals::_Rank = 0;
+-  MyGlobals::_Creates_Boundary_Faces = creates_boundary_faces;
++  MyGlobals::_Create_Boundary_Faces = create_boundary_faces;
+   MyGlobals::_Create_Joints = create_joints;
+   ParaDomainSelector parallelizer(mesure_memory);
+@@ -113,7 +120,7 @@
+   delete _new_topology; _new_topology = 0;
+ }
+-void MEDPARTITIONER::MEDPartitioner::createPartitionCollection(int ndomains, const std::string& library,bool creates_boundary_faces, bool create_joints, bool mesure_memory)
++void MEDPARTITIONER::MEDPartitioner::createPartitionCollection(int ndomains, const std::string& library,bool create_boundary_faces, bool create_joints, bool mesure_memory)
+ {
+   //ParallelTopology* aPT = (ParallelTopology*) _input_collection->getTopology();
+   if (library == "metis")
+@@ -137,18 +144,18 @@
+   return _output_collection->retrieveDriver()->getMEDFileData();
+ }
+-MEDPARTITIONER::Graph* MEDPARTITIONER::MEDPartitioner::Graph(MEDCoupling::MEDCouplingSkyLineArray* graph, Graph::splitter_type split, int* edgeweight)
++MEDPARTITIONER::Graph* MEDPARTITIONER::MEDPartitioner::Graph(MEDCoupling::MEDCouplingSkyLineArray* graph, Graph::splitter_type split, int* edgeweight, DataArrayInt *vlbloctab)
+ {
+   MEDPARTITIONER::Graph* cellGraph=0;
+   // will be destroyed by XXXGraph class:
+-  MEDCoupling::MEDCouplingSkyLineArray* arr = MEDCoupling::MEDCouplingSkyLineArray::New(graph->getIndexArray(), graph->getValuesArray());
++  MEDCoupling::MCAuto<MEDCoupling::MEDCouplingSkyLineArray> arr(MEDCoupling::MEDCouplingSkyLineArray::New(graph->getIndexArray(), graph->getValuesArray()));
+   switch (split)
+     {
+     case Graph::METIS:
+       if ( !cellGraph )
+         {
+ #ifdef MED_ENABLE_METIS
+-          cellGraph=new METISGraph(arr,edgeweight);
++          cellGraph=new METISGraph(arr.retn(),edgeweight);
+ #endif
+         }
+       if ( !cellGraph )
+@@ -156,11 +163,73 @@
+       break;
+     case Graph::SCOTCH:
+ #ifdef MED_ENABLE_SCOTCH
+-      cellGraph=new SCOTCHGraph(arr,edgeweight);
++      cellGraph=new SCOTCHGraph(arr.retn(),edgeweight);
+ #else
+       throw INTERP_KERNEL::Exception("MEDPartitioner::Graph : SCOTCH is not available. Check your products, please.");
+ #endif
+       break;
++    case Graph::PTSCOTCH:
++      {
++#ifdef MED_ENABLE_PTSCOTCH
++        cellGraph=new PTSCOTCHGraph(arr.retn(),edgeweight,vlbloctab);
++#else
++        throw INTERP_KERNEL::Exception("MEDPartitioner::Graph : PTSCOTCH is not available. Check your products, please.");
++#endif
++        break;
++      }
++    default:
++      throw INTERP_KERNEL::Exception("MEDPartitioner::Graph : Not managed split type engine !");
+     }
+   return cellGraph;
+ }
++
++std::vector<std::string> MEDPARTITIONER::MEDPartitioner::AvailableAlgorithms()
++{
++  std::vector<std::string> ret;
++#ifdef MED_ENABLE_METIS
++  ret.push_back(std::string(METIS_PART_ALG));
++#endif
++#ifdef MED_ENABLE_SCOTCH
++  ret.push_back(std::string(SCOTCH_PART_ALG));
++#endif
++#ifdef MED_ENABLE_PTSCOTCH
++  ret.push_back(std::string(PTSCOTCH_PART_ALG));
++#endif
++  return ret;
++}
++
++bool MEDPARTITIONER::MEDPartitioner::HasMetisAlg()
++{
++#ifdef MED_ENABLE_METIS
++  return true;
++#else
++  return false;
++#endif
++}
++
++bool MEDPARTITIONER::MEDPartitioner::HasScotchAlg()
++{
++#ifdef MED_ENABLE_SCOTCH
++  return true;
++#else
++  return false;
++#endif
++}
++
++bool MEDPARTITIONER::MEDPartitioner::HasPTScotchAlg()
++{
++#ifdef MED_ENABLE_PTSCOTCH
++  return true;
++#else
++  return false;
++#endif
++}
++
++std::vector<std::string> MEDPARTITIONER::MEDPartitioner::AllAlgorithms()
++{
++  std::vector<std::string> ret;
++  ret.push_back(std::string(METIS_PART_ALG));
++  ret.push_back(std::string(SCOTCH_PART_ALG));
++  ret.push_back(std::string(PTSCOTCH_PART_ALG));
++  return ret;
++}
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_MEDPartitioner.hxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_MEDPartitioner.hxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_MEDPartitioner.hxx       2018-04-19 17:04:36.770223381 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_MEDPartitioner.hxx       2018-04-19 17:25:17.679796210 +0200
+@@ -22,6 +22,7 @@
+ #include "MEDPARTITIONER.hxx"
+ #include "MEDPARTITIONER_Graph.hxx"
++#include "MCType.hxx"
+ #include <map>
+ #include <vector>
+@@ -29,6 +30,7 @@
+ namespace MEDCoupling
+ {
+   class MEDFileData;
++  class DataArrayInt;
+ }
+ namespace MEDPARTITIONER
+@@ -39,21 +41,30 @@
+   class MEDPARTITIONER_EXPORT MEDPartitioner
+   {
+   public:
+-    MEDPartitioner(const std::string& filename, int ndomains=1, const std::string& library="metis",bool creates_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 creates_boundary_faces=false, bool create_joints=false, bool mesure_memory=false);
+-    MEDPartitioner(const MEDCoupling::MEDFileData* fileData, Graph* graph, bool creates_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);
++    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, DataArrayInt* vlbloctab=0);
++    static std::vector<std::string> AvailableAlgorithms();
++    static std::vector<std::string> AllAlgorithms();
++    static bool HasMetisAlg();
++    static bool HasScotchAlg();
++    static bool HasPTScotchAlg();
+     void write(const std::string& filename);
+     MEDCoupling::MEDFileData* getMEDFileData();
+     ~MEDPartitioner();
+     MEDCoupling::MEDFileData *convertToMEDFileData(MeshCollection* meshcollection);
+-    void createPartitionCollection(int ndomains, const std::string& library,bool creates_boundary_faces, bool create_joints, bool mesure_memory);
++    void createPartitionCollection(int ndomains, const std::string& library,bool create_boundary_faces, bool create_joints, bool mesure_memory);
+   private:
+     MeshCollection* _input_collection;
+     MeshCollection* _output_collection;
+     Topology*       _new_topology;
++  public:
++    static const char METIS_PART_ALG[];
++    static const char SCOTCH_PART_ALG[];
++    static const char PTSCOTCH_PART_ALG[];
+   };
+ }
+ #endif
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_MeshCollection.cxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_MeshCollection.cxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_MeshCollection.cxx       2018-04-19 17:04:36.770223381 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_MeshCollection.cxx       2018-04-19 17:25:17.714796902 +0200
+@@ -71,7 +71,7 @@
+     _domain_selector( 0 ),
+     _i_non_empty_mesh(-1),
+     _driver_type(MEDPARTITIONER::MedXml),
+-    _subdomain_boundary_creates( MyGlobals::_Creates_Boundary_Faces ),
++    _subdomain_boundary_creates( MyGlobals::_Create_Boundary_Faces ),
+     _family_splitting(false),
+     _create_empty_groups(false),
+     _joint_finder(0)
+@@ -100,7 +100,7 @@
+     _i_non_empty_mesh(-1),
+     _name(initialCollection._name),
+     _driver_type(MEDPARTITIONER::MedXml),
+-    _subdomain_boundary_creates(MyGlobals::_Creates_Boundary_Faces),
++    _subdomain_boundary_creates(MyGlobals::_Create_Boundary_Faces),
+     _family_splitting(family_splitting),
+     _create_empty_groups(create_empty_groups),
+     _joint_finder(0)
+@@ -1508,7 +1508,7 @@
+     _domain_selector( 0 ),
+     _i_non_empty_mesh(-1),
+     _driver_type(MEDPARTITIONER::Undefined),
+-    _subdomain_boundary_creates(MyGlobals::_Creates_Boundary_Faces),
++    _subdomain_boundary_creates(MyGlobals::_Create_Boundary_Faces),
+     _family_splitting(false),
+     _create_empty_groups(false),
+     _joint_finder(0)
+@@ -1552,7 +1552,7 @@
+     _domain_selector( &domainSelector ),
+     _i_non_empty_mesh(-1),
+     _driver_type(MEDPARTITIONER::Undefined),
+-    _subdomain_boundary_creates(MyGlobals::_Creates_Boundary_Faces),
++    _subdomain_boundary_creates(MyGlobals::_Create_Boundary_Faces),
+     _family_splitting(false),
+     _create_empty_groups(false),
+     _joint_finder(0)
+@@ -1712,7 +1712,7 @@
+     _i_non_empty_mesh(-1),
+     _name(meshname),
+     _driver_type(MEDPARTITIONER::MedXml),
+-    _subdomain_boundary_creates(MyGlobals::_Creates_Boundary_Faces),
++    _subdomain_boundary_creates(MyGlobals::_Create_Boundary_Faces),
+     _family_splitting(false),
+     _create_empty_groups(false),
+     _joint_finder(0)
+@@ -1768,7 +1768,7 @@
+  * 
+  * The method creates as many MED-files as there are domains in the 
+  * collection. It also creates a master file that lists all the MED files.
+- * The MED files created in ths manner contain joints that describe the 
++ * The MED files created in this manner contain joints that describe the 
+  * connectivity between subdomains.
+  * 
+  * \param filename name of the master file that will contain the list of the MED files
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_MeshCollectionDriver.cxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_MeshCollectionDriver.cxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_MeshCollectionDriver.cxx 2018-04-19 17:04:36.770223381 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_MeshCollectionDriver.cxx 2018-04-19 17:25:17.693796487 +0200
+@@ -234,7 +234,7 @@
+     }
+   // MEDCoupling::MEDCouplingUMesh* boundaryMesh=0;
+-  // if (MyGlobals::_Creates_Boundary_Faces>0)
++  // if (MyGlobals::_Create_Boundary_Faces>0)
+   //   {
+   //     //try to write Boundary meshes
+   //     bool keepCoords=false; //TODO or true
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_MeshCollection.hxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_MeshCollection.hxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_MeshCollection.hxx       2018-04-19 17:04:36.770223381 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_MeshCollection.hxx       2018-04-19 17:25:17.682796269 +0200
+@@ -222,7 +222,7 @@
+     std::map<std::string, int> _family_info;
+     std::map<std::string, std::vector<std::string> > _group_info;
+   
+-    //list of groups that are not to be splitted
++    //list of groups that are not to be split
+     std::vector<std::string> _indivisible_regions;
+     //name of global mesh
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/medpartitioner_para.cxx MEDCOUPLING_new/src/MEDPartitioner/medpartitioner_para.cxx
+--- MEDCOUPLING_old/src/MEDPartitioner/medpartitioner_para.cxx 2018-04-19 17:04:36.772223421 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/medpartitioner_para.cxx 2018-04-19 17:25:17.689796408 +0200
+@@ -102,7 +102,7 @@
+ //user can choose! (not yet)
+                "\t--split-method=<string>  : name of the splitting library (metis/scotch), default is metis\n"
+ #endif
+-               "\t--creates-boundary-faces : creates boundary faces mesh in the output files\n"
++               "\t--create-boundary-faces : creates boundary faces mesh in the output files\n"
+                "\t--dump-cpu-memory        : dumps passed CPU time and maximal increase of used memory\n"
+                //"\t--randomize=<number>     : random seed for other partitionning (only on one proc)\n"
+                //"\t--atomize                : do the opposite of a good partitionner (only on one proc)\n"
+@@ -131,7 +131,7 @@
+       else if (TestArg(argv[i],"--ndomains",value)) ndomains=atoi(value.c_str());
+       else if (TestArg(argv[i],"--randomize",value)) MyGlobals::_Randomize=atoi(value.c_str());
+       else if (TestArg(argv[i],"--atomize",value)) MyGlobals::_Atomize=atoi(value.c_str());
+-      else if (TestArg(argv[i],"--creates-boundary-faces",value)) MyGlobals::_Creates_Boundary_Faces=1;
++      else if (TestArg(argv[i],"--create-boundary-faces",value)) MyGlobals::_Create_Boundary_Faces=1;
+       else if (TestArg(argv[i],"--dump-cpu-memory",value)) mesure_memory=true;
+       else 
+         {
+@@ -196,7 +196,7 @@
+       cout << "  output-file = " << output << endl;
+       cout << "  split-method = " << library << endl;
+       cout << "  ndomains = " << ndomains << endl;
+-      cout << "  creates_boundary_faces = " << MyGlobals::_Creates_Boundary_Faces << endl;
++      cout << "  create_boundary_faces = " << MyGlobals::_Create_Boundary_Faces << endl;
+       cout << "  dump-cpu-memory = " << mesure_memory<< endl;
+       cout << "  verbose = " << MyGlobals::_Verbose << endl;
+     }
+@@ -303,7 +303,7 @@
+       if (MyGlobals::_Is0verbose) 
+         cout << "generalInformations : \n"<<ReprVectorOfString(finalInformations);
+     
+-      //new_collection.setSubdomainBoundaryCreates(creates_boundary_faces);
++      //new_collection.setSubdomainBoundaryCreates(create_boundary_faces);
+       if (MyGlobals::_Is0verbose) cout << "Writing "<<ndomains<<" output files "<<output<<"xx.med"<<" and "<<output<<".xml"<<endl;
+       new_collection.write(output);
+   
+@@ -343,7 +343,7 @@
+     }
+   catch(...)
+     {
+-      cerr<<"proc "<<MyGlobals::_Rank<<" : an unknown type exception error was occured"<<endl;
++      cerr<<"proc "<<MyGlobals::_Rank<<" : an unknown type exception error has occurred"<<endl;
+       fflush(stderr);
+       MPI_Finalize();
+       return 1;
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_ParaDomainSelector.cxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_ParaDomainSelector.cxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_ParaDomainSelector.cxx   2018-04-19 17:04:36.771223401 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_ParaDomainSelector.cxx   2018-04-19 17:25:17.676796151 +0200
+@@ -56,7 +56,7 @@
+   _world_size=1;
+   _rank=0;
+   if (MyGlobals::_Verbose>10)
+-    std::cout << "WARNING : ParaDomainSelector contructor without parallel_mode World_Size=1 by default" << std::endl;
++    std::cout << "WARNING : ParaDomainSelector constructor without parallel_mode World_Size=1 by default" << std::endl;
+ #endif
+   MyGlobals::_World_Size=_world_size;
+   MyGlobals::_Rank=_rank;
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_ParallelTopology.cxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_ParallelTopology.cxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_ParallelTopology.cxx     2018-04-19 17:04:36.771223401 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_ParallelTopology.cxx     2018-04-19 17:25:17.716796941 +0200
+@@ -63,7 +63,7 @@
+     parallel_mode = (!meshes[idomain]);
+   if (MyGlobals::_Is0verbose>20 && !parallel_mode)
+-    std::cout << "WARNING : ParallelTopology contructor without parallel_mode" << std::endl;
++    std::cout << "WARNING : ParallelTopology constructor without parallel_mode" << std::endl;
+   for (int idomain=0; idomain<_nb_domain; idomain++)
+     {
+       if ( !meshes[idomain] ) continue;
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_PTScotchGraph.cxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_PTScotchGraph.cxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_PTScotchGraph.cxx        1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_PTScotchGraph.cxx        2018-04-19 17:25:17.711796843 +0200
+@@ -0,0 +1,123 @@
++// Copyright (C) 2017  CEA/DEN, EDF 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
++//
++
++#include "MEDPARTITIONER_PTScotchGraph.hxx"
++#include "MEDPARTITIONER_Utils.hxx"
++
++#include "MEDCouplingSkyLineArray.hxx"
++#include "MEDCouplingMemArray.hxx"
++#include "MCType.hxx"
++
++#include <cstdio>
++#include <mpi.h>
++
++#ifdef MED_ENABLE_PTSCOTCH
++extern "C"
++{
++#define restrict
++#include "ptscotch.h"
++}
++#endif
++
++using namespace MEDPARTITIONER;
++
++
++PTSCOTCHGraph::PTSCOTCHGraph(MEDCoupling::MEDCouplingSkyLineArray *graph, int *edgeweight, DataArrayInt *vlbloctab):Graph(graph,edgeweight),_vlbloctab(vlbloctab)
++{
++}
++
++PTSCOTCHGraph::~PTSCOTCHGraph()
++{
++}
++
++void PTSCOTCHGraph::partGraph(int ndomain, const std::string& options_string, ParaDomainSelector* sel)
++{
++  if (MyGlobals::_Verbose>10)
++    std::cout << "proc " << MyGlobals::_Rank << " : PTSCOTCHGraph::partGraph" << std::endl;
++  
++  //number of graph vertices
++  int n = _graph->getNumberOf();
++  //graph
++  int * xadj=const_cast<int*>(_graph->getIndex());
++  int * adjncy=const_cast<int*>(_graph->getValues());
++  //ndomain
++  int nparts=ndomain;
++
++#if !defined(MED_ENABLE_PTSCOTCH)
++  throw INTERP_KERNEL::Exception("PTSCOTCHGraph::partGraph : PTSCOTCH is not available. Check your products, please.");
++#else
++  //output parameters
++  int* partition = new int[n+1];
++  
++  int* vlbloctab = _vlbloctab?const_cast<int*>(_vlbloctab->begin()):0;
++  
++  SCOTCH_Dgraph scotch_graph;
++  SCOTCH_dgraphInit(&scotch_graph, MPI_COMM_WORLD);
++  SCOTCH_dgraphBuild(&scotch_graph,
++                     0,             // baseval               , base first indice 0
++                     n,             // vertlocnbr            , nb of local graph nodes
++                     n,             // vertlocmax            , should be set to vertlocnbr for graphs without holes
++                     xadj,          // vertloctab[vertnbr+1] , index vertex table
++                     0,             // vendloctab            , index end vertex table if disjoint, set to zero
++                     _cell_weight,  // veloloctab            , graph vertices loads, set to zero
++                     vlbloctab,     // vlblocltab            , vertex label array : global vertex index
++                     xadj[n],       // edgelocnbr            , number of edges
++                     xadj[n],       // edgelocsiz            , same as edgelocnbr if edgeloctab is compact
++                     adjncy,        // edgeloctab[edgelocnbr], global indexes of edges
++                     0,             // edgegsttab            , optional, should be computed internally, set to zero
++                     _edge_weight); // edloloctab            , graph edges loads, set to zero
++  
++  SCOTCH_Strat scotch_strategy;
++  SCOTCH_stratInit(&scotch_strategy);
++  
++  //!user-defined options for the strategy
++  if (options_string!="")
++    SCOTCH_stratGraphMap(&scotch_strategy,options_string.c_str());
++
++  if (nparts>1)
++    {
++      if (MyGlobals::_Verbose>10) std::cout << "SCOTCHGraph::graphPart SCOTCH_graphPart" << std::endl;
++      SCOTCH_dgraphPart(&scotch_graph,nparts,&scotch_strategy,partition);
++    }
++  else  //partition for 1 subdomain
++    {
++    for (int i=0; i<n+1; i++)
++      partition[i]=0;
++    }
++  
++  SCOTCH_stratExit(&scotch_strategy);
++  SCOTCH_dgraphExit(&scotch_graph);
++
++  std::vector<int> index(n+1);
++  std::vector<int> value(n);
++  index[0]=0;
++  for (int i=0; i<n; i++)
++    {
++      index[i+1]=index[i]+1;
++      value[i]=partition[i];
++    }
++  delete [] partition;
++  
++  //creating a skylinearray with no copy of the index and partition array
++  //the fifth argument true specifies that only the pointers are passed 
++  //to the object
++  _partition = MEDCoupling::MEDCouplingSkyLineArray::New(index,value);
++#endif
++}
++
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_PTScotchGraph.hxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_PTScotchGraph.hxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_PTScotchGraph.hxx        1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_PTScotchGraph.hxx        2018-04-19 17:25:17.681796250 +0200
+@@ -0,0 +1,47 @@
++// Copyright (C) 2017  CEA/DEN, EDF 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
++//
++
++#ifndef __MEDPARTITIONER_PTSCOTCHGRAPH_HXX__
++#define __MEDPARTITIONER_PTSCOTCHGRAPH_HXX__
++
++#include "MEDPARTITIONER.hxx"
++#include "MEDPARTITIONER_Graph.hxx"
++#include "MCType.hxx"
++#include <string>
++
++namespace MEDCoupling
++{
++  class DataArrayInt;
++}
++
++namespace MEDPARTITIONER
++{
++  class MEDPARTITIONER_EXPORT PTSCOTCHGraph : public Graph
++  {
++  public:
++    PTSCOTCHGraph() { }
++    PTSCOTCHGraph(MEDCoupling::MEDCouplingSkyLineArray* , int *edgeweight=0, DataArrayInt *vlbloctab=0);
++    virtual ~PTSCOTCHGraph();
++    void partGraph(int ndomain, const std::string& options_string="", ParaDomainSelector* sel=0);
++  protected:
++    MEDCoupling::DataArrayInt *_vlbloctab;
++  };
++}
++
++#endif
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_Utils.cxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_Utils.cxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_Utils.cxx        2018-04-19 17:04:36.771223401 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_Utils.cxx        2018-04-19 17:25:17.710796823 +0200
+@@ -44,7 +44,7 @@
+ int MEDPARTITIONER::MyGlobals::_World_Size=-1;
+ int MEDPARTITIONER::MyGlobals::_Randomize=0;
+ int MEDPARTITIONER::MyGlobals::_Atomize=0;
+-int MEDPARTITIONER::MyGlobals::_Creates_Boundary_Faces=0;
++int MEDPARTITIONER::MyGlobals::_Create_Boundary_Faces=0;
+ int MEDPARTITIONER::MyGlobals::_Create_Joints=0;
+ std::vector<std::string> MEDPARTITIONER::MyGlobals::_File_Names;
+ std::vector<std::string> MEDPARTITIONER::MyGlobals::_Mesh_Names;
+@@ -364,7 +364,7 @@
+       iss >> sizeVector;
+       std::string keymap=enTete.substr(foundKey+7,foundSizeVector-foundKey-7);
+       for (int ii=1; ii<=sizeVector; ii++)
+-        res[keymap].push_back(vs[ii]); //add unconditionnaly,so merge duplicates in second vector
++        res[keymap].push_back(vs[ii]); //add unconditionally,so merge duplicates in second vector
+     }
+   return res;
+ }
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_Utils.hxx MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_Utils.hxx
+--- MEDCOUPLING_old/src/MEDPartitioner/MEDPARTITIONER_Utils.hxx        2018-04-19 17:04:36.771223401 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/MEDPARTITIONER_Utils.hxx        2018-04-19 17:25:17.686796348 +0200
+@@ -89,7 +89,7 @@
+   std::vector<std::string> GetInfosOfField(const char *fileName, const char *meshName, const int idomain );
+ #ifdef HAVE_MPI
+-  //not adviced, interblocking, use sendAndReceive
++  //not advised, interblocking, use sendAndReceive
+   //void SendVectorOfString(const std::vector<std::string>& vec, const int target);
+   //std::vector<std::string> RecvVectorOfString(const int source);
+   //TODO void sendRecvVectorOfString(const std::vector<std::string>& vec, const int source, const int target);
+@@ -126,7 +126,7 @@
+     static int _World_Size;
+     static int _Randomize;
+     static int _Atomize;
+-    static int _Creates_Boundary_Faces;
++    static int _Create_Boundary_Faces;
+     static int _Create_Joints;
+     static int _Is0verbose; //trace cout if rank 0 and verbose
+     static std::vector<std::string> _File_Names;    //on [iold]
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner/Test/MEDPARTITIONERTest.cxx MEDCOUPLING_new/src/MEDPartitioner/Test/MEDPARTITIONERTest.cxx
+--- MEDCOUPLING_old/src/MEDPartitioner/Test/MEDPARTITIONERTest.cxx     2018-04-19 17:04:36.772223421 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner/Test/MEDPARTITIONERTest.cxx     2018-04-19 17:25:17.703796685 +0200
+@@ -1421,7 +1421,7 @@
+   const char xmlName[] = "tmp_testCreateBoundaryFaces2D";
+   {
+-    MyGlobals::_Creates_Boundary_Faces = true;
++    MyGlobals::_Create_Boundary_Faces = true;
+     MeshCollection new_collection(collection,new_topo.get());
+     CPPUNIT_ASSERT_EQUAL(ndomains,new_collection.getNbOfLocalMeshes());
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner_Swig/CMakeLists.txt MEDCOUPLING_new/src/MEDPartitioner_Swig/CMakeLists.txt
+--- MEDCOUPLING_old/src/MEDPartitioner_Swig/CMakeLists.txt     2018-04-19 17:04:36.772223421 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner_Swig/CMakeLists.txt     2018-04-19 17:25:17.233787394 +0200
+@@ -34,7 +34,7 @@
+ INCLUDE_DIRECTORIES(
+   ${PYTHON_INCLUDE_DIRS}
+-  ${PTHREAD_INCLUDE_DIR} # pthread dependancy due to python2.7 library
++  ${PTHREAD_INCLUDE_DIR} # pthread dependency due to python2.7 library
+   ${NUMPY_INCLUDE_DIR}
+   ${CMAKE_CURRENT_SOURCE_DIR}
+   ${CMAKE_CURRENT_BINARY_DIR}
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner_Swig/MEDPartitionerCommon.i MEDCOUPLING_new/src/MEDPartitioner_Swig/MEDPartitionerCommon.i
+--- MEDCOUPLING_old/src/MEDPartitioner_Swig/MEDPartitionerCommon.i     2018-04-19 17:04:36.772223421 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner_Swig/MEDPartitionerCommon.i     2018-04-19 17:25:17.235787434 +0200
+@@ -17,42 +17,28 @@
+ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+ //
+-%module MEDPartitioner
+-
+-%include std_string.i
+-
+ %{
+-#include "MEDFileData.hxx"
+-
+ #include "MEDPARTITIONER_MEDPartitioner.hxx"
+ #include "MEDPARTITIONER.hxx"
+ #include "MEDPARTITIONER_Graph.hxx"
+-using namespace MEDCoupling;
+-using namespace INTERP_KERNEL;
+ using namespace MEDPARTITIONER;
+ %}
+-%feature("autodoc", "1");
+-%feature("docstring");
++
+ %newobject MEDPARTITIONER::MEDPartitioner::New;
+ %newobject MEDPARTITIONER::MEDPartitioner::Graph;
+ %newobject MEDPARTITIONER::MEDPartitioner::Graph::getGraph;
+ %newobject MEDPARTITIONER::MEDPartitioner::Graph::getPartition;
+ %newobject MEDPARTITIONER::MEDPartitioner::getMEDFileData;
+-%feature("unref") MEDCoupling::MEDFileData "$this->decrRef();"
+-
+-%nodefaultctor;
+-
+-%rename (InterpKernelException) INTERP_KERNEL::Exception;
+ namespace MEDPARTITIONER
+ {
+   class Graph
+   {
+   public:
+-    typedef enum {METIS,SCOTCH} splitter_type;
++    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);
+     MEDCoupling::MEDCouplingSkyLineArray *getGraph() const
+@@ -75,10 +61,12 @@
+   class MEDPartitioner
+   {
+   public:
+-    MEDPartitioner(const std::string& filename, int ndomains=1, const std::string& library="metis",bool creates_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 creates_boundary_faces=false, bool create_joints=false, bool mesure_memory=false) throw(INTERP_KERNEL::Exception);
+-    MEDPartitioner(const MEDCoupling::MEDFileData* fileData, Graph* graph, bool creates_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) 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) 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);
++    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);
+   };
+diff -Naur MEDCOUPLING_old/src/MEDPartitioner_Swig/MEDPartitioner.i MEDCOUPLING_new/src/MEDPartitioner_Swig/MEDPartitioner.i
+--- MEDCOUPLING_old/src/MEDPartitioner_Swig/MEDPartitioner.i   2018-04-19 17:04:36.772223421 +0200
++++ MEDCOUPLING_new/src/MEDPartitioner_Swig/MEDPartitioner.i   2018-04-19 17:25:17.237787473 +0200
+@@ -17,5 +17,25 @@
+ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+ //
++%module MEDPartitioner
++
++%{
++#include "MEDFileData.hxx"
++
++using namespace MEDCoupling;
++using namespace INTERP_KERNEL;
++%}
++
++%include std_string.i
++
++%feature("autodoc", "1");
++%feature("docstring");
++
++%feature("unref") MEDCoupling::MEDFileData "$this->decrRef();"
++
++%nodefaultctor;
++
++%rename (InterpKernelException) INTERP_KERNEL::Exception;
++
+ %include "MEDPartitionerCommon.i"
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/CMakeLists.txt MEDCOUPLING_new/src/ParaMEDMEM/CMakeLists.txt
+--- MEDCOUPLING_old/src/ParaMEDMEM/CMakeLists.txt      2018-04-19 17:04:36.773223441 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/CMakeLists.txt      2018-04-19 17:25:17.312788956 +0200
+@@ -61,7 +61,7 @@
+   )
+ ADD_LIBRARY(paramedmem ${paramedmem_SOURCES})
+-TARGET_LINK_LIBRARIES(paramedmem medcoupling ${MPI_LIBRARIES})
++TARGET_LINK_LIBRARIES(paramedmem medcouplingcpp ${MPI_LIBRARIES})
+ INSTALL(TARGETS paramedmem EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${MEDCOUPLING_INSTALL_LIBS})
+ FILE(GLOB paramedmem_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/CommInterface.cxx MEDCOUPLING_new/src/ParaMEDMEM/CommInterface.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/CommInterface.cxx   2018-04-19 17:04:36.773223441 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/CommInterface.cxx   2018-04-19 17:25:17.318789074 +0200
+@@ -29,7 +29,7 @@
+     (but this is not strictly respected overall in practice ...). It is used in all
+     the \ref parallel "DEC related classes".
+-    It is typically instanciated after the MPI_Init() call in a program and is afterwards passed as a
++    It is typically instantiated after the MPI_Init() call in a program and is afterwards passed as a
+     parameter to the constructors of various \ref parallel "parallel objects" so that they access the
+     MPI library via this common interface.
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/DisjointDEC.cxx MEDCOUPLING_new/src/ParaMEDMEM/DisjointDEC.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/DisjointDEC.cxx     2018-04-19 17:04:36.773223441 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/DisjointDEC.cxx     2018-04-19 17:25:17.333789371 +0200
+@@ -53,7 +53,7 @@
+    * \c ICoCo::Field, or directly a \c MEDCoupling::MEDCouplingFieldDouble instance.
+    * See the various signatures of the method DisjointDEC::attachLocalField()
+    *
+-   * The derivations of this class should be considered for practical instanciation:
++   * The derivations of this class should be considered for practical instantiation:
+    * - \ref InterpKernelDEC-det "InterpKernelDEC"
+    * - \ref ExplicitCoincidentDEC-det "ExplicitCoincidentDEC"
+    * - \ref StructuredCoincidentDEC-det "StructuredCoincidentDEC"
+@@ -221,7 +221,7 @@
+   /**
+    * Check that the sources and targets procs form a partition of the world communicator referenced in the groups.
+-   * This world communicator is not necessarily MPI_WORLD_COMM, but it has to be covered completly for the DECs to work.
++   * This world communicator is not necessarily MPI_WORLD_COMM, but it has to be covered completely for the DECs to work.
+    */
+   void DisjointDEC::checkPartitionGroup() const
+   {
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/ElementLocator.hxx MEDCOUPLING_new/src/ParaMEDMEM/ElementLocator.hxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/ElementLocator.hxx  2018-04-19 17:04:36.774223460 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/ElementLocator.hxx  2018-04-19 17:25:17.302788758 +0200
+@@ -22,6 +22,7 @@
+ #include "InterpolationOptions.hxx"
+ #include "MEDCouplingNatureOfField.hxx"
++#include "MCType.hxx"
+ #include <mpi.h>
+ #include <vector>
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/InterpKernelDEC.cxx MEDCOUPLING_new/src/ParaMEDMEM/InterpKernelDEC.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/InterpKernelDEC.cxx 2018-04-19 17:04:36.774223460 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/InterpKernelDEC.cxx 2018-04-19 17:25:17.306788837 +0200
+@@ -201,7 +201,7 @@
+       {
+         //locate the distant meshes
+         ElementLocator locator(*_local_field, *_target_group, *_source_group);
+-        //transfering option from InterpKernelDEC to ElementLocator   
++        //transferring option from InterpKernelDEC to ElementLocator   
+         locator.copyOptions(*this);
+         MEDCouplingPointSet* distant_mesh=0; 
+         int* distant_ids=0;
+@@ -232,7 +232,7 @@
+     if (_target_group->containsMyRank())
+       {
+         ElementLocator locator(*_local_field, *_source_group, *_target_group);
+-        //transfering option from InterpKernelDEC to ElementLocator
++        //transferring option from InterpKernelDEC to ElementLocator
+         locator.copyOptions(*this);
+         MEDCouplingPointSet* distant_mesh=0;
+         int* distant_ids=0;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/InterpolationMatrix.cxx MEDCOUPLING_new/src/ParaMEDMEM/InterpolationMatrix.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/InterpolationMatrix.cxx     2018-04-19 17:04:36.774223460 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/InterpolationMatrix.cxx     2018-04-19 17:25:17.352789747 +0200
+@@ -81,7 +81,7 @@
+      \brief Adds the contribution of a distant subdomain to the*
+      interpolation matrix.
+      The method adds contribution to the interpolation matrix.
+-     For each row of the matrix, elements are addded as
++     For each row of the matrix, elements are added as
+      a (column, coeff) pair in the _coeffs array. This column number refers
+      to an element on the target side via the _col_offsets array.
+      It is made of a series of (iproc, ielem) pairs.
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/MPIAccess.cxx MEDCOUPLING_new/src/ParaMEDMEM/MPIAccess.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/MPIAccess.cxx       2018-04-19 17:04:36.775223480 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/MPIAccess.cxx       2018-04-19 17:25:17.348789668 +0200
+@@ -170,7 +170,7 @@
+     "_MapOfRequestStruct".
+     That structure RequestStruct give the possibility to manage
+     the structures MPI_Request and MPI_Status * of MPI. It give
+-    also the possibility to get informations about that request :
++    also the possibility to get information about that request :
+     target, send/recv, tag, [a]synchronous, type, outcount.
+     . That identifier is used to control an asynchronous request
+@@ -391,7 +391,7 @@
+   // Receive (read) in synchronous mode count values of type datatype in buffer from source
+   // (returns RequestId identifier even if the corresponding structure is deleted :
+   // it is only in order to have the same signature as the asynchronous mode)
+-  // The output argument OutCount is optionnal : *OutCount <= count
++  // The output argument OutCount is optional : *OutCount <= count
+   int MPIAccess::recv(void* buffer, int count, MPI_Datatype datatype, int source, int &RequestId, int *OutCount)
+   {
+     int sts = MPI_SUCCESS ;
+@@ -1003,7 +1003,7 @@
+     return _comm_interface.requestFree( request ) ;
+   }
+   
+-  // Print all informations of all known requests for debugging purpose
++  // Print all information of all known requests for debugging purpose
+   void MPIAccess::check() const
+   {
+     int i = 0 ;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/MPIAccessDEC.cxx MEDCOUPLING_new/src/ParaMEDMEM/MPIAccessDEC.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/MPIAccessDEC.cxx    2018-04-19 17:04:36.775223480 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/MPIAccessDEC.cxx    2018-04-19 17:25:17.326789233 +0200
+@@ -441,12 +441,12 @@
+     . We assume that buffers are allocated with a new double[]. so a
+     delete [] is done.
+-    . The structure SendBuffStruct permit to keep the adress of the buffer
++    . The structure SendBuffStruct permit to keep the address of the buffer
+     and to manage a reference counter of that buffer. It contains
+     also MPI_Datatype for the delete [] (double *) ... when the counter
+     is null.
+-    . The map _MapOfSendBuffers etablish the correspondance between each
++    . The map _MapOfSendBuffers establish the correspondence between each
+     RequestId given by a MPI_Access->ISend(...) and a SendBuffStruct
+     for each "target" of a part of the buffer.
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/NonCoincidentDEC.cxx MEDCOUPLING_new/src/ParaMEDMEM/NonCoincidentDEC.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/NonCoincidentDEC.cxx        2018-04-19 17:04:36.775223480 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/NonCoincidentDEC.cxx        2018-04-19 17:25:17.341789529 +0200
+@@ -217,7 +217,7 @@
+           {
+             elem_numbers = const_cast<fvm_lnum_t*> (support->getNumber(types[itype]));
+            
+-            //creating work arrays to store list of elems for partial suports
++            //creating work arrays to store list of elems for partial supports
+             if (itype>0)
+               {
+                 fvm_lnum_t* temp = new int[nbelems];
+@@ -372,7 +372,7 @@
+     int nbcomp = _local_field->getField()->getNumberOfComponents();
+     double* distant_values = new double [_nb_distant_points*nbcomp];
+-    //cheap interpolation :  the value of the cell is transfered to the point
++    //cheap interpolation :  the value of the cell is transferred to the point
+     for (int i=0; i<_nb_distant_points; i++)
+       for (int j=0; j <nbcomp; j++)
+         distant_values[i*nbcomp+j]=values[(_distant_locations[i]-1)*nbcomp+j];
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/OverlapDEC.cxx MEDCOUPLING_new/src/ParaMEDMEM/OverlapDEC.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/OverlapDEC.cxx      2018-04-19 17:04:36.775223480 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/OverlapDEC.cxx      2018-04-19 17:25:17.331789332 +0200
+@@ -79,11 +79,11 @@
+     Starting from the global interaction previously computed in \ref ParaMEDMEMOverlapDECAlgoStep1
+     "Step 1", each proc computes the TODO list per proc.
+     The following rules is chosen : a pair (x,y) can be treated by either proc \#x or proc \#y,
+-    in order to reduce the amount of data transfert among
++    in order to reduce the amount of data transfers among
+     processors. The algorithm chosen for load balancing is the following : Each processor has
+     an empty \b local TODO list at the beginning. Then for each pair (k,m) in
+     \b global TODO list, if proc\#k has less temporary local list than proc\#m pair, (k,m) is added
+-    to temparary local TODO list of proc\#k.
++    to temporary local TODO list of proc\#k.
+     If proc\#m has less temporary local TODO list than proc\#k pair, (k,m) is added to temporary
+     local TODO list of proc\#m.
+     If proc\#k and proc\#m have the same amount of temporary local TODO list pair, (k,m) is added to
+@@ -135,7 +135,7 @@
+     seen in \ref ParaMEDMEMOverlapDECAlgoStep2 "here in Step2".
+     As will be dealt in Step 6, for final matrix-vector computations, the resulting matrix of the
+-    couple (k,m) whereever it is computed (proc \#k or proc \#m)
++    couple (k,m) wherever it is computed (proc \#k or proc \#m)
+     will be stored in \b proc\#m.
+     - If proc \#k is in charge (performs the matrix computation) for this couple (k,m), target ids
+@@ -154,7 +154,7 @@
+      in charge of the matrix, proc \#m receives the source ids
+     from remote proc \#k, and thus the matrix is directly correct, no need for renumbering as
+      in \ref ParaMEDMEMOverlapDECAlgoStep5 "Step 5". However proc \#k must
+-    keep track of the ids sent to proc \#m for te matrix-vector computation.
++    keep track of the ids sent to proc \#m for the matrix-vector computation.
+     This is incarnated by OverlapMapping::keepTracksOfSourceIds in proc k.
+     This step is performed in MEDCoupling::OverlapElementLocator::exchangeMeshes method.
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/OverlapElementLocator.cxx MEDCOUPLING_new/src/ParaMEDMEM/OverlapElementLocator.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/OverlapElementLocator.cxx   2018-04-19 17:04:36.776223501 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/OverlapElementLocator.cxx   2018-04-19 17:25:17.344789588 +0200
+@@ -481,8 +481,8 @@
+   }
+   /*!
+-   * This method recieves source remote mesh on proc 'procId' if sourceOrTarget==True
+-   * This method recieves target remote mesh on proc 'procId' if sourceOrTarget==False
++   * This method receives source remote mesh on proc 'procId' if sourceOrTarget==True
++   * This method receives target remote mesh on proc 'procId' if sourceOrTarget==False
+    */
+   void OverlapElementLocator::receiveRemoteMeshFrom(int procId, bool sourceOrTarget)
+   {
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/OverlapMapping.cxx MEDCOUPLING_new/src/ParaMEDMEM/OverlapMapping.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/OverlapMapping.cxx  2018-04-19 17:04:36.776223501 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/OverlapMapping.cxx  2018-04-19 17:25:17.359789885 +0200
+@@ -415,7 +415,7 @@
+  * This is the last step after all2Alls for matrix exchange.
+  * _the_matrix_st is the final matrix : 
+  *      - The first entry is srcId in current proc.
+- *      - The second is the pseudo id of source proc (correspondance with true id is in attribute _the_matrix_st_source_proc_id and _the_matrix_st_source_ids)
++ *      - The second is the pseudo id of source proc (correspondence with true id is in attribute _the_matrix_st_source_proc_id and _the_matrix_st_source_ids)
+  *      - the third is the srcId in the pseudo source proc
+  */
+ void OverlapMapping::unserializationST(int nbOfTrgElems,
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM/ParaFIELD.cxx MEDCOUPLING_new/src/ParaMEDMEM/ParaFIELD.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEM/ParaFIELD.cxx       2018-04-19 17:04:36.776223501 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM/ParaFIELD.cxx       2018-04-19 17:25:17.308788877 +0200
+@@ -172,7 +172,7 @@
+    * This method returns, if it exists, an array with only one component and as many as tuples as _field has.
+    * This array gives for every element on which this->_field lies, its global number, if this->_field is nodal.
+    * For example if _field is a nodal field : returned array will be the nodal global numbers.
+-   * The content of this method is used to inform Working side to accumulate data recieved by lazy side.
++   * The content of this method is used to inform Working side to accumulate data received by lazy side.
+    */
+   DataArrayInt* ParaFIELD::returnCumulativeGlobalNumbering() const
+   {
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM_Swig/CMakeLists.txt MEDCOUPLING_new/src/ParaMEDMEM_Swig/CMakeLists.txt
+--- MEDCOUPLING_old/src/ParaMEDMEM_Swig/CMakeLists.txt 2018-04-19 17:04:36.800223979 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM_Swig/CMakeLists.txt 2018-04-19 17:25:17.361789924 +0200
+@@ -30,39 +30,33 @@
+ ENDIF()
+ SET(SWIG_MODULE_ParaMEDMEM_EXTRA_FLAGS "${NUMPY_DEFINITIONS};${SCIPY_DEFINITIONS}")
+-SET (ParaMEDMEM_SWIG_DPYS_FILES
+-    ParaMEDMEM.typemap)
+-
+ INCLUDE_DIRECTORIES(
+   ${PYTHON_INCLUDE_DIRS}
+   ${NUMPY_INCLUDE_DIR}
+-  ${MEDFILE_INCLUDE_DIRS}
+-  ${HDF5_INCLUDE_DIRS}
+   ${MPI_INCLUDE_DIRS}
+   ${CMAKE_CURRENT_SOURCE_DIR}
+   ${CMAKE_CURRENT_SOURCE_DIR}/../ParaMEDMEM
+   ${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo
+   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling_Swig
+-  ${CMAKE_CURRENT_SOURCE_DIR}/../MEDLoader/Swig
+-  ${CMAKE_CURRENT_SOURCE_DIR}/../MEDLoader
+   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling
+   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
+   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/Bases
+   )
+-SET (SWIG_MODULE_ParaMEDMEM_EXTRA_DEPS ${ParaMEDMEM_SWIG_DPYS_FILES}
++SET (SWIG_MODULE_ParaMEDMEM_EXTRA_DEPS
+     ${paramedmem_HEADERS_HXX}
+     ${medloader_HEADERS_HXX}
+     ${medcoupling_HEADERS_HXX} ${medcoupling_HEADERS_TXX}
+     ${interpkernel_HEADERS_HXX} ${interpkernel_HEADERS_TXX})
+ SWIG_ADD_MODULE(ParaMEDMEM python ParaMEDMEM.i)
+-SWIG_LINK_LIBRARIES(ParaMEDMEM ${PYTHON_LIBRARIES} paramedmem medloader)
++SWIG_LINK_LIBRARIES(ParaMEDMEM ${PYTHON_LIBRARIES} paramedmem)
+ SWIG_CHECK_GENERATION(ParaMEDMEM)
+ INSTALL(TARGETS _ParaMEDMEM DESTINATION ${MEDCOUPLING_INSTALL_PYTHON})
+-INSTALL(FILES ParaMEDMEM.i DESTINATION ${MEDCOUPLING_INSTALL_HEADERS})
+-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py test_InterpKernelDEC.py test_NonCoincidentDEC.py test_StructuredCoincidentDEC.py DESTINATION ${MEDCOUPLING_INSTALL_SCRIPT_PYTHON})
++INSTALL(FILES ParaMEDMEM.i ParaMEDMEMCommon.i DESTINATION ${MEDCOUPLING_INSTALL_HEADERS})
++INSTALL(FILES test_InterpKernelDEC.py test_NonCoincidentDEC.py test_StructuredCoincidentDEC.py DESTINATION ${MEDCOUPLING_INSTALL_SCRIPT_PYTHON})
++SALOME_INSTALL_SCRIPTS(${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py ${MEDCOUPLING_INSTALL_PYTHON})
+ SALOME_INSTALL_SCRIPTS(${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py ${MEDCOUPLING_INSTALL_SCRIPT_PYTHON})
+ INSTALL(FILES test_InterpKernelDEC.py test_NonCoincidentDEC.py test_StructuredCoincidentDEC.py DESTINATION ${MEDCOUPLING_INSTALL_SCRIPT_PYTHON})
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM_Swig/ParaMEDMEMCommon.i MEDCOUPLING_new/src/ParaMEDMEM_Swig/ParaMEDMEMCommon.i
+--- MEDCOUPLING_old/src/ParaMEDMEM_Swig/ParaMEDMEMCommon.i     1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/ParaMEDMEM_Swig/ParaMEDMEMCommon.i     2018-04-19 17:25:17.364789984 +0200
+@@ -0,0 +1,102 @@
++// Copyright (C) 2017  CEA/DEN, EDF 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
++//
++
++%include std_set.i
++
++%template() std::set<int>;
++
++%{
++#include "CommInterface.hxx"
++#include "ProcessorGroup.hxx"
++#include "Topology.hxx"
++#include "MPIProcessorGroup.hxx"
++#include "DEC.hxx"
++#include "InterpKernelDEC.hxx"
++#include "NonCoincidentDEC.hxx"
++#include "StructuredCoincidentDEC.hxx"
++#include "ParaMESH.hxx"
++#include "ParaFIELD.hxx"
++#include "ICoCoMEDField.hxx"
++#include "ComponentTopology.hxx"
++
++using namespace INTERP_KERNEL;
++using namespace MEDCoupling;
++using namespace ICoCo;
++%}
++
++%include "InterpolationOptions.hxx"
++%include "CommInterface.hxx"
++%include "ProcessorGroup.hxx"
++%include "DECOptions.hxx"
++%include "ParaMESH.hxx"
++%include "ParaFIELD.hxx"
++%include "MPIProcessorGroup.hxx"
++%include "ComponentTopology.hxx"
++%include "DEC.hxx"
++%include "DisjointDEC.hxx"
++%include "InterpKernelDEC.hxx"
++%include "StructuredCoincidentDEC.hxx"
++
++%include "ICoCoField.hxx"
++%rename(ICoCoMEDField) ICoCo::MEDField;
++%include "ICoCoMEDField.hxx"
++
++%nodefaultctor;
++
++/* This object can be used only if MED_ENABLE_FVM is defined*/
++#ifdef MED_ENABLE_FVM
++class NonCoincidentDEC : public DEC
++{
++public:
++  NonCoincidentDEC(ProcessorGroup& source, ProcessorGroup& target);
++};
++#endif
++
++%extend MEDCoupling::ParaMESH
++{
++  PyObject *getGlobalNumberingCell2() const
++  {
++    const int *tmp=self->getGlobalNumberingCell();
++    int size=self->getCellMesh()->getNumberOfCells();
++    PyObject *ret=PyList_New(size);
++    for(int i=0;i<size;i++)
++      PyList_SetItem(ret,i,PyInt_FromLong(tmp[i])); 
++    return ret;
++  }
++
++  PyObject *getGlobalNumberingFace2() const
++  {
++    const int *tmp=self->getGlobalNumberingFace();
++    int size=self->getFaceMesh()->getNumberOfCells();
++    PyObject *ret=PyList_New(size);
++    for(int i=0;i<size;i++)
++      PyList_SetItem(ret,i,PyInt_FromLong(tmp[i])); 
++    return ret;
++  }
++
++  PyObject *getGlobalNumberingNode2() const
++  {
++    const int *tmp=self->getGlobalNumberingNode();
++    int size=self->getCellMesh()->getNumberOfNodes();
++    PyObject *ret=PyList_New(size);
++    for(int i=0;i<size;i++)
++      PyList_SetItem(ret,i,PyInt_FromLong(tmp[i])); 
++    return ret;
++  }
++}
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM_Swig/ParaMEDMEM.i MEDCOUPLING_new/src/ParaMEDMEM_Swig/ParaMEDMEM.i
+--- MEDCOUPLING_old/src/ParaMEDMEM_Swig/ParaMEDMEM.i   2018-04-19 17:04:36.800223979 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM_Swig/ParaMEDMEM.i   2018-04-19 17:25:17.366790023 +0200
+@@ -17,281 +17,33 @@
+ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+ //
+-%module ParaMEDMEM
+-
+-%include "ParaMEDMEM.typemap"
+-%include "MEDLoaderCommon.i"
+-
+-%{
+-#include "CommInterface.hxx"
+-#include "ProcessorGroup.hxx"
+-#include "Topology.hxx"
+-#include "MPIProcessorGroup.hxx"
+-#include "DEC.hxx"
+-#include "InterpKernelDEC.hxx"
+-#include "NonCoincidentDEC.hxx"
+-#include "StructuredCoincidentDEC.hxx"
+-#include "ParaMESH.hxx"
+-#include "ParaFIELD.hxx"
+-#include "ICoCoMEDField.hxx"
+-#include "ComponentTopology.hxx"
+-
+-#include <mpi.h>
+-
+-using namespace MEDCoupling;
+-using namespace ICoCo;
+-      
+-enum mpi_constants { mpi_comm_world, mpi_comm_self, mpi_double, mpi_int };
+-%}
+-
+-%include "CommInterface.hxx"
+-%include "ProcessorGroup.hxx"
+-%include "DECOptions.hxx"
+-%include "ParaMESH.hxx"
+-%include "ParaFIELD.hxx"
+-%include "MPIProcessorGroup.hxx"
+-%include "ComponentTopology.hxx"
+-%include "DEC.hxx"
+-%include "InterpKernelDEC.hxx"
+-%include "StructuredCoincidentDEC.hxx"
+-
+-%rename(ICoCoMEDField) ICoCo::MEDField;
+-%include "ICoCoMEDField.hxx"
+-
+-%nodefaultctor;
+-
+-/* This object can be used only if MED_ENABLE_FVM is defined*/
+-#ifdef MED_ENABLE_FVM
+-class NonCoincidentDEC : public DEC
+-{
+-public:
+-  NonCoincidentDEC(ProcessorGroup& source, ProcessorGroup& target);
+-};
+-#endif
+-
+-%extend MEDCoupling::ParaMESH
+-{
+-  PyObject *getGlobalNumberingCell2() const
+-  {
+-    const int *tmp=self->getGlobalNumberingCell();
+-    int size=self->getCellMesh()->getNumberOfCells();
+-    PyObject *ret=PyList_New(size);
+-    for(int i=0;i<size;i++)
+-      PyList_SetItem(ret,i,PyInt_FromLong(tmp[i])); 
+-    return ret;
+-  }
+-
+-  PyObject *getGlobalNumberingFace2() const
+-  {
+-    const int *tmp=self->getGlobalNumberingFace();
+-    int size=self->getFaceMesh()->getNumberOfCells();
+-    PyObject *ret=PyList_New(size);
+-    for(int i=0;i<size;i++)
+-      PyList_SetItem(ret,i,PyInt_FromLong(tmp[i])); 
+-    return ret;
+-  }
++// Author : Anthony Geay (EDF R&D)
+-  PyObject *getGlobalNumberingNode2() const
+-  {
+-    const int *tmp=self->getGlobalNumberingNode();
+-    int size=self->getCellMesh()->getNumberOfNodes();
+-    PyObject *ret=PyList_New(size);
+-    for(int i=0;i<size;i++)
+-      PyList_SetItem(ret,i,PyInt_FromLong(tmp[i])); 
+-    return ret;
+-  }
+-}
+-
+-//=============================================================================================
+-// Interface for MPI-realization-specific constants like MPI_COMM_WORLD.
+-//
+-// Type and values of constants like MPI_COMM_WORLD depends on MPI realization
+-// and usually such constants actually are macros. To have such symbols in python
+-// and translate them into correct values we use the following technique.
+-// We define some constants (enum mpi_constants) and map them into real MPI values
+-// using typemaps, and we create needed python symbols equal to 'mpi_constants'
+-// via %pythoncode directive.
+-
+-// Constants corresponding to similar MPI definitions
+-enum mpi_constants { mpi_comm_world, mpi_comm_self, mpi_double, mpi_int };
+-
+-// Map mpi_comm_world and mpi_comm_self -> MPI_COMM_WORLD and MPI_COMM_SELF
+-%typemap(in) MPI_Comm
+-{ 
+-  switch (PyInt_AsLong($input))
+-    {
+-    case mpi_comm_world: $1 = MPI_COMM_WORLD; break;
+-    case mpi_comm_self:  $1 = MPI_COMM_SELF;  break;
+-    default:
+-      PyErr_SetString(PyExc_TypeError,"unexpected value of MPI_Comm");
+-      return NULL;
+-    }
+-}
+-// Map mpi_double and mpi_int -> MPI_DOUBLE and MPI_INT
+-%typemap(in) MPI_Datatype
+-{ 
+-  switch (PyInt_AsLong($input))
+-    {
+-    case mpi_double:     $1 = MPI_DOUBLE;     break;
+-    case mpi_int:        $1 = MPI_INT;        break;
+-    default:
+-      PyErr_SetString(PyExc_TypeError,"unexpected value of MPI_Datatype");
+-      return NULL;
+-    }
+-}
+-// The following code gets inserted into the result python file:
+-// create needed python symbols
+-%pythoncode %{
+-MPI_COMM_WORLD = mpi_comm_world
+-MPI_COMM_SELF  = mpi_comm_self
+-MPI_DOUBLE     = mpi_double
+-MPI_INT        = mpi_int
+-%}
+-//=============================================================================================
+-
+-// ==============
+-// MPI_Comm_size
+-// ==============
+-%inline %{ PyObject* MPI_Comm_size(MPI_Comm comm)
+-  {
+-    int res = 0;
+-    int err = MPI_Comm_size(comm, &res);
+-    if ( err != MPI_SUCCESS )
+-      {
+-        PyErr_SetString(PyExc_RuntimeError,"Erorr in MPI_Comm_size()");
+-        return NULL;
+-      }
+-    return PyInt_FromLong( res );
+-  } %}
+-
+-// ==============
+-// MPI_Comm_rank
+-// ==============
+-%inline %{ PyObject* MPI_Comm_rank(MPI_Comm comm)
+-  {
+-    int res = 0;
+-    int err = MPI_Comm_rank(comm, &res);
+-    if ( err != MPI_SUCCESS )
+-      {
+-        PyErr_SetString(PyExc_RuntimeError,"Erorr in MPI_Comm_rank()");
+-        return NULL;
+-      }
+-    return PyInt_FromLong( res );
+-  } 
+-  %}
+-
+-int MPI_Init(int *argc, char ***argv );
+-int MPI_Barrier(MPI_Comm comm);
+-int MPI_Finalize();
++%module ParaMEDMEM
+-// ==========
+-// MPI_Bcast
+-// ==========
++#define MEDCOUPLING_EXPORT
++#define INTERPKERNEL_EXPORT
+-%inline %{ PyObject* MPI_Bcast(PyObject* buffer, int nb, MPI_Datatype type, int root, MPI_Comm c)
+-  {
+-    // buffer must be a list
+-    if (!PyList_Check(buffer))
+-      {
+-        PyErr_SetString(PyExc_TypeError, "buffer is expected to be a list");
+-        return NULL;
+-      }
+-    // check list size
+-    int aSize = PyList_Size(buffer);
+-    if ( aSize != nb )
+-      {
+-        std::ostringstream stream; stream << "buffer is expected to be of size " << nb;
+-        PyErr_SetString(PyExc_ValueError, stream.str().c_str());
+-        return NULL;
+-      }
+-    // allocate and fill a buffer
+-    void* aBuf = 0;
+-    int* intBuf = 0;
+-    double* dblBuf = 0;
+-    if ( type == MPI_DOUBLE )
+-      {
+-        aBuf = (void*) ( dblBuf = new double[ nb ] );
+-        for ( int i = 0; i < aSize; ++i )
+-          dblBuf[i] = PyFloat_AS_DOUBLE( PyList_GetItem( buffer, i ));
+-      }
+-    else if ( type == MPI_INT )
+-      {
+-        aBuf = (void*) ( intBuf = new int[ nb ] );
+-        for ( int i = 0; i < aSize; ++i )
+-          intBuf[i] = int( PyInt_AS_LONG( PyList_GetItem( buffer, i )));
+-      }
+-    else
+-      {
+-        PyErr_SetString(PyExc_TypeError, "Only MPI_DOUBLE and MPI_INT supported");
+-        return NULL;
+-      }
+-    // call MPI_Bcast
+-    int err = MPI_Bcast(aBuf, nb, type, root, c);
+-    // treat error
+-    if ( err != MPI_SUCCESS )
+-      {
+-        PyErr_SetString(PyExc_RuntimeError,"Erorr in MPI_Bcast()");
+-        delete [] intBuf; delete [] dblBuf;
+-        return NULL;
+-      }
+-    // put recieved data into the list
+-    int pyerr = 0;
+-    if ( type == MPI_DOUBLE )
+-      {
+-        for ( int i = 0; i < aSize && !pyerr; ++i )
+-          pyerr = PyList_SetItem(buffer, i, PyFloat_FromDouble( dblBuf[i] ));
+-        delete [] dblBuf;
+-      }
+-    else
+-      {
+-        for ( int i = 0; i < aSize && !pyerr; ++i )
+-          pyerr = PyList_SetItem(buffer, i, PyInt_FromLong( intBuf[i] ));
+-        delete [] intBuf;
+-      }
+-    if ( pyerr )
+-      {
+-        PyErr_SetString(PyExc_RuntimeError, "Error of PyList_SetItem()");
+-        return NULL;
+-      }
+-    return PyInt_FromLong( err );
++%include "MEDCouplingCommon.i"
+-  }
+-  %}
++%include "ParaMEDMEMCommon.i"
+ %pythoncode %{
+-def ParaMEDMEMDataArrayDoublenew(cls,*args):
+-    import _ParaMEDMEM
+-    return _ParaMEDMEM.DataArrayDouble____new___(cls,args)
+-def ParaMEDMEMDataArrayDoubleIadd(self,*args):
++def MEDCouplingDataArrayDoubleIadd(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayDouble____iadd___(self, self, *args)
+-def ParaMEDMEMDataArrayDoubleIsub(self,*args):
++def MEDCouplingDataArrayDoubleIsub(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayDouble____isub___(self, self, *args)
+-def ParaMEDMEMDataArrayDoubleImul(self,*args):
++def MEDCouplingDataArrayDoubleImul(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayDouble____imul___(self, self, *args)
+-def ParaMEDMEMDataArrayDoubleIdiv(self,*args):
++def MEDCouplingDataArrayDoubleIdiv(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayDouble____idiv___(self, self, *args)
+-def ParaMEDMEMDataArrayDoubleIpow(self,*args):
++def MEDCouplingDataArrayDoubleIpow(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayDouble____ipow___(self, self, *args)
+-def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+-    import _ParaMEDMEM
+-    return _ParaMEDMEM.DataArrayDoubleTuple____iadd___(self, self, *args)
+-def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+-    import _ParaMEDMEM
+-    return _ParaMEDMEM.DataArrayDoubleTuple____isub___(self, self, *args)
+-def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+-    import _ParaMEDMEM
+-    return _ParaMEDMEM.DataArrayDoubleTuple____imul___(self, self, *args)
+-def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+-    import _ParaMEDMEM
+-    return _ParaMEDMEM.DataArrayDoubleTuple____idiv___(self, self, *args)
+-def MEDCouplingFieldDoublenew(cls,*args):
+-    import _ParaMEDMEM
+-    return _ParaMEDMEM.MEDCouplingFieldDouble____new___(cls,args)
+ def MEDCouplingFieldDoubleIadd(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.MEDCouplingFieldDouble____iadd___(self, self, *args)
+@@ -307,42 +59,69 @@
+ def MEDCouplingFieldDoubleIpow(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.MEDCouplingFieldDouble____ipow___(self, self, *args)
+-def ParaMEDMEMDataArrayIntnew(cls,*args):
+-    import _ParaMEDMEM
+-    return _ParaMEDMEM.DataArrayInt____new___(cls,args)
+-def ParaMEDMEMDataArrayIntIadd(self,*args):
++def MEDCouplingDataArrayIntIadd(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayInt____iadd___(self, self, *args)
+-def ParaMEDMEMDataArrayIntIsub(self,*args):
++def MEDCouplingDataArrayIntIsub(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayInt____isub___(self, self, *args)
+-def ParaMEDMEMDataArrayIntImul(self,*args):
++def MEDCouplingDataArrayIntImul(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayInt____imul___(self, self, *args)
+-def ParaMEDMEMDataArrayIntIdiv(self,*args):
++def MEDCouplingDataArrayIntIdiv(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayInt____idiv___(self, self, *args)
+-def ParaMEDMEMDataArrayIntImod(self,*args):
++def MEDCouplingDataArrayIntImod(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayInt____imod___(self, self, *args)
+-def ParaMEDMEMDataArrayIntIpow(self,*args):
++def MEDCouplingDataArrayIntIpow(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayInt____ipow___(self, self, *args)
+-def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
++def MEDCouplingDataArrayFloatIadd(self,*args):
++    import _ParaMEDMEM
++    return _ParaMEDMEM.DataArrayFloat____iadd___(self, self, *args)
++def MEDCouplingDataArrayFloatIsub(self,*args):
++    import _ParaMEDMEM
++    return _ParaMEDMEM.DataArrayFloat____isub___(self, self, *args)
++def MEDCouplingDataArrayFloatImul(self,*args):
++    import _ParaMEDMEM
++    return _ParaMEDMEM.DataArrayFloat____imul___(self, self, *args)
++def MEDCouplingDataArrayFloatIdiv(self,*args):
++    import _ParaMEDMEM
++    return _ParaMEDMEM.DataArrayFloat____idiv___(self, self, *args)
++def MEDCouplingDataArrayDoubleTupleIadd(self,*args):
++    import _ParaMEDMEM
++    return _ParaMEDMEM.DataArrayDoubleTuple____iadd___(self, self, *args)
++def MEDCouplingDataArrayDoubleTupleIsub(self,*args):
++    import _ParaMEDMEM
++    return _ParaMEDMEM.DataArrayDoubleTuple____isub___(self, self, *args)
++def MEDCouplingDataArrayDoubleTupleImul(self,*args):
++    import _ParaMEDMEM
++    return _ParaMEDMEM.DataArrayDoubleTuple____imul___(self, self, *args)
++def MEDCouplingDataArrayDoubleTupleIdiv(self,*args):
++    import _ParaMEDMEM
++    return _ParaMEDMEM.DataArrayDoubleTuple____idiv___(self, self, *args)
++def MEDCouplingDataArrayIntTupleIadd(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayIntTuple____iadd___(self, self, *args)
+-def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
++def MEDCouplingDataArrayIntTupleIsub(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayIntTuple____isub___(self, self, *args)
+-def ParaMEDMEMDataArrayIntTupleImul(self,*args):
++def MEDCouplingDataArrayIntTupleImul(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayIntTuple____imul___(self, self, *args)
+-def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
++def MEDCouplingDataArrayIntTupleIdiv(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayIntTuple____idiv___(self, self, *args)
+-def ParaMEDMEMDataArrayIntTupleImod(self,*args):
++def MEDCouplingDataArrayIntTupleImod(self,*args):
+     import _ParaMEDMEM
+     return _ParaMEDMEM.DataArrayIntTuple____imod___(self, self, *args)
++def MEDCouplingDenseMatrixIadd(self,*args):
++    import _ParaMEDMEM
++    return _ParaMEDMEM.DenseMatrix____iadd___(self, self, *args)
++def MEDCouplingDenseMatrixIsub(self,*args):
++    import _ParaMEDMEM
++    return _ParaMEDMEM.DenseMatrix____isub___(self, self, *args)
+ %}
+ %include "MEDCouplingFinalize.i"
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM_Swig/ParaMEDMEM.typemap MEDCOUPLING_new/src/ParaMEDMEM_Swig/ParaMEDMEM.typemap
+--- MEDCOUPLING_old/src/ParaMEDMEM_Swig/ParaMEDMEM.typemap     2018-04-19 17:04:36.800223979 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM_Swig/ParaMEDMEM.typemap     1970-01-01 01:00:00.000000000 +0100
+@@ -1,89 +0,0 @@
+-// Copyright (C) 2007-2016  CEA/DEN, EDF 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
+-//
+-
+-%include std_set.i
+-%include std_string.i
+-
+-%template() std::set<int>;
+-
+-// Creates "int *argc, char ***argv" parameters from input list
+-%typemap(in) (int *argc, char ***argv) {
+-  int i;
+-  if (!PyList_Check($input)) {
+-    PyErr_SetString(PyExc_ValueError, "Expecting a list");
+-    return NULL;
+-  }
+-  int aSize = PyList_Size($input);
+-  $1 = &aSize;
+-  char** aStrs = (char **) malloc((aSize+1)*sizeof(char *));
+-  for (i = 0; i < aSize; i++) {
+-    PyObject *s = PyList_GetItem($input,i);
+-    if (PyString_Check(s))
+-      aStrs[i] = PyString_AsString(s);
+-%#if PY_VERSION_HEX >= 0x03000000
+-    else if (PyUnicode_Check(s))
+-      aStrs[i] = PyUnicode_AsUTF8(s);
+-%#endif
+-    else {
+-        free(aStrs);
+-        PyErr_SetString(PyExc_ValueError, "List items must be strings");
+-        return NULL;
+-    }
+-  }
+-  aStrs[i] = 0;
+-  $2 = &aStrs;
+-}
+-
+-%typemap(freearg) (int *argc, char ***argv) {
+-   if ($2) free(*($2));
+-}
+-
+-/*  MACRO: IN typemap for std::set<TYPE> C++ object */
+-%define TYPEMAP_INPUT_SET_BY_VALUE( TYPE )
+-{
+-  /* typemap in for set<TYPE> */
+-  /* Check if is a list */
+-  if (PyList_Check($input))
+-  {
+-    int size = PyList_Size($input);
+-    std::set< TYPE > tmpSet;
+-
+-    for (int i=0; i < size; i++)
+-    {
+-      PyObject * tmp = PyList_GetItem($input,i);
+-      TYPE elem = PyInt_AsLong(tmp);
+-      tmpSet.insert(elem);
+-    }
+-    $1 = tmpSet;
+-  }
+-  else
+-  {
+-    PyErr_SetString(PyExc_TypeError,"not a list");
+-    return NULL;
+-  }
+-}
+-%enddef
+-
+-%typemap(in) std::set<int>
+-{ 
+-  TYPEMAP_INPUT_SET_BY_VALUE( int ) 
+-}
+-%typecheck(SWIG_TYPECHECK_POINTER) std::set<int> {
+-  $1 = PyList_Check($input) ? 1 : 0;
+-}
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEM_Swig/test_InterpKernelDEC.py MEDCOUPLING_new/src/ParaMEDMEM_Swig/test_InterpKernelDEC.py
+--- MEDCOUPLING_old/src/ParaMEDMEM_Swig/test_InterpKernelDEC.py        2018-04-19 17:04:36.800223979 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEM_Swig/test_InterpKernelDEC.py        2018-04-19 17:25:17.361789924 +0200
+@@ -20,15 +20,17 @@
+ #
+ from ParaMEDMEM import *
++from MEDLoader import ReadUMeshFromFile
+ import sys, os
+ import unittest
+ import math
++from mpi4py import MPI
++
+ class ParaMEDMEMBasicsTest(unittest.TestCase):
+     def testInterpKernelDEC_2D(self):
+-        MPI_Init(sys.argv)
+-        size = MPI_Comm_size(MPI_COMM_WORLD)
+-        rank = MPI_Comm_rank(MPI_COMM_WORLD)
++        size = MPI.COMM_WORLD.size
++        rank = MPI.COMM_WORLD.rank
+         if size != 5:
+             raise RuntimeError("Expect MPI_COMM_WORLD size == 5")
+         print(rank)
+@@ -56,7 +58,7 @@
+         filename_xml1 = os.path.join(data_dir, "share/resources/med/square1_split")
+         filename_xml2 = os.path.join(data_dir, "share/resources/med/square2_split")
+-        MPI_Barrier(MPI_COMM_WORLD)
++        MPI.COMM_WORLD.Barrier()
+         if source_group.containsMyRank():
+             filename = filename_xml1 + str(rank+1) + ".med"
+             meshname = "Mesh_2_" + str(rank+1)
+@@ -68,8 +70,7 @@
+             nb_local=mesh.getNumberOfCells()
+             value = [1.0]*nb_local
+             parafield.getField().setValues(value)
+-            icocofield = ICoCoMEDField(mesh,parafield.getField())
+-            dec.setMethod("P0")
++            icocofield = ICoCoMEDField(parafield.getField())
+             dec.attachLocalField(icocofield)
+             pass
+         else:
+@@ -83,8 +84,7 @@
+             nb_local=mesh.getNumberOfCells()
+             value = [0.0]*nb_local
+             parafield.getField().setValues(value)
+-            icocofield = ICoCoMEDField(mesh,parafield.getField())
+-            dec.setMethod("P0")
++            icocofield = ICoCoMEDField(parafield.getField())
+             dec.attachLocalField(icocofield)
+             pass
+@@ -113,8 +113,8 @@
+         paramesh   =0
+         parafield  =0
+         icocofield =0
+-        MPI_Barrier(MPI_COMM_WORLD)
+-        MPI_Finalize()
++        MPI.COMM_WORLD.Barrier()
++        MPI.Finalize()
+         pass
+     pass
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/ParaMEDMEMTest_Gauthier1.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/ParaMEDMEMTest_Gauthier1.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/ParaMEDMEMTest_Gauthier1.cxx    2018-04-19 17:04:36.797223919 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/ParaMEDMEMTest_Gauthier1.cxx    2018-04-19 17:25:17.893800440 +0200
+@@ -46,7 +46,7 @@
+ void afficheGauthier1(const ParaFIELD& field, const double *vals, int lgth)
+ {
+   const DataArrayDouble *valsOfField(field.getField()->getArray());
+-  CPPUNIT_ASSERT_EQUAL(lgth,valsOfField->getNumberOfTuples());
++  CPPUNIT_ASSERT_EQUAL(lgth,(int)valsOfField->getNumberOfTuples());
+   for (int ele=0;ele<valsOfField->getNumberOfTuples();ele++)
+     CPPUNIT_ASSERT_DOUBLES_EQUAL(vals[ele],valsOfField->getIJ(ele,0),1e-12);
+ }
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_1.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_1.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_1.cxx        2018-04-19 17:04:36.797223919 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_1.cxx        2018-04-19 17:25:17.899800559 +0200
+@@ -63,7 +63,7 @@
+       return;
+     }
+-  /* Connection to remote programm */
++  /* Connection to remote program */
+   MPI2Connector *mpio = new MPI2Connector;
+   gcom = mpio->remoteMPI2Connect(service);
+   MPI_Comm_size( gcom, &gsize );
+@@ -108,7 +108,7 @@
+   dec.synchronize();
+   dec.setForcedRenormalization(false);
+   dec.sendData();
+-  /* Deconnection of remote programm */
++  /* Deconnection of remote program */
+   mpio->remoteMPI2Disconnect(service);
+   /* clean-up */
+   delete mpio;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_2.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_2.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_2.cxx        2018-04-19 17:04:36.797223919 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_2.cxx        2018-04-19 17:25:17.914800855 +0200
+@@ -63,7 +63,7 @@
+       return;
+     }
+-  /* Connection to remote programm */
++  /* Connection to remote program */
+   MPI2Connector *mpio = new MPI2Connector;
+   gcom = mpio->remoteMPI2Connect(service);
+   
+@@ -113,7 +113,7 @@
+   const double *expected=targetResults[grank-(gsize-lsize)];
+   CPPUNIT_ASSERT_DOUBLES_EQUAL(expected[0],res[0],1e-13);
+   CPPUNIT_ASSERT_DOUBLES_EQUAL(expected[1],res[1],1e-13);
+-  /* Deconnection of remote programm */
++  /* Deconnection of remote program */
+   mpio->remoteMPI2Disconnect(service);
+   /* clean-up */
+   delete mpio;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_AllToAllDEC.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_AllToAllDEC.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_AllToAllDEC.cxx    2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_AllToAllDEC.cxx    2018-04-19 17:25:17.894800460 +0200
+@@ -77,7 +77,7 @@
+     strstream << "usage :" << endl
+               << "mpirun -np <nbprocs> test_AllToAllDEC" << endl
+               << " (nbprocs >=2)" << endl
+-              << "test must be runned with more than 1 proc and less than 12 procs"
++              << "test must be run with more than 1 proc and less than 12 procs"
+               << endl ;
+     cerr << strstream.str() << endl ;
+     CPPUNIT_FAIL( strstream.str() ) ;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_AllToAllTimeDEC.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_AllToAllTimeDEC.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_AllToAllTimeDEC.cxx        2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_AllToAllTimeDEC.cxx        2018-04-19 17:25:17.895800480 +0200
+@@ -82,7 +82,7 @@
+     strstream << "usage :" << endl
+               << "mpirun -np <nbprocs> test_AllToAllTimeDEC" << endl
+               << " (nbprocs >=2)" << endl
+-              << "test must be runned with more than 1 proc and less than 12 procs"
++              << "test must be run with more than 1 proc and less than 12 procs"
+               << endl ;
+     cerr << strstream.str() << endl ;
+     CPPUNIT_FAIL( strstream.str() ) ;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_AllToAllvDEC.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_AllToAllvDEC.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_AllToAllvDEC.cxx   2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_AllToAllvDEC.cxx   2018-04-19 17:25:17.875800084 +0200
+@@ -81,7 +81,7 @@
+     strstream << "usage :" << endl
+               << "mpirun -np <nbprocs> test_AllToAllvDEC" << endl
+               << " (nbprocs >=2)" << endl
+-              << "test must be runned with more than 1 proc and less than 12 procs"
++              << "test must be run with more than 1 proc and less than 12 procs"
+               << endl ;
+     cerr << strstream.str() << endl ;
+     CPPUNIT_FAIL( strstream.str() ) ;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_AllToAllvTimeDEC.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_AllToAllvTimeDEC.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_AllToAllvTimeDEC.cxx       2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_AllToAllvTimeDEC.cxx       2018-04-19 17:25:17.909800757 +0200
+@@ -86,7 +86,7 @@
+     strstream << "usage :" << endl
+               << "mpirun -np <nbprocs> test_AllToAllTimeDEC" << endl
+               << " (nbprocs >=2)" << endl
+-              << "test must be runned with more than 1 proc and less than 12 procs"
++              << "test must be run with more than 1 proc and less than 12 procs"
+               << endl ;
+     cerr << strstream.str() << endl ;
+     CPPUNIT_FAIL( strstream.str() ) ;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_AllToAllvTimeDoubleDEC.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_AllToAllvTimeDoubleDEC.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_AllToAllvTimeDoubleDEC.cxx 2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_AllToAllvTimeDoubleDEC.cxx 2018-04-19 17:25:17.887800322 +0200
+@@ -84,7 +84,7 @@
+     strstream << "usage :" << endl
+               << "mpirun -np <nbprocs> test_AllToAllTimeDEC" << endl
+               << " (nbprocs >=2)" << endl
+-              << "test must be runned with more than 1 proc and less than 12 procs"
++              << "test must be run with more than 1 proc and less than 12 procs"
+               << endl ;
+     cerr << strstream.str() << endl ;
+     CPPUNIT_FAIL( strstream.str() ) ;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Cancel.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Cancel.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Cancel.cxx      2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Cancel.cxx      2018-04-19 17:25:17.880800183 +0200
+@@ -58,7 +58,7 @@
+   if ( size < 2 ) {
+     ostringstream strstream ;
+-    strstream << "test_MPI_Access_Cancel must be runned with 2 procs" << endl ;
++    strstream << "test_MPI_Access_Cancel must be run with 2 procs" << endl ;
+     cerr << strstream.str() << endl ;
+     //CPPUNIT_FAIL( strstream.str() ) ;
+     return;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Cyclic_ISend_IRecv.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Cyclic_ISend_IRecv.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Cyclic_ISend_IRecv.cxx  2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Cyclic_ISend_IRecv.cxx  2018-04-19 17:25:17.878800144 +0200
+@@ -52,8 +52,8 @@
+   MPI_Comm_rank(MPI_COMM_WORLD,&myrank) ;
+   if ( size < 3 ) {
+-      cerr << "test_MPI_Access_Cyclic_ISend_IRecv must be runned with 3 procs" << endl ;
+-    //CPPUNIT_FAIL("test_MPI_Access_Cyclic_ISend_IRecv must be runned with 3 procs") ;
++      cerr << "test_MPI_Access_Cyclic_ISend_IRecv must be run with 3 procs" << endl ;
++    //CPPUNIT_FAIL("test_MPI_Access_Cyclic_ISend_IRecv must be run with 3 procs") ;
+     return;
+   }
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Cyclic_Send_Recv.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Cyclic_Send_Recv.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Cyclic_Send_Recv.cxx    2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Cyclic_Send_Recv.cxx    2018-04-19 17:25:17.870799986 +0200
+@@ -51,8 +51,8 @@
+   MPI_Comm_rank(MPI_COMM_WORLD,&myrank) ;
+   if ( size < 3 ) {
+-      cerr << "test_MPI_Access_Send_Recv must be runned with 3 procs" << endl ;
+-    //CPPUNIT_FAIL("test_MPI_Access_Send_Recv must be runned with 3 procs") ;
++      cerr << "test_MPI_Access_Send_Recv must be run with 3 procs" << endl ;
++    //CPPUNIT_FAIL("test_MPI_Access_Send_Recv must be run with 3 procs") ;
+     return;
+   }
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_IProbe.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_IProbe.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_IProbe.cxx      2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_IProbe.cxx      2018-04-19 17:25:17.909800757 +0200
+@@ -58,7 +58,7 @@
+   if ( size < 2 ) {
+     ostringstream strstream ;
+-    strstream << "test_MPI_Access_IProbe must be runned with 2 procs" << endl ;
++    strstream << "test_MPI_Access_IProbe must be run with 2 procs" << endl ;
+     cerr << strstream.str() << endl ;
+     //CPPUNIT_FAIL( strstream.str() ) ;
+     return;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_BottleNeck.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_BottleNeck.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_BottleNeck.cxx      2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_BottleNeck.cxx      2018-04-19 17:25:17.916800895 +0200
+@@ -54,7 +54,7 @@
+   if ( size < 2 ) {
+     ostringstream strstream ;
+-    strstream << "test_MPI_Access_ISend_IRecv_BottleNeck must be runned with 2 procs"
++    strstream << "test_MPI_Access_ISend_IRecv_BottleNeck must be run with 2 procs"
+               << endl ;
+     cerr << strstream.str() << endl ;
+     //CPPUNIT_FAIL( strstream.str() ) ;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv.cxx 2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv.cxx 2018-04-19 17:25:17.877800124 +0200
+@@ -52,8 +52,8 @@
+   MPI_Comm_rank(MPI_COMM_WORLD,&myrank) ;
+   if ( size < 2 ) {
+-      cerr << "test_MPI_Access_ISend_IRecv must be runned with 2 procs" << endl ;
+-    //CPPUNIT_FAIL("test_MPI_Access_ISend_IRecv must be runned with 2 procs") ;
++      cerr << "test_MPI_Access_ISend_IRecv must be run with 2 procs" << endl ;
++    //CPPUNIT_FAIL("test_MPI_Access_ISend_IRecv must be run with 2 procs") ;
+     return;
+   }
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length_1.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length_1.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length_1.cxx        2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length_1.cxx        2018-04-19 17:25:17.882800223 +0200
+@@ -51,7 +51,7 @@
+   if ( size < 2 ) {
+     ostringstream strstream ;
+-    strstream << "test_MPI_Access_ISend_IRecv_Length_1 must be runned with 2 procs" << endl ;
++    strstream << "test_MPI_Access_ISend_IRecv_Length_1 must be run with 2 procs" << endl ;
+     cerr << strstream.str() << endl ;
+     //CPPUNIT_FAIL( strstream.str() ) ;
+     return;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length.cxx  2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length.cxx  2018-04-19 17:25:17.874800065 +0200
+@@ -53,7 +53,7 @@
+   if ( size < 2 ) {
+     ostringstream strstream ;
+-    strstream << "test_MPI_Access_ISend_IRecv_Length must be runned with 2 procs" << endl ;
++    strstream << "test_MPI_Access_ISend_IRecv_Length must be run with 2 procs" << endl ;
+     cerr << strstream.str() << endl ;
+     //CPPUNIT_FAIL( strstream.str() ) ;
+     return;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_ISendRecv.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_ISendRecv.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_ISendRecv.cxx   2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_ISendRecv.cxx   2018-04-19 17:25:17.888800342 +0200
+@@ -52,8 +52,8 @@
+   MPI_Comm_rank(MPI_COMM_WORLD,&myrank) ;
+   if ( size < 2 ) {
+-      cerr << "test_MPI_Access_ISendRecv must be runned with 2 procs" << endl ;
+-    //CPPUNIT_FAIL("test_MPI_Access_ISendRecv must be runned with 2 procs") ;
++      cerr << "test_MPI_Access_ISendRecv must be run with 2 procs" << endl ;
++    //CPPUNIT_FAIL("test_MPI_Access_ISendRecv must be run with 2 procs") ;
+     return;
+   }
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Probe.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Probe.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Probe.cxx       2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Probe.cxx       2018-04-19 17:25:17.913800836 +0200
+@@ -52,8 +52,8 @@
+   MPI_Comm_rank(MPI_COMM_WORLD,&myrank) ;
+   if ( size < 2 ) {
+-      cerr << "test_MPI_Access_Probe must be runned with 2 procs" << endl ;
+-    //CPPUNIT_FAIL("test_MPI_Access_Probe must be runned with 2 procs") ;
++      cerr << "test_MPI_Access_Probe must be run with 2 procs" << endl ;
++    //CPPUNIT_FAIL("test_MPI_Access_Probe must be run with 2 procs") ;
+     return;
+   }
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Send_Recv.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Send_Recv.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Send_Recv.cxx   2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Send_Recv.cxx   2018-04-19 17:25:17.868799946 +0200
+@@ -50,8 +50,8 @@
+   MPI_Comm_rank(MPI_COMM_WORLD,&myrank) ;
+   if ( size < 2 ) {
+-    cerr << "test_MPI_Access_Send_Recv must be runned with 2 procs" << endl ;
+-    //CPPUNIT_FAIL("test_MPI_Access_Send_Recv must be runned with 2 procs") ;
++    cerr << "test_MPI_Access_Send_Recv must be run with 2 procs" << endl ;
++    //CPPUNIT_FAIL("test_MPI_Access_Send_Recv must be run with 2 procs") ;
+     return;
+   }
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_SendRecv.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_SendRecv.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_SendRecv.cxx    2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_SendRecv.cxx    2018-04-19 17:25:17.897800519 +0200
+@@ -52,8 +52,8 @@
+   MPI_Comm_rank(MPI_COMM_WORLD,&myrank) ;
+   if ( size < 2 ) {
+-      cerr << "MPIAccessTest::test_MPI_Access_SendRecv must be runned with 2 procs" << endl ;
+-    //CPPUNIT_FAIL("test_MPI_Access_SendRecv must be runned with 2 procs") ;
++      cerr << "MPIAccessTest::test_MPI_Access_SendRecv must be run with 2 procs" << endl ;
++    //CPPUNIT_FAIL("test_MPI_Access_SendRecv must be run with 2 procs") ;
+     return;
+   }
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Send_Recv_Length.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Send_Recv_Length.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Send_Recv_Length.cxx    2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Send_Recv_Length.cxx    2018-04-19 17:25:17.881800203 +0200
+@@ -53,7 +53,7 @@
+   if ( size < 2 ) {
+     ostringstream strstream ;
+-    strstream << "test_MPI_Access_Send_Recv_Length must be runned with 2 procs" << endl ;
++    strstream << "test_MPI_Access_Send_Recv_Length must be run with 2 procs" << endl ;
+     cerr << strstream.str() << endl ;
+     //CPPUNIT_FAIL( strstream.str() ) ;
+     return;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Time_0.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Time_0.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Time_0.cxx      2018-04-19 17:04:36.800223979 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Time_0.cxx      2018-04-19 17:25:17.906800697 +0200
+@@ -74,7 +74,7 @@
+     strstream << "usage :" << endl
+               << "mpirun -np <nbprocs> test_MPI_Access_Time_0" <<endl
+               << " nbprocs =2" << endl
+-              << "test must be runned with 2 procs" << endl ;
++              << "test must be run with 2 procs" << endl ;
+     cerr << strstream.str() << endl ;
+     //CPPUNIT_FAIL( strstream.str() ) ;
+     return;
+diff -Naur MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Time.cxx MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Time.cxx
+--- MEDCOUPLING_old/src/ParaMEDMEMTest/test_MPI_Access_Time.cxx        2018-04-19 17:04:36.799223959 +0200
++++ MEDCOUPLING_new/src/ParaMEDMEMTest/test_MPI_Access_Time.cxx        2018-04-19 17:25:17.903800638 +0200
+@@ -53,7 +53,7 @@
+   if ( size < 2 ) {
+     ostringstream strstream ;
+-    strstream << "test_MPI_Access_Time must be runned with 2 procs" << endl ;
++    strstream << "test_MPI_Access_Time must be run with 2 procs" << endl ;
+     cerr << strstream.str() << endl ;
+     //CPPUNIT_FAIL( strstream.str() ) ;
+     return;
+diff -Naur MEDCOUPLING_old/src/PyWrapping/CMakeLists.txt MEDCOUPLING_new/src/PyWrapping/CMakeLists.txt
+--- MEDCOUPLING_old/src/PyWrapping/CMakeLists.txt      1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/PyWrapping/CMakeLists.txt      2018-04-19 17:25:17.668795993 +0200
+@@ -0,0 +1,109 @@
++# Copyright (C) 2017  CEA/DEN, EDF 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
++#
++# Author : Anthony Geay (EDF R&D)
++
++FIND_PACKAGE(SWIG REQUIRED)
++INCLUDE(${SWIG_USE_FILE})
++
++ADD_DEFINITIONS(${PYTHON_DEFINITIONS} ${NUMPY_DEFINITIONS} ${SCIPY_DEFINITIONS})
++
++SET_SOURCE_FILES_PROPERTIES(medcoupling.i PROPERTIES CPLUSPLUS ON)
++IF ("${PYTHON_VERSION_MAJOR}" STREQUAL "3")
++  SET_SOURCE_FILES_PROPERTIES(medcoupling.i PROPERTIES SWIG_FLAGS "-py3")
++ELSE()
++  SET_SOURCE_FILES_PROPERTIES(medcoupling.i PROPERTIES SWIG_DEFINITIONS "-shadow")
++ENDIF()
++SET(SWIG_MODULE_medcoupling_EXTRA_FLAGS "${NUMPY_DEFINITIONS};${SCIPY_DEFINITIONS}")
++
++SET(medcoupling_SWIG_DPYS_FILES medcoupling.i)
++
++INCLUDE_DIRECTORIES(
++  ${PYTHON_INCLUDE_DIRS}
++  ${NUMPY_INCLUDE_DIR}
++  ${MEDFILE_INCLUDE_DIRS}
++  ${HDF5_INCLUDE_DIRS}
++  ${CMAKE_CURRENT_SOURCE_DIR}
++  ${CMAKE_CURRENT_SOURCE_DIR}/../MEDLoader
++  ${CMAKE_CURRENT_SOURCE_DIR}/../MEDLoader/Swig
++  ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling_Swig
++  ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling
++  ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
++  ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/Bases
++  ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/Geometric2D
++  ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/ExprEval
++  ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/GaussPoints
++  ${CMAKE_CURRENT_SOURCE_DIR}/../RENUMBER
++  ${CMAKE_CURRENT_SOURCE_DIR}/../RENUMBER_Swig
++  ${CMAKE_CURRENT_SOURCE_DIR}/../MEDPartitioner
++  ${CMAKE_CURRENT_SOURCE_DIR}/../MEDPartitioner_Swig
++  ${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo
++  ${CMAKE_CURRENT_SOURCE_DIR}/../ParaMEDMEM
++  ${CMAKE_CURRENT_SOURCE_DIR}/../ParaMEDMEM_Swig
++  ${PROJECT_BINARY_DIR}/doc
++  )
++
++SET(medcoupling_LIB_dependancies ${PYTHON_LIBRARIES} ${PLATFORM_LIBS} medcouplingremapper)
++
++IF(NOT MEDCOUPLING_MICROMED)
++  LIST(APPEND SWIG_MODULE_medcoupling_EXTRA_FLAGS -DWITH_MED_FILE)
++  LIST(APPEND medcoupling_LIB_dependancies medloader)
++
++  IF(MEDCOUPLING_ENABLE_RENUMBER)
++    LIST(APPEND SWIG_MODULE_medcoupling_EXTRA_FLAGS -DWITH_RENUMBER)
++    LIST(APPEND medcoupling_LIB_dependancies renumbercpp)
++  ENDIF(MEDCOUPLING_ENABLE_RENUMBER)
++  
++  IF(MEDCOUPLING_ENABLE_PARTITIONER)
++    LIST(APPEND SWIG_MODULE_medcoupling_EXTRA_FLAGS -DWITH_PARTITIONER)
++    LIST(APPEND medcoupling_LIB_dependancies medpartitionercpp)
++  ENDIF(MEDCOUPLING_ENABLE_PARTITIONER)
++ENDIF(NOT MEDCOUPLING_MICROMED)
++
++IF(MEDCOUPLING_USE_MPI)
++  INCLUDE_DIRECTORIES(${MPI_INCLUDE_DIRS})
++  ADD_DEFINITIONS(${MPI_DEFINITIONS})
++  LIST(APPEND SWIG_MODULE_medcoupling_EXTRA_FLAGS -DWITH_PARALLEL_INTERPOLATOR)
++  LIST(APPEND medcoupling_LIB_dependancies paramedmem)
++ENDIF(MEDCOUPLING_USE_MPI)
++
++SWIG_ADD_MODULE(medcoupling python medcoupling.i)
++SWIG_LINK_LIBRARIES(medcoupling ${medcoupling_LIB_dependancies})
++SWIG_CHECK_GENERATION(medcoupling)
++IF(WIN32)
++  SET_TARGET_PROPERTIES(_medcoupling PROPERTIES DEBUG_OUTPUT_NAME _medcoupling_d)
++ENDIF(WIN32)
++
++INSTALL(TARGETS _medcoupling DESTINATION ${MEDCOUPLING_INSTALL_PYTHON})
++INSTALL(FILES medcoupling.i medcoupling_pycode DESTINATION ${MEDCOUPLING_INSTALL_HEADERS})
++SALOME_INSTALL_SCRIPTS(${CMAKE_CURRENT_BINARY_DIR}/medcoupling.py ${MEDCOUPLING_INSTALL_PYTHON})
++
++INCLUDE(tests.set)
++SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env)
++
++FOREACH(test ${BASE_TESTS})
++  GET_FILENAME_COMPONENT(testname ${test} NAME_WE)
++  ADD_TEST(NAME ${testname} COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/${test})
++  SET_TESTS_PROPERTIES(${testname} PROPERTIES ENVIRONMENT "${tests_env}")
++ENDFOREACH()
++
++SET(TEST_INSTALL_DIRECTORY ${MEDCOUPLING_INSTALL_TESTS}/PyWrapping)
++
++INSTALL(FILES CTestTestfileInstall.cmake DESTINATION ${TEST_INSTALL_DIRECTORY} RENAME CTestTestfile.cmake)
++INSTALL(FILES ${BASE_TESTS} DESTINATION ${TEST_INSTALL_DIRECTORY})
++INSTALL(FILES tests.set DESTINATION ${TEST_INSTALL_DIRECTORY})
+diff -Naur MEDCOUPLING_old/src/PyWrapping/CTestTestfileInstall.cmake MEDCOUPLING_new/src/PyWrapping/CTestTestfileInstall.cmake
+--- MEDCOUPLING_old/src/PyWrapping/CTestTestfileInstall.cmake  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/PyWrapping/CTestTestfileInstall.cmake  2018-04-19 17:25:17.672796072 +0200
+@@ -0,0 +1,27 @@
++# Copyright (C) 2017  CEA/DEN, EDF 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
++#
++
++INCLUDE(tests.set)
++
++FOREACH(tfile ${BASE_TESTS})
++  GET_FILENAME_COMPONENT(BASE_NAME ${tfile} NAME_WE)
++  SET(TEST_NAME ${COMPONENT_NAME}_${BASE_NAME})
++  ADD_TEST(${TEST_NAME} python ${tfile})
++  SET_TESTS_PROPERTIES( ${TEST_NAME} PROPERTIES LABELS "${COMPONENT_NAME}" TIMEOUT ${TIMEOUT} )
++ENDFOREACH()
+diff -Naur MEDCOUPLING_old/src/PyWrapping/medcoupling.i MEDCOUPLING_new/src/PyWrapping/medcoupling.i
+--- MEDCOUPLING_old/src/PyWrapping/medcoupling.i       1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/PyWrapping/medcoupling.i       2018-04-19 17:25:17.668795993 +0200
+@@ -0,0 +1,254 @@
++// Copyright (C) 2017  CEA/DEN, EDF 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
++//
++
++// Author : Anthony Geay (EDF R&D)
++
++%module medcoupling
++
++#define MEDCOUPLINGREMAPPER_EXPORT
++#define INTERPKERNEL_EXPORT
++#define MEDCOUPLING_EXPORT
++#define MEDLOADER_EXPORT
++
++%include "MEDCouplingCommon.i"
++
++%include "MEDCouplingRemapperCommon.i"
++
++#ifdef WITH_MED_FILE
++%include "MEDLoaderCommon.i"
++#endif
++
++#ifdef WITH_RENUMBER
++%include "MEDRenumberImpl.i"
++#endif
++
++#ifdef WITH_PARTITIONER
++%include "MEDPartitionerCommon.i"
++#endif
++
++#ifdef WITH_PARALLEL_INTERPOLATOR
++%include "ParaMEDMEMCommon.i"
++#endif
++
++%{
++  static const char SEQ_INTERPOL_EXT[]="Sequential interpolator";
++  static const char MEDFILEIO_EXT[]="MED file I/O";
++  static const char RENUM_EXT[]="Renumberer";
++  static const char PART_EXT[]="Partitioner";
++  static const char PAR_INTERPOL_EXT[]="Parallel interpolator (SPMD paradigm)";
++  
++  static const char *EXTENSIONS[]={SEQ_INTERPOL_EXT,MEDFILEIO_EXT,RENUM_EXT,PART_EXT,PAR_INTERPOL_EXT};
++  static const int NB_OF_EXTENSIONS=sizeof(EXTENSIONS)/sizeof(const char *);
++%}
++
++%inline
++{
++  std::vector<std::string> AllPossibleExtensions()
++  {
++    std::vector<std::string> ret(EXTENSIONS,EXTENSIONS+NB_OF_EXTENSIONS);
++    return ret;
++  }
++
++  bool HasMEDFileExt()
++  {
++#ifdef WITH_MED_FILE
++    return true;
++#else
++    return false;
++#endif
++  }
++
++  bool HasRenumberExt()
++  {
++#ifdef WITH_RENUMBER
++    return true;
++#else
++    return false;
++#endif
++  }
++
++  bool HasPartitionerExt()
++  {
++#ifdef WITH_PARTITIONER
++    return true;
++#else
++    return false;
++#endif
++  }
++
++  bool HasScotchPartitionerAlg()
++  {
++#ifdef WITH_PARTITIONER
++    return MEDPartitioner::HasScotchAlg();
++#else
++    return false;
++#endif    
++  }
++
++  bool HasPTScotchPartitionerAlg()
++  {
++#ifdef WITH_PARTITIONER
++    return MEDPartitioner::HasPTScotchAlg();
++#else
++    return false;
++#endif    
++  }
++
++  bool HasMetisPartitionerAlg()
++  {
++#ifdef WITH_PARTITIONER
++    return MEDPartitioner::HasMetisAlg();
++#else
++    return false;
++#endif    
++  }
++  
++  bool HasParallelInterpolatorExt()
++  {
++#ifdef WITH_PARALLEL_INTERPOLATOR
++    return true;
++#else
++    return false;
++#endif
++  }
++  
++  std::vector<std::string> ActiveExtensions()
++  {
++    std::vector<std::string> ret;
++    ret.push_back(std::string(SEQ_INTERPOL_EXT));
++#ifdef WITH_MED_FILE
++    ret.push_back(std::string(MEDFILEIO_EXT));
++#endif
++#ifdef WITH_RENUMBER
++    ret.push_back(std::string(RENUM_EXT));
++#endif
++#ifdef WITH_PARTITIONER
++    ret.push_back(std::string(PART_EXT));
++#endif
++#ifdef WITH_PARALLEL_INTERPOLATOR
++    ret.push_back(std::string(PAR_INTERPOL_EXT));
++#endif
++    return ret;
++  }
++}
++
++%pythoncode %{
++def MEDCouplingDataArrayDoubleIadd(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayDouble____iadd___(self, self, *args)
++def MEDCouplingDataArrayDoubleIsub(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayDouble____isub___(self, self, *args)
++def MEDCouplingDataArrayDoubleImul(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayDouble____imul___(self, self, *args)
++def MEDCouplingDataArrayDoubleIdiv(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayDouble____idiv___(self, self, *args)
++def MEDCouplingDataArrayDoubleIpow(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayDouble____ipow___(self, self, *args)
++def MEDCouplingFieldDoubleIadd(self,*args):
++    import _medcoupling
++    return _medcoupling.MEDCouplingFieldDouble____iadd___(self, self, *args)
++def MEDCouplingFieldDoubleIsub(self,*args):
++    import _medcoupling
++    return _medcoupling.MEDCouplingFieldDouble____isub___(self, self, *args)
++def MEDCouplingFieldDoubleImul(self,*args):
++    import _medcoupling
++    return _medcoupling.MEDCouplingFieldDouble____imul___(self, self, *args)
++def MEDCouplingFieldDoubleIdiv(self,*args):
++    import _medcoupling
++    return _medcoupling.MEDCouplingFieldDouble____idiv___(self, self, *args)
++def MEDCouplingFieldDoubleIpow(self,*args):
++    import _medcoupling
++    return _medcoupling.MEDCouplingFieldDouble____ipow___(self, self, *args)
++def MEDCouplingDataArrayIntIadd(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayInt____iadd___(self, self, *args)
++def MEDCouplingDataArrayIntIsub(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayInt____isub___(self, self, *args)
++def MEDCouplingDataArrayIntImul(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayInt____imul___(self, self, *args)
++def MEDCouplingDataArrayIntIdiv(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayInt____idiv___(self, self, *args)
++def MEDCouplingDataArrayIntImod(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayInt____imod___(self, self, *args)
++def MEDCouplingDataArrayIntIpow(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayInt____ipow___(self, self, *args)
++def MEDCouplingDataArrayFloatIadd(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayFloat____iadd___(self, self, *args)
++def MEDCouplingDataArrayFloatIsub(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayFloat____isub___(self, self, *args)
++def MEDCouplingDataArrayFloatImul(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayFloat____imul___(self, self, *args)
++def MEDCouplingDataArrayFloatIdiv(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayFloat____idiv___(self, self, *args)
++def MEDCouplingDataArrayDoubleTupleIadd(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayDoubleTuple____iadd___(self, self, *args)
++def MEDCouplingDataArrayDoubleTupleIsub(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayDoubleTuple____isub___(self, self, *args)
++def MEDCouplingDataArrayDoubleTupleImul(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayDoubleTuple____imul___(self, self, *args)
++def MEDCouplingDataArrayDoubleTupleIdiv(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayDoubleTuple____idiv___(self, self, *args)
++def MEDCouplingDataArrayIntTupleIadd(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayIntTuple____iadd___(self, self, *args)
++def MEDCouplingDataArrayIntTupleIsub(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayIntTuple____isub___(self, self, *args)
++def MEDCouplingDataArrayIntTupleImul(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayIntTuple____imul___(self, self, *args)
++def MEDCouplingDataArrayIntTupleIdiv(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayIntTuple____idiv___(self, self, *args)
++def MEDCouplingDataArrayIntTupleImod(self,*args):
++    import _medcoupling
++    return _medcoupling.DataArrayIntTuple____imod___(self, self, *args)
++def MEDCouplingDenseMatrixIadd(self,*args):
++    import _medcoupling
++    return _medcoupling.DenseMatrix____iadd___(self, self, *args)
++def MEDCouplingDenseMatrixIsub(self,*args):
++    import _medcoupling
++    return _medcoupling.DenseMatrix____isub___(self, self, *args)
++%}
++
++%include "MEDCouplingFinalize.i"
++
++#ifdef WITH_MED_FILE
++%include "MEDLoaderFinalize.i"
++#endif
++
++%include "medcoupling_pycode"
++
+diff -Naur MEDCOUPLING_old/src/PyWrapping/medcoupling_pycode MEDCOUPLING_new/src/PyWrapping/medcoupling_pycode
+--- MEDCOUPLING_old/src/PyWrapping/medcoupling_pycode  1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/PyWrapping/medcoupling_pycode  2018-04-19 17:25:17.670796032 +0200
+@@ -0,0 +1,102 @@
++// Copyright (C) 2017  CEA/DEN, EDF 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
++//
++
++// Author : Anthony Geay (EDF R&D)
++
++%pythoncode %{
++
++def ExtensionsStr(sz=60):
++    tab=["No","Yes"]
++    isOK=[(elt,tab[int(elt in ActiveExtensions())]) for elt in AllPossibleExtensions()]
++    return "\n".join([a+" "+('{:.>%d}'%(sz-len(a)-1)).format(' %s'%b) for a,b in isOK])
++
++def ShowExtensions(sz=60):
++    print(ExtensionsStr(sz))
++    pass
++
++def AdvancedExtensionsStr(sz=60):
++    def SubExtension(allPossibilities,extensionsActivated,pad,tab, sts):
++        for elt2 in allPossibilities:
++            elt3="%s algorithm for %s"%(elt2,elt)
++            sts.append(pad+elt3+" "+('{:.>%d}'%(sz-len(pad)-len(elt3)-1)).format(' %s'%tab[int(elt2 in extensionsActivated)]))
++            pass
++        pass
++    pad="    "
++    tab=["No","Yes"]
++    aext=ActiveExtensions()
++    sts=[]
++    for elt in AllPossibleExtensions():
++        isOK=elt in aext
++        sts.append(elt+" "+('{:.>%d}'%(sz-len(elt)-1)).format(' %s'%tab[isOK]))
++        if not isOK:
++            continue
++        if "Renumb" in elt:
++            SubExtension(AllRenumberMethods(),RenumberAvailableMethods(),pad,tab, sts)
++            pass
++        if "Partit" in elt:
++            SubExtension(MEDPartitioner.AllAlgorithms(),MEDPartitioner.AvailableAlgorithms(),pad,tab, sts)
++            pass
++        pass
++    return "\n".join(sts)
++
++def ShowAdvancedExtensions(sz=60):
++    print(AdvancedExtensionsStr(sz))
++
++def MEDCouplingWriterHelper(mci,fileName,medFunc):
++    import os
++    fileWithoutExt,ext=os.path.splitext(fileName)
++    if ext in [".med",".rmed",""]:
++        outFileName=fileName
++        if ext=="":
++            outFileName=fileWithoutExt+".med"
++        if HasMEDFileExt():
++            medFunc(outFileName,mci,True)
++            pass
++        else:
++            raise InterpKernelException("Request for writing \"%s\" MED file, but MED file is not activated in your medcoupling !")
++        pass
++    elif ext[:3]==".vt" and len(ext)==4:
++        mci.writeVTK(fileName)
++    else:
++        raise InterpKernelException("The extension \"%s\" of input file \"%s\" is not recognized !"%(ext,fileName))
++    pass
++
++if HasMEDFileExt():
++    def MEDCouplingMesh_write(self,fileName):
++        MEDCouplingWriterHelper(self,fileName,WriteMesh)
++
++    def MEDCouplingField_write(self,fileName):
++        MEDCouplingWriterHelper(self,fileName,WriteField)
++
++    def MEDCouplingFieldT_copyTimeInfoFrom(self,mlf1ts):
++        assert(isinstance(mlf1ts,MEDFileAnyTypeField1TS))
++        a,b,c=mlf1ts.getTime()
++        self.setTime(c,a,b)
++        pass
++
++    MEDCouplingMesh.write=MEDCouplingMesh_write
++    del MEDCouplingMesh_write
++    MEDCouplingField.write=MEDCouplingField_write
++    del MEDCouplingField_write
++    MEDCouplingFieldDouble.copyTimeInfoFrom=MEDCouplingFieldT_copyTimeInfoFrom
++    MEDCouplingFieldInt.copyTimeInfoFrom=MEDCouplingFieldT_copyTimeInfoFrom
++    MEDCouplingFieldFloat.copyTimeInfoFrom=MEDCouplingFieldT_copyTimeInfoFrom
++    del MEDCouplingFieldT_copyTimeInfoFrom
++    pass
++%}
+diff -Naur MEDCOUPLING_old/src/PyWrapping/TestPyWrapGathered_medcoupling.py MEDCOUPLING_new/src/PyWrapping/TestPyWrapGathered_medcoupling.py
+--- MEDCOUPLING_old/src/PyWrapping/TestPyWrapGathered_medcoupling.py   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/PyWrapping/TestPyWrapGathered_medcoupling.py   2018-04-19 17:25:17.671796052 +0200
+@@ -0,0 +1,155 @@
++#  -*- coding: iso-8859-1 -*-
++# Copyright (C) 2017  CEA/DEN, EDF 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
++#
++# Author : Anthony Geay (EDF R&D)
++
++from medcoupling import *
++import unittest
++
++class FileCreator(object):
++    def __init__(self,tester,fname):
++        self._tester=tester
++        self._fname=fname
++        pass
++        
++    def fileName(self):
++        return self._fname
++    
++    def __enter__(self):
++        import os
++        if os.path.exists(self._fname):
++            os.remove(self._fname)
++            pass
++        return self
++    
++    def __exit__(self, type, value, traceback):
++        import os
++        if not os.path.exists(self._fname):
++            self._tester.assertTrue(False)
++            pass
++        else:
++            os.remove(self._fname)
++        pass
++        
++class medcouplingTest(unittest.TestCase):
++
++    def test0(self):
++        """ Unconditional test : medcoupling "kernel" classes """
++        f=MEDCouplingFieldDouble(ON_CELLS)
++        g=DataArrayDouble(10,2)
++        h=MEDCouplingUMesh("mesh",3)
++        hh=MEDCouplingRemapper()
++        ee=InterpKernelException("ee")
++        pass
++    
++    @unittest.skipUnless(HasMEDFileExt(),"Requires link to MED file")
++    def test1(self):
++        import sys
++        fname="mctest1.med"
++        arr=DataArrayDouble(10) ; arr.iota()
++        m=MEDCouplingCMesh()
++        m.setCoords(arr,arr)
++        m.setName("mesh")
++        with FileCreator(self,fname) as fc:
++            m.write(fc.fileName())
++        m=m.buildUnstructured()
++        with FileCreator(self,fname) as fc:
++            m.write(fc.fileName())
++        f=MEDCouplingFieldDouble(ON_NODES) ; f.setMesh(m) ; f.setArray(m.getCoords()) ; f.setName("field")
++        with FileCreator(self,fname) as fc:
++            f.write(fc.fileName())
++        f=MEDCouplingFieldFloat(ON_NODES) ; f.setMesh(m)
++        d=DataArrayFloat(m.getNumberOfNodes()) ; d.iota()
++        f.setArray(d) ; f.setName("field1")
++        with FileCreator(self,fname) as fc:
++            f.write(fc.fileName())
++        pass
++
++    @unittest.skipUnless(HasRenumberExt(),"Requires Boost or Metis to activate Renumberer")
++    def test2(self):
++        arr=DataArrayDouble(10) ; arr.iota()
++        m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
++        m=m.buildUnstructured() ; m.setName("mesh")
++        #
++        renf=RenumberingFactory("Boost")
++        neigh,neighi=m.computeNeighborsOfCells()
++        n2o,o2n=renf.renumber(neigh,neighi)
++        mRenum=m[n2o]
++        pass
++
++    @unittest.skipUnless(HasPartitionerExt(),"Requires Partitioner activation")
++    def test3(self):
++        for alg in MEDPartitioner.AvailableAlgorithms():
++            st="Graph.%s"%alg.upper()
++            print(st)
++            self.partitionerTesterHelper(eval(st))
++            pass
++        pass
++    
++    @unittest.skipUnless(HasParallelInterpolatorExt(),"Requires // interpolator activated")
++    def test4(self):
++        interface=CommInterface()
++        pass
++
++    @unittest.skipUnless(HasMEDFileExt(),"Requires link to MED file")
++    def test5(self):
++        f=MEDCouplingFieldDouble(ON_NODES)
++        f.setTime(1.25,3,6)
++        a,b,c=f.getTime()
++        self.assertEqual(b,3) ; self.assertEqual(c,6) ; self.assertAlmostEqual(a,1.25,14);
++        f1ts=MEDFileField1TS()
++        f1ts.setTime(10,13,10.75)
++        f.copyTimeInfoFrom(f1ts)
++        a,b,c=f.getTime()
++        self.assertEqual(b,10) ; self.assertEqual(c,13) ; self.assertAlmostEqual(a,10.75,14);
++        f2=MEDCouplingFieldInt(ON_NODES)
++        f2.copyTimeInfoFrom(f1ts)
++        a,b,c=f2.getTime()
++        self.assertEqual(b,10) ; self.assertEqual(c,13) ; self.assertAlmostEqual(a,10.75,14);
++        f3=MEDCouplingFieldFloat(ON_NODES)
++        f3.copyTimeInfoFrom(f1ts)
++        a,b,c=f3.getTime()
++        self.assertEqual(b,10) ; self.assertEqual(c,13) ; self.assertAlmostEqual(a,10.75,14);
++        pass
++        
++
++    def partitionerTesterHelper(self,algoSelected):
++        arr=DataArrayDouble(10) ; arr.iota()
++        m=MEDCouplingCMesh() ; m.setCoords(arr,arr)
++        m=m.buildUnstructured() ; m.setName("mesh")
++        a,b=m.computeNeighborsOfCells()
++        sk=MEDCouplingSkyLineArray(b,a)
++        g=MEDPartitioner.Graph(sk,algoSelected)
++        g.partGraph(4)
++        procIdOnCells=g.getPartition().getValuesArray()
++        m0=m[procIdOnCells.findIdsEqual(0)] ; m0.setName("m0")
++        pass
++    
++    pass
++
++if __name__ == "__main__":
++    if HasParallelInterpolatorExt():
++        try:
++            from mpi4py import MPI # if not imported test3 may failed due to MPI call of partitioner algorithms.
++        except:
++            pass
++        pass
++    unittest.main()
++    pass
++
+diff -Naur MEDCOUPLING_old/src/PyWrapping/tests.set MEDCOUPLING_new/src/PyWrapping/tests.set
+--- MEDCOUPLING_old/src/PyWrapping/tests.set   1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/PyWrapping/tests.set   2018-04-19 17:25:17.669796013 +0200
+@@ -0,0 +1,21 @@
++# Copyright (C) 2017  CEA/DEN, EDF 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
++#
++# Author : Anthony Geay (EDF R&D)
++
++SET(BASE_TESTS TestPyWrapGathered_medcoupling.py)
+\ Pas de fin de ligne à la fin du fichier
+diff -Naur MEDCOUPLING_old/src/RENUMBER/RenumberingFactory.cxx MEDCOUPLING_new/src/RENUMBER/RenumberingFactory.cxx
+--- MEDCOUPLING_old/src/RENUMBER/RenumberingFactory.cxx        2018-04-19 17:04:36.800223979 +0200
++++ MEDCOUPLING_new/src/RENUMBER/RenumberingFactory.cxx        2018-04-19 17:25:18.149805501 +0200
+@@ -27,20 +27,27 @@
+ #endif
+ #include <iostream>
+-
+-using namespace std;
++#include <algorithm>
+ namespace MED_RENUMBER
+ {
+-  Renumbering* RenumberingFactory(const string &s)
++  bool CompareRenumMeth(const std::string& s1, const char *s2)
++  {
++    std::string ss1(s1),ss2(s2);
++    std::transform(ss1.begin(), ss1.end(), ss1.begin(), ::tolower);
++    std::transform(ss2.begin(), ss2.end(), ss2.begin(), ::tolower);
++    return ss1==ss2;
++  }
++  
++  Renumbering* RenumberingFactory(const std::string &s)
+   {
+ #ifdef MED_ENABLE_METIS
+ #ifdef ENABLE_BOOST
+-    if (s=="METIS")
++    if ( CompareRenumMeth(s,METIS_ALG) )
+       {
+         return new METISRenumbering;
+       }
+-    else if(s=="BOOST")
++    else if( CompareRenumMeth(s,BOOST_ALG) )
+       {
+         return new BOOSTRenumbering;
+       }
+@@ -51,7 +58,7 @@
+       }
+ #endif
+ #ifndef ENABLE_BOOST
+-    if (s=="METIS")
++    if ( CompareRenumMeth(s,METIS_ALG) )
+       {
+         return new METISRenumbering;
+       }
+@@ -64,7 +71,7 @@
+ #endif
+ #ifndef MED_ENABLE_METIS
+ #ifdef ENABLE_BOOST
+-    if (s=="BOOST")
++    if ( CompareRenumMeth(s,BOOST_ALG) )
+       {
+         return new BOOSTRenumbering;
+       }
+@@ -80,4 +87,24 @@
+ #endif
+ #endif
+   }
++
++  std::vector<std::string> AllRenumberMethods()
++  {
++    std::vector<std::string> ret;
++    ret.push_back(std::string(BOOST_ALG));
++    ret.push_back(std::string(METIS_ALG));
++    return ret;
++  }
++  
++  std::vector<std::string> RenumberAvailableMethods()
++  {
++    std::vector<std::string> ret;
++#ifdef ENABLE_BOOST
++    ret.push_back(std::string(BOOST_ALG));
++#endif
++#ifdef MED_ENABLE_METIS
++    ret.push_back(std::string(METIS_ALG));
++#endif
++    return ret;
++  }
+ }
+diff -Naur MEDCOUPLING_old/src/RENUMBER/RenumberingFactory.hxx MEDCOUPLING_new/src/RENUMBER/RenumberingFactory.hxx
+--- MEDCOUPLING_old/src/RENUMBER/RenumberingFactory.hxx        2018-04-19 17:04:36.800223979 +0200
++++ MEDCOUPLING_new/src/RENUMBER/RenumberingFactory.hxx        2018-04-19 17:25:18.150805520 +0200
+@@ -28,6 +28,10 @@
+ namespace MED_RENUMBER
+ {
+   RENUMBER_EXPORT Renumbering* RenumberingFactory(const std::string& s);
++  RENUMBER_EXPORT std::vector<std::string> RenumberAvailableMethods();
++  RENUMBER_EXPORT std::vector<std::string> AllRenumberMethods();
++  const char METIS_ALG[]="Metis";
++  const char BOOST_ALG[]="Boost";
+ }
+ #endif /*RENUMBERINGFACTORY_HXX_*/
+diff -Naur MEDCOUPLING_old/src/RENUMBER_Swig/CMakeLists.txt MEDCOUPLING_new/src/RENUMBER_Swig/CMakeLists.txt
+--- MEDCOUPLING_old/src/RENUMBER_Swig/CMakeLists.txt   2018-04-19 17:04:36.800223979 +0200
++++ MEDCOUPLING_new/src/RENUMBER_Swig/CMakeLists.txt   2018-04-19 17:25:18.157805659 +0200
+@@ -29,20 +29,13 @@
+ ENDIF()
+ SET(SWIG_MODULE_MEDRenumber_EXTRA_FLAGS "${NUMPY_DEFINITIONS};${SCIPY_DEFINITIONS};-DWITHOUT_AUTOFIELD")
+-IF(Boost_FOUND)
+-  SET(SWIG_MODULE_MEDRenumber_EXTRA_FLAGS -DHAS_BOOST ${SWIG_MODULE_MEDRenumber_EXTRA_FLAGS})
+-ENDIF(Boost_FOUND)
+-
+-IF(METIS_FOUND)
+-  SET(SWIG_MODULE_MEDRenumber_EXTRA_FLAGS -DHAS_METIS ${SWIG_MODULE_MEDRenumber_EXTRA_FLAGS})
+-ENDIF(METIS_FOUND)
+-
+ SET (MEDRenumber_SWIG_DPYS_FILES
+-    MEDRenumberCommon.i)
++  MEDRenumberCommon.i
++  MEDRenumberImpl.i)
+ INCLUDE_DIRECTORIES(
+   ${PYTHON_INCLUDE_DIRS}
+-  ${PTHREAD_INCLUDE_DIR} # pthread dependancy due to python2.7 library
++  ${PTHREAD_INCLUDE_DIR} # pthread dependency due to python2.7 library
+   ${CMAKE_CURRENT_SOURCE_DIR}
+   ${NUMPY_INCLUDE_DIR}
+   ${CMAKE_CURRENT_BINARY_DIR}
+@@ -67,7 +60,7 @@
+ SALOME_INSTALL_SCRIPTS(${CMAKE_CURRENT_BINARY_DIR}/MEDRenumber.py ${MEDCOUPLING_INSTALL_PYTHON})
+-INSTALL(FILES MEDRenumber.i MEDRenumberCommon.i DESTINATION ${MEDCOUPLING_INSTALL_HEADERS})
++INSTALL(FILES MEDRenumber.i MEDRenumberCommon.i MEDRenumberImpl.i DESTINATION ${MEDCOUPLING_INSTALL_HEADERS})
+ INSTALL(FILES MEDRenumberTest.py DESTINATION ${MEDCOUPLING_INSTALL_SCRIPT_PYTHON})
+ SALOME_ACCUMULATE_ENVIRONMENT(PYTHONPATH ${CMAKE_CURRENT_BINARY_DIR}/../MEDCoupling_Swig)
+diff -Naur MEDCOUPLING_old/src/RENUMBER_Swig/MEDRenumberCommon.i MEDCOUPLING_new/src/RENUMBER_Swig/MEDRenumberCommon.i
+--- MEDCOUPLING_old/src/RENUMBER_Swig/MEDRenumberCommon.i      2018-04-19 17:04:36.800223979 +0200
++++ MEDCOUPLING_new/src/RENUMBER_Swig/MEDRenumberCommon.i      2018-04-19 17:25:18.159805698 +0200
+@@ -18,8 +18,6 @@
+ //
+ // Author : Anthony Geay (CEA/DEN)
+-%module MEDRenumber
+-
+ %include std_vector.i
+ %include std_string.i
+@@ -28,12 +26,8 @@
+ #include "MCAuto.hxx"
+ #include "MEDCouplingDataArrayTypemaps.i"
+-#include "RenumberingFactory.hxx"
+-#include "RENUMBER_Renumbering.hxx"
+-
+ using namespace MEDCoupling;
+ using namespace INTERP_KERNEL;
+- using namespace MED_RENUMBER;
+ %}
+ %template(ivec) std::vector<int>;
+@@ -49,8 +43,6 @@
+ %feature("autodoc", "1");
+ %feature("docstring");
+-%newobject MED_RENUMBER::RenumberingFactory;
+-
+ %nodefaultctor;
+ %rename (InterpKernelException) INTERP_KERNEL::Exception;
+@@ -66,47 +58,7 @@
+   }
+ %}
+-class Renumbering
+-{
+-public:
+-  %extend
+-  {
+-    virtual PyObject *renumber(const MEDCoupling::DataArrayInt *graph, const MEDCoupling::DataArrayInt *index_graph) throw(INTERP_KERNEL::Exception)
+-    {
+-      if(!graph || !index_graph)
+-        throw INTERP_KERNEL::Exception("wrap of Renumbering::renumber : One of the input arrays is NULL !");
+-      if(!graph->isAllocated() || !index_graph->isAllocated())
+-        throw INTERP_KERNEL::Exception("wrap of Renumbering::renumber : One of the input arrays is not allocated !");
+-      MEDCoupling::DataArrayInt *out0(0),*out1(0);
+-      self->renumber(graph->begin(),index_graph->begin(),index_graph->getNumberOfTuples()-1,out0,out1);
+-      PyObject *ret=PyTuple_New(2);
+-      PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(out0),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+-      PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(out1),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
+-      return ret;
+-    }
+-  }
+-  virtual ~Renumbering();
+-};
+-
+-namespace MED_RENUMBER
+-{
+-  Renumbering *RenumberingFactory(const std::string& s) throw(INTERP_KERNEL::Exception);
+-}
+-
+-%inline
+-{
+-  std::vector<std::string> RenumberAvailableMethods()throw(INTERP_KERNEL::Exception)
+-  {
+-    std::vector<std::string> ret;
+-#ifdef HAS_BOOST
+-    ret.push_back(std::string("BOOST"));
+-#endif
+-#ifdef HAS_METIS
+-    ret.push_back(std::string("METIS"));
+-#endif
+-    return ret;
+-  }
+-}
++%include "MEDRenumberImpl.i"
+ %pythoncode %{
+ import os
+diff -Naur MEDCOUPLING_old/src/RENUMBER_Swig/MEDRenumber.i MEDCOUPLING_new/src/RENUMBER_Swig/MEDRenumber.i
+--- MEDCOUPLING_old/src/RENUMBER_Swig/MEDRenumber.i    2018-04-19 17:04:36.800223979 +0200
++++ MEDCOUPLING_new/src/RENUMBER_Swig/MEDRenumber.i    2018-04-19 17:25:18.156805639 +0200
+@@ -17,12 +17,11 @@
+ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+ //
++%module MEDRenumber
++
+ %include "MEDRenumberCommon.i"
+ %pythoncode %{
+-def MEDCouplingDataArrayDoublenew(cls,*args):
+-    import _MEDRenumber
+-    return _MEDRenumber.DataArrayDouble____new___(cls,args)
+ def MEDCouplingDataArrayDoubleIadd(self,*args):
+     import _MEDRenumber
+     return _MEDRenumber.DataArrayDouble____iadd___(self, self, *args)
+@@ -38,9 +37,6 @@
+ def MEDCouplingDataArrayDoubleIpow(self,*args):
+     import _MEDRenumber
+     return _MEDRenumber.DataArrayDouble____ipow___(self, self, *args)
+-def MEDCouplingDataArrayIntnew(cls,*args):
+-    import _MEDRenumber
+-    return _MEDRenumber.DataArrayInt____new___(cls,args)
+ def MEDCouplingDataArrayIntIadd(self,*args):
+     import _MEDRenumber
+     return _MEDRenumber.DataArrayInt____iadd___(self, self, *args)
+@@ -59,12 +55,6 @@
+ def MEDCouplingDataArrayIntIpow(self,*args):
+     import _MEDRenumber
+     return _MEDRenumber.DataArrayInt____ipow___(self, self, *args)
+-def MEDCouplingDataArrayBytenew(cls,*args):
+-    import _MEDRenumber
+-    return _MEDRenumber.DataArrayByte____new___(cls,args)
+-def MEDCouplingDataArrayFloatnew(cls,*args):
+-    import _MEDRenumber
+-    return _MEDRenumber.DataArrayFloat____new___(cls,args)
+ def MEDCouplingDataArrayFloatIadd(self,*args):
+     import _MEDRenumber
+     return _MEDRenumber.DataArrayFloat____iadd___(self, self, *args)
+@@ -109,14 +99,14 @@
+ %pythoncode %{
+ InterpKernelException.__reduce__=INTERPKERNELExceptionReduce
+-DataArrayDouble.__new__=classmethod(MEDCouplingDataArrayDoublenew)
++DataArrayDouble.__reduce__=MEDCouplingDataArrayDoubleReduce
+ DataArrayDouble.__iadd__=MEDCouplingDataArrayDoubleIadd
+ DataArrayDouble.__isub__=MEDCouplingDataArrayDoubleIsub
+ DataArrayDouble.__imul__=MEDCouplingDataArrayDoubleImul
+ DataArrayDouble.__idiv__=MEDCouplingDataArrayDoubleIdiv
+ DataArrayDouble.__ipow__=MEDCouplingDataArrayDoubleIpow
+-DataArrayInt.__new__=classmethod(MEDCouplingDataArrayIntnew)
++DataArrayInt.__reduce__=MEDCouplingDataArrayIntReduce
+ DataArrayInt.__iadd__=MEDCouplingDataArrayIntIadd
+ DataArrayInt.__isub__=MEDCouplingDataArrayIntIsub
+ DataArrayInt.__imul__=MEDCouplingDataArrayIntImul
+@@ -136,12 +126,12 @@
+ DataArrayIntTuple.__imod__=MEDCouplingDataArrayIntTupleImod
+ del INTERPKERNELExceptionReduce
+-del MEDCouplingDataArrayDoublenew
++del MEDCouplingDataArrayDoubleReduce
++del MEDCouplingDataArrayIntReduce
+ del MEDCouplingDataArrayDoubleIadd
+ del MEDCouplingDataArrayDoubleIsub
+ del MEDCouplingDataArrayDoubleImul
+ del MEDCouplingDataArrayDoubleIdiv
+-del MEDCouplingDataArrayIntnew
+ del MEDCouplingDataArrayIntIadd
+ del MEDCouplingDataArrayIntIsub
+ del MEDCouplingDataArrayIntImul
+diff -Naur MEDCOUPLING_old/src/RENUMBER_Swig/MEDRenumberImpl.i MEDCOUPLING_new/src/RENUMBER_Swig/MEDRenumberImpl.i
+--- MEDCOUPLING_old/src/RENUMBER_Swig/MEDRenumberImpl.i        1970-01-01 01:00:00.000000000 +0100
++++ MEDCOUPLING_new/src/RENUMBER_Swig/MEDRenumberImpl.i        2018-04-19 17:25:18.161805738 +0200
+@@ -0,0 +1,57 @@
++// Copyright (C) 2017  CEA/DEN, EDF 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
++//
++// Author : Anthony Geay (EDF R&D)
++
++%{
++#include "RenumberingFactory.hxx"
++#include "RENUMBER_Renumbering.hxx"
++  
++using namespace MED_RENUMBER;
++%}
++
++%newobject MED_RENUMBER::RenumberingFactory;
++
++class Renumbering
++{
++public:
++  %extend
++  {
++    virtual PyObject *renumber(const MEDCoupling::DataArrayInt *graph, const MEDCoupling::DataArrayInt *index_graph) throw(INTERP_KERNEL::Exception)
++    {
++      if(!graph || !index_graph)
++        throw INTERP_KERNEL::Exception("wrap of Renumbering::renumber : One of the input arrays is NULL !");
++      if(!graph->isAllocated() || !index_graph->isAllocated())
++        throw INTERP_KERNEL::Exception("wrap of Renumbering::renumber : One of the input arrays is not allocated !");
++      MEDCoupling::DataArrayInt *out0(0),*out1(0);
++      self->renumber(graph->begin(),index_graph->begin(),index_graph->getNumberOfTuples()-1,out0,out1);
++      PyObject *ret=PyTuple_New(2);
++      PyTuple_SetItem(ret,0,SWIG_NewPointerObj(SWIG_as_voidptr(out0),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
++      PyTuple_SetItem(ret,1,SWIG_NewPointerObj(SWIG_as_voidptr(out1),SWIGTYPE_p_MEDCoupling__DataArrayInt, SWIG_POINTER_OWN | 0 ));
++      return ret;
++    }
++  }
++  virtual ~Renumbering();
++};
++
++namespace MED_RENUMBER
++{
++  Renumbering *RenumberingFactory(const std::string& s) throw(INTERP_KERNEL::Exception);
++  std::vector<std::string> RenumberAvailableMethods();
++  std::vector<std::string> AllRenumberMethods();
++}
diff --git a/products/patches/medfile-4.0.0.patch b/products/patches/medfile-4.0.0.patch
new file mode 100644 (file)
index 0000000..b973a44
--- /dev/null
@@ -0,0 +1,10 @@
+--- medfile_ref/src/ci/MEDmeshUniversalNameWr.c
++++ medfile/src/ci/MEDmeshUniversalNameWr.c
+@@ -29,6 +29,7 @@
+ #include <windows.h>
+ #include <Lmcons.h>
+ #include <sys/timeb.h>
++#include <time.h>
+ #else
+ #if TIME_WITH_SYS_TIME
diff --git a/products/patches/mesa-19.0.8-debug_symbol.patch b/products/patches/mesa-19.0.8-debug_symbol.patch
new file mode 100644 (file)
index 0000000..1d14c7a
--- /dev/null
@@ -0,0 +1,12 @@
+diff -rupN mesa_ref/src/gallium/auxiliary/util/u_debug_symbol.c mesa/src/gallium/auxiliary/util/u_debug_symbol.c
+--- mesa_ref/src/gallium/auxiliary/util/u_debug_symbol.c       2019-06-26 22:14:08.000000000 +0200
++++ mesa/src/gallium/auxiliary/util/u_debug_symbol.c   2020-09-21 12:25:09.031462169 +0200
+@@ -270,7 +270,7 @@ debug_symbol_print(const void *addr)
+    debug_printf("\t%s\n", buf);
+ }
+-struct util_hash_table* symbols_hash;
++extern struct util_hash_table* symbols_hash;
+ static mtx_t symbols_mutex = _MTX_INITIALIZER_NP;
+ static unsigned hash_ptr(void* p)
diff --git a/products/patches/metis-5.1.0_windows.patch b/products/patches/metis-5.1.0_windows.patch
new file mode 100644 (file)
index 0000000..550061d
--- /dev/null
@@ -0,0 +1,11 @@
+--- metis_ref/GKlib/gk_arch.h
++++ metis/GKlib/gk_arch.h
+@@ -58,7 +58,7 @@
+ #define PTRDIFF_MAX  INT64_MAX
+ #endif
+-#ifdef __MSC__
++#if defined(__MSC__) && !defined(WIN32)
+ /* MSC does not have rint() function */
+ #define rint(x) ((int)((x)+0.5))  
diff --git a/products/patches/metis-use_cat_not_more.patch b/products/patches/metis-use_cat_not_more.patch
new file mode 100644 (file)
index 0000000..a683030
--- /dev/null
@@ -0,0 +1,12 @@
+diff -rupN metis/Makefile metis_new/Makefile
+--- metis/Makefile     2013-03-30 17:24:45.000000000 +0100
++++ metis_new/Makefile 2016-07-06 15:33:42.959903471 +0200
+@@ -62,7 +62,7 @@ endef
+ all clean install:
+       @if [ ! -f $(BUILDDIR)/Makefile ]; then \
+-              more BUILD.txt; \
++              cat BUILD.txt; \
+       else \
+               make -C $(BUILDDIR) $@ $(MAKEFLAGS); \
+       fi
diff --git a/products/patches/netgen-4.9.13-for-OCCT7.0.0-includes.patch b/products/patches/netgen-4.9.13-for-OCCT7.0.0-includes.patch
new file mode 100755 (executable)
index 0000000..74dd40f
--- /dev/null
@@ -0,0 +1,12 @@
+diff -pruN -x .git netgen-4.9.13/configure.ac netgen-4.9.13_new/configure.ac
+--- netgen-4.9.13/configure.ac 2016-07-26 10:41:44.593090037 +0200
++++ netgen-4.9.13_new/configure.ac     2016-07-26 10:47:21.883624659 +0200
+@@ -44,7 +44,7 @@ AC_ARG_WITH([occ],
+ if test a$occon = atrue ; then
+-      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc"])
++      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/include/opencascade"])
+       AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
+ #  -lTKDCAF
diff --git a/products/patches/netgen-4.9.13-for-SALOME-OCCT7.0.0-Porting.patch b/products/patches/netgen-4.9.13-for-SALOME-OCCT7.0.0-Porting.patch
new file mode 100755 (executable)
index 0000000..4d38989
--- /dev/null
@@ -0,0 +1,434 @@
+diff -Naur netgen-4.9.13_SRC/libsrc/occ/occgeom.cpp netgen-4.9.13_SRC_new/libsrc/occ/occgeom.cpp
+--- netgen-4.9.13_SRC/libsrc/occ/occgeom.cpp   2016-02-15 09:50:31.000000000 +0300
++++ netgen-4.9.13_SRC_new/libsrc/occ/occgeom.cpp       2016-02-05 16:44:26.000000000 +0300
+@@ -121,7 +121,7 @@
+       double surfacecont = 0;
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -152,7 +152,7 @@
+          cout << endl << "- repairing faces" << endl;
+          Handle(ShapeFix_Face) sff;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+@@ -209,7 +209,7 @@
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -226,7 +226,7 @@
+          cout << endl << "- fixing small edges" << endl;
+          Handle(ShapeFix_Wire) sfw;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+@@ -293,7 +293,7 @@
+          {
+             BuildFMap();
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+@@ -321,7 +321,7 @@
+          {
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+             {
+@@ -447,7 +447,7 @@
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -492,7 +492,7 @@
+                   TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+                   TopoDS_Solid newsolid = solid;
+                   BRepLib::OrientClosedSolid (newsolid);
+-                  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++                  Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+                   //            rebuild->Apply(shape);
+                   rebuild->Replace(solid, newsolid, Standard_False);
+                   TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);
+@@ -915,7 +915,7 @@
+             TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+             TopoDS_Solid newsolid = solid;
+             BRepLib::OrientClosedSolid (newsolid);
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Replace(solid, newsolid, Standard_False);
+             TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);
+@@ -1116,10 +1116,10 @@
+       occgeo = new OCCGeometry;
+       // Initiate a dummy XCAF Application to handle the IGES XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+       // Create an XCAF Document to contain the IGES file itself
+-      Handle_TDocStd_Document iges_doc;
++      Handle(TDocStd_Document) iges_doc;
+       // Check if a IGES File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1146,8 +1146,8 @@
+       reader.Transfer(iges_doc);
+       // Read in the shape(s) and the colours present in the IGES File
+-      Handle_XCAFDoc_ShapeTool iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
+-      Handle_XCAFDoc_ColorTool iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
++      Handle(XCAFDoc_ShapeTool) iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
++      Handle(XCAFDoc_ColorTool) iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
+       TDF_LabelSequence iges_shapes;
+       iges_shape_contents->GetShapes(iges_shapes);
+@@ -1194,10 +1194,10 @@
+       occgeo = new OCCGeometry;
+       // Initiate a dummy XCAF Application to handle the STEP XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+       // Create an XCAF Document to contain the STEP file itself
+-      Handle_TDocStd_Document step_doc;
++      Handle(TDocStd_Document) step_doc;
+       // Check if a STEP File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1224,8 +1224,8 @@
+       reader.Transfer(step_doc);
+       // Read in the shape(s) and the colours present in the STEP File
+-      Handle_XCAFDoc_ShapeTool step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
+-      Handle_XCAFDoc_ColorTool step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
++      Handle(XCAFDoc_ShapeTool) step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
++      Handle(XCAFDoc_ColorTool) step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
+       TDF_LabelSequence step_shapes;
+       step_shape_contents->GetShapes(step_shapes);
+@@ -1278,7 +1278,7 @@
+       // Fixed a bug in the OpenCascade XDE Colour handling when 
+       // opening BREP Files, since BREP Files have no colour data.
+       // Hence, the face_colours Handle needs to be created as a NULL handle.
+-      occgeo->face_colours = Handle_XCAFDoc_ColorTool();
++      occgeo->face_colours = Handle(XCAFDoc_ColorTool)();
+       occgeo->face_colours.Nullify();
+       occgeo->changed = 1;
+       occgeo->BuildFMap();
+diff -Naur netgen-4.9.13_SRC/libsrc/occ/occgeom.hpp netgen-4.9.13_SRC_new/libsrc/occ/occgeom.hpp
+--- netgen-4.9.13_SRC/libsrc/occ/occgeom.hpp   2016-02-15 09:50:31.000000000 +0300
++++ netgen-4.9.13_SRC_new/libsrc/occ/occgeom.hpp       2016-02-05 16:44:26.000000000 +0300
+@@ -86,7 +86,7 @@
+ // -- Optimization: to use cached projector and classifier
+ #include <NCollection_DataMap.hxx>
+-class Handle_ShapeAnalysis_Surface;
++class ShapeAnalysis_Surface;
+ class BRepTopAdaptor_FClass2d;
+ // Philippose - 29/01/2009
+@@ -199,7 +199,7 @@
+    {
+       Point<3> center;
+       // -- Optimization: to use cached projector and classifier
+-      mutable NCollection_DataMap<int,Handle_ShapeAnalysis_Surface> fprjmap;
++      mutable NCollection_DataMap<int,Handle(ShapeAnalysis_Surface)> fprjmap;
+       mutable NCollection_DataMap<int,BRepTopAdaptor_FClass2d*> fclsmap;
+    public:
+@@ -212,7 +212,7 @@
+       // OpenCascade XDE Support
+       // XCAF Handle to make the face colours available to the rest of
+       // the system
+-      Handle_XCAFDoc_ColorTool face_colours;
++      Handle(XCAFDoc_ColorTool) face_colours;
+       int changed;
+       Array<int> facemeshstatus;
+diff -Naur netgen-4.9.13_SRC/libsrc/occ/Partition_Inter2d.cxx netgen-4.9.13_SRC_new/libsrc/occ/Partition_Inter2d.cxx
+--- netgen-4.9.13_SRC/libsrc/occ/Partition_Inter2d.cxx 2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_SRC_new/libsrc/occ/Partition_Inter2d.cxx     2016-02-12 14:47:51.000000000 +0300
+@@ -47,9 +47,7 @@
+ #include <TopOpeBRep_EdgesIntersector.hxx>
+ #include <TopOpeBRep_Point2d.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+-#include <TopTools_MapOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Edge.hxx>
+ #include <TopoDS_Vertex.hxx>
+diff -Naur netgen-4.9.13_SRC/libsrc/occ/Partition_Inter2d.hxx netgen-4.9.13_SRC_new/libsrc/occ/Partition_Inter2d.hxx
+--- netgen-4.9.13_SRC/libsrc/occ/Partition_Inter2d.hxx 2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_SRC_new/libsrc/occ/Partition_Inter2d.hxx     2016-02-12 15:29:02.000000000 +0300
+@@ -27,8 +27,10 @@
+ #ifndef _Partition_Inter2d_HeaderFile
+ #define _Partition_Inter2d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
+-#include <Handle_BRepAlgo_AsDes.hxx>
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
++  #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _Standard_Real_HeaderFile
+ #include <Standard_Real.hxx>
+@@ -36,11 +38,13 @@
+ #ifndef _Standard_Boolean_HeaderFile
+ #include <Standard_Boolean.hxx>
+ #endif
++
++#include <TopTools_MapOfShape.hxx>
++#include <TopTools_ListOfShape.hxx>
++
+ class BRepAlgo_AsDes;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Vertex;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+diff -Naur netgen-4.9.13_SRC/libsrc/occ/Partition_Inter3d.cxx netgen-4.9.13_SRC_new/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-4.9.13_SRC/libsrc/occ/Partition_Inter3d.cxx 2016-02-15 09:50:31.000000000 +0300
++++ netgen-4.9.13_SRC_new/libsrc/occ/Partition_Inter3d.cxx     2016-02-05 16:44:26.000000000 +0300
+@@ -48,7 +48,6 @@
+ #include <TopOpeBRepTool_BoxSort.hxx>
+ #include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Compound.hxx>
+ #include <TopoDS_Edge.hxx>
+@@ -209,7 +208,7 @@
+   Handle (Geom_Surface) S   = BRep_Tool::Surface(F,L);
+   if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) {
+-    S = (*(Handle_Geom_RectangularTrimmedSurface*)&S)->BasisSurface();
++    S = Handle(Geom_RectangularTrimmedSurface)::DownCast (S)->BasisSurface();
+   }
+   if (!S->IsUPeriodic() && !S->IsVPeriodic())
+     return;
+diff -Naur netgen-4.9.13_SRC/libsrc/occ/Partition_Inter3d.hxx netgen-4.9.13_SRC_new/libsrc/occ/Partition_Inter3d.hxx
+--- netgen-4.9.13_SRC/libsrc/occ/Partition_Inter3d.hxx 2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_SRC_new/libsrc/occ/Partition_Inter3d.hxx     2016-02-12 15:29:36.000000000 +0300
+@@ -27,8 +27,10 @@
+ #ifndef _Partition_Inter3d_HeaderFile
+ #define _Partition_Inter3d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
+-#include <Handle_BRepAlgo_AsDes.hxx>
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
++  #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile
+ #include <TopTools_DataMapOfShapeListOfShape.hxx>
+@@ -36,6 +38,9 @@
+ #ifndef _TopTools_MapOfShape_HeaderFile
+ #include <TopTools_MapOfShape.hxx>
+ #endif
++#ifndef _TopTools_ListOfShape_HeaderFile
++#include <TopTools_ListOfShape.hxx>
++#endif
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+@@ -43,10 +48,7 @@
+ #include <Standard_Boolean.hxx>
+ #endif
+ class BRepAlgo_AsDes;
+-class TopTools_ListOfShape;
+-class TopTools_DataMapOfShapeShape;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Shape;
+ class TopoDS_Vertex;
+ class TopoDS_Edge;
+@@ -83,13 +85,13 @@
+    void FacesPartition(const TopoDS_Face& F1,const TopoDS_Face& F2) ;
+    Standard_Boolean IsDone(const TopoDS_Face& F1,const TopoDS_Face& F2) const;
+    TopTools_MapOfShape& TouchedFaces() ;
+-   Handle_BRepAlgo_AsDes AsDes() const;
++   Handle(BRepAlgo_AsDes) AsDes() const;
+    TopTools_MapOfShape& NewEdges() ;
+    Standard_Boolean HasSameDomainF(const TopoDS_Shape& F) const;
+    Standard_Boolean IsSameDomainF(const TopoDS_Shape& F1,const TopoDS_Shape& F2) const;
+    const TopTools_ListOfShape& SameDomain(const TopoDS_Face& F) const;
+    TopoDS_Vertex ReplaceSameDomainV(const TopoDS_Vertex& V,const TopoDS_Edge& E) const;
+-   Handle_BRepAlgo_AsDes SectionEdgesAD() const;
++   Handle(BRepAlgo_AsDes) SectionEdgesAD() const;
+    Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const;
+    Standard_Boolean HasSectionEdge(const TopoDS_Face& F) const;
+    Standard_Boolean IsSplitOn(const TopoDS_Edge& NewE,const TopoDS_Edge& OldE,const TopoDS_Face& F) const;
+@@ -121,11 +123,11 @@
+    // Fields PRIVATE
+    //
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    TopTools_DataMapOfShapeListOfShape myDone;
+    TopTools_MapOfShape myTouched;
+    TopTools_MapOfShape myNewEdges;
+-   Handle_BRepAlgo_AsDes mySectionEdgesAD;
++   Handle(BRepAlgo_AsDes) mySectionEdgesAD;
+    TopTools_DataMapOfShapeListOfShape mySameDomainFM;
+    TopTools_DataMapOfShapeShape mySameDomainVM;
+diff -Naur netgen-4.9.13_SRC/libsrc/occ/Partition_Loop2d.hxx netgen-4.9.13_SRC_new/libsrc/occ/Partition_Loop2d.hxx
+--- netgen-4.9.13_SRC/libsrc/occ/Partition_Loop2d.hxx  2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_SRC_new/libsrc/occ/Partition_Loop2d.hxx      2016-02-05 16:44:26.000000000 +0300
+@@ -24,7 +24,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+ class BRepAlgo_Image;
+diff -Naur netgen-4.9.13_SRC/libsrc/occ/Partition_Loop3d.hxx netgen-4.9.13_SRC_new/libsrc/occ/Partition_Loop3d.hxx
+--- netgen-4.9.13_SRC/libsrc/occ/Partition_Loop3d.hxx  2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_SRC_new/libsrc/occ/Partition_Loop3d.hxx      2016-02-05 16:44:26.000000000 +0300
+@@ -13,6 +13,9 @@
+ #ifndef _TopTools_ListOfShape_HeaderFile
+ #include <TopTools_ListOfShape.hxx>
+ #endif
++#ifndef _TopTools_MapOfOrientedShape_HeaderFile
++#include <TopTools_MapOfOrientedShape.hxx>
++#endif
+ #ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #endif
+@@ -23,8 +26,6 @@
+ #include <Standard_Real.hxx>
+ #endif
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+-class TopTools_MapOfOrientedShape;
+ class TopoDS_Edge;
+ class TopoDS_Face;
+ class gp_Vec;
+diff -Naur netgen-4.9.13_SRC/libsrc/occ/Partition_Loop.hxx netgen-4.9.13_SRC_new/libsrc/occ/Partition_Loop.hxx
+--- netgen-4.9.13_SRC/libsrc/occ/Partition_Loop.hxx    2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_SRC_new/libsrc/occ/Partition_Loop.hxx        2016-02-05 16:44:26.000000000 +0300
+@@ -38,8 +38,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+-
+ #ifndef _Standard_HeaderFile
+ #include <Standard.hxx>
+diff -Naur netgen-4.9.13_SRC/libsrc/occ/Partition_Spliter.cxx netgen-4.9.13_SRC_new/libsrc/occ/Partition_Spliter.cxx
+--- netgen-4.9.13_SRC/libsrc/occ/Partition_Spliter.cxx 2016-02-15 09:50:31.000000000 +0300
++++ netgen-4.9.13_SRC_new/libsrc/occ/Partition_Spliter.cxx     2016-02-05 16:44:26.000000000 +0300
+@@ -48,7 +48,6 @@
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_IndexedMapOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+ #include <TopTools_SequenceOfShape.hxx>
+diff -Naur netgen-4.9.13_SRC/libsrc/occ/Partition_Spliter.hxx netgen-4.9.13_SRC_new/libsrc/occ/Partition_Spliter.hxx
+--- netgen-4.9.13_SRC/libsrc/occ/Partition_Spliter.hxx 2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_SRC_new/libsrc/occ/Partition_Spliter.hxx     2016-02-05 16:44:26.000000000 +0300
+@@ -28,9 +28,6 @@
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
+-#include <Handle_BRepAlgo_AsDes.hxx>
+-#endif
+ #ifndef _BRepAlgo_Image_HeaderFile
+ #include <BRepAlgo_Image.hxx>
+ #endif
+@@ -45,7 +42,6 @@
+ #endif
+ class BRepAlgo_AsDes;
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+@@ -129,7 +125,7 @@
+    TopTools_DataMapOfShapeShape myFaceShapeMap;
+    TopTools_DataMapOfShapeShape myInternalFaces;
+    TopTools_DataMapOfShapeShape myIntNotClFaces;
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    BRepAlgo_Image myImagesFaces;
+    BRepAlgo_Image myImagesEdges;
+    BRepAlgo_Image myImageShape;
+diff -Naur netgen-4.9.13_SRC/libsrc/visualization/mvdraw.cpp netgen-4.9.13_SRC_new/libsrc/visualization/mvdraw.cpp
+--- netgen-4.9.13_SRC/libsrc/visualization/mvdraw.cpp  2010-03-04 16:03:16.000000000 +0300
++++ netgen-4.9.13_SRC_new/libsrc/visualization/mvdraw.cpp      2016-02-05 16:44:26.000000000 +0300
+@@ -28,7 +28,7 @@
+ {
+   Point3d VisualScene :: center;
+   double VisualScene :: rad;
+-  GLdouble VisualScene :: backcolor;
++  GLfloat VisualScene :: backcolor;
+   /*
+ #if TOGL_MAJOR_VERSION!=2
+diff -Naur netgen-4.9.13_SRC/libsrc/visualization/mvdraw.hpp netgen-4.9.13_SRC_new/libsrc/visualization/mvdraw.hpp
+--- netgen-4.9.13_SRC/libsrc/visualization/mvdraw.hpp  2009-09-07 22:28:44.000000000 +0400
++++ netgen-4.9.13_SRC_new/libsrc/visualization/mvdraw.hpp      2016-02-05 16:44:26.000000000 +0300
+@@ -32,7 +32,7 @@
+     GLdouble clipplane[4];
+     int changeval;
+-    static GLdouble backcolor;
++    static GLfloat backcolor;
+     static int selface;
+     static int selelement;
+diff -Naur netgen-4.9.13_SRC/libsrc/visualization/vscsg.cpp netgen-4.9.13_SRC_new/libsrc/visualization/vscsg.cpp
+--- netgen-4.9.13_SRC/libsrc/visualization/vscsg.cpp   2009-08-10 15:40:50.000000000 +0400
++++ netgen-4.9.13_SRC_new/libsrc/visualization/vscsg.cpp       2016-02-05 16:44:26.000000000 +0300
+@@ -85,7 +85,7 @@
+       const TopLevelObject * tlo = geometry -> GetTopLevelObject (i);
+       if (tlo->GetVisible() && !tlo->GetTransparent())
+       {
+-        float mat_col[] = { tlo->GetRed(), tlo->GetGreen(), tlo->GetBlue(), 1 };
++        float mat_col[] = { float(tlo->GetRed()), float(tlo->GetGreen()), float(tlo->GetBlue()), 1 };
+         glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col);
+         
+         glCallList (trilists[i]);
+@@ -102,7 +102,7 @@
+       const TopLevelObject * tlo = geometry -> GetTopLevelObject (i);
+       if (tlo->GetVisible() && tlo->GetTransparent())
+       {
+-        float mat_col[] = { tlo->GetRed(), tlo->GetGreen(), tlo->GetBlue(), transp };
++        float mat_col[] = { float(tlo->GetRed()), float(tlo->GetGreen()), float(tlo->GetBlue()), float(transp) };
+         glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_col);
+         
diff --git a/products/patches/netgen-4.9.13-for-SALOME.patch b/products/patches/netgen-4.9.13-for-SALOME.patch
new file mode 100755 (executable)
index 0000000..14e4448
--- /dev/null
@@ -0,0 +1,749 @@
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.cpp netgen-4.9.13_new/libsrc/meshing/meshtype.cpp
+--- netgen-4.9.13_orig/libsrc/meshing/meshtype.cpp     2009-09-13 14:28:38.000000000 +0400
++++ netgen-4.9.13_new/libsrc/meshing/meshtype.cpp      2011-02-18 11:47:33.000000000 +0300
+@@ -1,4 +1,5 @@
+ #include <mystdlib.h>
++#include <float.h>
+ #include "meshing.hpp"  
+@@ -650,7 +651,7 @@
+         double det = trans.Det();
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -706,7 +707,7 @@
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+-            if (det <= 0)
++            if (det <= DBL_MIN)
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -790,7 +791,7 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+@@ -840,7 +841,7 @@
+         frob /= 2;
+         double det = trans.Det();
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1857,7 +1858,7 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10;
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2035,7 +2036,7 @@
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2107,7 +2108,7 @@
+         ddet *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+@@ -2189,7 +2190,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+@@ -2522,10 +2523,10 @@
+   MeshingParameters :: MeshingParameters ()
+   {
+-    optimize3d = "cmdmustm";
++    optimize3d = (char*)"cmdmustm";
+     //optimize3d = "cmdmstm";
+     optsteps3d = 3;
+-    optimize2d = "smsmsmSmSmSm";
++    optimize2d = (char*)"smsmsmSmSmSm";
+     optsteps2d = 3;
+     opterrpow = 2;
+     blockfill = 1;
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.hpp netgen-4.9.13_new/libsrc/meshing/meshtype.hpp
+--- netgen-4.9.13_orig/libsrc/meshing/meshtype.hpp     2009-11-09 13:50:43.000000000 +0300
++++ netgen-4.9.13_new/libsrc/meshing/meshtype.hpp      2011-02-18 11:24:03.000000000 +0300
+@@ -12,7 +12,7 @@
+     Classes for NETGEN
+ */
+-
++class Mesh;
+ enum ELEMENT_TYPE { 
+   SEGMENT = 1, SEGMENT3 = 2,
+   TRIG = 10, QUAD=11, TRIG6 = 12, QUAD6 = 13, QUAD8 = 14,
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/smoothing2.cpp netgen-4.9.13_new/libsrc/meshing/smoothing2.cpp
+--- netgen-4.9.13_orig/libsrc/meshing/smoothing2.cpp   2009-11-09 13:47:09.000000000 +0300
++++ netgen-4.9.13_new/libsrc/meshing/smoothing2.cpp    2011-02-18 16:24:34.000000000 +0300
+@@ -302,7 +302,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+     //  meshthis -> ProjectPoint (surfi, pp1);
+@@ -360,7 +361,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+@@ -514,7 +516,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+@@ -586,7 +589,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     // pp1 = sp1;
+     //    pp1.Add2 (x.Get(1), t1, x.Get(2), t2);
+@@ -973,7 +977,7 @@
+               {
+                 mesh[pi] = Point<3> (origp);
+               }
+-          
++            break;
+           }
+       }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occconstruction.cpp netgen-4.9.13_new/libsrc/occ/occconstruction.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occconstruction.cpp  2009-08-24 06:32:47.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occconstruction.cpp   2011-02-18 14:04:45.000000000 +0300
+@@ -28,7 +28,7 @@
+ #include <BRepAlgoAPI_Common.hxx>
+ #include <BRepAlgoAPI_Fuse.hxx>
+ #include <BRepAlgoAPI_Section.hxx>
+-#include <BRepOffsetAPI_Sewing.hxx>
++//#include <BRepOffsetAPI_Sewing.hxx>
+ //#include <BRepAlgo_Sewing.hxx>
+ #include <BRepOffsetAPI_MakeOffsetShape.hxx>
+ #include <ShapeFix_Shape.hxx>
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp       2010-03-16 09:30:07.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp        2011-02-18 17:06:25.000000000 +0300
+@@ -15,6 +15,7 @@
+ #define DIVIDEEDGESECTIONS 1000
+ #define IGNORECURVELENGTH 1e-4
++#define VSMALL 1e-10
+    bool merge_solids = 1;
+@@ -26,7 +27,7 @@
+       double nq = n*q;
+       Point<3> p = p0 + 0.5*n;
+-      double lambda = (p-l.p0)*n / nq;
++      double lambda = (fabs(nq) > 1e-10 ? (p-l.p0)*n / nq : -1);
+       if (lambda >= 0 && lambda <= 1)
+       {
+@@ -54,7 +55,7 @@
+-   double ComputeH (double kappa)
++   static double ComputeH (double kappa)
+    {
+       double hret;
+       kappa *= mparam.curvaturesafety;
+@@ -62,7 +63,7 @@
+       if (mparam.maxh * kappa < 1)
+          hret = mparam.maxh;
+       else
+-         hret = 1 / kappa;
++         hret = 1 / (kappa + VSMALL);
+       if (mparam.maxh < hret)
+          hret = mparam.maxh;
+@@ -73,7 +74,7 @@
+-   void RestrictHTriangle (gp_Pnt2d & par0, gp_Pnt2d & par1, gp_Pnt2d & par2,
++   static void RestrictHTriangle (gp_Pnt2d & par0, gp_Pnt2d & par1, gp_Pnt2d & par2,
+                            BRepLProp_SLProps * prop, Mesh & mesh, int depth, double h = 0)
+    {
+       int ls = -1;
+@@ -168,8 +169,8 @@
+          if(h < 1e-4*maxside)
+             return;
+-
+-         if (h > 30) return;
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
+       }
+       if (h < maxside && depth < 10)
+@@ -228,7 +229,7 @@
+-   void DivideEdge (TopoDS_Edge & edge, Array<MeshPoint> & ps,
++   static void DivideEdge (TopoDS_Edge & edge, Array<MeshPoint> & ps,
+                     Array<double> & params, Mesh & mesh)
+    {
+       double s0, s1;
+@@ -247,8 +248,8 @@
+       hvalue[0] = 0;
+       pnt = c->Value(s0);
+-      double olddist = 0;
+-      double dist = 0;
++      //double olddist = 0;
++      //double dist = 0;
+       int tmpVal = (int)(DIVIDEEDGESECTIONS);
+@@ -256,15 +257,15 @@
+       {
+          oldpnt = pnt;
+          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
+-         hvalue[i] = hvalue[i-1] +
+-            1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
+-            pnt.Distance(oldpnt);
++         hvalue[i] = hvalue[i-1] + min( 1.0,
++                                        1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++                                        pnt.Distance(oldpnt));
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+          //      <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
+-         olddist = dist;
+-         dist = pnt.Distance(oldpnt);
++         //olddist = dist;
++         //dist = pnt.Distance(oldpnt);
+       }
+       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
+@@ -279,7 +280,10 @@
+       {
+          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
+          {
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            // For nsubedges comparable to DIVIDEEDGESECTIONS (SALOME issue 0021073)
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+             pnt = c->Value(params[i]);
+             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
+             i++;
+@@ -323,6 +327,7 @@
+       (*testout) << "nedges = " << nedges << endl;
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();
++      const double eps2 = eps * eps;
+       for (int i = 1; i <= nvertices; i++)
+       {
+@@ -332,7 +337,7 @@
+          bool exists = 0;
+          if (merge_solids)
+             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 )
+                {
+                   exists = 1;
+                   break;
+@@ -362,6 +367,7 @@
+          {
+             TopoDS_Face face = TopoDS::Face(exp1.Current());
+             int facenr = geom.fmap.FindIndex(face);
++            if ( facenr < 1 ) continue; // support of SALOME sub-meshes
+             if (face2solid[0][facenr-1] == 0)
+                face2solid[0][facenr-1] = solidnr;
+@@ -381,6 +387,7 @@
+       int facenr = 0;
+       int edgenr = 0;
++      edgenr = mesh.GetNSeg(); // support of SALOME sub-meshes
+       (*testout) << "faces = " << geom.fmap.Extent() << endl;
+       int curr = 0;
+@@ -442,6 +449,8 @@
+                   //(*testout) << "ignoring degenerated edge" << endl;
+                   continue;
+                }
++               if ( geom.emap.FindIndex(edge) < 1 )
++                 continue; // support SALOME sub-meshes
+                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))
+@@ -479,6 +488,8 @@
+                }
+                else
+                {
++                  const double tol = std::max( BRep_Tool::Tolerance( TopExp::FirstVertex (edge)),
++                                               BRep_Tool::Tolerance( TopExp::LastVertex (edge)));
+                   Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
+                   Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
+@@ -486,8 +497,8 @@
+                   pnums.Last() = -1;
+                   for (PointIndex pi = 1; pi < first_ep; pi++)
+                   {
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;
++                     if (Dist2 (mesh[pi], fp) < 2*tol*tol) pnums[0] = pi;
++                     if (Dist2 (mesh[pi], lp) < 2*tol*tol) pnums.Last() = pi;
+                   }
+                }
+@@ -633,7 +644,7 @@
+          }
+          (*testout) << "mesh face " << k << endl;
+-         multithread.percent = 100 * k / (mesh.GetNFD()+1e-10);
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+          geom.facemeshstatus[k-1] = -1;
+@@ -901,7 +912,7 @@
+          //      if (k != 36) continue;
+          //      (*testout) << "optimize face " << k << endl;
+-         multithread.percent = 100 * k / (mesh.GetNFD()+1e-10);
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+          FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
+@@ -1229,7 +1240,7 @@
+                   mindist = min (mindist, line.Dist(lines[num]));
+                }
+-               mindist *= occparam.resthcloseedgefac;
++               mindist /= (occparam.resthcloseedgefac + VSMALL);
+                if (mindist < 1e-3)
+                {
+@@ -1456,3 +1467,4 @@
+ }
+ #endif
++
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.cpp netgen-4.9.13_new/libsrc/occ/occgeom.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occgeom.cpp  2010-03-05 16:16:21.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgeom.cpp   2011-02-18 15:34:01.000000000 +0300
+@@ -7,7 +7,8 @@
+ #include "ShapeAnalysis_ShapeContents.hxx"
+ #include "ShapeAnalysis_CheckSmallFace.hxx"
+ #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
+-#include "ShapeAnalysis_Surface.hxx"
++#include <ShapeAnalysis_Surface.hxx>
++#include <BRepTopAdaptor_FClass2d.hxx>
+ #include "BRepAlgoAPI_Fuse.hxx"
+ #include "BRepCheck_Analyzer.hxx"
+ #include "BRepLib.hxx"
+@@ -15,11 +16,18 @@
+ #include "ShapeFix.hxx"
+ #include "ShapeFix_FixSmallFace.hxx"
+ #include "Partition_Spliter.hxx"
+-
++#include <TopAbs_State.hxx>
+ namespace netgen
+ {
+-   void OCCGeometry :: PrintNrShapes ()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap<int,BRepTopAdaptor_FClass2d*>::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
++  void OCCGeometry :: PrintNrShapes ()
+    {
+       TopExp_Explorer e;
+       int count = 0;
+@@ -952,24 +960,47 @@
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {
+       static int cnt = 0;
+       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
+       gp_Pnt pnt(p(0), p(1), p(2));
+-
+-      double u,v;
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
+-      suval.Coord( u, v);
+-      pnt = thesurf->Value( u, v );
+-
+-
++  
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++  
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
++  
+       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+-
++      return true;
+    }
+@@ -979,54 +1010,20 @@
+    {
+       gp_Pnt p(ap(0), ap(1), ap(2));
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-
+-      gp_Pnt x = surface->Value (u,v);
+-
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
+-
+-      gp_Vec du, dv;
+-
+-      surface->D1(u,v,x,du,dv);
+-
+-      int count = 0;
+-
+-      gp_Pnt xold;
+-      gp_Vec n;
+-      double det, lambda, mu;
+-
+-      do {
+-         count++;
+-
+-         n = du^dv;
+-
+-         det = Det3 (n.X(), du.X(), dv.X(),
+-            n.Y(), du.Y(), dv.Y(),
+-            n.Z(), du.Z(), dv.Z());
+-
+-         if (det < 1e-15) return false;
+-
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
+-            n.Y(), p.Y()-x.Y(), dv.Y(),
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;
+-
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
+-            n.Y(), du.Y(), p.Y()-x.Y(),
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;
+-
+-         u += lambda;
+-         v += mu;
+-
+-         xold = x;
+-         surface->D1(u,v,x,du,dv);
+-
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+-
+-      //    (*testout) << "FastProject count: " << count << endl;
+-
+-      if (count == 50) return false;
+-
+-      ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++    
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //cout << "Projection fails" << endl;
++        return false;
++      }
++    
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
+       return true;
+    }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.hpp netgen-4.9.13_new/libsrc/occ/occgeom.hpp
+--- netgen-4.9.13_orig/libsrc/occ/occgeom.hpp  2010-01-14 19:56:19.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgeom.hpp   2011-02-18 15:33:10.000000000 +0300
+@@ -15,8 +15,6 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "BRepTools.hxx"
+ #include "TopExp.hxx"
+ #include "BRepBuilderAPI_MakeVertex.hxx"
+@@ -42,8 +40,6 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "TopoDS_Wire.hxx"
+ #include "BRepTools_WireExplorer.hxx"
+ #include "BRepTools.hxx"
+@@ -68,7 +64,7 @@
+ #include "IGESToBRep_Reader.hxx"
+ #include "Interface_Static.hxx"
+ #include "GeomAPI_ExtremaCurveCurve.hxx"
+-#include "Standard_ErrorHandler.hxx"
++//#include "Standard_ErrorHandler.hxx"
+ #include "Standard_Failure.hxx"
+ #include "ShapeUpgrade_ShellSewing.hxx"
+ #include "ShapeFix_Shape.hxx"
+@@ -80,6 +76,10 @@
+ #include "ShapeAnalysis.hxx"
+ #include "ShapeBuild_ReShape.hxx"
++#include <NCollection_DataMap.hxx>
++class Handle_ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
++
+ // Philippose - 29/01/2009
+ // OpenCascade XDE Support
+@@ -190,6 +190,8 @@
+    class OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
++      mutable NCollection_DataMap<int,Handle_ShapeAnalysis_Surface> fprjmap;
++      mutable NCollection_DataMap<int,BRepTopAdaptor_FClass2d*> fclsmap;
+    public:
+       TopoDS_Shape shape;
+@@ -241,6 +243,8 @@
+          vmap.Clear();
+       }
++      ~OCCGeometry();
++
+       void BuildFMap();
+       Box<3> GetBoundingBox()
+@@ -260,9 +264,12 @@
+       Point<3> Center()
+       {  return center;}
+-      void Project (int surfi, Point<3> & p) const;
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
+       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
+       OCCSurface GetSurface (int surfi)
+       {
+          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occmeshsurf.cpp netgen-4.9.13_new/libsrc/occ/occmeshsurf.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occmeshsurf.cpp      2009-08-24 06:32:47.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occmeshsurf.cpp       2011-02-18 16:27:39.000000000 +0300
+@@ -6,6 +6,7 @@
+ #include <meshing.hpp>
+ #include <GeomLProp_SLProps.hxx>
+ #include <ShapeAnalysis_Surface.hxx>
++#include <GeomAPI_ProjectPointOnCurve.hxx>
+ namespace netgen
+@@ -434,23 +435,21 @@
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
+-
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
+-      p = hp;
+-      return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
++    p = hp;
++    return ok;
+   }
+@@ -680,7 +679,7 @@
+       if (!geometry.FastProject (surfi, hnewp, u, v))
+         {
+         //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-          geometry.Project (surfi, hnewp);
++          geometry.Project (surfi, hnewp, u, v);
+         }
+       newgi.trignum = 1;
+@@ -708,14 +707,17 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi)
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi)
+   {
+@@ -723,9 +725,10 @@
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+       {
+         cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-        geometry.Project (surfi, p);
++          double u, v;
++        geometry.Project (surfi, p, u, v);
+       }
+-  };
++  }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/utilities.h netgen-4.9.13_new/libsrc/occ/utilities.h
+--- netgen-4.9.13_orig/libsrc/occ/utilities.h  2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/utilities.h   2011-02-18 11:24:03.000000000 +0300
+@@ -33,6 +33,7 @@
+ #include <string>
+ #include <iostream>
++#include <iomanip>
+ #include <cstdlib>
+ // #include "SALOME_Log.hxx"
+diff -Naur netgen-4.9.13_orig/libsrc/stlgeom/stlgeommesh.cpp netgen-4.9.13_new/libsrc/stlgeom/stlgeommesh.cpp
+--- netgen-4.9.13_orig/libsrc/stlgeom/stlgeommesh.cpp  2009-08-10 15:40:51.000000000 +0400
++++ netgen-4.9.13_new/libsrc/stlgeom/stlgeommesh.cpp   2011-02-18 11:24:03.000000000 +0300
+@@ -1435,7 +1435,7 @@
+         if (!optstring || strlen(optstring) == 0)
+           {
+-            mparam.optimize2d = "smcm";
++            mparam.optimize2d = (char*)"smcm";
+           }
+         else
+           {
+@@ -1451,7 +1451,7 @@
+                                mparam.grading);
+             mesh -> LoadLocalMeshSize (mparam.meshsizefilename);            
+             mesh -> CalcLocalHFromSurfaceCurvature (stlparam.resthsurfmeshcurvfac);
+-            mparam.optimize2d = "cmsmSm";
++            mparam.optimize2d = (char*)"cmsmSm";
+             STLSurfaceOptimization (*stlgeometry, *mesh, mparam);
+ #ifdef STAT_STREAM
+             (*statout) << GetTime() << " & ";
+@@ -1557,7 +1557,7 @@
+         if (!optstring || strlen(optstring) == 0)
+           {
+-            mparam.optimize3d = "cmdmstm";
++            mparam.optimize3d = (char*)"cmdmstm";
+           }
+         else
+           {
+--- netgen-4.9.13_orig/nglib/nglib.h   2010-05-18 15:20:25.000000000 +0400
++++ netgen-4.9.13_new/nglib/nglib.h    2010-05-31 13:02:19.000000000 +0400
+@@ -24,7 +24,7 @@
+ // Philippose - 14.02.2009
+ // Modifications for creating a DLL in Windows
+ #ifdef WIN32
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
+       #define DLL_HEADER   __declspec(dllexport)
+    #else
+       #define DLL_HEADER   __declspec(dllimport)
diff --git a/products/patches/netgen-4.9.13-for-SALOME_v2.patch b/products/patches/netgen-4.9.13-for-SALOME_v2.patch
new file mode 100755 (executable)
index 0000000..022bd21
--- /dev/null
@@ -0,0 +1,1121 @@
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.cpp netgen-4.9.13_new/libsrc/meshing/meshtype.cpp
+--- netgen-4.9.13_orig/libsrc/meshing/meshtype.cpp     2009-09-13 14:28:38.000000000 +0400
++++ netgen-4.9.13_new/libsrc/meshing/meshtype.cpp      2014-07-22 13:01:28.000000000 +0400
+@@ -1,4 +1,5 @@
+ #include <mystdlib.h>
++#include <float.h> // to get DBL_MIN defined
+ #include "meshing.hpp"  
+@@ -650,7 +651,8 @@
+         double det = trans.Det();
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -706,7 +708,8 @@
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+-            if (det <= 0)
++            // if (det <= 0)
++            if (det <= DBL_MIN)  // avoid FPE
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -790,7 +793,8 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -840,7 +844,8 @@
+         frob /= 2;
+         double det = trans.Det();
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1857,7 +1862,8 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          //if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2035,7 +2041,8 @@
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2107,7 +2114,8 @@
+         ddet *= -1;
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -2189,7 +2197,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+@@ -2522,10 +2530,10 @@
+   MeshingParameters :: MeshingParameters ()
+   {
+-    optimize3d = "cmdmustm";
++    optimize3d = (char*)"cmdmustm"; // optimize3d = "cmdmustm";
+     //optimize3d = "cmdmstm";
+     optsteps3d = 3;
+-    optimize2d = "smsmsmSmSmSm";
++    optimize2d = (char*)"smsmsmSmSmSm"; // optimize2d = "smsmsmSmSmSm";
+     optsteps2d = 3;
+     opterrpow = 2;
+     blockfill = 1;
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.hpp netgen-4.9.13_new/libsrc/meshing/meshtype.hpp
+--- netgen-4.9.13_orig/libsrc/meshing/meshtype.hpp     2009-11-09 13:50:43.000000000 +0300
++++ netgen-4.9.13_new/libsrc/meshing/meshtype.hpp      2014-07-22 13:01:28.000000000 +0400
+@@ -12,6 +12,7 @@
+     Classes for NETGEN
+ */
++class Mesh; // added due to compilation errors on some platforms
+ enum ELEMENT_TYPE { 
+   SEGMENT = 1, SEGMENT3 = 2,
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/smoothing2.cpp netgen-4.9.13_new/libsrc/meshing/smoothing2.cpp
+--- netgen-4.9.13_orig/libsrc/meshing/smoothing2.cpp   2009-11-09 13:47:09.000000000 +0300
++++ netgen-4.9.13_new/libsrc/meshing/smoothing2.cpp    2014-07-22 13:01:28.000000000 +0400
+@@ -302,7 +302,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+     //  meshthis -> ProjectPoint (surfi, pp1);
+@@ -360,7 +361,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+@@ -514,7 +516,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+@@ -586,7 +589,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     // pp1 = sp1;
+     //    pp1.Add2 (x.Get(1), t1, x.Get(2), t2);
+@@ -973,7 +977,7 @@
+               {
+                 mesh[pi] = Point<3> (origp);
+               }
+-          
++            break; // exit as <fact> is not used anymore
+           }
+       }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occconstruction.cpp netgen-4.9.13_new/libsrc/occ/occconstruction.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occconstruction.cpp  2009-08-24 06:32:47.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occconstruction.cpp   2014-07-22 13:01:28.000000000 +0400
+@@ -28,7 +28,7 @@
+ #include <BRepAlgoAPI_Common.hxx>
+ #include <BRepAlgoAPI_Fuse.hxx>
+ #include <BRepAlgoAPI_Section.hxx>
+-#include <BRepOffsetAPI_Sewing.hxx>
++//#include <BRepOffsetAPI_Sewing.hxx>
+ //#include <BRepAlgo_Sewing.hxx>
+ #include <BRepOffsetAPI_MakeOffsetShape.hxx>
+ #include <ShapeFix_Shape.hxx>
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp       2010-03-16 09:30:07.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp        2014-07-22 13:01:28.000000000 +0400
+@@ -15,6 +15,8 @@
+ #define DIVIDEEDGESECTIONS 1000
+ #define IGNORECURVELENGTH 1e-4
++// a small value used to avoid FPE
++#define VSMALL 1e-10
+    bool merge_solids = 1;
+@@ -26,7 +28,8 @@
+       double nq = n*q;
+       Point<3> p = p0 + 0.5*n;
+-      double lambda = (p-l.p0)*n / nq;
++      // double lambda = (p-l.p0)*n / nq;  -- avoid FPE
++      double lambda = (fabs(nq) > 1e-10) ? (p-l.p0)*n / nq : -1;
+       if (lambda >= 0 && lambda <= 1)
+       {
+@@ -54,6 +57,8 @@
++   
++   static // useless out of this file
+    double ComputeH (double kappa)
+    {
+       double hret;
+@@ -62,7 +67,8 @@
+       if (mparam.maxh * kappa < 1)
+          hret = mparam.maxh;
+       else
+-         hret = 1 / kappa;
++        // hret = 1 / kappa; -- avoid FPE
++        hret = 1 / (kappa + VSMALL);
+       if (mparam.maxh < hret)
+          hret = mparam.maxh;
+@@ -71,8 +77,7 @@
+    }
+-
+-
++   static // useless out of this file
+    void RestrictHTriangle (gp_Pnt2d & par0, gp_Pnt2d & par1, gp_Pnt2d & par2,
+                            BRepLProp_SLProps * prop, Mesh & mesh, int depth, double h = 0)
+    {
+@@ -168,8 +173,8 @@
+          if(h < 1e-4*maxside)
+             return;
+-
+-         if (h > 30) return;
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
+       }
+       if (h < maxside && depth < 10)
+@@ -228,6 +233,7 @@
++   static // useless out of this file
+    void DivideEdge (TopoDS_Edge & edge, Array<MeshPoint> & ps,
+                     Array<double> & params, Mesh & mesh)
+    {
+@@ -247,8 +253,8 @@
+       hvalue[0] = 0;
+       pnt = c->Value(s0);
+-      double olddist = 0;
+-      double dist = 0;
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
+       int tmpVal = (int)(DIVIDEEDGESECTIONS);
+@@ -256,15 +262,19 @@
+       {
+          oldpnt = pnt;
+          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
++         // -- no more than 1 segment per <edge length>/DIVIDEEDGESECTIONS
+          hvalue[i] = hvalue[i-1] +
+-            1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
+-            pnt.Distance(oldpnt);
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
++                1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++                pnt.Distance(oldpnt));
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+          //      <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
+-         olddist = dist;
+-         dist = pnt.Distance(oldpnt);
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
+       }
+       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
+@@ -279,7 +289,10 @@
+       {
+          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
+          {
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+             pnt = c->Value(params[i]);
+             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
+             i++;
+@@ -323,6 +336,9 @@
+       (*testout) << "nedges = " << nedges << endl;
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
+       for (int i = 1; i <= nvertices; i++)
+       {
+@@ -332,7 +348,8 @@
+          bool exists = 0;
+          if (merge_solids)
+             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
+                {
+                   exists = 1;
+                   break;
+@@ -362,6 +379,7 @@
+          {
+             TopoDS_Face face = TopoDS::Face(exp1.Current());
+             int facenr = geom.fmap.FindIndex(face);
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
+             if (face2solid[0][facenr-1] == 0)
+                face2solid[0][facenr-1] = solidnr;
+@@ -381,6 +399,7 @@
+       int facenr = 0;
+       int edgenr = 0;
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
+       (*testout) << "faces = " << geom.fmap.Extent() << endl;
+       int curr = 0;
+@@ -442,6 +461,7 @@
+                   //(*testout) << "ignoring degenerated edge" << endl;
+                   continue;
+                }
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
+                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))
+@@ -474,20 +494,104 @@
+                if (!merge_solids)
+                {
+-                  pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
+-                  pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
++                   }
++                   else
++                   {
++                     ip += first_vp - 1;
++                   }
++                 }
+                }
+                else
+                {
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
+                   pnums[0] = -1;
+                   pnums.Last() = -1;
+                   for (PointIndex pi = 1; pi < first_ep; pi++)
+                   {
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
+                   }
+                }
+@@ -497,17 +601,20 @@
+                   bool exists = 0;
+                   int j;
+                   for (j = first_ep; j <= mesh.GetNP(); j++)
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
+                      if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)
+                      {
+                         exists = 1;
+                         break;
+                      }
++                  }
+                      if (exists)
+                         pnums[i] = j;
+                      else
+                      {
+-                        mesh.AddPoint (mp[i-1]);
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+                         (*testout) << "add meshpoint " << mp[i-1] << endl;
+                         pnums[i] = mesh.GetNP();
+                      }
+@@ -591,6 +698,8 @@
+       //              (*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
+       //                              << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;
+       //      exit(10);
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
+       mesh.CalcSurfacesOfNode();
+       multithread.task = savetask;
+@@ -633,7 +742,8 @@
+          }
+          (*testout) << "mesh face " << k << endl;
+-         multithread.percent = 100 * k / (mesh.GetNFD()+1e-10);
++         // multithread.percent = 100 * k / (mesh.GetNFD()+1e-10); -- avoid FPE
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+          geom.facemeshstatus[k-1] = -1;
+@@ -901,7 +1011,8 @@
+          //      if (k != 36) continue;
+          //      (*testout) << "optimize face " << k << endl;
+-         multithread.percent = 100 * k / (mesh.GetNFD()+1e-10);
++         //multithread.percent = 100 * k / (mesh.GetNFD()+1e-10); -- avoid FPE
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+          FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
+@@ -1456,3 +1567,4 @@
+ }
+ #endif
++
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.cpp netgen-4.9.13_new/libsrc/occ/occgeom.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occgeom.cpp  2010-03-05 16:16:21.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgeom.cpp   2014-07-22 13:01:28.000000000 +0400
+@@ -8,6 +8,8 @@
+ #include "ShapeAnalysis_CheckSmallFace.hxx"
+ #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
+ #include "ShapeAnalysis_Surface.hxx"
++#include <BRepTopAdaptor_FClass2d.hxx> // -- to optimize Project() and FastProject()
++#include <TopAbs_State.hxx>
+ #include "BRepAlgoAPI_Fuse.hxx"
+ #include "BRepCheck_Analyzer.hxx"
+ #include "BRepLib.hxx"
+@@ -16,10 +18,17 @@
+ #include "ShapeFix_FixSmallFace.hxx"
+ #include "Partition_Spliter.hxx"
+-
+ namespace netgen
+ {
+-   void OCCGeometry :: PrintNrShapes ()
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap<int,BRepTopAdaptor_FClass2d*>::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
++  void OCCGeometry :: PrintNrShapes ()
+    {
+       TopExp_Explorer e;
+       int count = 0;
+@@ -951,25 +960,58 @@
+    }
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
+-
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {
+       static int cnt = 0;
+       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
+       gp_Pnt pnt(p(0), p(1), p(2));
+-      double u,v;
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
+-      suval.Coord( u, v);
+-      pnt = thesurf->Value( u, v );
+-
+-
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++  
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
++  
+       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
++      return true;
+    }
+@@ -979,54 +1021,69 @@
+    {
+       gp_Pnt p(ap(0), ap(1), ap(2));
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-
+-      gp_Pnt x = surface->Value (u,v);
+-
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
+-
+-      gp_Vec du, dv;
+-
+-      surface->D1(u,v,x,du,dv);
+-
+-      int count = 0;
+-
+-      gp_Pnt xold;
+-      gp_Vec n;
+-      double det, lambda, mu;
+-
+-      do {
+-         count++;
+-
+-         n = du^dv;
+-
+-         det = Det3 (n.X(), du.X(), dv.X(),
+-            n.Y(), du.Y(), dv.Y(),
+-            n.Z(), du.Z(), dv.Z());
+-
+-         if (det < 1e-15) return false;
+-
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
+-            n.Y(), p.Y()-x.Y(), dv.Y(),
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;
+-
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
+-            n.Y(), du.Y(), p.Y()-x.Y(),
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;
+-
+-         u += lambda;
+-         v += mu;
+-
+-         xold = x;
+-         surface->D1(u,v,x,du,dv);
+-
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+-
+-      //    (*testout) << "FastProject count: " << count << endl;
+-
+-      if (count == 50) return false;
+-
+-      ap = Point<3> (x.X(), x.Y(), x.Z());
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++    
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //cout << "Projection fails" << endl;
++        return false;
++      }
++    
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
+       return true;
+    }
+@@ -1038,9 +1095,9 @@
+    {
+       cout << "writing stl..."; cout.flush();
+       StlAPI_Writer writer;
+-      writer.RelativeMode() = Standard_False;
++      // writer.RelativeMode() = Standard_False;
+-      writer.SetDeflection(0.02);
++      // writer.SetDeflection(0.02);
+       writer.Write(shape,filename);
+       cout << "done" << endl;
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.hpp netgen-4.9.13_new/libsrc/occ/occgeom.hpp
+--- netgen-4.9.13_orig/libsrc/occ/occgeom.hpp  2010-01-14 19:56:19.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgeom.hpp   2014-07-22 13:09:03.000000000 +0400
+@@ -15,8 +15,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "BRepTools.hxx"
+ #include "TopExp.hxx"
+ #include "BRepBuilderAPI_MakeVertex.hxx"
+@@ -42,8 +42,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "TopoDS_Wire.hxx"
+ #include "BRepTools_WireExplorer.hxx"
+ #include "BRepTools.hxx"
+@@ -68,18 +68,26 @@
+ #include "IGESToBRep_Reader.hxx"
+ #include "Interface_Static.hxx"
+ #include "GeomAPI_ExtremaCurveCurve.hxx"
+-#include "Standard_ErrorHandler.hxx"
++//#include "Standard_ErrorHandler.hxx"
+ #include "Standard_Failure.hxx"
+ #include "ShapeUpgrade_ShellSewing.hxx"
+ #include "ShapeFix_Shape.hxx"
+ #include "ShapeFix_Wireframe.hxx"
++#include <Standard_Version.hxx>
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
+ #include "BRepMesh.hxx"
++#endif
+ #include "BRepMesh_IncrementalMesh.hxx"
+ #include "BRepBndLib.hxx"
+ #include "Bnd_Box.hxx"
+ #include "ShapeAnalysis.hxx"
+ #include "ShapeBuild_ReShape.hxx"
++// -- Optimization: to use cached projector and classifier
++#include <NCollection_DataMap.hxx>
++class Handle_ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
+ // Philippose - 29/01/2009
+ // OpenCascade XDE Support
+@@ -190,6 +198,9 @@
+    class OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap<int,Handle_ShapeAnalysis_Surface> fprjmap;
++      mutable NCollection_DataMap<int,BRepTopAdaptor_FClass2d*> fclsmap;
+    public:
+       TopoDS_Shape shape;
+@@ -241,6 +252,8 @@
+          vmap.Clear();
+       }
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
+       void BuildFMap();
+       Box<3> GetBoundingBox()
+@@ -260,9 +273,14 @@
+       Point<3> Center()
+       {  return center;}
+-      void Project (int surfi, Point<3> & p) const;
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
+       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
+       OCCSurface GetSurface (int surfi)
+       {
+          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occmeshsurf.cpp netgen-4.9.13_new/libsrc/occ/occmeshsurf.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occmeshsurf.cpp      2009-08-24 06:32:47.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occmeshsurf.cpp       2014-07-22 13:01:28.000000000 +0400
+@@ -6,6 +6,7 @@
+ #include <meshing.hpp>
+ #include <GeomLProp_SLProps.hxx>
+ #include <ShapeAnalysis_Surface.hxx>
++#include <GeomAPI_ProjectPointOnCurve.hxx> // -- moved here from occgeom.hpp
+ namespace netgen
+@@ -434,23 +435,33 @@
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
+-      p = hp;
+-      return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
++    p = hp;
++    return ok;
+   }
+@@ -680,7 +691,8 @@
+       if (!geometry.FastProject (surfi, hnewp, u, v))
+         {
+         //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-          geometry.Project (surfi, hnewp);
++          // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++          geometry.Project (surfi, hnewp, u, v);
+         }
+       newgi.trignum = 1;
+@@ -689,7 +701,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: 
+@@ -708,14 +720,18 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi)
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      // geometry.Project (surfi, p); -- Project() changed for optimization
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi)
+   {
+@@ -723,9 +739,10 @@
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+       {
+         cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-        geometry.Project (surfi, p);
++          double u, v;
++        geometry.Project (surfi, p, u, v);
+       }
+-  };
++  }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Inter3d.cxx netgen-4.9.13_new/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Inter3d.cxx        2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Inter3d.cxx 2014-07-22 13:01:28.000000000 +0400
+@@ -86,6 +86,9 @@
+ #include <TopOpeBRepTool_OutCurveType.hxx>
+ #include <TopOpeBRep_DSFiller.hxx>
+ #include <TopTools_DataMapIteratorOfDataMapOfShapeShape.hxx>
++
++#include <Standard_Version.hxx>
++
+ #include <stdio.h>
+ //=======================================================================
+@@ -243,7 +246,12 @@
+       Standard_Integer i, nbExt = anExtPS.NbExt();
+       Extrema_POnSurf aPOnSurf;
+       for (i = 1; i <= nbExt; ++i )
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++        if (anExtPS.SquareDistance( i ) <= TolE * TolE) {
++#else
+         if (anExtPS.Value( i ) <= TolE) {
++#endif
+           aPOnSurf = anExtPS.Point( i );
+           break;
+         }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Loop2d.cxx netgen-4.9.13_new/libsrc/occ/Partition_Loop2d.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Loop2d.cxx 2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Loop2d.cxx  2014-07-22 13:01:28.000000000 +0400
+@@ -22,7 +22,6 @@
+ #include <BRepAdaptor_Surface.hxx>
+ #include <BRepAlgo_AsDes.hxx>
+ #include <BRepAlgo_FaceRestrictor.hxx>
+-#include <BRepOffset_DataMapOfShapeReal.hxx>
+ #include <BRepTopAdaptor_FClass2d.hxx>
+ #include <BRep_Builder.hxx>
+ #include <BRep_Tool.hxx>
+@@ -51,6 +50,15 @@
+ #include <gp_Pnt.hxx>
+ #include <gp_Pnt2d.hxx>
++#include <Standard_Version.hxx>
++
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++#include <TopTools_DataMapOfShapeReal.hxx>
++#else
++#include <BRepOffset_DataMapOfShapeReal.hxx>
++#endif
++
+ //=======================================================================
+ //function : Partition_Loop2d
+ //purpose  :
+@@ -209,7 +217,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -233,7 +241,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
+@@ -519,7 +527,12 @@
+     DC.Initialize( DegEdge, F );
+   // avoid intersecting twice the same edge
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++  TopTools_DataMapOfShapeReal EUMap ( EdgesList.Extent() );
++#else
+   BRepOffset_DataMapOfShapeReal EUMap ( EdgesList.Extent() );
++#endif
+   Standard_Real U, f, l;
+   BRep_Tool::Range (DegEdge, f, l);
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Loop.cxx netgen-4.9.13_new/libsrc/occ/Partition_Loop.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Loop.cxx   2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Loop.cxx    2014-07-22 13:01:28.000000000 +0400
+@@ -178,7 +178,7 @@
+       }
+     }
+-    Standard_Real anglemax = - PI;
++    Standard_Real anglemax = - M_PI;
+     TopoDS_Edge   SelectedEdge;       
+     for ( itl.Initialize(LE); itl.More(); itl.Next()) {
+       const TopoDS_Edge& E = TopoDS::Edge(itl.Value());
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Spliter.cxx netgen-4.9.13_new/libsrc/occ/Partition_Spliter.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Spliter.cxx        2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Spliter.cxx 2014-07-22 13:01:28.000000000 +0400
+@@ -79,6 +79,8 @@
+ #include <GeomAdaptor_Curve.hxx>
+ #include <TopOpeBRepTool_CurveTool.hxx>
++#include <Standard_Version.hxx>
++
+ #ifdef DEB
+ //# define PART_PERF
+ #endif
+@@ -1169,7 +1171,12 @@
+           for (; j<=nbj && ok; ++j) {
+             if (Extrema.IsMin(j)) {
+             hasMin = Standard_True;
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++              ok = Extrema.SquareDistance(j) <= tol * tol;
++#else
+               ok = Extrema.Value(j) <= tol;
++#endif
+           }
+           }
+         }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/utilities.h netgen-4.9.13_new/libsrc/occ/utilities.h
+--- netgen-4.9.13_orig/libsrc/occ/utilities.h  2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/utilities.h   2014-07-22 13:01:28.000000000 +0400
+@@ -33,6 +33,7 @@
+ #include <string>
+ #include <iostream>
++#include <iomanip>
+ #include <cstdlib>
+ // #include "SALOME_Log.hxx"
+diff -Naur netgen-4.9.13_orig/libsrc/stlgeom/stlgeommesh.cpp netgen-4.9.13_new/libsrc/stlgeom/stlgeommesh.cpp
+--- netgen-4.9.13_orig/libsrc/stlgeom/stlgeommesh.cpp  2009-08-10 15:40:51.000000000 +0400
++++ netgen-4.9.13_new/libsrc/stlgeom/stlgeommesh.cpp   2014-07-22 13:01:28.000000000 +0400
+@@ -1435,7 +1435,8 @@
+         if (!optstring || strlen(optstring) == 0)
+           {
+-            mparam.optimize2d = "smcm";
++            //mparam.optimize2d = (char*)"smcm";
++              mparam.optimize2d = (char*)"smcm";
+           }
+         else
+           {
+@@ -1451,7 +1452,8 @@
+                                mparam.grading);
+             mesh -> LoadLocalMeshSize (mparam.meshsizefilename);            
+             mesh -> CalcLocalHFromSurfaceCurvature (stlparam.resthsurfmeshcurvfac);
+-            mparam.optimize2d = "cmsmSm";
++            //mparam.optimize2d = (char*)"cmsmSm";
++              mparam.optimize2d = (char*)"cmsmSm";
+             STLSurfaceOptimization (*stlgeometry, *mesh, mparam);
+ #ifdef STAT_STREAM
+             (*statout) << GetTime() << " & ";
+@@ -1557,7 +1559,8 @@
+         if (!optstring || strlen(optstring) == 0)
+           {
+-            mparam.optimize3d = "cmdmstm";
++              //mparam.optimize3d = "cmdmstm";
++            mparam.optimize3d = (char*)"cmdmstm";
+           }
+         else
+           {
+diff -Naur netgen-4.9.13_orig/ng/Makefile.in netgen-4.9.13_new/ng/Makefile.in
+--- netgen-4.9.13_orig/ng/Makefile.in  2010-05-21 01:29:28.000000000 +0200
++++ netgen-4.9.13_new/ng/Makefile.in   2016-05-26 14:39:47.128141997 +0200
+@@ -287,7 +287,7 @@
+       $(top_builddir)/libsrc/gprim/libgprim.la \
+       $(top_builddir)/libsrc/linalg/libla.la \
+       $(top_builddir)/libsrc/general/libgen.la \
+-      $(OCCLIBS) -L$(TK_BIN_DIR)/Togl1.7 $(TOGLLIBDIR) -lTogl1.7 $(LIBGLU) $(TK_LIB_SPEC) $(TCL_LIB_SPEC) $(MPI_LIBS) $(FFMPEG_LIBS) $(JPEGLIB_LIBS) $(PKG_LIBS) 
++      $(OCCLIBS) -L$(TK_BIN_DIR)/Togl1.7 $(TOGLLIBDIR) -lTogl $(LIBGLU) $(TK_LIB_SPEC) $(TCL_LIB_SPEC) $(MPI_LIBS) $(FFMPEG_LIBS) $(JPEGLIB_LIBS) $(PKG_LIBS) 
+ # add for static linkage of ngsolve:
+diff -Naur netgen-4.9.13_orig/nglib/nglib.h netgen-4.9.13_new/nglib/nglib.h
+--- netgen-4.9.13_orig/nglib/nglib.h   2010-05-18 15:20:25.000000000 +0400
++++ netgen-4.9.13_new/nglib/nglib.h    2014-07-22 13:01:28.000000000 +0400
+@@ -24,7 +24,7 @@
+ // Philippose - 14.02.2009
+ // Modifications for creating a DLL in Windows
+ #ifdef WIN32
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
+       #define DLL_HEADER   __declspec(dllexport)
+    #else
+       #define DLL_HEADER   __declspec(dllimport)
diff --git a/products/patches/netgen-4.9.13_without_togl.patch b/products/patches/netgen-4.9.13_without_togl.patch
new file mode 100644 (file)
index 0000000..91e4e4d
--- /dev/null
@@ -0,0 +1,97 @@
+diff -pruN netgen-4.9.13-sources/configure netgen-4.9.13-2/configure
+--- netgen-4.9.13-sources/configure    2015-08-24 12:15:29.560190846 +0200
++++ netgen-4.9.13-2/configure  2015-08-25 11:39:07.485726666 +0200
+@@ -17837,7 +17837,7 @@ esac
+-ac_config_files="$ac_config_files Makefile libsrc/Makefile libsrc/csg/Makefile libsrc/general/Makefile libsrc/geom2d/Makefile libsrc/gprim/Makefile libsrc/include/Makefile libsrc/interface/Makefile libsrc/linalg/Makefile libsrc/meshing/Makefile libsrc/occ/Makefile libsrc/stlgeom/Makefile libsrc/visualization/Makefile ng/Makefile nglib/Makefile tutorials/Makefile doc/Makefile windows/Makefile"
++ac_config_files="$ac_config_files Makefile libsrc/Makefile libsrc/csg/Makefile libsrc/general/Makefile libsrc/geom2d/Makefile libsrc/gprim/Makefile libsrc/include/Makefile libsrc/interface/Makefile libsrc/linalg/Makefile libsrc/meshing/Makefile libsrc/occ/Makefile libsrc/stlgeom/Makefile libsrc/visualization/Makefile nglib/Makefile "
+ cat >confcache <<\_ACEOF
+@@ -18905,7 +18905,8 @@ $debug ||
+ if test -n "$CONFIG_FILES"; then
+-ac_cr='\r'
++ac_cr='
++'
+ ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+ if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+   ac_cs_awk_cr='\\r'
+diff -pruN netgen-4.9.13-sources/configure.ac netgen-4.9.13-2/configure.ac
+--- netgen-4.9.13-sources/configure.ac 2015-08-24 12:15:29.560190846 +0200
++++ netgen-4.9.13-2/configure.ac       2015-08-25 10:48:08.236469725 +0200
+@@ -72,11 +72,11 @@ fi
+-AC_ARG_WITH([togl], 
+-        [AC_HELP_STRING([--with-togl=dir],[directory containing libTogl1.7])],
+-        [togldir=$withval]
+-        [togllibfl="-L$withval$"]
+-        )
++#AC_ARG_WITH([togl], 
++#        [AC_HELP_STRING([--with-togl=dir],[directory containing libTogl1.7])],
++#        [togldir=$withval]
++#        [togllibfl="-L$withval$"]
++#        )
+ #        [togllibfl="-L$(TK_BIN_DIR)/Togl1.7"]
+ #        [togllibfl="-L/usr/local/lib/Togl1.7"]
+@@ -124,7 +124,7 @@ AM_CONDITIONAL([NGLIB], [test x$nglibon
+ AC_SUBST([TOGLLIBDIR], ["$togllibfl"])
+ AC_CHECK_HEADER(pthread.h)
+-AC_CHECK_HEADER([togl.h])
++#AC_CHECK_HEADER([togl.h])
+ AC_CHECK_HEADER([GL/gl.h])
+ AC_CHECK_FUNCS([pow])
+@@ -171,13 +171,7 @@ AC_SUBST(LIBGLU)
+-AC_CONFIG_FILES(Makefile libsrc/Makefile libsrc/csg/Makefile 
+-libsrc/general/Makefile  libsrc/geom2d/Makefile libsrc/gprim/Makefile
+-libsrc/include/Makefile libsrc/interface/Makefile 
+-libsrc/linalg/Makefile libsrc/meshing/Makefile libsrc/occ/Makefile 
+-  libsrc/stlgeom/Makefile
+-  libsrc/visualization/Makefile ng/Makefile nglib/Makefile
+-  tutorials/Makefile doc/Makefile windows/Makefile )
++AC_CONFIG_FILES(Makefile nglib/Makefile)
+ AC_OUTPUT
+@@ -208,4 +202,4 @@ AC_MSG_RESULT([
+   Example programs will be built but not installed.
+ ------------------------------------------------------------------------
+-])
+\ Pas de fin de ligne à la fin du fichier
++])
+diff -pruN netgen-4.9.13-sources/Makefile.am netgen-4.9.13-2/Makefile.am
+--- netgen-4.9.13-sources/Makefile.am  2015-08-24 12:15:29.564190971 +0200
++++ netgen-4.9.13-2/Makefile.am        2015-08-25 11:36:11.111872678 +0200
+@@ -2,7 +2,7 @@ ACLOCAL_AMFLAGS = -I m4
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng nglib tutorials doc windows
++SUBDIRS = libsrc nglib 
+ # TESTS = ng/netgen -batchmode
+diff -pruN netgen-4.9.13-sources/Makefile.in netgen-4.9.13-2/Makefile.in
+--- netgen-4.9.13-sources/Makefile.in  2015-08-24 12:15:29.564190971 +0200
++++ netgen-4.9.13-2/Makefile.in        2015-08-25 11:46:41.932811373 +0200
+@@ -238,7 +238,7 @@ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ ACLOCAL_AMFLAGS = -I m4
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng nglib tutorials doc windows
++SUBDIRS = libsrc nglib
+ all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
diff --git a/products/patches/netgen-5.3.1-for-SALOME-OCCT-7.2.0.patch b/products/patches/netgen-5.3.1-for-SALOME-OCCT-7.2.0.patch
new file mode 100644 (file)
index 0000000..49d4a6d
--- /dev/null
@@ -0,0 +1,1530 @@
+diff -Naur netgen-5.3.1_SRC_orig/Makefile.am netgen-5.3.1_SRC_modif/Makefile.am
+--- netgen-5.3.1_SRC_orig/Makefile.am  2014-08-29 13:55:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/Makefile.am 2017-09-11 18:08:21.217313702 +0300
+@@ -2,7 +2,7 @@
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ # TESTS = ng/netgen -batchmode
+diff -Naur netgen-5.3.1_SRC_orig/Makefile.in netgen-5.3.1_SRC_modif/Makefile.in
+--- netgen-5.3.1_SRC_orig/Makefile.in  2014-10-06 15:04:37.000000000 +0400
++++ netgen-5.3.1_SRC_modif/Makefile.in 2017-09-11 18:08:21.225312838 +0300
+@@ -280,7 +280,7 @@
+ top_srcdir = @top_srcdir@
+ ACLOCAL_AMFLAGS = -I m4
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+diff -Naur netgen-5.3.1_SRC_orig/configure.ac netgen-5.3.1_SRC_modif/configure.ac
+--- netgen-5.3.1_SRC_orig/configure.ac 2014-10-06 15:00:17.000000000 +0400
++++ netgen-5.3.1_SRC_modif/configure.ac        2017-09-11 18:08:21.226312730 +0300
+@@ -20,7 +20,7 @@
+ CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+ # LDFLAGS="$LDFLAGS $OPENMP_CXXFLAGS"
+-AM_PROG_AR
++m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+ AC_PROG_LIBTOOL
+ LT_INIT
+@@ -42,8 +42,8 @@
+ if test a$occon = atrue ; then
+-      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc -I/usr/include/opencascade"])
+-      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
++      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/include/opencascade"])
++      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF"])
+ #  -lTKDCAF
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/csg/Makefile.am netgen-5.3.1_SRC_modif/libsrc/csg/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/csg/Makefile.am       2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/csg/Makefile.am      2017-09-11 18:08:21.234311865 +0300
+@@ -8,7 +8,7 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include  $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libcsg.la
++noinst_LTLIBRARIES = libcsg.la
+ libcsg_la_SOURCES = algprim.cpp brick.cpp   \
+@@ -17,12 +17,9 @@
+ manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
+ solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp
+-libcsg_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+-
+-
+ if NGGUI
+-lib_LTLIBRARIES += libcsgvis.la 
++lib_LTLIBRARIES = libcsgvis.la 
+ libcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp
+ libcsgvis_la_LIBADD = libcsg.la
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/geom2d/Makefile.am netgen-5.3.1_SRC_modif/libsrc/geom2d/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/geom2d/Makefile.am    2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/geom2d/Makefile.am   2017-09-11 18:08:21.234311865 +0300
+@@ -4,16 +4,15 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libgeom2d.la 
++noinst_LTLIBRARIES = libgeom2d.la 
+ if NGGUI
+-lib_LTLIBRARIES += libgeom2dvis.la 
++lib_LTLIBRARIES = libgeom2dvis.la 
+ endif
+ libgeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp
+-libgeom2d_la_LIBADD =         $(top_builddir)/libsrc/meshing/libmesh.la
+ libgeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp
+ libgeom2dvis_la_LIBADD = libgeom2d.la
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/interface/Makefile.am netgen-5.3.1_SRC_modif/libsrc/interface/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/interface/Makefile.am 2014-08-29 13:54:02.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/interface/Makefile.am        2017-09-11 18:08:21.234311865 +0300
+@@ -2,14 +2,11 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface  $(MPI_INCLUDES) $(TCL_INCLUDES) -DOPENGL
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libinterface.la
++noinst_LTLIBRARIES = libinterface.la
+ libinterface_la_SOURCES = nginterface.cpp nginterface_v2.cpp \
+       read_fnf_mesh.cpp readtetmesh.cpp readuser.cpp writeabaqus.cpp writediffpack.cpp \
+       writedolfin.cpp writeelmer.cpp writefeap.cpp writefluent.cpp writegmsh.cpp writejcm.cpp \
+       writepermas.cpp writetecplot.cpp writetet.cpp writetochnog.cpp writeuser.cpp \
+       wuchemnitz.cpp writegmsh2.cpp writeOpenFOAM15x.cpp 
+-
+-libinterface_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la
+-
+ # libinterface_la_LDFLAGS = -rdynamic
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/Makefile.am netgen-5.3.1_SRC_modif/libsrc/meshing/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/Makefile.am   2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/Makefile.am  2017-09-11 18:08:21.234311865 +0300
+@@ -15,7 +15,7 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libmesh.la
++noinst_LTLIBRARIES = libmesh.la
+ libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
+       clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp            \
+@@ -30,8 +30,5 @@
+       topology.cpp triarls.cpp validate.cpp zrefine.cpp bcfunctions.cpp   \
+       parallelmesh.cpp  paralleltop.cpp  paralleltop.hpp basegeom.cpp 
+-libmesh_la_LIBADD =  $(top_builddir)/libsrc/linalg/libla.la \
+-      $(top_builddir)/libsrc/gprim/libgprim.la \
+-      $(top_builddir)/libsrc/general/libgen.la \
+-      -lz
++libmesh_la_LIBADD = -lz
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/findip.hpp netgen-5.3.1_SRC_modif/libsrc/meshing/findip.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/findip.hpp    2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/findip.hpp   2017-09-11 18:08:21.226312730 +0300
+@@ -75,6 +75,9 @@
+   static int timer = NgProfiler::CreateTimer ("FindInnerPoint");
+   NgProfiler::RegionTimer reg (timer);
++  if ( points.Size() < 3 )
++    return 0;
++
+   Array<Vec3d> a;
+   Array<double> c;
+   Mat<3> m, inv;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/improve3.cpp netgen-5.3.1_SRC_modif/libsrc/meshing/improve3.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/improve3.cpp  2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/improve3.cpp 2017-09-11 18:08:21.227312622 +0300
+@@ -1219,6 +1219,7 @@
+             tetused = 0;
+             tetused[0] = 1;
++              int nbtetused = 0;
+             for (int l = 2; l < nsuround; l++)
+               {
+@@ -1239,10 +1240,12 @@
+                             
+                             tetused[k] = 1; 
+                             suroundpts[l] = newpi;
++                              ++nbtetused;
+                           }                   
+                     }
+               }
+-
++              if ( nbtetused < nsuround )
++                continue;
+             
+             bad1 = 0;
+             for (int k = 0; k < nsuround; k++)
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.cpp netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.cpp  2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.cpp 2017-09-11 18:08:21.227312622 +0300
+@@ -1,4 +1,5 @@
+ #include <mystdlib.h>
++#include <float.h> // to get DBL_MIN defined
+ #include "meshing.hpp"  
+@@ -666,7 +667,8 @@
+         double det = trans.Det();
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -722,7 +724,8 @@
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+-            if (det <= 0)
++            // if (det <= 0)
++            if (det <= DBL_MIN)  // avoid FPE
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -806,7 +809,8 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -856,7 +860,8 @@
+         frob /= 2;
+         double det = trans.Det();
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1864,7 +1869,8 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          //if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2030,7 +2036,8 @@
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2102,7 +2109,8 @@
+         ddet *= -1;
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -2184,7 +2192,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.hpp netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.hpp  2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.hpp 2017-09-11 18:08:21.228312514 +0300
+@@ -15,6 +15,7 @@
+     Classes for NETGEN
+   */
++class Mesh; // added due to compilation errors on some platforms
+   enum ELEMENT_TYPE { 
+@@ -360,7 +361,7 @@
+         {
+ #ifdef DEBUG
+           if (typ != QUAD && typ != QUAD6 && typ != QUAD8)
+-            PrintSysError ("element2d::GetNV not implemented for typ", typ)
++            PrintSysError ("element2d::GetNV not implemented for typ", typ);
+ #endif
+           return 4;
+         }
+@@ -618,7 +619,7 @@
+         return 8;
+       default:
+ #ifdef DEBUG
+-        PrintSysError ("Element3d::GetNV not implemented for typ ", typ)
++        PrintSysError ("Element3d::GetNV not implemented for typ ", typ);
+ #endif
+           ;
+       }
+@@ -682,7 +683,7 @@
+       case PRISM12: return 5;
+       default:
+ #ifdef DEBUG
+-        PrintSysError ("element3d::GetNFaces not implemented for typ", typ)
++        PrintSysError ("element3d::GetNFaces not implemented for typ", typ);
+ #endif
+           ;
+       }
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Makefile.am netgen-5.3.1_SRC_modif/libsrc/occ/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Makefile.am       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Makefile.am      2017-09-11 18:08:21.234311865 +0300
+@@ -14,10 +14,10 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libocc.la
++noinst_LTLIBRARIES = libocc.la
+ if NGGUI
+-lib_LTLIBRARIES += liboccvis.la 
++lib_LTLIBRARIES = liboccvis.la 
+ endif
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.cxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.cxx    2017-09-11 18:08:21.228312514 +0300
+@@ -47,9 +47,7 @@
+ #include <TopOpeBRep_EdgesIntersector.hxx>
+ #include <TopOpeBRep_Point2d.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+-#include <TopTools_MapOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Edge.hxx>
+ #include <TopoDS_Vertex.hxx>
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.hxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.hxx    2017-09-11 18:08:21.228312514 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter2d_HeaderFile
+ #define _Partition_Inter2d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
+ #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _Standard_Real_HeaderFile
+@@ -36,11 +38,13 @@
+ #ifndef _Standard_Boolean_HeaderFile
+ #include <Standard_Boolean.hxx>
+ #endif
++
++#include <TopTools_MapOfShape.hxx>
++#include <TopTools_ListOfShape.hxx>
++
+ class BRepAlgo_AsDes;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Vertex;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.cxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.cxx    2017-09-11 18:08:21.229312406 +0300
+@@ -48,7 +48,6 @@
+ #include <TopOpeBRepTool_BoxSort.hxx>
+ #include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Compound.hxx>
+ #include <TopoDS_Edge.hxx>
+@@ -206,7 +205,7 @@
+   Handle (Geom_Surface) S   = BRep_Tool::Surface(F,L);
+   if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) {
+-    S = (*(Handle_Geom_RectangularTrimmedSurface*)&S)->BasisSurface();
++    S = Handle(Geom_RectangularTrimmedSurface)::DownCast (S)->BasisSurface();
+   }
+   if (!S->IsUPeriodic() && !S->IsVPeriodic())
+     return;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.hxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.hxx    2017-09-11 18:08:21.229312406 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter3d_HeaderFile
+ #define _Partition_Inter3d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
+ #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile
+@@ -36,6 +38,9 @@
+ #ifndef _TopTools_MapOfShape_HeaderFile
+ #include <TopTools_MapOfShape.hxx>
+ #endif
++#ifndef _TopTools_ListOfShape_HeaderFile
++#include <TopTools_ListOfShape.hxx>
++#endif
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+@@ -43,10 +48,7 @@
+ #include <Standard_Boolean.hxx>
+ #endif
+ class BRepAlgo_AsDes;
+-class TopTools_ListOfShape;
+-class TopTools_DataMapOfShapeShape;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Shape;
+ class TopoDS_Vertex;
+ class TopoDS_Edge;
+@@ -83,13 +85,13 @@
+    void FacesPartition(const TopoDS_Face& F1,const TopoDS_Face& F2) ;
+    Standard_Boolean IsDone(const TopoDS_Face& F1,const TopoDS_Face& F2) const;
+    TopTools_MapOfShape& TouchedFaces() ;
+-   Handle_BRepAlgo_AsDes AsDes() const;
++   Handle(BRepAlgo_AsDes) AsDes() const;
+    TopTools_MapOfShape& NewEdges() ;
+    Standard_Boolean HasSameDomainF(const TopoDS_Shape& F) const;
+    Standard_Boolean IsSameDomainF(const TopoDS_Shape& F1,const TopoDS_Shape& F2) const;
+    const TopTools_ListOfShape& SameDomain(const TopoDS_Face& F) const;
+    TopoDS_Vertex ReplaceSameDomainV(const TopoDS_Vertex& V,const TopoDS_Edge& E) const;
+-   Handle_BRepAlgo_AsDes SectionEdgesAD() const;
++   Handle(BRepAlgo_AsDes) SectionEdgesAD() const;
+    Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const;
+    Standard_Boolean HasSectionEdge(const TopoDS_Face& F) const;
+    Standard_Boolean IsSplitOn(const TopoDS_Edge& NewE,const TopoDS_Edge& OldE,const TopoDS_Face& F) const;
+@@ -121,11 +123,11 @@
+    // Fields PRIVATE
+    //
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    TopTools_DataMapOfShapeListOfShape myDone;
+    TopTools_MapOfShape myTouched;
+    TopTools_MapOfShape myNewEdges;
+-   Handle_BRepAlgo_AsDes mySectionEdgesAD;
++   Handle(BRepAlgo_AsDes) mySectionEdgesAD;
+    TopTools_DataMapOfShapeListOfShape mySameDomainFM;
+    TopTools_DataMapOfShapeShape mySameDomainVM;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop.hxx        2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop.hxx       2017-09-11 18:08:21.229312406 +0300
+@@ -38,8 +38,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+-
+ #ifndef _Standard_HeaderFile
+ #include <Standard.hxx>
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.cxx      2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.cxx     2017-09-11 18:08:21.229312406 +0300
+@@ -210,7 +210,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -234,7 +234,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.hxx      2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.hxx     2017-09-11 18:08:21.230312298 +0300
+@@ -24,7 +24,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+ class BRepAlgo_Image;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop3d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop3d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop3d.hxx      2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop3d.hxx     2017-09-11 18:08:21.230312298 +0300
+@@ -13,6 +13,9 @@
+ #ifndef _TopTools_ListOfShape_HeaderFile
+ #include <TopTools_ListOfShape.hxx>
+ #endif
++#ifndef _TopTools_MapOfOrientedShape_HeaderFile
++#include <TopTools_MapOfOrientedShape.hxx>
++#endif
+ #ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #endif
+@@ -23,8 +26,6 @@
+ #include <Standard_Real.hxx>
+ #endif
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+-class TopTools_MapOfOrientedShape;
+ class TopoDS_Edge;
+ class TopoDS_Face;
+ class gp_Vec;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.cxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.cxx    2017-09-11 18:08:21.230312298 +0300
+@@ -48,7 +48,6 @@
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_IndexedMapOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+ #include <TopTools_SequenceOfShape.hxx>
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.hxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.hxx    2017-09-11 18:08:21.231312190 +0300
+@@ -28,9 +28,6 @@
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
+-#include <Handle_BRepAlgo_AsDes.hxx>
+-#endif
+ #ifndef _BRepAlgo_Image_HeaderFile
+ #include <BRepAlgo_Image.hxx>
+ #endif
+@@ -45,7 +42,6 @@
+ #endif
+ class BRepAlgo_AsDes;
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+@@ -129,7 +125,7 @@
+    TopTools_DataMapOfShapeShape myFaceShapeMap;
+    TopTools_DataMapOfShapeShape myInternalFaces;
+    TopTools_DataMapOfShapeShape myIntNotClFaces;
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    BRepAlgo_Image myImagesFaces;
+    BRepAlgo_Image myImagesEdges;
+    BRepAlgo_Image myImageShape;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occconstruction.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occconstruction.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occconstruction.cpp       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occconstruction.cpp      2017-09-11 18:08:21.231312190 +0300
+@@ -28,7 +28,7 @@
+ #include <BRepAlgoAPI_Common.hxx>
+ #include <BRepAlgoAPI_Fuse.hxx>
+ #include <BRepAlgoAPI_Section.hxx>
+-#include <BRepOffsetAPI_Sewing.hxx>
++//#include <BRepOffsetAPI_Sewing.hxx>
+ //#include <BRepAlgo_Sewing.hxx>
+ #include <BRepOffsetAPI_MakeOffsetShape.hxx>
+ #include <ShapeFix_Shape.hxx>
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occgenmesh.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occgenmesh.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occgenmesh.cpp    2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occgenmesh.cpp   2017-09-11 18:08:21.231312190 +0300
+@@ -171,8 +171,8 @@
+          if(h < 1e-4*maxside)\r
+             return;\r
\r
+-\r
+-         if (h > 30) return;\r
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
+       }\r
\r
+       if (h < maxside && depth < 10)\r
+@@ -250,8 +250,8 @@
+       hvalue[0] = 0;\r
+       pnt = c->Value(s0);\r
\r
+-      double olddist = 0;\r
+-      double dist = 0;\r
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
\r
+       int tmpVal = (int)(DIVIDEEDGESECTIONS);\r
\r
+@@ -259,15 +259,19 @@
+       {\r
+          oldpnt = pnt;\r
+          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));\r
++         // -- no more than 1 segment per <edge length>/DIVIDEEDGESECTIONS
+          hvalue[i] = hvalue[i-1] +\r
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
+             1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*\r
+-            pnt.Distance(oldpnt);\r
++                pnt.Distance(oldpnt));
\r
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))\r
+          //      <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;\r
\r
+-         olddist = dist;\r
+-         dist = pnt.Distance(oldpnt);\r
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
+       }\r
\r
+       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));\r
+@@ -282,7 +286,10 @@
+       {\r
+          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)\r
+          {\r
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);\r
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+             pnt = c->Value(params[i]);\r
+             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));\r
+             i++;\r
+@@ -326,6 +333,9 @@
+       (*testout) << "nedges = " << nedges << endl;\r
\r
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();\r
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
\r
+       for (int i = 1; i <= nvertices; i++)\r
+       {\r
+@@ -335,7 +345,8 @@
+          bool exists = 0;\r
+          if (merge_solids)\r
+             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)\r
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)\r
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
+                {\r
+                   exists = 1;\r
+                   break;\r
+@@ -365,6 +376,7 @@
+          {\r
+             TopoDS_Face face = TopoDS::Face(exp1.Current());\r
+             int facenr = geom.fmap.FindIndex(face);\r
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
\r
+             if (face2solid[0][facenr-1] == 0)\r
+                face2solid[0][facenr-1] = solidnr;\r
+@@ -384,6 +396,7 @@
+       int facenr = 0;\r
+       int edgenr = 0;\r
\r
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
\r
+       (*testout) << "faces = " << geom.fmap.Extent() << endl;\r
+       int curr = 0;\r
+@@ -445,6 +458,7 @@
+                   //(*testout) << "ignoring degenerated edge" << endl;\r
+                   continue;\r
+                }\r
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
\r
+                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==\r
+                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))\r
+@@ -477,20 +491,104 @@
\r
+                if (!merge_solids)\r
+                {\r
+-                  pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));\r
+-                  pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));\r
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
+                }\r
+                else\r
+                {\r
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));\r
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));\r
++                     ip += first_vp - 1;
++                   }
++                 }
++               }
++               else
++               {
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
\r
+                   pnums[0] = -1;\r
+                   pnums.Last() = -1;\r
+                   for (PointIndex pi = 1; pi < first_ep; pi++)\r
+                   {\r
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;\r
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;\r
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
+                   }\r
+                }\r
\r
+@@ -500,17 +598,20 @@
+                   bool exists = 0;\r
+                   int j;\r
+                   for (j = first_ep; j <= mesh.GetNP(); j++)\r
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
+                      if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)\r
+                      {\r
+                         exists = 1;\r
+                         break;\r
+                      }\r
++                  }
\r
+                      if (exists)\r
+                         pnums[i] = j;\r
+                      else\r
+                      {\r
+-                        mesh.AddPoint (mp[i-1]);\r
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+                         (*testout) << "add meshpoint " << mp[i-1] << endl;\r
+                         pnums[i] = mesh.GetNP();\r
+                      }\r
+@@ -594,6 +695,8 @@
+       //              (*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si\r
+       //                              << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;\r
+       //      exit(10);\r
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
\r
+       mesh.CalcSurfacesOfNode();\r
+       multithread.task = savetask;\r
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.cpp       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.cpp      2017-09-11 18:08:32.836058020 +0300
+@@ -8,6 +8,8 @@
+ #include "ShapeAnalysis_CheckSmallFace.hxx"\r
+ #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"\r
+ #include "ShapeAnalysis_Surface.hxx"\r
++#include <BRepTopAdaptor_FClass2d.hxx> // -- to optimize Project() and FastProject()
++#include <TopAbs_State.hxx>
+ #include "BRepAlgoAPI_Fuse.hxx"\r
+ #include "BRepCheck_Analyzer.hxx"\r
+ #include "BRepLib.hxx"\r
+@@ -16,9 +18,16 @@
+ #include "ShapeFix_FixSmallFace.hxx"\r
+ #include "Partition_Spliter.hxx"\r
\r
+-\r
+ namespace netgen\r
+ {\r
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap<int,BRepTopAdaptor_FClass2d*>::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
+    void OCCGeometry :: PrintNrShapes ()\r
+    {\r
+       TopExp_Explorer e;\r
+@@ -112,13 +121,13 @@
+       double surfacecont = 0;\r
\r
+       {\r
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);\r
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())\r
+          {\r
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());\r
+             if ( BRep_Tool::Degenerated(edge) )\r
+-               rebuild->Remove(edge, false);\r
++               rebuild->Remove(edge);\r
+          }\r
+          shape = rebuild->Apply(shape);\r
+       }\r
+@@ -143,7 +152,7 @@
+          cout << endl << "- repairing faces" << endl;\r
\r
+          Handle(ShapeFix_Face) sff;\r
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);\r
\r
\r
+@@ -187,7 +196,7 @@
+                   cout << "(natural bounds added)" <<endl;\r
+                TopoDS_Face newface = sff->Face();\r
\r
+-               rebuild->Replace(face, newface, Standard_False);\r
++               rebuild->Replace(face, newface);\r
+             }\r
\r
+             // Set the original colour of the face to the newly created \r
+@@ -200,13 +209,13 @@
\r
\r
+       {\r
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);\r
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())\r
+          {\r
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());\r
+             if ( BRep_Tool::Degenerated(edge) )\r
+-               rebuild->Remove(edge, false);\r
++               rebuild->Remove(edge);\r
+          }\r
+          shape = rebuild->Apply(shape);\r
+       }\r
+@@ -217,7 +226,7 @@
+          cout << endl << "- fixing small edges" << endl;\r
\r
+          Handle(ShapeFix_Wire) sfw;\r
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);\r
\r
\r
+@@ -270,7 +279,7 @@
+                if(replace)\r
+                {\r
+                   TopoDS_Wire newwire = sfw->Wire();\r
+-                  rebuild->Replace(oldwire, newwire, Standard_False);\r
++                  rebuild->Replace(oldwire, newwire);\r
+                }\r
\r
+                //delete sfw; sfw = NULL;\r
+@@ -284,7 +293,7 @@
\r
+          {\r
+             BuildFMap();\r
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);\r
\r
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())\r
+@@ -300,7 +309,7 @@
+                      cout << "removing degenerated edge " << emap.FindIndex(edge)\r
+                         << " from vertex " << vmap.FindIndex(TopExp::FirstVertex (edge))\r
+                         << " to vertex " << vmap.FindIndex(TopExp::LastVertex (edge)) << endl;\r
+-                     rebuild->Remove(edge, false);\r
++                     rebuild->Remove(edge);\r
+                   }\r
+                }\r
+             }\r
+@@ -312,13 +321,13 @@
\r
\r
+          {\r
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);\r
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())\r
+             {\r
+                TopoDS_Edge edge = TopoDS::Edge(exp1.Current());\r
+                if ( BRep_Tool::Degenerated(edge) )\r
+-                  rebuild->Remove(edge, false);\r
++                  rebuild->Remove(edge);\r
+             }\r
+             shape = rebuild->Apply(shape);\r
+          }\r
+@@ -438,13 +447,13 @@
\r
\r
+       {\r
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);\r
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())\r
+          {\r
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());\r
+             if ( BRep_Tool::Degenerated(edge) )\r
+-               rebuild->Remove(edge, false);\r
++               rebuild->Remove(edge);\r
+          }\r
+          shape = rebuild->Apply(shape);\r
+       }\r
+@@ -483,9 +492,9 @@
+                   TopoDS_Solid solid = TopoDS::Solid(exp0.Current());\r
+                   TopoDS_Solid newsolid = solid;\r
+                   BRepLib::OrientClosedSolid (newsolid);\r
+-                  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++                  Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+                   //            rebuild->Apply(shape);\r
+-                  rebuild->Replace(solid, newsolid, Standard_False);\r
++                  rebuild->Replace(solid, newsolid);\r
+                   TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);\r
+                   //            TopoDS_Shape newshape = rebuild->Apply(shape);\r
+                   shape = newshape;\r
+@@ -906,8 +915,8 @@
+             TopoDS_Solid solid = TopoDS::Solid(exp0.Current());\r
+             TopoDS_Solid newsolid = solid;\r
+             BRepLib::OrientClosedSolid (newsolid);\r
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
+-            rebuild->Replace(solid, newsolid, Standard_False);\r
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++            rebuild->Replace(solid, newsolid);\r
\r
+             TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);\r
+             shape = newshape;\r
+@@ -951,25 +960,58 @@
+    }\r
\r
\r
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
\r
+-\r
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const\r
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {\r
+       static int cnt = 0;\r
+       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;\r
\r
+       gp_Pnt pnt(p(0), p(1), p(2));\r
\r
+-      double u,v;\r
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));\r
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );\r
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );\r
+-      suval.Coord( u, v);\r
+-      pnt = thesurf->Value( u, v );\r
+-\r
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++\r
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
\r
+       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());\r
\r
++      return true;
+    }\r
\r
\r
+@@ -979,54 +1021,69 @@
+    {\r
+       gp_Pnt p(ap(0), ap(1), ap(2));\r
\r
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));\r
+-\r
+-      gp_Pnt x = surface->Value (u,v);\r
+-\r
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;\r
+-\r
+-      gp_Vec du, dv;\r
+-\r
+-      surface->D1(u,v,x,du,dv);\r
+-\r
+-      int count = 0;\r
+-\r
+-      gp_Pnt xold;\r
+-      gp_Vec n;\r
+-      double det, lambda, mu;\r
+-\r
+-      do {\r
+-         count++;\r
+-\r
+-         n = du^dv;\r
+-\r
+-         det = Det3 (n.X(), du.X(), dv.X(),\r
+-            n.Y(), du.Y(), dv.Y(),\r
+-            n.Z(), du.Z(), dv.Z());\r
+-\r
+-         if (det < 1e-15) return false;\r
+-\r
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),\r
+-            n.Y(), p.Y()-x.Y(), dv.Y(),\r
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;\r
+-\r
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),\r
+-            n.Y(), du.Y(), p.Y()-x.Y(),\r
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;\r
+-\r
+-         u += lambda;\r
+-         v += mu;\r
+-\r
+-         xold = x;\r
+-         surface->D1(u,v,x,du,dv);\r
+-\r
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);\r
+-\r
+-      //    (*testout) << "FastProject count: " << count << endl;\r
+-\r
+-      if (count == 50) return false;\r
+-\r
+-      ap = Point<3> (x.X(), x.Y(), x.Z());\r
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++\r
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //cout << "Projection fails" << endl;
++        return false;
++      }
++\r
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
\r
+       return true;\r
+    }\r
+@@ -1038,9 +1095,9 @@
+    {\r
+       cout << "writing stl..."; cout.flush();\r
+       StlAPI_Writer writer;\r
+-      writer.RelativeMode() = Standard_False;\r
++      //writer.RelativeMode() = Standard_False;
\r
+-      writer.SetDeflection(0.02);\r
++      //writer.SetDeflection(0.02);
+       writer.Write(shape,filename);\r
\r
+       cout << "done" << endl;\r
+@@ -1059,10 +1116,10 @@
+       occgeo = new OCCGeometry;\r
\r
+       // Initiate a dummy XCAF Application to handle the IGES XCAF Document\r
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();\r
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
\r
+       // Create an XCAF Document to contain the IGES file itself\r
+-      Handle_TDocStd_Document iges_doc;\r
++      Handle(TDocStd_Document) iges_doc;
\r
+       // Check if a IGES File is already open under this handle, if so, close it to prevent\r
+       // Segmentation Faults when trying to create a new document\r
+@@ -1089,8 +1146,8 @@
+       reader.Transfer(iges_doc);\r
\r
+       // Read in the shape(s) and the colours present in the IGES File\r
+-      Handle_XCAFDoc_ShapeTool iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());\r
+-      Handle_XCAFDoc_ColorTool iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());\r
++      Handle(XCAFDoc_ShapeTool) iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
++      Handle(XCAFDoc_ColorTool) iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
\r
+       TDF_LabelSequence iges_shapes;\r
+       iges_shape_contents->GetShapes(iges_shapes);\r
+@@ -1137,10 +1194,10 @@
+       occgeo = new OCCGeometry;\r
\r
+       // Initiate a dummy XCAF Application to handle the STEP XCAF Document\r
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();\r
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
\r
+       // Create an XCAF Document to contain the STEP file itself\r
+-      Handle_TDocStd_Document step_doc;\r
++      Handle(TDocStd_Document) step_doc;
\r
+       // Check if a STEP File is already open under this handle, if so, close it to prevent\r
+       // Segmentation Faults when trying to create a new document\r
+@@ -1167,8 +1224,8 @@
+       reader.Transfer(step_doc);\r
\r
+       // Read in the shape(s) and the colours present in the STEP File\r
+-      Handle_XCAFDoc_ShapeTool step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());\r
+-      Handle_XCAFDoc_ColorTool step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());\r
++      Handle(XCAFDoc_ShapeTool) step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
++      Handle(XCAFDoc_ColorTool) step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
\r
+       TDF_LabelSequence step_shapes;\r
+       step_shape_contents->GetShapes(step_shapes);\r
+@@ -1221,7 +1278,7 @@
+       // Fixed a bug in the OpenCascade XDE Colour handling when \r
+       // opening BREP Files, since BREP Files have no colour data.\r
+       // Hence, the face_colours Handle needs to be created as a NULL handle.\r
+-      occgeo->face_colours = Handle_XCAFDoc_ColorTool();\r
++      occgeo->face_colours = Handle(XCAFDoc_ColorTool)();
+       occgeo->face_colours.Nullify();\r
+       occgeo->changed = 1;\r
+       occgeo->BuildFMap();\r
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.hpp netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.hpp       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.hpp      2017-09-11 18:08:21.233311974 +0300
+@@ -15,8 +15,8 @@
+ #include "Geom_Curve.hxx"\r
+ #include "Geom2d_Curve.hxx"\r
+ #include "Geom_Surface.hxx"\r
+-#include "GeomAPI_ProjectPointOnSurf.hxx"\r
+-#include "GeomAPI_ProjectPointOnCurve.hxx"\r
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "BRepTools.hxx"\r
+ #include "TopExp.hxx"\r
+ #include "BRepBuilderAPI_MakeVertex.hxx"\r
+@@ -42,8 +42,8 @@
+ #include "Geom_Curve.hxx"\r
+ #include "Geom2d_Curve.hxx"\r
+ #include "Geom_Surface.hxx"\r
+-#include "GeomAPI_ProjectPointOnSurf.hxx"\r
+-#include "GeomAPI_ProjectPointOnCurve.hxx"\r
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "TopoDS_Wire.hxx"\r
+ #include "BRepTools_WireExplorer.hxx"\r
+ #include "BRepTools.hxx"\r
+@@ -68,18 +68,26 @@
+ #include "IGESToBRep_Reader.hxx"\r
+ #include "Interface_Static.hxx"\r
+ #include "GeomAPI_ExtremaCurveCurve.hxx"\r
+-#include "Standard_ErrorHandler.hxx"\r
++//#include "Standard_ErrorHandler.hxx"
+ #include "Standard_Failure.hxx"\r
+ #include "ShapeUpgrade_ShellSewing.hxx"\r
+ #include "ShapeFix_Shape.hxx"\r
+ #include "ShapeFix_Wireframe.hxx"\r
++#include <Standard_Version.hxx>
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
+ #include "BRepMesh.hxx"\r
++#endif
+ #include "BRepMesh_IncrementalMesh.hxx"\r
+ #include "BRepBndLib.hxx"\r
+ #include "Bnd_Box.hxx"\r
+ #include "ShapeAnalysis.hxx"\r
+ #include "ShapeBuild_ReShape.hxx"\r
\r
++// -- Optimization: to use cached projector and classifier
++#include <NCollection_DataMap.hxx>
++class ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
\r
+ // Philippose - 29/01/2009\r
+ // OpenCascade XDE Support\r
+@@ -192,6 +200,9 @@
+    class OCCGeometry : public NetgenGeometry\r
+    {\r
+       Point<3> center;\r
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap<int,Handle(ShapeAnalysis_Surface)> fprjmap;
++      mutable NCollection_DataMap<int,BRepTopAdaptor_FClass2d*> fclsmap;
\r
+    public:\r
+       TopoDS_Shape shape;\r
+@@ -203,7 +214,7 @@
+       // OpenCascade XDE Support\r
+       // XCAF Handle to make the face colours available to the rest of\r
+       // the system\r
+-      Handle_XCAFDoc_ColorTool face_colours;\r
++      Handle(XCAFDoc_ColorTool) face_colours;
\r
+      mutable int changed;\r
+       Array<int> facemeshstatus;\r
+@@ -247,6 +258,8 @@
+      virtual void Save (string filename) const;\r
\r
\r
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
+       void BuildFMap();\r
\r
+       Box<3> GetBoundingBox()\r
+@@ -266,9 +279,14 @@
+       Point<3> Center()\r
+       {  return center;}\r
\r
+-      void Project (int surfi, Point<3> & p) const;\r
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
+       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;\r
\r
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
+       OCCSurface GetSurface (int surfi)\r
+       {\r
+          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;\r
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occmeshsurf.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occmeshsurf.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occmeshsurf.cpp   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occmeshsurf.cpp  2017-09-11 18:08:21.233311974 +0300
+@@ -6,6 +6,7 @@
+ #include <meshing.hpp>
+ #include <GeomLProp_SLProps.hxx>
+ #include <ShapeAnalysis_Surface.hxx>
++#include <GeomAPI_ProjectPointOnCurve.hxx> // -- moved here from occgeom.hpp
+ namespace netgen
+@@ -96,13 +97,16 @@
+       n.Normalize();
+       }
+-    else
++    else if ( lprop.IsNormalDefined() )
+       {
+       n(0)=lprop.Normal().X();
+       n(1)=lprop.Normal().Y();
+       n(2)=lprop.Normal().Z();
+       }
+-
++    else
++      {
++        n = 0;
++      }
+     if(glob_testout)
+       {
+       (*testout) << "u " << geominfo.u << " v " << geominfo.v 
+@@ -434,23 +438,33 @@
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
+       p = hp;
+-      return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    return ok;
+   }
+@@ -680,7 +694,8 @@
+       if (!geometry.FastProject (surfi, hnewp, u, v))
+         {
+         //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-          geometry.Project (surfi, hnewp);
++          // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++          geometry.Project (surfi, hnewp, u, v);
+         }
+       newgi.trignum = 1;
+@@ -689,7 +704,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: 
+@@ -708,14 +723,18 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi) const
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      //geometry.Project (surfi, p);
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi) const
+   {
+@@ -723,9 +742,10 @@
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+       {
+         cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-        geometry.Project (surfi, p);
++          double u, v;
++        geometry.Project (surfi, p, u, v);
++      }
+       }
+-  };
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occpkg.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occpkg.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occpkg.cpp        2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occpkg.cpp       2017-09-11 18:08:32.837057913 +0300
+@@ -485,7 +485,7 @@
+                 if (strcmp (argv[2], "Wire") == 0) sh = occgeometry->wmap(nr);\r
+                 if (strcmp (argv[2], "Edge") == 0) sh = occgeometry->emap(nr);\r
\r
+-                rebuild->Replace(sh, sh.Reversed(), Standard_False);\r
++                rebuild->Replace(sh, sh.Reversed());\r
\r
+                 TopoDS_Shape newshape = rebuild->Apply(occgeometry->shape, TopAbs_SHELL, 1);\r
+                 occgeometry->shape = newshape;\r
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/utilities.h netgen-5.3.1_SRC_modif/libsrc/occ/utilities.h
+--- netgen-5.3.1_SRC_orig/libsrc/occ/utilities.h       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/utilities.h      2017-09-11 18:08:21.233311974 +0300
+@@ -33,6 +33,7 @@
+ #include <string>
+ #include <iostream>
++#include <iomanip>
+ #include <cstdlib>
+ // #include "SALOME_Log.hxx"
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/stlgeom/Makefile.am netgen-5.3.1_SRC_modif/libsrc/stlgeom/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/stlgeom/Makefile.am   2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/stlgeom/Makefile.am  2017-09-11 18:08:21.235311757 +0300
+@@ -4,10 +4,10 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libstl.la 
++noinst_LTLIBRARIES = libstl.la 
+ if NGGUI
+-lib_LTLIBRARIES += libstlvis.la 
++lib_LTLIBRARIES = libstlvis.la 
+ endif
+ libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
+@@ -16,6 +16,5 @@
+ libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
+ libstlvis_la_LIBADD = libstl.la
+-libstl_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+ # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la 
+diff -Naur netgen-5.3.1_SRC_orig/nglib/Makefile.am netgen-5.3.1_SRC_modif/nglib/Makefile.am
+--- netgen-5.3.1_SRC_orig/nglib/Makefile.am    2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_SRC_modif/nglib/Makefile.am   2017-09-11 18:08:21.235311757 +0300
+@@ -14,6 +14,9 @@
+       $(top_builddir)/libsrc/stlgeom/libstl.la \
+       $(top_builddir)/libsrc/occ/libocc.la \
+       $(top_builddir)/libsrc/meshing/libmesh.la \
++      $(top_builddir)/libsrc/general/libgen.la \
++      $(top_builddir)/libsrc/gprim/libgprim.la \
++      $(top_builddir)/libsrc/linalg/libla.la
+       $(OCCLIBS) $(MPI_LIBS)
+ libnglib_la_LDFLAGS = -avoid-version
+diff -Naur netgen-5.3.1_SRC_orig/nglib/nglib.h netgen-5.3.1_SRC_modif/nglib/nglib.h
+--- netgen-5.3.1_SRC_orig/nglib/nglib.h        2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_SRC_modif/nglib/nglib.h       2017-09-11 18:08:21.233311974 +0300
+@@ -24,7 +24,7 @@
+ // Philippose - 14.02.2009\r
+ // Modifications for creating a DLL in Windows\r
+ #ifdef WIN32\r
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS\r
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
+       #define DLL_HEADER   __declspec(dllexport)\r
+    #else\r
+       #define DLL_HEADER   __declspec(dllimport)\r
diff --git a/products/patches/netgen-5.3.1_OCCT-7.3_Windows-10_Visual-2017.patch b/products/patches/netgen-5.3.1_OCCT-7.3_Windows-10_Visual-2017.patch
new file mode 100644 (file)
index 0000000..321c98b
--- /dev/null
@@ -0,0 +1,16318 @@
+--- /dev/null
++++ netgen/CMakeLists.txt
+@@ -0,0 +1,75 @@
++# Copyright (C) 2016 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
++#
++CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR)
++INCLUDE(CMakeDependentOption)
++
++PROJECT(netgen C CXX)
++
++# Ensure a proper linker behavior:
++CMAKE_POLICY(SET CMP0003 NEW)
++
++# Versioning
++# ===========
++# Project name, upper case
++STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
++
++SET(${PROJECT_NAME_UC}_MAJOR_VERSION 5)
++SET(${PROJECT_NAME_UC}_MINOR_VERSION 3)
++SET(${PROJECT_NAME_UC}_PATCH_VERSION 1)
++SET(${PROJECT_NAME_UC}_VERSION
++  ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
++
++# Common CMake macros
++# ===================
++LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
++# Detect platform
++INCLUDE(FindPLATFORM) 
++# Detect OCCT
++INCLUDE(FindCAS)
++
++# Detect ZLIB on Windows
++IF(WIN32)
++  SET(ZLIB_ROOT_DIR $ENV{ZLIB_ROOT_DIR})
++  IF(EXISTS ${ZLIB_ROOT_DIR})
++    SET(ZLIB_ROOT ${ZLIB_ROOT_DIR})
++    INCLUDE(FindZLIB)
++    IF (NOT ${ZLIB_FOUND})
++      MESSAGE(FATAL_ERROR "We absolutely need the zlib library, please check zlib installation !")
++    ENDIF()
++  ELSE()
++    MESSAGE(FATAL_ERROR "We absolutely need the zlib library, please define ZLIB_ROOT_DIR !")
++  ENDIF()
++ENDIF()
++
++
++# Common definitions
++# ==================
++ADD_DEFINITIONS(-DNO_PARALLEL_THREADS)
++ADD_DEFINITIONS(-DOCCGEOMETRY)
++
++# Target directories
++SET(NETGEN_INSTALL_BINS "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Install path: netgen binaries")
++SET(NETGEN_INSTALL_LIBS "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Install path: netgen libs")
++SET(NETGEN_INSTALL_HEADERS "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Install path: netgen headers")
++SET(NETGEN_INSTALL_CMAKE "${CMAKE_INSTALL_PREFIX}/cmake" CACHE PATH "Install path: netgen cmake files")
++
++# Sub-directories
++ADD_SUBDIRECTORY(nglib)
++ADD_SUBDIRECTORY(cmake)
++
+--- netgen_ref/Makefile.am
++++ netgen/Makefile.am
+@@ -2,7 +2,7 @@
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ # TESTS = ng/netgen -batchmode
+--- netgen_ref/Makefile.in
++++ netgen/Makefile.in
+@@ -280,7 +280,7 @@
+ top_srcdir = @top_srcdir@
+ ACLOCAL_AMFLAGS = -I m4
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+--- /dev/null
++++ netgen/cmake/CMakeLists.txt
+@@ -0,0 +1,22 @@
++# Copyright (C) 2016 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
++#
++
++IF(WIN32)
++ INSTALL(FILES FindZLIB.cmake DESTINATION ${NETGEN_INSTALL_CMAKE})
++ENDIF()
+\ No newline at end of file
+--- /dev/null
++++ netgen/cmake/FindCAS.cmake
+@@ -0,0 +1,152 @@
++#  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.
++#
++#  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
++#
++
++SET(CASROOT $ENV{CASROOT})
++ADD_DEFINITIONS(-DLIN -DLINTEL -DCSFDB)
++ADD_DEFINITIONS(-DNo_exception)
++ADD_DEFINITIONS(-DHAVE_LIMITS_H)
++
++IF(CMAKE_SIZEOF_VOID_P STREQUAL 8)
++  ADD_DEFINITIONS(-D_OCC64)
++ENDIF(CMAKE_SIZEOF_VOID_P STREQUAL 8)
++
++IF(NOT WINDOWS)
++  FIND_LIBRARY(Xmu Xmu)
++  IF(Xmu)
++    SET(CAS_LDPATH ${Xmu})
++  ENDIF(Xmu)
++ENDIF(NOT WINDOWS)
++
++IF(WINDOWS)
++  IF(CMAKE_BUILD_TYPE STREQUAL Debug)
++    SET(CASROOT_LIBDIR ${CASROOT}/win32/libd ${CASROOT}/win64/vc14/lib)
++  ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
++    SET(CASROOT_LIBDIR ${CASROOT}/win32/lib ${CASROOT}/win64/vc14/lib)
++  ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
++ELSE(WINDOWS)
++  SET(CASROOT_LIBDIR ${CASROOT}/lib)
++ENDIF(WINDOWS)
++
++SET(_CAS_VERSION_FILE_NAME Standard_Version.hxx)
++
++# Include directories:
++FIND_PATH(CAS_INCLUDE_DIRS ${_CAS_VERSION_FILE_NAME} PATHS ${CASROOT} PATH_SUFFIXES include/opencascade)
++IF(CAS_INCLUDE_DIRS)
++ELSE()
++  FIND_PATH(CAS_INCLUDE_DIRS ${_CAS_VERSION_FILE_NAME} PATHS ${CASROOT} PATH_SUFFIXES include inc)
++ENDIF()
++
++
++FIND_LIBRARY(BinLPlugin BinLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinPlugin BinPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinTObjPlugin BinTObjPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinXCAFPlugin BinXCAFPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(FWOSPlugin FWOSPlugin PATHS ${CASROOT_LIBDIR})
++
++FIND_LIBRARY(PTKernel PTKernel PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(StdLPlugin StdLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(StdPlugin StdPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKAdvTools TKAdvTools PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBin TKBin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinL TKBinL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinTObj TKBinTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinXCAF TKBinXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBO TKBO PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBool TKBool PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBRep TKBRep PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKCAF TKCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKCDF TKCDF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKernel TKernel PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKFeat TKFeat PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKFillet TKFillet PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKG2d TKG2d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKG3d TKG3d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKGeomAlgo TKGeomAlgo PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKGeomBase TKGeomBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKHLR TKHLR PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKIGES TKIGES PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKLCAF TKLCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMath TKMath PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMesh TKMesh PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMeshVS TKMeshVS PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKNIS TKNIS PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKOffset TKOffset PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKOpenGl TKOpenGl PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPCAF TKPCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPLCAF TKPLCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPrim TKPrim PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPShape TKPShape PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKService TKService PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKShapeSchema TKShapeSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKShHealing TKShHealing PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKStdLSchema TKStdLSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKStdSchema TKStdSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEP TKSTEP PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEP209 TKSTEP209 PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEPAttr TKSTEPAttr PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEPBase TKSTEPBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTL TKSTL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKTObj TKTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKTopAlgo TKTopAlgo PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKV2d TKV2d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKV3d TKV3d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKVRML TKVRML PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXCAF TKXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXCAFSchema TKXCAFSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXDEIGES TKXDEIGES PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXDESTEP TKXDESTEP PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXMesh TKXMesh PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXml TKXml PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlL TKXmlL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlTObj TKXmlTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlXCAF TKXmlXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXSBase TKXSBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XCAFPlugin XCAFPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlLPlugin XmlLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlPlugin XmlPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlTObjPlugin XmlTObjPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlXCAFPlugin XmlXCAFPlugin PATHS ${CASROOT_LIBDIR})
++
++SET(CAS_KERNEL ${TKernel} ${TKMath})
++SET(CAS_OCAF ${TKernel} ${TKMath} ${TKCDF} ${TKLCAF})
++SET(CAS_VIEWER ${TKService} ${TKV3d} ${TKG3d} ${TKGeomBase} ${TKBRep})
++SET(CAS_OCAFVIS ${TKCAF} ${TKBRep} ${TKG2d})
++SET(CAS_MODELER ${TKG3d} ${TKGeomBase} ${TKGeomAlgo} ${TKBRep} ${TKTopAlgo} ${TKG2d})
++
++SET(TKV3d_EA ${TKernel} ${TKMath} ${TKV3d})
++SET(TKBool_EA ${TKernel} ${TKMath} ${TKBRep} ${TKG2d} ${TKG3d} ${TKGeomBase} ${TKGeomAlgo} ${TKTopAlgo} ${TKBool})
++SET(TKBRep_EA ${TKernel} ${TKMath} ${TKBRep})
++SET(TKIGES_EA ${TKernel} ${TKMath} ${TKXSBase} ${TKBRep} ${TKIGES})
++SET(TKSTEP_EA ${TKernel} ${TKMath} ${TKXSBase} ${TKBRep} ${TKSTEP})
++SET(TKSTL_EA ${TKernel} ${TKMath} ${TKSTL})
++SET(TKCAF_EA ${TKPrim} ${TKCAF})
++
++SET(TKV3d ${TKV3d_EA})
++SET(TKBool ${TKBool_EA})
++SET(TKBRep ${TKBRep_EA})
++SET(TKIGES ${TKIGES_EA})
++SET(TKSTEP ${TKSTEP_EA})
++SET(TKSTL ${TKSTL_EA})
++SET(TKCAF ${TKCAF_EA})
++
++#LIBRARIES
++SET(OCCLIBS ${CAS_LDPATH})
++SET(OCCLIBS ${OCCLIBS} ${TKernel} ${TKGeomBase} ${TKMath} ${TKG2d} ${TKG3d} ${TKXSBase} ${TKOffset} ${TKFillet} ${TKShHealing})
++SET(OCCLIBS ${OCCLIBS} ${TKMesh} ${TKMeshVS} ${TKTopAlgo} ${TKGeomAlgo} ${TKBool} ${TKPrim} ${TKBO} ${TKIGES} ${TKBRep})
++SET(OCCLIBS ${OCCLIBS} ${TKSTEPBase} ${TKSTEP} ${TKSTL} ${TKSTEPAttr} ${TKSTEP209} ${TKXDESTEP} ${TKXDEIGES} ${TKXCAF} ${TKLCAF})
+\ No newline at end of file
+--- /dev/null
++++ netgen/cmake/FindPLATFORM.cmake
+@@ -0,0 +1,96 @@
++#  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.
++#
++#  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
++#
++
++MARK_AS_ADVANCED(ISSUE)
++FIND_FILE(ISSUE issue /etc)
++IF(ISSUE)
++  SET(WINDOWS 0)
++ELSE()
++  SET(WINDOWS 1)
++ENDIF(ISSUE)
++
++IF(WINDOWS)
++  SET(MACHINE WINDOWS)
++ELSE(WINDOWS)
++  SET(MACHINE PCLINUX)
++ENDIF(WINDOWS)
++
++SET(CMAKE_INSTALL_PREFIX_ENV $ENV{CMAKE_INSTALL_PREFIX})
++IF(CMAKE_INSTALL_PREFIX_ENV)
++  SET(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX_ENV} CACHE PATH "installation prefix" FORCE)
++ENDIF(CMAKE_INSTALL_PREFIX_ENV)
++
++IF(NOT CMAKE_BUILD_TYPE)
++  SET(CMAKE_BUILD_TYPE $ENV{CMAKE_BUILD_TYPE})
++ENDIF(NOT CMAKE_BUILD_TYPE)
++
++IF(NOT CMAKE_BUILD_TYPE)
++  SET(CMAKE_BUILD_TYPE Release)
++ENDIF(NOT CMAKE_BUILD_TYPE)
++
++IF(WINDOWS)
++ELSE(WINDOWS)
++  SET(ADD_WERROR ON)
++  SET(NAMES ACCEPT_SALOME_WARNINGS ACCEPT_${MODULE}_WARNINGS I_AM_A_TROLL_I_DO_NOT_FIX_${MODULE}_WARNINGS)
++  FOREACH(name ${NAMES})
++    SET(VAL $ENV{${name}})
++    IF(X${VAL} STREQUAL X0)
++      SET(ADD_WERROR ON)
++    ENDIF(X${VAL} STREQUAL X0)
++    IF(X${VAL} STREQUAL X1)
++      SET(ADD_WERROR OFF)
++    ENDIF(X${VAL} STREQUAL X1)
++  ENDFOREACH(name ${NAMES})
++  IF(ADD_WERROR)
++    SET(CMAKE_C_FLAGS "-Werror")
++    SET(CMAKE_CXX_FLAGS "-Werror")
++  ENDIF(ADD_WERROR)
++ENDIF(WINDOWS)
++
++IF(CMAKE_BUILD_TYPE)
++  IF(WINDOWS)
++    MARK_AS_ADVANCED(CLEAR CMAKE_CONFIGURATION_TYPES)
++    SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} CACHE STRING "compilation types" FORCE)
++  ELSE(WINDOWS)
++    IF(CMAKE_BUILD_TYPE STREQUAL Debug)
++      SET(CMAKE_C_FLAGS_DEBUG "-g")
++      SET(CMAKE_CXX_FLAGS_DEBUG "-g")
++    ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
++    IF(CMAKE_BUILD_TYPE STREQUAL Release)
++      SET(CMAKE_C_FLAGS_RELEASE "-O1 -DNDEBUG")
++      SET(CMAKE_CXX_FLAGS_RELEASE "-O1 -DNDEBUG")
++    ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
++  ENDIF(WINDOWS)
++ENDIF(CMAKE_BUILD_TYPE)
++
++SET(PLATFORM_CPPFLAGS)
++SET(PLATFORM_LDFLAGS)
++SET(PLATFORM_LIBADD)
++IF(WINDOWS)
++  ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)  # To disable windows warnings for strcpy, fopen, ...
++  ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS)  # To disable windows warnings std::copy, std::transform, ...
++  ADD_DEFINITIONS(-DWNT)
++  ADD_DEFINITIONS(-DPPRO_NT) # For medfile
++  ADD_DEFINITIONS(-D_USE_MATH_DEFINES) # At least for MEDMEM
++  ADD_DEFINITIONS(-D_WIN32_WINNT=0x0500) # Windows 2000 or later API is required
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Ws2_32.lib)
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Userenv.lib) # At least for GEOM suit
++ELSE(WINDOWS)
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} -ldl)
++ENDIF(WINDOWS) 
+\ No newline at end of file
+--- /dev/null
++++ netgen/cmake/FindZLIB.cmake
+@@ -0,0 +1,45 @@
++#  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.
++#
++#  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
++#
++
++SET(_ZLIB_SDIRS)
++
++# Search in ZLIB_ROOT_DIR first
++IF(ZLIB_ROOT_DIR)
++  SET(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT_DIR} NO_DEFAULT_PATH)
++  list(APPEND _ZLIB_SDIRS _ZLIB_SEARCH_ROOT)
++ENDIF()
++
++SET(ZLIB_NAMES z zlib zdll zlib1 zlibd zlibd1 zlib1d)
++
++# Try each search configuration.
++FOREACH(search ${_ZLIB_SDIRS})
++  FIND_PATH(ZLIB_INCLUDE_DIR NAMES zlib.h        ${${search}} PATH_SUFFIXES include)
++  FIND_LIBRARY(ZLIB_LIBRARY  NAMES ${ZLIB_NAMES} ${search} PATH_SUFFIXES lib)
++ENDFOREACH()
++
++MARK_AS_ADVANCED(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
++
++
++INCLUDE(FindPackageHandleStandardArgs)
++FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
++
++IF(ZLIB_FOUND)
++    SET(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
++    SET(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
++ENDIF()
+--- netgen_ref/configure.ac
++++ netgen/configure.ac
+@@ -20,7 +20,7 @@
+ CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+ # LDFLAGS="$LDFLAGS $OPENMP_CXXFLAGS"
+-AM_PROG_AR
++m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+ AC_PROG_LIBTOOL
+ LT_INIT
+@@ -42,8 +42,8 @@
+ if test a$occon = atrue ; then
+-      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc -I/usr/include/opencascade"])
+-      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
++      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/include/opencascade"])
++      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF"])
+ #  -lTKDCAF
+--- netgen_ref/libsrc/csg/Makefile.am
++++ netgen/libsrc/csg/Makefile.am
+@@ -8,7 +8,7 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include  $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libcsg.la
++noinst_LTLIBRARIES = libcsg.la
+ libcsg_la_SOURCES = algprim.cpp brick.cpp   \
+@@ -17,12 +17,9 @@
+ manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
+ solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp
+-libcsg_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+-
+-
+ if NGGUI
+-lib_LTLIBRARIES += libcsgvis.la 
++lib_LTLIBRARIES = libcsgvis.la 
+ libcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp
+ libcsgvis_la_LIBADD = libcsg.la
+--- netgen_ref/libsrc/csg/specpoin.hpp
++++ netgen/libsrc/csg/specpoin.hpp
+@@ -8,10 +8,12 @@
+ /* Date:   01. Okt. 95                                                    */
+ /**************************************************************************/
++#include <myadt.hpp>
++
+ namespace netgen
+ {
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+   /*
+--- netgen_ref/libsrc/general/array.hpp
++++ netgen/libsrc/general/array.hpp
+@@ -50,7 +50,7 @@
+     {
+ #ifdef DEBUG
+       if (i-BASE < 0 || i-BASE >= size)
+-      cout << "array<" << typeid(T).name() << "> out of range, i = " << i << ", s = " << size << endl;
++      std::cout << "array<" << typeid(T).name() << "> out of range, i = " << i << ", s = " << size << std::endl;
+ #endif
+       return data[i-BASE]; 
+@@ -69,9 +69,9 @@
+     {
+ #ifdef DEBUG
+       if (i < 1 || i > size)
+-      cout << "Array<" << typeid(T).name() 
++      std::cout << "Array<" << typeid(T).name() 
+            << ">::Elem out of range, i = " << i
+-           << ", s = " << size << endl;
++           << ", s = " << size << std::endl;
+ #endif
+       return ((T*)data)[i-1]; 
+@@ -82,8 +82,8 @@
+     {
+ #ifdef DEBUG
+       if (i < 1 || i > size)
+-      cout << "Array<" << typeid(T).name() << ">::Get out of range, i = " << i
+-           << ", s = " << size << endl;
++      std::cout << "Array<" << typeid(T).name() << ">::Get out of range, i = " << i
++           << ", s = " << size << std::endl;
+ #endif
+       return ((const T*)data)[i-1]; 
+@@ -94,8 +94,8 @@
+     { 
+ #ifdef DEBUG
+       if (i < 1 || i > size)
+-      cout << "Array<" << typeid(T).name() << ">::Set out of range, i = " << i
+-           << ", s = " << size << endl;
++      std::cout << "Array<" << typeid(T).name() << ">::Set out of range, i = " << i
++           << ", s = " << size << std::endl;
+ #endif
+       ((T*)data)[i-1] = el; 
+@@ -151,7 +151,7 @@
+   inline ostream & operator<< (ostream & s, const FlatArray<T,BASE,TIND> & a)
+   {
+     for (TIND i = a.Begin(); i < a.End(); i++)
+-      s << i << ": " << a[i] << endl;
++      s << i << ": " << a[i] << std::endl;
+     return s;
+   }
+@@ -435,7 +435,7 @@
+   inline ostream & operator<< (ostream & s, const IndirectArray<T1,T2> & ia)
+   {
+     for (int i = ia.Begin(); i < ia.End(); i++)
+-      s << i << ": " << ia[i] << endl;
++      s << i << ": " << ia[i] << std::endl;
+     return s;
+   }
+   
+@@ -551,7 +551,7 @@
+     void PrintMemInfo (ostream & ost) const
+     {
+       ost << Size() << " elements of size " << sizeof(T) << " = " 
+-        << Size() * sizeof(T) << endl;
++        << Size() * sizeof(T) << std::endl;
+     }
+     MoveableArray & operator= (const T & el)
+@@ -593,7 +593,7 @@
+   inline ostream & operator<< (ostream & ost, MoveableArray<T> & a)
+   {
+     for (int i = 0; i < a.Size(); i++)
+-      ost << i << ": " << a[i] << endl;
++      ost << i << ": " << a[i] << std::endl;
+     return ost;
+   }
+   */
+--- netgen_ref/libsrc/general/hashtabl.hpp
++++ netgen/libsrc/general/hashtabl.hpp
+@@ -182,9 +182,9 @@
+   ///
+   void PrintMemInfo (ostream & ost) const
+   {
+-    ost << "Hash: " << endl;
++    ost << "Hash: " << std::endl;
+     hash.PrintMemInfo (ost);
+-    ost << "Cont: " << endl;
++    ost << "Cont: " << std::endl;
+     cont.PrintMemInfo (ost);
+   }
+@@ -212,7 +212,7 @@
+     void operator++ (int)
+     {
+-      // cout << "begin Operator ++: bagnr = " << bagnr << " -  pos = " << pos << endl;
++      // std::cout << "begin Operator ++: bagnr = " << bagnr << " -  pos = " << pos << std::endl;
+       pos++;
+       while (bagnr < ht.GetNBags() && 
+            pos == ht.GetBagSize(bagnr+1))
+@@ -220,7 +220,7 @@
+         pos = 0;
+         bagnr++;
+       }
+-      // cout << "end Operator ++: bagnr = " << bagnr << " - pos = " << pos << endl;
++      // std::cout << "end Operator ++: bagnr = " << bagnr << " - pos = " << pos << std::endl;
+     }
+     bool operator != (int i) const
+@@ -264,7 +264,7 @@
+   for (typename INDEX_2_HASHTABLE<T>::Iterator it = ht.Begin();
+        it != ht.End(); it++)
+     {
+-      ost << ht.GetHash(it) << ": " << ht.GetData(it) << endl;
++      ost << ht.GetHash(it) << ": " << ht.GetData(it) << std::endl;
+     }
+   return ost;
+@@ -375,7 +375,7 @@
+     void operator++ (int)
+     {
+-      // cout << "begin Operator ++: bagnr = " << bagnr << " -  pos = " << pos << endl;
++      // std::cout << "begin Operator ++: bagnr = " << bagnr << " -  pos = " << pos << std::endl;
+       pos++;
+       while (bagnr < ht.GetNBags() && 
+            pos == ht.GetBagSize(bagnr+1))
+@@ -383,7 +383,7 @@
+         pos = 0;
+         bagnr++;
+       }
+-      // cout << "end Operator ++: bagnr = " << bagnr << " - pos = " << pos << endl;
++      // std::cout << "end Operator ++: bagnr = " << bagnr << " - pos = " << pos << std::endl;
+     }
+     bool operator != (int i) const
+@@ -433,7 +433,7 @@
+   for (typename INDEX_3_HASHTABLE<T>::Iterator it = ht.Begin();
+        it != ht.End(); it++)
+     {
+-      ost << ht.GetHash(it) << ": " << ht.GetData(it) << endl;
++      ost << ht.GetHash(it) << ": " << ht.GetData(it) << std::endl;
+     }
+   return ost;
+@@ -747,7 +747,7 @@
+       INDEX_2 hash;
+       T data;
+       ht.GetData (i, hash, data);
+-      ost << "hash = " << hash << ", data = " << data << endl;
++      ost << "hash = " << hash << ", data = " << data << std::endl;
+       }
+   return ost;
+ }
+@@ -917,9 +917,9 @@
+   void PrintMemInfo (ostream & ost) const
+   {
+-    cout << "Hashtable: " << Size() 
++    std::cout << "Hashtable: " << Size() 
+          << " entries of size " << sizeof(INDEX_3) << " + " << sizeof(T) 
+-         << " = " << Size() * (sizeof(INDEX_3) + sizeof(T)) << " bytes" << endl;
++         << " = " << Size() * (sizeof(INDEX_3) + sizeof(T)) << " bytes" << std::endl;
+     
+   }
+@@ -947,7 +947,7 @@
+       INDEX_3 hash;
+       T data;
+       ht.GetData (i, hash, data);
+-      ost << "hash = " << hash << ", data = " << data << endl;
++      ost << "hash = " << hash << ", data = " << data << std::endl;
+       }
+   return ost;
+ }
+@@ -1079,9 +1079,9 @@
+ template<class T>
+ inline void INDEX_3_HASHTABLE<T> :: PrintMemInfo (ostream & ost) const
+   {
+-    ost << "Hash: " << endl;
++    ost << "Hash: " << std::endl;
+     hash.PrintMemInfo (ost);
+-    ost << "Cont: " << endl;
++    ost << "Cont: " << std::endl;
+     cont.PrintMemInfo (ost);
+   }
+@@ -1146,9 +1146,9 @@
+ template<class T>
+ inline void INDEX_HASHTABLE<T> :: PrintMemInfo (ostream & ost) const
+   {
+-    ost << "Hash: " << endl;
++    ost << "Hash: " << std::endl;
+     hash.PrintMemInfo (ost);
+-    ost << "Cont: " << endl;
++    ost << "Cont: " << std::endl;
+     cont.PrintMemInfo (ost);
+   }
+@@ -1249,11 +1249,11 @@
+ inline void INDEX_2_CLOSED_HASHTABLE<T> :: 
+ PrintMemInfo (ostream & ost) const
+ {
+-  cout << "Hashtable: " << Size() 
++  std::cout << "Hashtable: " << Size() 
+        << " entries of size " << sizeof(INDEX_2) << " + " << sizeof(T) 
+        << " = " << Size() * (sizeof(INDEX_2) + sizeof(T)) << " bytes." 
+        << " Used els: " << UsedElements() 
+-       << endl;
++       << std::endl;
+ }
+@@ -1356,9 +1356,9 @@
+ inline void INDEX_3_CLOSED_HASHTABLE<T> :: 
+ PrintMemInfo (ostream & ost) const
+ {
+-  cout << "Hashtable: " << Size() 
++  std::cout << "Hashtable: " << Size() 
+        << " entries of size " << sizeof(INDEX_3) << " + " << sizeof(T) 
+-       << " = " << Size() * (sizeof(INDEX_3) + sizeof(T)) << " bytes" << endl;
++       << " = " << Size() * (sizeof(INDEX_3) + sizeof(T)) << " bytes" << std::endl;
+ }
+ */
+--- netgen_ref/libsrc/general/table.hpp
++++ netgen/libsrc/general/table.hpp
+@@ -210,7 +210,7 @@
+   { 
+ #ifdef DEBUG
+     if (i-BASE < 0 || i-BASE >= data.Size())
+-      cout << "table out of range, i = " << i << ", s = " << data.Size() << endl;
++      std::cout << "table out of range, i = " << i << ", s = " << data.Size() << std::endl;
+ #endif
+     return FlatArray<T> (data[i-BASE].size, (T*)data[i-BASE].col);
+--- netgen_ref/libsrc/general/template.hpp
++++ netgen/libsrc/general/template.hpp
+@@ -26,10 +26,10 @@
+ DLL_HEADER extern ostream * testout;
+ /** use instead of cout */
+-extern ostream * mycout;
++DLL_HEADER extern ostream * mycout;
+ /** error output stream */
+-extern ostream * myerr;
++DLL_HEADER extern ostream * myerr;
+ /** Error messages display.
+   Error messages are displayed by this function */
+--- netgen_ref/libsrc/geom2d/Makefile.am
++++ netgen/libsrc/geom2d/Makefile.am
+@@ -4,16 +4,15 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libgeom2d.la 
++noinst_LTLIBRARIES = libgeom2d.la 
+ if NGGUI
+-lib_LTLIBRARIES += libgeom2dvis.la 
++lib_LTLIBRARIES = libgeom2dvis.la 
+ endif
+ libgeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp
+-libgeom2d_la_LIBADD =         $(top_builddir)/libsrc/meshing/libmesh.la
+ libgeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp
+ libgeom2dvis_la_LIBADD = libgeom2d.la
+--- netgen_ref/libsrc/gprim/spline.hpp
++++ netgen/libsrc/gprim/spline.hpp
+@@ -55,7 +55,7 @@
+     /// returns a (not necessarily unit-length) tangent vector for 0 <= t <= 1
+     virtual Vec<D> GetTangent (const double t) const
+     { 
+-      cerr << "GetTangent not implemented for spline base-class"  << endl; 
++      std::cerr << "GetTangent not implemented for spline base-class"  << std::endl; 
+       Vec<D> dummy; return dummy;
+     }
+@@ -100,10 +100,10 @@
+     virtual string GetType(void) const {return "splinebase";}
+     virtual void Project (const Point<D> point, Point<D> & point_on_curve, double & t) const
+-    { cerr << "Project not implemented for spline base-class" << endl;}
++    { std::cerr << "Project not implemented for spline base-class" << std::endl;}
+     virtual void GetRawData (Array<double> & data) const
+-    { cerr << "GetRawData not implemented for spline base-class" << endl;}
++    { std::cerr << "GetRawData not implemented for spline base-class" << std::endl;}
+   };
+@@ -300,7 +300,7 @@
+   template<int D>
+-  void SplineSeg<D> :: PrintCoeff (ostream & ost) const
++  void SplineSeg<D> :: PrintCoeff (std::ostream & ost) const
+   {
+     Vector u(6);
+@@ -308,7 +308,7 @@
+     for ( int i=0; i<6; i++)
+       ost << u[i] << "  ";
+-    ost << endl;
++    ost << std::endl;
+   }
+--- netgen_ref/libsrc/include/mystdlib.h
++++ netgen/libsrc/include/mystdlib.h
+@@ -66,6 +66,7 @@
+ #  ifdef MSVC_EXPRESS
+ #   include <pthread.h>
+ #  else
++    #define _AFXDLL
+ #   include <afxwin.h>
+ #   include <afxmt.h>
+ #  endif // MSVC_EXPRESS
+--- netgen_ref/libsrc/interface/Makefile.am
++++ netgen/libsrc/interface/Makefile.am
+@@ -2,14 +2,11 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface  $(MPI_INCLUDES) $(TCL_INCLUDES) -DOPENGL
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libinterface.la
++noinst_LTLIBRARIES = libinterface.la
+ libinterface_la_SOURCES = nginterface.cpp nginterface_v2.cpp \
+       read_fnf_mesh.cpp readtetmesh.cpp readuser.cpp writeabaqus.cpp writediffpack.cpp \
+       writedolfin.cpp writeelmer.cpp writefeap.cpp writefluent.cpp writegmsh.cpp writejcm.cpp \
+       writepermas.cpp writetecplot.cpp writetet.cpp writetochnog.cpp writeuser.cpp \
+       wuchemnitz.cpp writegmsh2.cpp writeOpenFOAM15x.cpp 
+-
+-
+-libinterface_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la
+ # libinterface_la_LDFLAGS = -rdynamic
+--- netgen_ref/libsrc/interface/nginterface.cpp
++++ netgen/libsrc/interface/nginterface.cpp
+@@ -1,3 +1,18 @@
++#ifdef _MSC_VER
++#ifndef MSVC_EXPRESS
++
++#define _AFXDLL
++#define WINVER 0x0A00
++#define _WIN32_WINNT 0x0A00
++
++#include <Afxwin.h>
++#include <winsock2.h>
++#include <winsock.h>
++#include <windows.h>
++
++#endif
++#endif
++
+ #include <mystdlib.h>
+ #include <meshing.hpp>
+@@ -10,7 +25,6 @@
+ #include "nginterface.h"
+ #include "../visualization/soldata.hpp"
+-
+ #ifdef _MSC_VER
+ // Philippose - 30/01/2009
+--- netgen_ref/libsrc/linalg/densemat.hpp
++++ netgen/libsrc/linalg/densemat.hpp
+@@ -62,24 +62,24 @@
+ #ifdef DEBUG
+     if (prod.Size() != height)
+       {
+-      (*myerr) << "Mult: wrong vector size " << endl;
++      (*myerr) << "Mult: wrong vector size " << std::endl;
+       }
+     if (!height) 
+       {
+-      cout << "DenseMatrix::Mult height = 0" << endl;
++      std::cout << "DenseMatrix::Mult height = 0" << std::endl;
+       }
+     if (!width) 
+       {
+-      cout << "DenseMatrix::Mult width = 0" << endl;
++      std::cout << "DenseMatrix::Mult width = 0" << std::endl;
+       }
+     
+     if (width != v.Size())
+       {
+-      (*myerr) << "\nMatrix and Vector don't fit" << endl;
++      (*myerr) << "\nMatrix and Vector don't fit" << std::endl;
+       }
+     else if (Height() != prod.Size())
+       {
+-      (*myerr) << "Base_Matrix::operator*(Vector): prod vector not ok" << endl;
++      (*myerr) << "Base_Matrix::operator*(Vector): prod vector not ok" << std::endl;
+       }
+     else
+ #endif
+@@ -208,7 +208,7 @@
+     /*    
+     if (prod.Size() != height)
+       {
+-      cerr << "MatrixFixWidth::Mult: wrong vector size " << endl;
++      cerr << "MatrixFixWidth::Mult: wrong vector size " << std::endl;
+       assert (1);
+       }
+     */    
+@@ -268,7 +268,7 @@
+     {
+       for (int j = 0; j < m.Width(); j++)
+       ost << m.Get(i+1,j+1) << " ";
+-      ost << endl;
++      ost << std::endl;
+     }
+   return ost;
+ };
+--- netgen_ref/libsrc/meshing/Makefile.am
++++ netgen/libsrc/meshing/Makefile.am
+@@ -15,7 +15,7 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libmesh.la
++noinst_LTLIBRARIES = libmesh.la
+ libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
+       clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp            \
+@@ -30,8 +30,5 @@
+       topology.cpp triarls.cpp validate.cpp zrefine.cpp bcfunctions.cpp   \
+       parallelmesh.cpp  paralleltop.cpp  paralleltop.hpp basegeom.cpp 
+-libmesh_la_LIBADD =  $(top_builddir)/libsrc/linalg/libla.la \
+-      $(top_builddir)/libsrc/gprim/libgprim.la \
+-      $(top_builddir)/libsrc/general/libgen.la \
+-      -lz
++libmesh_la_LIBADD = -lz
+--- netgen_ref/libsrc/meshing/classifyhpel.hpp
++++ netgen/libsrc/meshing/classifyhpel.hpp
+@@ -64,11 +64,11 @@
+       
+       if (debug)
+         {
+-          cout << "debug" << endl;
+-          *testout  << "debug" << endl;
+-          *testout << "ep = " << ep1 << ep2 << ep3 << ep4 << endl;
+-          *testout << "cp = " << cp1 << cp2 << cp3 << cp4 << endl;
+-          *testout << "edge = " << isedge1 << isedge2 << isedge3 << isedge4 << isedge5 << isedge6 << endl;
++          std::cout << "debug" << std::endl;
++          *testout  << "debug" << std::endl;
++          *testout << "ep = " << ep1 << ep2 << ep3 << ep4 << std::endl;
++          *testout << "cp = " << cp1 << cp2 << cp3 << cp4 << std::endl;
++          *testout << "edge = " << isedge1 << isedge2 << isedge3 << isedge4 << isedge5 << isedge6 << std::endl;
+         }
+@@ -402,18 +402,18 @@
+       }
+   
+   
+-  if (debug) cout << "type = " << type << endl;
++  if (debug) std::cout << "type = " << type << std::endl;
+   if (type == HP_NONE)
+     {
+       //     cnt_undef++;
+-      (*testout) << "undefined element" << endl
+-               << "cp = " << cp1 << cp2 << cp3 << cp4 << endl
+-               << "ep = " << ep1 << ep2 << ep3 << ep4 << endl
++      (*testout) << "undefined element" << std::endl
++               << "cp = " << cp1 << cp2 << cp3 << cp4 << std::endl
++               << "ep = " << ep1 << ep2 << ep3 << ep4 << std::endl
+                << "isedge = " << isedge1 << isedge2 << isedge3 
+-               << isedge4 << isedge5 << isedge6 << endl
+-               << "isface = " << isface1 << isface2 << isface3 << isface4 << endl;
+-      cout << "undefined element !!! " << endl;
++               << isedge4 << isedge5 << isedge6 << std::endl
++               << "isface = " << isface1 << isface2 << isface3 << isface4 << std::endl;
++      std::cout << "undefined element !!! " << std::endl;
+       
+     }
+@@ -597,7 +597,7 @@
+         
+       case 2:
+         if(sve[0] <= 1) 
+-          cout << " **** WARNING: Edge between to different singular faces should be marked singular " << endl; 
++          std::cout << " **** WARNING: Edge between to different singular faces should be marked singular " << std::endl; 
+                     
+         if(sve[1] <= 1)   
+           if(sve[2] <=1) 
+@@ -638,9 +638,9 @@
+     }
+        
+   /*
+-   *testout << " Prism with pnums " << endl; 
++   *testout << " Prism with pnums " << std::endl; 
+    for(int j=0;j<6;j++) *testout << el.pnums[j] << "\t"; 
+-   *testout << endl; 
++   *testout << std::endl; 
+    */
+   
+   if(type != HP_NONE) 
+@@ -650,9 +650,9 @@
+       for(int k=0;k<6;k++) el.pnums[k] = pnums[k]; 
+     }
+-  /* *testout << " Classified Prism with pnums " << endl; 
++  /* *testout << " Classified Prism with pnums " << std::endl; 
+      for(int j=0;j<6;j++) *testout << el.pnums[j] << "\t"; 
+-     *testout << endl; 
++     *testout << std::endl; 
+      */ 
+   return(type); 
+ }
+@@ -673,7 +673,7 @@
+   i3.Sort();
+   bool sing_face = faces.Used (i3);
+   
+-  // *testout << " facepoint " << facepoint << endl;  
++  // *testout << " facepoint " << facepoint << std::endl;  
+       
+   // Try all rotations of the trig 
+@@ -688,7 +688,7 @@
+         pnums[m] = el.PNum(p[m]); // global vertex number 
+         // *testout << pnums[m] << " \t "; 
+       }
+-      // *testout << endl ; 
++      // *testout << std::endl ; 
+       
+       if(dim == 3) 
+       {
+@@ -696,9 +696,9 @@
+         for(int k=0;k<3;k++)
+           if(!sing_face)
+             { 
+-              //      *testout << " fp [" << k << "] = " << facepoint[pnums[k]] << endl;   
+-              //      *testout << " fd.DomainIn()" <<  fd.DomainIn() << endl; 
+-              //      *testout  << " fd.DomainOut()" <<  fd.DomainOut() << endl; 
++              //      *testout << " fp [" << k << "] = " << facepoint[pnums[k]] << std::endl;   
++              //      *testout << " fd.DomainIn()" <<  fd.DomainIn() << std::endl; 
++              //      *testout  << " fd.DomainOut()" <<  fd.DomainOut() << std::endl; 
+               if( facepoint[pnums[k]]  && (facepoint[pnums[k]] ==-1 || 
+                                            facepoint[pnums[k]] == fd.DomainIn() ||   facepoint[pnums[k]] == fd.DomainOut()))
+                 point_sing[p[k]-1] = 1; 
+@@ -707,7 +707,7 @@
+         /*      *testout << " pointsing NACH FACEPOints ... FALLS EDGEPOINT UMSETZEN" ; 
+             for (int k=0;k<3;k++) *testout << "\t" << point_sing[p[k]-1] ;
+-            *testout << endl; */
++            *testout << std::endl; */
+       }
+       
+       const ELEMENT_EDGE * eledges = MeshTopology::GetEdges1(TRIG); 
+@@ -746,13 +746,13 @@
+             
+             /*  *testout << " pointsing NACH edges UND FACEEDGES UMSETZEN ... " ; 
+                   for (int k=0;k<3;k++) *testout << "\t" << point_sing[p[k]-1] ; 
+-                  *testout << endl;          
++                  *testout << std::endl;          
+                   */
+           }
+       }
+       /*
+-       *testout << " dim " << dim << endl; 
+-       *testout << " edgepoint_dom " << edgepoint_dom << endl; 
++       *testout << " dim " << dim << std::endl; 
++       *testout << " edgepoint_dom " << edgepoint_dom << std::endl; 
+        */
+       if(dim==2)
+       {
+@@ -796,7 +796,7 @@
+       if(cornerpoint.Test(el.PNum(p[k]))) 
+         point_sing[p[k]-1] = 3; 
+       
+-      *testout << "point_sing = " << point_sing[0] << point_sing[1] << point_sing[2] << endl;
++      *testout << "point_sing = " << point_sing[0] << point_sing[1] << point_sing[2] << std::endl;
+       if(edge_sing[0] + edge_sing[1] + edge_sing[2] == 0) 
+         { 
+@@ -854,21 +854,21 @@
+           else if (edge_sing[2] && edge_sing[1] && edge_sing[0])
+             type = HP_TRIG_3SINGEDGES; 
+      
+-      //  cout << " run for " <<  j << " gives type " << type << endl; 
+-      //*testout << " run for " <<  j << " gives type " << type << endl; 
++      //  std::cout << " run for " <<  j << " gives type " << type << std::endl; 
++      //*testout << " run for " <<  j << " gives type " << type << std::endl; 
+       if(type!=HP_NONE) break;
+     }
+-  *testout << "type = " << type << endl;
++  *testout << "type = " << type << std::endl;
+     
+   for(int k=0;k<3;k++) el[k] = pnums[k]; 
+   /*if(type != HP_NONE) 
+     {
+      
+-    cout << " TRIG with pnums " << pnums[0] << "\t"  << 
+-    pnums[1] << "\t"  << pnums[2] << endl; 
+-    cout << " type "  << type << endl; 
++    std::cout << " TRIG with pnums " << pnums[0] << "\t"  << 
++    pnums[1] << "\t"  << pnums[2] << std::endl; 
++    std::cout << " type "  << type << std::endl; 
+     }
+   */
+       return(type);
+@@ -921,7 +921,7 @@
+       ep3 |= cp3;
+       
+       
+-      // (*testout) << "cp = " << cp1 << cp2 << cp3 << ", ep = " << ep1 << ep2 << ep3 << endl;
++      // (*testout) << "cp = " << cp1 << cp2 << cp3 << ", ep = " << ep1 << ep2 << ep3 << std::endl;
+       int p[3] = { el.PNumMod (j), el.PNumMod (j+1), el.PNumMod (j+2)};
+       if(ep1)
+@@ -980,7 +980,7 @@
+             ep1 = 1; ep3=1;
+           }
+         
+-        // cout << " isedge " << isedge1 << " \t " << isedge2 << " \t " << isedge3 << endl;  
++        // std::cout << " isedge " << isedge1 << " \t " << isedge2 << " \t " << isedge3 << std::endl;  
+       
+         if (!sing_face)
+             {
+@@ -1031,11 +1031,11 @@
+       
+                 
+       /*
+-        cout << " used " << face_edges.Used (INDEX_2::Sort (el.PNumMod(j), el.PNumMod(j+1))) << endl; 
++        std::cout << " used " << face_edges.Used (INDEX_2::Sort (el.PNumMod(j), el.PNumMod(j+1))) << std::endl; 
+-        cout << " isedge " << isedge1 << " \t " << isedge2 << " \t " << isedge3 << endl; 
+-        cout << " ep " << ep1 << "\t" << ep2 << " \t " << ep3 << endl; 
+-        cout << " cp " << cp1 << "\t" << cp2 << " \t " << cp3 << endl; 
++        std::cout << " isedge " << isedge1 << " \t " << isedge2 << " \t " << isedge3 << std::endl; 
++        std::cout << " ep " << ep1 << "\t" << ep2 << " \t " << ep3 << std::endl; 
++        std::cout << " cp " << cp1 << "\t" << cp2 << " \t " << cp3 << std::endl; 
+       */
+                 
+@@ -1127,9 +1127,9 @@
+   /*if(type != HP_NONE) 
+     {
+      
+-    cout << " TRIG with pnums " << pnums[0] << "\t"  << 
+-    pnums[1] << "\t"  << pnums[2] << endl; 
+-    cout << " type "  << type << endl; 
++    std::cout << " TRIG with pnums " << pnums[0] << "\t"  << 
++    pnums[1] << "\t"  << pnums[2] << std::endl; 
++    std::cout << " type "  << type << std::endl; 
+     }
+   */
+   return(type);
+@@ -1144,7 +1144,7 @@
+   int ep1(-1), ep2(-1), ep3(-1), ep4(-1), cp1(-1), cp2(-1), cp3(-1), cp4(-1);
+   int isedge1, isedge2, isedge3, isedge4;
+-  *testout << "edges = " << edges << endl;
++  *testout << "edges = " << edges << std::endl;
+   
+   for (int j = 1; j <= 4; j++)
+     {
+@@ -1301,9 +1301,9 @@
+       int sumep = ep1 + ep2 + ep3 + ep4;
+       int sumedge = isedge1 + isedge2 + isedge3 + isedge4;
+-      *testout << "isedge = " << isedge1 << isedge2 << isedge3 << isedge4 << endl;
+-      *testout << "iscp = " << cp1 << cp2 << cp3 << cp4 << endl;
+-      *testout << "isep = " << ep1 << ep2 << ep3 << ep4 << endl;
++      *testout << "isedge = " << isedge1 << isedge2 << isedge3 << isedge4 << std::endl;
++      *testout << "iscp = " << cp1 << cp2 << cp3 << cp4 << std::endl;
++      *testout << "isep = " << ep1 << ep2 << ep3 << ep4 << std::endl;
+       switch (sumedge)
+         {
+@@ -1463,23 +1463,23 @@
+           pnums[3] = el.PNumMod (j+3);
+           for (int k=0;k<4;k++) el[k] = pnums[k]; 
+       
+-          /*  cout << " QUAD with pnums " << pnums[0] << "\t"  << 
++          /*  std::cout << " QUAD with pnums " << pnums[0] << "\t"  << 
+               pnums[1] << "\t"  << pnums[2] << "\t"  << pnums[3] 
+-              << endl << " of type " << type << endl; */
++              << std::endl << " of type " << type << std::endl; */
+                                     
+           break;
+         }
+     }
+   if (type == HP_NONE)
+     {
+-      (*testout) << "undefined element" << endl
+-                 << "cp = " << cp1 << cp2 << cp3 << cp4 << endl
+-                 << "ep = " << ep1 << ep2 << ep3 << ep4 << endl
++      (*testout) << "undefined element" << std::endl
++                 << "cp = " << cp1 << cp2 << cp3 << cp4 << std::endl
++                 << "ep = " << ep1 << ep2 << ep3 << ep4 << std::endl
+                  << "isedge = " << isedge1 << isedge2 << isedge3 
+-                 << isedge4 << endl;
++                 << isedge4 << std::endl;
+     }
+           
+-  *testout << "quad type = " << type << endl;
++  *testout << "quad type = " << type << std::endl;
+   return type;  
+ }         
+@@ -1574,9 +1574,9 @@
+           int pnums[8]; 
+           for(int l=0;l<8;l++) pnums[l] = el[p[l]-1];
+           for(int l=0;l<8;l++) el[l] = pnums[l];
+-          /* cout << " HEX with pnums " << pnums[0] << "\t"  << 
++          /* std::cout << " HEX with pnums " << pnums[0] << "\t"  << 
+                pnums[1] << "\t"  << pnums[2] << "\t"  << pnums[3] << "\t"  << 
+-               pnums[4] << "\t"  <<  pnums[5] << endl << " of type " << type << endl; */
++               pnums[4] << "\t"  <<  pnums[5] << std::endl << " of type " << type << std::endl; */
+           break; 
+         }
+       }
+@@ -1623,7 +1623,7 @@
+   else
+     hpel.type = HP_SEGM_SINGCORNERS;
+   
+-  // cout << " SEGM found with " << hpel[0] << " \t" << hpel[1] << endl << " of type " << hpel.type << endl; 
++  // std::cout << " SEGM found with " << hpel[0] << " \t" << hpel[1] << std::endl << " of type " << hpel.type << std::endl; 
+   return(hpel.type) ; 
+ } 
+--- netgen_ref/libsrc/meshing/findip.hpp
++++ netgen/libsrc/meshing/findip.hpp
+@@ -75,6 +75,9 @@
+   static int timer = NgProfiler::CreateTimer ("FindInnerPoint");
+   NgProfiler::RegionTimer reg (timer);
++  if ( points.Size() < 3 )
++    return 0;
++
+   Array<Vec3d> a;
+   Array<double> c;
+   Mat<3> m, inv;
+--- netgen_ref/libsrc/meshing/global.hpp
++++ netgen/libsrc/meshing/global.hpp
+@@ -8,6 +8,8 @@
+ /* Date:   01. Okt. 95                                                    */
+ /**************************************************************************/
++#include <myadt.hpp>
++
+ /*
+   global functions and variables
+ */
+@@ -29,7 +31,7 @@
+   extern Array<int> tets_in_qualclass;
+-  class multithreadt
++  class DLL_HEADER multithreadt
+   {
+   public:
+     int pause;
+@@ -44,7 +46,7 @@
+     multithreadt();
+   };
+-  extern volatile multithreadt multithread;
++  DLL_HEADER extern volatile multithreadt multithread;
+   DLL_HEADER extern string ngdir;
+   extern DebugParameters debugparam;
+--- netgen_ref/libsrc/meshing/improve3.cpp
++++ netgen/libsrc/meshing/improve3.cpp
+@@ -1219,6 +1219,7 @@
+             tetused = 0;
+             tetused[0] = 1;
++              int nbtetused = 0;
+             for (int l = 2; l < nsuround; l++)
+               {
+@@ -1239,10 +1240,12 @@
+                             
+                             tetused[k] = 1; 
+                             suroundpts[l] = newpi;
++                              ++nbtetused;
+                           }                   
+                     }
+               }
+-
++              if ( nbtetused < nsuround )
++                continue;
+             
+             bad1 = 0;
+             for (int k = 0; k < nsuround; k++)
+--- netgen_ref/libsrc/meshing/meshclass.hpp
++++ netgen/libsrc/meshing/meshclass.hpp
+@@ -311,7 +311,7 @@
+     { return lockedpoints; }
+     /// Returns number of domains
+-    int GetNDomains() const;
++    DLL_HEADER int GetNDomains() const;
+     ///
+     int GetDimension() const 
+@@ -320,7 +320,7 @@
+     { dimension = dim; }
+     /// sets internal tables
+-    void CalcSurfacesOfNode ();
++    void DLL_HEADER CalcSurfacesOfNode ();
+     /// additional (temporarily) fix points 
+     void FixPoints (const BitArray & fixpoints);
+@@ -390,13 +390,13 @@
+     ///
+     DLL_HEADER void SetGlobalH (double h);
+     ///
+-    void SetMinimalH (double h);
++    void DLL_HEADER SetMinimalH (double h);
+     ///
+     double MaxHDomain (int dom) const;
+     ///
+     void SetMaxHDomain (const Array<double> & mhd);
+     ///
+-    double GetH (const Point3d & p) const;
++    double DLL_HEADER GetH (const Point3d & p) const;
+     ///
+     double GetMinH (const Point3d & pmin, const Point3d & pmax);
+     ///
+--- netgen_ref/libsrc/meshing/meshtype.cpp
++++ netgen/libsrc/meshing/meshtype.cpp
+@@ -1,4 +1,5 @@
+ #include <mystdlib.h>
++#include <float.h> // to get DBL_MIN defined
+ #include "meshing.hpp"  
+@@ -666,7 +667,8 @@
+         double det = trans.Det();
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -722,7 +724,8 @@
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+-            if (det <= 0)
++            // if (det <= 0)
++            if (det <= DBL_MIN)  // avoid FPE
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -806,7 +809,8 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -856,7 +860,8 @@
+         frob /= 2;
+         double det = trans.Det();
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1864,7 +1869,8 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          //if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2030,7 +2036,8 @@
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2102,7 +2109,8 @@
+         ddet *= -1;
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -2184,7 +2192,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+--- netgen_ref/libsrc/meshing/meshtype.hpp
++++ netgen/libsrc/meshing/meshtype.hpp
+@@ -15,6 +15,7 @@
+     Classes for NETGEN
+   */
++class Mesh; // added due to compilation errors on some platforms
+   enum ELEMENT_TYPE { 
+@@ -323,19 +324,19 @@
+   public:
+     ///
+-    Element2d ();
++    DLL_HEADER Element2d ();
+     ///
+-    Element2d (int anp);
++    DLL_HEADER Element2d (int anp);
+     ///
+     DLL_HEADER Element2d (ELEMENT_TYPE type);
+     ///
+-    Element2d (int pi1, int pi2, int pi3);
++    DLL_HEADER Element2d (int pi1, int pi2, int pi3);
+     ///
+-    Element2d (int pi1, int pi2, int pi3, int pi4);
++    DLL_HEADER Element2d (int pi1, int pi2, int pi3, int pi4);
+     ///
+-    ELEMENT_TYPE GetType () const { return typ; }
++    DLL_HEADER ELEMENT_TYPE GetType () const { return typ; }
+     /// 
+-    void SetType (ELEMENT_TYPE atyp)
++    DLL_HEADER  void SetType (ELEMENT_TYPE atyp)
+     {
+       typ = atyp;
+       switch (typ)
+@@ -350,9 +351,9 @@
+       }
+     }
+     ///
+-    int GetNP() const { return np; }
++    DLL_HEADER int GetNP() const { return np; }
+     ///
+-    int GetNV() const
++    DLL_HEADER int GetNV() const
+     {
+       if (typ == TRIG || typ == TRIG6)
+         return 3;
+@@ -360,7 +361,7 @@
+         {
+ #ifdef DEBUG
+           if (typ != QUAD && typ != QUAD6 && typ != QUAD8)
+-            PrintSysError ("element2d::GetNV not implemented for typ", typ)
++            PrintSysError ("element2d::GetNV not implemented for typ", typ);
+ #endif
+           return 4;
+         }
+@@ -384,95 +385,95 @@
+     }
+     ///
+-    PointIndex & operator[] (int i) { return pnum[i]; }
++    DLL_HEADER  PointIndex & operator[] (int i) { return pnum[i]; }
+     ///
+-    const PointIndex & operator[] (int i) const { return pnum[i]; }
++    DLL_HEADER const PointIndex & operator[] (int i) const { return pnum[i]; }
+-    FlatArray<const PointIndex> PNums () const 
++    DLL_HEADER  FlatArray<const PointIndex> PNums () const 
+     { return FlatArray<const PointIndex> (np, &pnum[0]); }
+     
+     ///
+-    PointIndex & PNum (int i) { return pnum[i-1]; }
++    DLL_HEADER PointIndex & PNum (int i) { return pnum[i-1]; }
+     ///
+-    const PointIndex & PNum (int i) const { return pnum[i-1]; }
++    DLL_HEADER const PointIndex & PNum (int i) const { return pnum[i-1]; }
+     ///
+-    PointIndex & PNumMod (int i) { return pnum[(i-1) % np]; }
++    DLL_HEADER PointIndex & PNumMod (int i) { return pnum[(i-1) % np]; }
+     ///
+-    const PointIndex & PNumMod (int i) const { return pnum[(i-1) % np]; }
++    DLL_HEADER const PointIndex & PNumMod (int i) const { return pnum[(i-1) % np]; }
+     ///
+     ///
+-    PointGeomInfo & GeomInfoPi (int i) { return geominfo[i-1]; }
++    DLL_HEADER PointGeomInfo & GeomInfoPi (int i) { return geominfo[i-1]; }
+     ///
+-    const PointGeomInfo & GeomInfoPi (int i) const { return geominfo[i-1]; }
++    DLL_HEADER const PointGeomInfo & GeomInfoPi (int i) const { return geominfo[i-1]; }
+     ///
+-    PointGeomInfo & GeomInfoPiMod (int i) { return geominfo[(i-1) % np]; }
++    DLL_HEADER PointGeomInfo & GeomInfoPiMod (int i) { return geominfo[(i-1) % np]; }
+     ///
+-    const PointGeomInfo & GeomInfoPiMod (int i) const { return geominfo[(i-1) % np]; }
++    DLL_HEADER const PointGeomInfo & GeomInfoPiMod (int i) const { return geominfo[(i-1) % np]; }
+-    void SetIndex (int si) { index = si; }
++    DLL_HEADER void SetIndex (int si) { index = si; }
+     ///
+-    int GetIndex () const { return index; }
++    DLL_HEADER int GetIndex () const { return index; }
+-    int GetOrder () const { return orderx; }
+-    void SetOrder (int aorder) { orderx = ordery = aorder; }
++    DLL_HEADER int GetOrder () const { return orderx; }
++    DLL_HEADER void SetOrder (int aorder) { orderx = ordery = aorder; }
+-    void GetOrder (int & ox, int & oy) const { ox = orderx, oy =ordery;};
+-    void GetOrder (int & ox, int & oy, int & oz) const { ox = orderx; oy = ordery; oz=0; }
+-    void SetOrder (int ox, int oy, int  /* oz */) { orderx = ox; ordery = oy;}
+-    void SetOrder (int ox, int oy) { orderx = ox; ordery = oy;}
++    DLL_HEADER void GetOrder (int & ox, int & oy) const { ox = orderx, oy =ordery;};
++    DLL_HEADER void GetOrder (int & ox, int & oy, int & oz) const { ox = orderx; oy = ordery; oz=0; }
++    DLL_HEADER void SetOrder (int ox, int oy, int  /* oz */) { orderx = ox; ordery = oy;}
++    DLL_HEADER void SetOrder (int ox, int oy) { orderx = ox; ordery = oy;}
+     ///
+-    void GetBox (const T_POINTS & points, Box3d & box) const;
++    DLL_HEADER void GetBox (const T_POINTS & points, Box3d & box) const;
+     /// invert orientation
+-    inline void Invert ();
++    DLL_HEADER inline void Invert ();
+     ///
+-    void Invert2 ();
++    DLL_HEADER void Invert2 ();
+     /// first point number is smallest
+-    inline void NormalizeNumbering ();
++    DLL_HEADER inline void NormalizeNumbering ();
+     ///
+-    void NormalizeNumbering2 ();
++    DLL_HEADER void NormalizeNumbering2 ();
+-    bool BadElement() const { return badel; }
++    DLL_HEADER bool BadElement() const { return badel; }
+     // friend ostream & operator<<(ostream  & s, const Element2d & el);
+     friend class Mesh;
+     /// get number of 'integration points'
+-    int GetNIP () const;
+-    void GetIntegrationPoint (int ip, Point2d & p, double & weight) const;
++    DLL_HEADER int GetNIP () const;
++    DLL_HEADER void GetIntegrationPoint (int ip, Point2d & p, double & weight) const;
+-    void GetTransformation (int ip, const Array<Point2d> & points,
++    DLL_HEADER void GetTransformation (int ip, const Array<Point2d> & points,
+                           class DenseMatrix & trans) const;
+-    void GetTransformation (int ip, class DenseMatrix & pmat,
++    DLL_HEADER void GetTransformation (int ip, class DenseMatrix & pmat,
+                           class DenseMatrix & trans) const;
+-    void GetShape (const Point2d & p, class Vector & shape) const;
+-    void GetShapeNew (const Point<2> & p, class FlatVector & shape) const;
++    DLL_HEADER void GetShape (const Point2d & p, class Vector & shape) const;
++    DLL_HEADER void GetShapeNew (const Point<2> & p, class FlatVector & shape) const;
+     /// matrix 2 * np
+-    void GetDShape (const Point2d & p, class DenseMatrix & dshape) const;
+-    void GetDShapeNew (const Point<2> & p, class MatrixFixWidth<2> & dshape) const;
++    DLL_HEADER void GetDShape (const Point2d & p, class DenseMatrix & dshape) const;
++    DLL_HEADER void GetDShapeNew (const Point<2> & p, class MatrixFixWidth<2> & dshape) const;
+     /// matrix 2 * np
+-    void GetPointMatrix (const Array<Point2d> & points,
++    DLL_HEADER void GetPointMatrix (const Array<Point2d> & points,
+                        class DenseMatrix & pmat) const; 
+-    void ComputeIntegrationPointData () const;
++    DLL_HEADER void ComputeIntegrationPointData () const;
+   
+-    double CalcJacobianBadness (const Array<Point2d> & points) const;
+-    double CalcJacobianBadness (const T_POINTS & points, 
++    DLL_HEADER double CalcJacobianBadness (const Array<Point2d> & points) const;
++    DLL_HEADER double CalcJacobianBadness (const T_POINTS & points, 
+                               const Vec<3> & n) const;
+-    double CalcJacobianBadnessDirDeriv (const Array<Point2d> & points,
++    DLL_HEADER double CalcJacobianBadnessDirDeriv (const Array<Point2d> & points,
+                                       int pi, Vec2d & dir, double & dd) const;
+-    void Delete () { deleted = 1; pnum[0] = pnum[1] = pnum[2] = pnum[3] = PointIndex::BASE-1; }
+-    bool IsDeleted () const 
++    DLL_HEADER void Delete () { deleted = 1; pnum[0] = pnum[1] = pnum[2] = pnum[3] = PointIndex::BASE-1; }
++    DLL_HEADER bool IsDeleted () const 
+     {
+ #ifdef DEBUG
+       if (pnum[0] < PointIndex::BASE && !deleted)
+@@ -483,27 +484,27 @@
+     // Philippose - 08 August 2010
+     // Access functions for the new property: visible
+-    void Visible(bool vis = 1) 
++    DLL_HEADER void Visible(bool vis = 1) 
+     { visible = vis; }
+-    bool IsVisible () const 
++    DLL_HEADER bool IsVisible () const 
+     { return visible; }
+    
+-    void SetRefinementFlag (bool rflag = 1) 
++    DLL_HEADER void SetRefinementFlag (bool rflag = 1) 
+     { refflag = rflag; }
+-    bool TestRefinementFlag () const
++    DLL_HEADER bool TestRefinementFlag () const
+     { return refflag; }
+-    void SetStrongRefinementFlag (bool rflag = 1) 
++    DLL_HEADER void SetStrongRefinementFlag (bool rflag = 1) 
+     { strongrefflag = rflag; }
+-    bool TestStrongRefinementFlag () const
++    DLL_HEADER bool TestStrongRefinementFlag () const
+     { return strongrefflag; }
+   
+-    SurfaceElementIndex NextElement() { return next; }
++    DLL_HEADER SurfaceElementIndex NextElement() { return next; }
+-    bool operator==(const Element2d & el2) const;
++    DLL_HEADER bool operator==(const Element2d & el2) const;
+-    int HasFace(const Element2d& el) const;
++    DLL_HEADER int HasFace(const Element2d& el) const;
+     ///
+     int meshdocval;
+     ///
+@@ -516,7 +517,7 @@
+   };
+-  ostream & operator<<(ostream  & s, const Element2d & el);
++  DLL_HEADER ostream & operator<<(ostream  & s, const Element2d & el);
+@@ -618,7 +619,7 @@
+         return 8;
+       default:
+ #ifdef DEBUG
+-        PrintSysError ("Element3d::GetNV not implemented for typ ", typ)
++        PrintSysError ("Element3d::GetNV not implemented for typ ", typ);
+ #endif
+           ;
+       }
+@@ -682,7 +683,7 @@
+       case PRISM12: return 5;
+       default:
+ #ifdef DEBUG
+-        PrintSysError ("element3d::GetNFaces not implemented for typ", typ)
++        PrintSysError ("element3d::GetNFaces not implemented for typ", typ);
+ #endif
+           ;
+       }
+--- netgen_ref/libsrc/occ/Makefile.am
++++ netgen/libsrc/occ/Makefile.am
+@@ -14,10 +14,10 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libocc.la
++noinst_LTLIBRARIES = libocc.la
+ if NGGUI
+-lib_LTLIBRARIES += liboccvis.la 
++lib_LTLIBRARIES = liboccvis.la 
+ endif
+--- netgen_ref/libsrc/occ/Partition_Inter2d.cxx
++++ netgen/libsrc/occ/Partition_Inter2d.cxx
+@@ -47,9 +47,7 @@
+ #include <TopOpeBRep_EdgesIntersector.hxx>
+ #include <TopOpeBRep_Point2d.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+-#include <TopTools_MapOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Edge.hxx>
+ #include <TopoDS_Vertex.hxx>
+--- netgen_ref/libsrc/occ/Partition_Inter2d.hxx
++++ netgen/libsrc/occ/Partition_Inter2d.hxx
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter2d_HeaderFile
+ #define _Partition_Inter2d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
+ #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _Standard_Real_HeaderFile
+@@ -36,11 +38,13 @@
+ #ifndef _Standard_Boolean_HeaderFile
+ #include <Standard_Boolean.hxx>
+ #endif
++
++#include <TopTools_MapOfShape.hxx>
++#include <TopTools_ListOfShape.hxx>
++
+ class BRepAlgo_AsDes;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Vertex;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+--- netgen_ref/libsrc/occ/Partition_Inter3d.cxx
++++ netgen/libsrc/occ/Partition_Inter3d.cxx
+@@ -48,7 +48,6 @@
+ #include <TopOpeBRepTool_BoxSort.hxx>
+ #include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Compound.hxx>
+ #include <TopoDS_Edge.hxx>
+@@ -206,7 +205,7 @@
+   Handle (Geom_Surface) S   = BRep_Tool::Surface(F,L);
+   if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) {
+-    S = (*(Handle_Geom_RectangularTrimmedSurface*)&S)->BasisSurface();
++    S = Handle(Geom_RectangularTrimmedSurface)::DownCast (S)->BasisSurface();
+   }
+   if (!S->IsUPeriodic() && !S->IsVPeriodic())
+     return;
+--- netgen_ref/libsrc/occ/Partition_Inter3d.hxx
++++ netgen/libsrc/occ/Partition_Inter3d.hxx
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter3d_HeaderFile
+ #define _Partition_Inter3d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
+ #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile
+@@ -36,6 +38,9 @@
+ #ifndef _TopTools_MapOfShape_HeaderFile
+ #include <TopTools_MapOfShape.hxx>
+ #endif
++#ifndef _TopTools_ListOfShape_HeaderFile
++#include <TopTools_ListOfShape.hxx>
++#endif
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+@@ -43,10 +48,7 @@
+ #include <Standard_Boolean.hxx>
+ #endif
+ class BRepAlgo_AsDes;
+-class TopTools_ListOfShape;
+-class TopTools_DataMapOfShapeShape;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Shape;
+ class TopoDS_Vertex;
+ class TopoDS_Edge;
+@@ -83,13 +85,13 @@
+    void FacesPartition(const TopoDS_Face& F1,const TopoDS_Face& F2) ;
+    Standard_Boolean IsDone(const TopoDS_Face& F1,const TopoDS_Face& F2) const;
+    TopTools_MapOfShape& TouchedFaces() ;
+-   Handle_BRepAlgo_AsDes AsDes() const;
++   Handle(BRepAlgo_AsDes) AsDes() const;
+    TopTools_MapOfShape& NewEdges() ;
+    Standard_Boolean HasSameDomainF(const TopoDS_Shape& F) const;
+    Standard_Boolean IsSameDomainF(const TopoDS_Shape& F1,const TopoDS_Shape& F2) const;
+    const TopTools_ListOfShape& SameDomain(const TopoDS_Face& F) const;
+    TopoDS_Vertex ReplaceSameDomainV(const TopoDS_Vertex& V,const TopoDS_Edge& E) const;
+-   Handle_BRepAlgo_AsDes SectionEdgesAD() const;
++   Handle(BRepAlgo_AsDes) SectionEdgesAD() const;
+    Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const;
+    Standard_Boolean HasSectionEdge(const TopoDS_Face& F) const;
+    Standard_Boolean IsSplitOn(const TopoDS_Edge& NewE,const TopoDS_Edge& OldE,const TopoDS_Face& F) const;
+@@ -121,11 +123,11 @@
+    // Fields PRIVATE
+    //
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    TopTools_DataMapOfShapeListOfShape myDone;
+    TopTools_MapOfShape myTouched;
+    TopTools_MapOfShape myNewEdges;
+-   Handle_BRepAlgo_AsDes mySectionEdgesAD;
++   Handle(BRepAlgo_AsDes) mySectionEdgesAD;
+    TopTools_DataMapOfShapeListOfShape mySameDomainFM;
+    TopTools_DataMapOfShapeShape mySameDomainVM;
+--- netgen_ref/libsrc/occ/Partition_Loop.hxx
++++ netgen/libsrc/occ/Partition_Loop.hxx
+@@ -38,8 +38,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+-
+ #ifndef _Standard_HeaderFile
+ #include <Standard.hxx>
+--- netgen_ref/libsrc/occ/Partition_Loop2d.cxx
++++ netgen/libsrc/occ/Partition_Loop2d.cxx
+@@ -210,7 +210,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -234,7 +234,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
+--- netgen_ref/libsrc/occ/Partition_Loop2d.hxx
++++ netgen/libsrc/occ/Partition_Loop2d.hxx
+@@ -24,7 +24,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+ class BRepAlgo_Image;
+--- netgen_ref/libsrc/occ/Partition_Loop3d.hxx
++++ netgen/libsrc/occ/Partition_Loop3d.hxx
+@@ -13,6 +13,9 @@
+ #ifndef _TopTools_ListOfShape_HeaderFile
+ #include <TopTools_ListOfShape.hxx>
+ #endif
++#ifndef _TopTools_MapOfOrientedShape_HeaderFile
++#include <TopTools_MapOfOrientedShape.hxx>
++#endif
+ #ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #endif
+@@ -23,8 +26,6 @@
+ #include <Standard_Real.hxx>
+ #endif
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+-class TopTools_MapOfOrientedShape;
+ class TopoDS_Edge;
+ class TopoDS_Face;
+ class gp_Vec;
+--- netgen_ref/libsrc/occ/Partition_Spliter.cxx
++++ netgen/libsrc/occ/Partition_Spliter.cxx
+@@ -48,7 +48,6 @@
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_IndexedMapOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+ #include <TopTools_SequenceOfShape.hxx>
+--- netgen_ref/libsrc/occ/Partition_Spliter.hxx
++++ netgen/libsrc/occ/Partition_Spliter.hxx
+@@ -28,9 +28,6 @@
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
+-#include <Handle_BRepAlgo_AsDes.hxx>
+-#endif
+ #ifndef _BRepAlgo_Image_HeaderFile
+ #include <BRepAlgo_Image.hxx>
+ #endif
+@@ -45,7 +42,6 @@
+ #endif
+ class BRepAlgo_AsDes;
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+@@ -129,7 +125,7 @@
+    TopTools_DataMapOfShapeShape myFaceShapeMap;
+    TopTools_DataMapOfShapeShape myInternalFaces;
+    TopTools_DataMapOfShapeShape myIntNotClFaces;
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    BRepAlgo_Image myImagesFaces;
+    BRepAlgo_Image myImagesEdges;
+    BRepAlgo_Image myImageShape;
+--- netgen_ref/libsrc/occ/occconstruction.cpp
++++ netgen/libsrc/occ/occconstruction.cpp
+@@ -28,7 +28,7 @@
+ #include <BRepAlgoAPI_Common.hxx>
+ #include <BRepAlgoAPI_Fuse.hxx>
+ #include <BRepAlgoAPI_Section.hxx>
+-#include <BRepOffsetAPI_Sewing.hxx>
++//#include <BRepOffsetAPI_Sewing.hxx>
+ //#include <BRepAlgo_Sewing.hxx>
+ #include <BRepOffsetAPI_MakeOffsetShape.hxx>
+ #include <ShapeFix_Shape.hxx>
+--- netgen_ref/libsrc/occ/occgenmesh.cpp
++++ netgen/libsrc/occ/occgenmesh.cpp
+@@ -1,1467 +1,1570 @@
+-#ifdef OCCGEOMETRY
+-
+-#include <mystdlib.h>
+-#include <occgeom.hpp>
+-#include <meshing.hpp>
+-
+-
+-namespace netgen
+-{
+-
+-#include "occmeshsurf.hpp"
+-
+-#define TCL_OK 0
+-#define TCL_ERROR 1
+-
+-#define DIVIDEEDGESECTIONS 1000
+-#define IGNORECURVELENGTH 1e-4
+-#define VSMALL 1e-10
+-
+-
+-   bool merge_solids = 1;
+-
+-
+-  // can you please explain what you intend to compute here (JS) !!!
+-   double Line :: Dist (Line l)
+-   {
+-      Vec<3> n = p1-p0;
+-      Vec<3> q = l.p1-l.p0;
+-      double nq = n*q;
+-
+-      Point<3> p = p0 + 0.5*n;
+-      double lambda = (p-l.p0)*n / (nq + VSMALL);
+-
+-      if (lambda >= 0 && lambda <= 1)
+-      {
+-         double d = (p-l.p0-lambda*q).Length();
+-         //        if (d < 1e-3) d = 1e99;
+-         return d;
+-      }
+-      else
+-         return 1e99;
+-   }
+-
+-
+-
+-   double Line :: Length ()
+-   {
+-      return (p1-p0).Length();
+-   }
+-
+-
+-
+-   inline Point<3> occ2ng (const gp_Pnt & p)
+-   {
+-      return  Point<3> (p.X(), p.Y(), p.Z());
+-   }
+-
+-
+-
+-   double ComputeH (double kappa)
+-   {
+-      double hret;
+-      kappa *= mparam.curvaturesafety;
+-
+-      if (mparam.maxh * kappa < 1)
+-         hret = mparam.maxh;
+-      else
+-         hret = 1 / (kappa + VSMALL);
+-
+-      if (mparam.maxh < hret)
+-         hret = mparam.maxh;
+-
+-      return (hret);
+-   }
+-
+-
+-
+-
+-   void RestrictHTriangle (gp_Pnt2d & par0, gp_Pnt2d & par1, gp_Pnt2d & par2,
+-                           BRepLProp_SLProps * prop, Mesh & mesh, int depth, double h = 0)
+-   {
+-      int ls = -1;
+-
+-      gp_Pnt pnt0,pnt1,pnt2;
+-
+-      prop->SetParameters (par0.X(), par0.Y());
+-      pnt0 = prop->Value();
+-
+-      prop->SetParameters (par1.X(), par1.Y());
+-      pnt1 = prop->Value();
+-
+-      prop->SetParameters (par2.X(), par2.Y());
+-      pnt2 = prop->Value();
+-
+-      double aux;
+-      double maxside = pnt0.Distance(pnt1);
+-      ls = 2;
+-      aux = pnt1.Distance(pnt2);
+-      if(aux > maxside)
+-      {
+-         maxside = aux;
+-         ls = 0;
+-      }
+-      aux = pnt2.Distance(pnt0);
+-      if(aux > maxside)
+-      {
+-         maxside = aux;
+-         ls = 1;
+-      }
+-
+-
+-
+-      gp_Pnt2d parmid;
+-
+-      parmid.SetX( (par0.X()+par1.X()+par2.X()) / 3 );
+-      parmid.SetY( (par0.Y()+par1.Y()+par2.Y()) / 3 );
+-
+-      if (depth%3 == 0)
+-      {
+-         double curvature = 0;
+-
+-         prop->SetParameters (parmid.X(), parmid.Y());
+-         if (!prop->IsCurvatureDefined())
+-         {
+-            (*testout) << "curvature not defined!" << endl;
+-            return;
+-         }
+-         curvature = max(fabs(prop->MinCurvature()),
+-            fabs(prop->MaxCurvature()));
+-
+-         prop->SetParameters (par0.X(), par0.Y());
+-         if (!prop->IsCurvatureDefined())
+-         {
+-            (*testout) << "curvature not defined!" << endl;
+-            return;
+-         }
+-         curvature = max(curvature,max(fabs(prop->MinCurvature()),
+-            fabs(prop->MaxCurvature())));
+-
+-         prop->SetParameters (par1.X(), par1.Y());
+-         if (!prop->IsCurvatureDefined())
+-         {
+-            (*testout) << "curvature not defined!" << endl;
+-            return;
+-         }
+-         curvature = max(curvature,max(fabs(prop->MinCurvature()),
+-            fabs(prop->MaxCurvature())));
+-
+-         prop->SetParameters (par2.X(), par2.Y());
+-         if (!prop->IsCurvatureDefined())
+-         {
+-            (*testout) << "curvature not defined!" << endl;
+-            return;
+-         }
+-         curvature = max(curvature,max(fabs(prop->MinCurvature()),
+-            fabs(prop->MaxCurvature())));
+-
+-         //(*testout) << "curvature " << curvature << endl;
+-
+-         if (curvature < 1e-3)
+-         {
+-            //(*testout) << "curvature too small (" << curvature << ")!" << endl;
+-            return;
+-            // return war bis 10.2.05 auskommentiert
+-         }
+-
+-
+-
+-         h = ComputeH (curvature+1e-10);
+-
+-         if(h < 1e-4*maxside)
+-            return;
+-
+-
+-         if (h > 30) return;
+-      }
+-
+-      if (h < maxside && depth < 10)
+-      {
+-         //cout << "\r h " << h << flush;
+-         gp_Pnt2d pm;
+-
+-         //cout << "h " << h << " maxside " << maxside << " depth " << depth << endl;
+-         //cout << "par0 " << par0.X() << " " << par0.Y()
+-         //<< " par1 " << par1.X() << " " << par1.Y()
+-         //   << " par2 " << par2.X() << " " << par2.Y()<< endl;
+-
+-         if(ls == 0)
+-         {
+-            pm.SetX(0.5*(par1.X()+par2.X())); pm.SetY(0.5*(par1.Y()+par2.Y()));
+-            RestrictHTriangle(pm, par2, par0, prop, mesh, depth+1, h);
+-            RestrictHTriangle(pm, par0, par1, prop, mesh, depth+1, h);
+-         }
+-         else if(ls == 1)
+-         {
+-            pm.SetX(0.5*(par0.X()+par2.X())); pm.SetY(0.5*(par0.Y()+par2.Y()));
+-            RestrictHTriangle(pm, par1, par2, prop, mesh, depth+1, h);
+-            RestrictHTriangle(pm, par0, par1, prop, mesh, depth+1, h);
+-         }
+-         else if(ls == 2)
+-         {
+-            pm.SetX(0.5*(par0.X()+par1.X())); pm.SetY(0.5*(par0.Y()+par1.Y()));
+-            RestrictHTriangle(pm, par1, par2, prop, mesh, depth+1, h);
+-            RestrictHTriangle(pm, par2, par0, prop, mesh, depth+1, h);
+-         }
+-
+-      }
+-      else
+-      {
+-         gp_Pnt pnt;
+-         Point3d p3d;
+-
+-         prop->SetParameters (parmid.X(), parmid.Y());
+-         pnt = prop->Value();
+-         p3d = Point3d(pnt.X(), pnt.Y(), pnt.Z());
+-         mesh.RestrictLocalH (p3d, h);
+-
+-         p3d = Point3d(pnt0.X(), pnt0.Y(), pnt0.Z());
+-         mesh.RestrictLocalH (p3d, h);
+-
+-         p3d = Point3d(pnt1.X(), pnt1.Y(), pnt1.Z());
+-         mesh.RestrictLocalH (p3d, h);
+-
+-         p3d = Point3d(pnt2.X(), pnt2.Y(), pnt2.Z());
+-         mesh.RestrictLocalH (p3d, h);
+-
+-         //(*testout) << "p = " << p3d << ", h = " << h << ", maxside = " << maxside << endl;
+-
+-      }
+-   }
+-
+-
+-
+-   void DivideEdge (TopoDS_Edge & edge, Array<MeshPoint> & ps,
+-                    Array<double> & params, Mesh & mesh)
+-   {
+-      double s0, s1;
+-      double maxh = mparam.maxh;
+-      int nsubedges = 1;
+-      gp_Pnt pnt, oldpnt;
+-      double svalue[DIVIDEEDGESECTIONS];
+-
+-      GProp_GProps system;
+-      BRepGProp::LinearProperties(edge, system);
+-      double L = system.Mass();
+-
+-      Handle(Geom_Curve) c = BRep_Tool::Curve(edge, s0, s1);
+-
+-      double hvalue[DIVIDEEDGESECTIONS+1];
+-      hvalue[0] = 0;
+-      pnt = c->Value(s0);
+-
+-      double olddist = 0;
+-      double dist = 0;
+-
+-      int tmpVal = (int)(DIVIDEEDGESECTIONS);
+-
+-      for (int i = 1; i <= tmpVal; i++)
+-      {
+-         oldpnt = pnt;
+-         pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
+-         hvalue[i] = hvalue[i-1] +
+-            1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
+-            pnt.Distance(oldpnt);
+-
+-         //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+-         //      <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
+-
+-         olddist = dist;
+-         dist = pnt.Distance(oldpnt);
+-      }
+-
+-      //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
+-      nsubedges = max (1, int(floor(hvalue[DIVIDEEDGESECTIONS]+0.5)));
+-
+-      ps.SetSize(nsubedges-1);
+-      params.SetSize(nsubedges+1);
+-
+-      int i = 1;
+-      int i1 = 0;
+-      do
+-      {
+-         if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
+-         {
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+-            pnt = c->Value(params[i]);
+-            ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
+-            i++;
+-         }
+-         i1++;
+-         if (i1 > DIVIDEEDGESECTIONS)
+-         {
+-            nsubedges = i;
+-            ps.SetSize(nsubedges-1);
+-            params.SetSize(nsubedges+1);
+-            cout << "divide edge: local h too small" << endl;
+-         }
+-      } while (i < nsubedges);
+-
+-      params[0] = s0;
+-      params[nsubedges] = s1;
+-
+-      if (params[nsubedges] <= params[nsubedges-1])
+-      {
+-         cout << "CORRECTED" << endl;
+-         ps.SetSize (nsubedges-2);
+-         params.SetSize (nsubedges);
+-         params[nsubedges] = s1;
+-      }
+-   }
+-
+-
+-
+-
+-   void OCCFindEdges (OCCGeometry & geom, Mesh & mesh)
+-   {
+-      const char * savetask = multithread.task;
+-      multithread.task = "Edge meshing";
+-
+-      (*testout) << "edge meshing" << endl;
+-
+-      int nvertices = geom.vmap.Extent();
+-      int nedges = geom.emap.Extent();
+-
+-      (*testout) << "nvertices = " << nvertices << endl;
+-      (*testout) << "nedges = " << nedges << endl;
+-
+-      double eps = 1e-6 * geom.GetBoundingBox().Diam();
+-
+-      for (int i = 1; i <= nvertices; i++)
+-      {
+-         gp_Pnt pnt = BRep_Tool::Pnt (TopoDS::Vertex(geom.vmap(i)));
+-         MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
+-
+-         bool exists = 0;
+-         if (merge_solids)
+-            for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)
+-               {
+-                  exists = 1;
+-                  break;
+-               }
+-
+-               if (!exists)
+-                  mesh.AddPoint (mp);
+-      }
+-
+-      (*testout) << "different vertices = " << mesh.GetNP() << endl;
+-
+-
+-      int first_ep = mesh.GetNP()+1;
+-
+-      Array<int> face2solid[2];
+-      for (int i = 0; i<2; i++)
+-      {
+-         face2solid[i].SetSize (geom.fmap.Extent());
+-         face2solid[i] = 0;
+-      }
+-
+-      int solidnr = 0;
+-      for (TopExp_Explorer exp0(geom.shape, TopAbs_SOLID); exp0.More(); exp0.Next())
+-      {
+-         solidnr++;
+-         for (TopExp_Explorer exp1(exp0.Current(), TopAbs_FACE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Face face = TopoDS::Face(exp1.Current());
+-            int facenr = geom.fmap.FindIndex(face);
+-
+-            if (face2solid[0][facenr-1] == 0)
+-               face2solid[0][facenr-1] = solidnr;
+-            else
+-               face2solid[1][facenr-1] = solidnr;
+-         }
+-      }
+-
+-
+-      int total = 0;
+-      for (int i3 = 1; i3 <= geom.fmap.Extent(); i3++)
+-         for (TopExp_Explorer exp2(geom.fmap(i3), TopAbs_WIRE); exp2.More(); exp2.Next())
+-            for (TopExp_Explorer exp3(exp2.Current(), TopAbs_EDGE); exp3.More(); exp3.Next())
+-               total++;
+-
+-
+-      int facenr = 0;
+-      int edgenr = 0;
+-
+-
+-      (*testout) << "faces = " << geom.fmap.Extent() << endl;
+-      int curr = 0;
+-
+-      for (int i3 = 1; i3 <= geom.fmap.Extent(); i3++)
+-      {
+-         TopoDS_Face face = TopoDS::Face(geom.fmap(i3));
+-         facenr = geom.fmap.FindIndex (face);       // sollte doch immer == i3 sein ??? JS
+-
+-         int solidnr0 = face2solid[0][i3-1];
+-         int solidnr1 = face2solid[1][i3-1];
+-
+-         /* auskommentiert am 3.3.05 von robert
+-         for (exp2.Init (geom.somap(solidnr0), TopAbs_FACE); exp2.More(); exp2.Next())
+-         {
+-         TopoDS_Face face2 = TopoDS::Face(exp2.Current());
+-         if (geom.fmap.FindIndex(face2) == facenr)
+-         {
+-         //                 if (face.Orientation() != face2.Orientation()) swap (solidnr0, solidnr1);
+-         }
+-         }
+-         */
+-
+-         mesh.AddFaceDescriptor (FaceDescriptor(facenr, solidnr0, solidnr1, 0));
+-
+-         // Philippose - 06/07/2009
+-         // Add the face colour to the mesh data
+-         Quantity_Color face_colour;
+-
+-         if(!(geom.face_colours.IsNull())
+-            && (geom.face_colours->GetColor(face,XCAFDoc_ColorSurf,face_colour)))
+-         {
+-            mesh.GetFaceDescriptor(facenr).SetSurfColour(Vec3d(face_colour.Red(),face_colour.Green(),face_colour.Blue()));
+-         }
+-         else
+-         {
+-            mesh.GetFaceDescriptor(facenr).SetSurfColour(Vec3d(0.0,1.0,0.0));
+-         }
+-         // ACHTUNG! STIMMT NICHT ALLGEMEIN (RG)
+-
+-
+-         Handle(Geom_Surface) occface = BRep_Tool::Surface(face);
+-
+-         for (TopExp_Explorer exp2 (face, TopAbs_WIRE); exp2.More(); exp2.Next())
+-         {
+-            TopoDS_Shape wire = exp2.Current();
+-
+-            for (TopExp_Explorer exp3 (wire, TopAbs_EDGE); exp3.More(); exp3.Next())
+-            {
+-               curr++;
+-               (*testout) << "edge nr " << curr << endl;
+-
+-               multithread.percent = 100 * curr / double (total);
+-               if (multithread.terminate) return;
+-
+-               TopoDS_Edge edge = TopoDS::Edge (exp3.Current());
+-               if (BRep_Tool::Degenerated(edge))
+-               {
+-                  //(*testout) << "ignoring degenerated edge" << endl;
+-                  continue;
+-               }
+-
+-               if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+-                  geom.vmap.FindIndex(TopExp::LastVertex (edge)))
+-               {
+-                  GProp_GProps system;
+-                  BRepGProp::LinearProperties(edge, system);
+-
+-                  if (system.Mass() < eps)
+-                  {
+-                     cout << "ignoring edge " << geom.emap.FindIndex (edge)
+-                        << ". closed edge with length < " << eps << endl;
+-                     continue;
+-                  }
+-               }
+-
+-
+-               Handle(Geom2d_Curve) cof;
+-               double s0, s1;
+-               cof = BRep_Tool::CurveOnSurface (edge, face, s0, s1);
+-
+-               int geomedgenr = geom.emap.FindIndex(edge);
+-
+-               Array <MeshPoint> mp;
+-               Array <double> params;
+-
+-               DivideEdge (edge, mp, params, mesh);
+- 
+-               Array <int> pnums;
+-               pnums.SetSize (mp.Size()+2);
+-
+-               if (!merge_solids)
+-               {
+-                  pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
+-                  pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
+-               }
+-               else
+-               {
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
+-
+-                  pnums[0] = -1;
+-                  pnums.Last() = -1;
+-                  for (PointIndex pi = 1; pi < first_ep; pi++)
+-                  {
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;
+-                  }
+-               }
+-
+-
+-               for (int i = 1; i <= mp.Size(); i++)
+-               {
+-                  bool exists = 0;
+-                  int j;
+-                  for (j = first_ep; j <= mesh.GetNP(); j++)
+-                     if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)
+-                     {
+-                        exists = 1;
+-                        break;
+-                     }
+-
+-                     if (exists)
+-                        pnums[i] = j;
+-                     else
+-                     {
+-                        mesh.AddPoint (mp[i-1]);
+-                        (*testout) << "add meshpoint " << mp[i-1] << endl;
+-                        pnums[i] = mesh.GetNP();
+-                     }
+-               }
+-               (*testout) << "NP = " << mesh.GetNP() << endl;
+-
+-               //(*testout) << pnums[pnums.Size()-1] << endl;
+-
+-               for (int i = 1; i <= mp.Size()+1; i++)
+-               {
+-                  edgenr++;
+-                  Segment seg;
+-
+-                  seg[0] = pnums[i-1];
+-                  seg[1] = pnums[i];
+-                  seg.edgenr = edgenr;
+-                  seg.si = facenr;
+-                  seg.epgeominfo[0].dist = params[i-1];
+-                  seg.epgeominfo[1].dist = params[i];
+-                  seg.epgeominfo[0].edgenr = geomedgenr;
+-                  seg.epgeominfo[1].edgenr = geomedgenr;
+-
+-                  gp_Pnt2d p2d;
+-                  p2d = cof->Value(params[i-1]);
+-                  //                  if (i == 1) p2d = cof->Value(s0);
+-                  seg.epgeominfo[0].u = p2d.X();
+-                  seg.epgeominfo[0].v = p2d.Y();
+-                  p2d = cof->Value(params[i]);
+-                  //                  if (i == mp.Size()+1) p2d = cof -> Value(s1);
+-                  seg.epgeominfo[1].u = p2d.X();
+-                  seg.epgeominfo[1].v = p2d.Y();
+-
+-                  /*
+-                  if (occface->IsUPeriodic())
+-                  {
+-                  cout << "U Periodic" << endl;
+-                  if (fabs(seg.epgeominfo[1].u-seg.epgeominfo[0].u) >
+-                  fabs(seg.epgeominfo[1].u-
+-                  (seg.epgeominfo[0].u-occface->UPeriod())))
+-                  seg.epgeominfo[0].u = p2d.X()+occface->UPeriod();
+-
+-                  if (fabs(seg.epgeominfo[1].u-seg.epgeominfo[0].u) >
+-                  fabs(seg.epgeominfo[1].u-
+-                  (seg.epgeominfo[0].u+occface->UPeriod())))
+-                  seg.epgeominfo[0].u = p2d.X()-occface->UPeriod();
+-                  }
+-
+-                  if (occface->IsVPeriodic())
+-                  {
+-                  cout << "V Periodic" << endl;
+-                  if (fabs(seg.epgeominfo[1].v-seg.epgeominfo[0].v) >
+-                  fabs(seg.epgeominfo[1].v-
+-                  (seg.epgeominfo[0].v-occface->VPeriod())))
+-                  seg.epgeominfo[0].v = p2d.Y()+occface->VPeriod();
+-
+-                  if (fabs(seg.epgeominfo[1].v-seg.epgeominfo[0].v) >
+-                  fabs(seg.epgeominfo[1].v-
+-                  (seg.epgeominfo[0].v+occface->VPeriod())))
+-                  seg.epgeominfo[0].v = p2d.Y()-occface->VPeriod();
+-                  }
+-                  */
+-
+-                  if (edge.Orientation() == TopAbs_REVERSED)
+-                  {
+-                     swap (seg[0], seg[1]);
+-                     swap (seg.epgeominfo[0].dist, seg.epgeominfo[1].dist);
+-                     swap (seg.epgeominfo[0].u, seg.epgeominfo[1].u);
+-                     swap (seg.epgeominfo[0].v, seg.epgeominfo[1].v);
+-                  }
+-
+-                  mesh.AddSegment (seg);
+-
+-                  //edgesegments[geomedgenr-1]->Append(mesh.GetNSeg());
+-
+-               }
+-            }
+-         }
+-      }
+-
+-      //      for(i=1; i<=mesh.GetNSeg(); i++)
+-      //              (*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
+-      //                              << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;
+-      //      exit(10);
+-
+-      mesh.CalcSurfacesOfNode();
+-      multithread.task = savetask;
+-   }
+-
+-
+-
+-
+-   void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend)
+-   {
+-      int i, j, k;
+-      int changed;
+-
+-      const char * savetask = multithread.task;
+-      multithread.task = "Surface meshing";
+-
+-      geom.facemeshstatus = 0;
+-
+-      int noldp = mesh.GetNP();
+-
+-      double starttime = GetTime();
+-
+-      Array<int> glob2loc(noldp);
+-
+-      //int projecttype = PARAMETERSPACE;
+-
+-      int projecttype = PARAMETERSPACE;
+-
+-      int notrys = 1;
+-
+-      int surfmesherror = 0;
+-
+-      for (k = 1; k <= mesh.GetNFD(); k++)
+-      {
+-         if(1==0 && !geom.fvispar[k-1].IsDrawable())
+-         {
+-            (*testout) << "ignoring face " << k << endl;
+-            cout << "ignoring face " << k << endl;
+-            continue;
+-         }
+-
+-         (*testout) << "mesh face " << k << endl;
+-         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+-         geom.facemeshstatus[k-1] = -1;
+-
+-
+-         /*
+-         if (k != 42)
+-         {
+-         cout << "skipped" << endl;
+-         continue;
+-         }
+-         */
+-
+-
+-         FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
+-
+-         int oldnf = mesh.GetNSE();
+-
+-         Box<3> bb = geom.GetBoundingBox();
+-
+-         //      int projecttype = PLANESPACE;
+-
+-         Meshing2OCCSurfaces meshing(TopoDS::Face(geom.fmap(k)), bb, projecttype);
+-
+-         if (meshing.GetProjectionType() == PLANESPACE)
+-            PrintMessage (2, "Face ", k, " / ", mesh.GetNFD(), " (plane space projection)");
+-         else
+-            PrintMessage (2, "Face ", k, " / ", mesh.GetNFD(), " (parameter space projection)");
+-
+-         if (surfmesherror)
+-            cout << "Surface meshing error occured before (in " << surfmesherror << " faces)" << endl;
+-
+-         //      Meshing2OCCSurfaces meshing(f2, bb);
+-         meshing.SetStartTime (starttime);
+-
+-         //(*testout) << "Face " << k << endl << endl;
+-
+-
+-         if (meshing.GetProjectionType() == PLANESPACE)
+-         {
+-            int cntp = 0;
+-            glob2loc = 0;
+-            for (i = 1; i <= mesh.GetNSeg(); i++)
+-            {
+-               Segment & seg = mesh.LineSegment(i);
+-               if (seg.si == k)
+-               {
+-                  for (j = 1; j <= 2; j++)
+-                  {
+-                     int pi = (j == 1) ? seg[0] : seg[1];
+-                     if (!glob2loc.Get(pi))
+-                     {
+-                        meshing.AddPoint (mesh.Point(pi), pi);
+-                        cntp++;
+-                        glob2loc.Elem(pi) = cntp;
+-                     }
+-                  }
+-               }
+-            }
+-
+-            for (i = 1; i <= mesh.GetNSeg(); i++)
+-            {
+-               Segment & seg = mesh.LineSegment(i);
+-               if (seg.si == k)
+-               {
+-                  PointGeomInfo gi0, gi1;
+-                  gi0.trignum = gi1.trignum = k;
+-                  gi0.u = seg.epgeominfo[0].u;
+-                  gi0.v = seg.epgeominfo[0].v;
+-                  gi1.u = seg.epgeominfo[1].u;
+-                  gi1.v = seg.epgeominfo[1].v;
+-
+-                  meshing.AddBoundaryElement (glob2loc.Get(seg[0]), glob2loc.Get(seg[1]), gi0, gi1);
+-                  //(*testout) << gi0.u << " " << gi0.v << endl;
+-                  //(*testout) << gi1.u << " " << gi1.v << endl;
+-               }
+-            }
+-         }
+-         else
+-         {
+-            int cntp = 0;
+-
+-            for (i = 1; i <= mesh.GetNSeg(); i++)
+-               if (mesh.LineSegment(i).si == k)
+-                  cntp+=2;
+-
+-
+-            Array< PointGeomInfo > gis;
+-
+-            gis.SetAllocSize (cntp);
+-            gis.SetSize (0);
+-
+-            for (i = 1; i <= mesh.GetNSeg(); i++)
+-            {
+-               Segment & seg = mesh.LineSegment(i);
+-               if (seg.si == k)
+-               {
+-                  PointGeomInfo gi0, gi1;
+-                  gi0.trignum = gi1.trignum = k;
+-                  gi0.u = seg.epgeominfo[0].u;
+-                  gi0.v = seg.epgeominfo[0].v;
+-                  gi1.u = seg.epgeominfo[1].u;
+-                  gi1.v = seg.epgeominfo[1].v;
+-
+-                  int locpnum[2] = {0, 0};
+-
+-                  for (j = 0; j < 2; j++)
+-                  {
+-                     PointGeomInfo gi = (j == 0) ? gi0 : gi1;
+-
+-                     int l;
+-                     for (l = 0; l < gis.Size() && locpnum[j] == 0; l++)
+-                     {
+-                        double dist = sqr (gis[l].u-gi.u)+sqr(gis[l].v-gi.v);
+-
+-                        if (dist < 1e-10)
+-                           locpnum[j] = l+1;
+-                     }
+-
+-                     if (locpnum[j] == 0)
+-                     {
+-                        int pi = (j == 0) ? seg[0] : seg[1];
+-                        meshing.AddPoint (mesh.Point(pi), pi);
+-
+-                        gis.SetSize (gis.Size()+1);
+-                        gis[l] = gi;
+-                        locpnum[j] = l+1;
+-                     }
+-                  }
+-
+-                  meshing.AddBoundaryElement (locpnum[0], locpnum[1], gi0, gi1);
+-                  //(*testout) << gi0.u << " " << gi0.v << endl;
+-                  //(*testout) << gi1.u << " " << gi1.v << endl;
+-
+-               }
+-            }
+-         }
+-
+-
+-
+-
+-
+-         // Philippose - 15/01/2009
+-         double maxh = geom.face_maxh[k-1];
+-         //double maxh = mparam.maxh;
+-         mparam.checkoverlap = 0;
+-         //      int noldpoints = mesh->GetNP();
+-         int noldsurfel = mesh.GetNSE();
+-
+-         GProp_GProps sprops;
+-         BRepGProp::SurfaceProperties(TopoDS::Face(geom.fmap(k)),sprops);
+-         meshing.SetMaxArea(2.*sprops.Mass());
+-
+-         MESHING2_RESULT res;
+-
+-         try {
+-         res = meshing.GenerateMesh (mesh, mparam, maxh, k);
+-         }
+-
+-         catch (SingularMatrixException)
+-         {
+-            (*myerr) << "Singular Matrix" << endl;
+-            res = MESHING2_GIVEUP;
+-         }
+-
+-         catch (UVBoundsException)
+-         {
+-            (*myerr) << "UV bounds exceeded" << endl;
+-            res = MESHING2_GIVEUP;
+-         }
+-
+-         projecttype = PARAMETERSPACE;
+-
+-         if (res != MESHING2_OK)
+-         {
+-            if (notrys == 1)
+-            {
+-               for (int i = noldsurfel+1; i <= mesh.GetNSE(); i++)
+-                  mesh.DeleteSurfaceElement (i);
+-
+-               mesh.Compress();
+-
+-               cout << "retry Surface " << k << endl;
+-
+-               k--;
+-               projecttype*=-1;
+-               notrys++;
+-               continue;
+-            }
+-            else
+-            {
+-               geom.facemeshstatus[k-1] = -1;
+-               PrintError ("Problem in Surface mesh generation");
+-               surfmesherror++;
+-               //           throw NgException ("Problem in Surface mesh generation");
+-            }
+-         }
+-         else
+-         {
+-            geom.facemeshstatus[k-1] = 1;
+-         }
+-
+-         notrys = 1;
+-
+-         for (i = oldnf+1; i <= mesh.GetNSE(); i++)
+-            mesh.SurfaceElement(i).SetIndex (k);
+-
+-      }
+-
+-//      ofstream problemfile("occmesh.rep");
+-
+-//      problemfile << "SURFACEMESHING" << endl << endl;
+-
+-      if (surfmesherror)
+-      {
+-         cout << "WARNING! NOT ALL FACES HAVE BEEN MESHED" << endl;
+-         cout << "SURFACE MESHING ERROR OCCURED IN " << surfmesherror << " FACES:" << endl;
+-         for (int i = 1; i <= geom.fmap.Extent(); i++)
+-            if (geom.facemeshstatus[i-1] == -1)
+-            {
+-               cout << "Face " << i << endl;
+-//               problemfile << "problem with face " << i << endl;
+-//               problemfile << "vertices: " << endl;
+-               TopExp_Explorer exp0,exp1,exp2;
+-               for ( exp0.Init(TopoDS::Face (geom.fmap(i)), TopAbs_WIRE); exp0.More(); exp0.Next() )
+-               {
+-                  TopoDS_Wire wire = TopoDS::Wire(exp0.Current());
+-                  for ( exp1.Init(wire,TopAbs_EDGE); exp1.More(); exp1.Next() )
+-                  {
+-                     TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-                     for ( exp2.Init(edge,TopAbs_VERTEX); exp2.More(); exp2.Next() )
+-                     {
+-                        TopoDS_Vertex vertex = TopoDS::Vertex(exp2.Current());
+-                        gp_Pnt point = BRep_Tool::Pnt(vertex);
+-//                        problemfile << point.X() << " " << point.Y() << " " << point.Z() << endl;
+-                     }
+-                  }
+-               }
+-//               problemfile << endl;
+-
+-            }
+-            cout << endl << endl;
+-            cout << "for more information open IGES/STEP Topology Explorer" << endl;
+-//            problemfile.close();
+-            throw NgException ("Problem in Surface mesh generation");
+-      }
+-      else
+-      {
+-//         problemfile << "OK" << endl << endl;
+-//         problemfile.close();
+-      }
+-
+-
+-
+-
+-      if (multithread.terminate || perfstepsend < MESHCONST_OPTSURFACE)
+-         return;
+-
+-      multithread.task = "Optimizing surface";
+-
+-      static int timer_opt2d = NgProfiler::CreateTimer ("Optimization 2D");
+-      NgProfiler::StartTimer (timer_opt2d);
+-
+-      for (k = 1; k <= mesh.GetNFD(); k++)
+-      {
+-         //      if (k != 42) continue;
+-         //      if (k != 36) continue;
+-
+-         //      (*testout) << "optimize face " << k << endl;
+-         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+-
+-         FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
+-
+-         PrintMessage (1, "Optimize Surface ", k);
+-         for (i = 1; i <= mparam.optsteps2d; i++)
+-         {
+-            //          (*testout) << "optstep " << i << endl;
+-            if (multithread.terminate) return;
+-
+-            {
+-               MeshOptimize2dOCCSurfaces meshopt(geom);
+-               meshopt.SetFaceIndex (k);
+-               meshopt.SetImproveEdges (0);
+-               meshopt.SetMetricWeight (mparam.elsizeweight);
+-               //meshopt.SetMetricWeight (0.2);
+-               meshopt.SetWriteStatus (0);
+-
+-               //         (*testout) << "EdgeSwapping (mesh, (i > mparam.optsteps2d/2))" << endl;
+-               meshopt.EdgeSwapping (mesh, (i > mparam.optsteps2d/2));
+-            }
+-
+-            if (multithread.terminate) return;
+-            {
+-               MeshOptimize2dOCCSurfaces meshopt(geom);
+-               meshopt.SetFaceIndex (k);
+-               meshopt.SetImproveEdges (0);
+-               //meshopt.SetMetricWeight (0.2);
+-               meshopt.SetMetricWeight (mparam.elsizeweight);
+-               meshopt.SetWriteStatus (0);
+-
+-               //         (*testout) << "ImproveMesh (mesh)" << endl;
+-               meshopt.ImproveMesh (mesh, mparam);
+-            }
+-
+-            {
+-               MeshOptimize2dOCCSurfaces meshopt(geom);
+-               meshopt.SetFaceIndex (k);
+-               meshopt.SetImproveEdges (0);
+-               //meshopt.SetMetricWeight (0.2);
+-               meshopt.SetMetricWeight (mparam.elsizeweight);
+-               meshopt.SetWriteStatus (0);
+-
+-               //         (*testout) << "CombineImprove (mesh)" << endl;
+-               meshopt.CombineImprove (mesh);
+-            }
+-
+-            if (multithread.terminate) return;
+-            {
+-               MeshOptimize2dOCCSurfaces meshopt(geom);
+-               meshopt.SetFaceIndex (k);
+-               meshopt.SetImproveEdges (0);
+-               //meshopt.SetMetricWeight (0.2);
+-               meshopt.SetMetricWeight (mparam.elsizeweight);
+-               meshopt.SetWriteStatus (0);
+-
+-               //         (*testout) << "ImproveMesh (mesh)" << endl;
+-               meshopt.ImproveMesh (mesh, mparam);
+-            }
+-         }
+-
+-      }
+-
+-
+-      mesh.CalcSurfacesOfNode();
+-      mesh.Compress();
+-
+-      NgProfiler::StopTimer (timer_opt2d);
+-
+-      multithread.task = savetask;
+-   }
+-
+-
+-
+-   void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh)
+-   {
+-      mesh.SetGlobalH (mparam.maxh);
+-      mesh.SetMinimalH (mparam.minh);
+-
+-      Array<double> maxhdom;
+-      maxhdom.SetSize (geom.NrSolids());
+-      maxhdom = mparam.maxh;
+-
+-      mesh.SetMaxHDomain (maxhdom);
+-
+-      Box<3> bb = geom.GetBoundingBox();
+-      bb.Increase (bb.Diam()/10);
+-
+-      mesh.SetLocalH (bb.PMin(), bb.PMax(), 0.5);
+-
+-      if (mparam.uselocalh)
+-      {
+-         const char * savetask = multithread.task;
+-         multithread.percent = 0;
+-
+-         mesh.SetLocalH (bb.PMin(), bb.PMax(), mparam.grading);
+-
+-         int nedges = geom.emap.Extent();
+-
+-               double mincurvelength = IGNORECURVELENGTH;
+-         double maxedgelen = 0;
+-         double minedgelen = 1e99;
+-
+-               if(occparam.resthminedgelenenable) 
+-               {
+-                      mincurvelength = occparam.resthminedgelen;
+-                      if(mincurvelength < IGNORECURVELENGTH) mincurvelength = IGNORECURVELENGTH;
+-               }
+-
+-         multithread.task = "Setting local mesh size (elements per edge)";
+-
+-         // setting elements per edge
+-
+-         for (int i = 1; i <= nedges && !multithread.terminate; i++)
+-         {
+-            TopoDS_Edge e = TopoDS::Edge (geom.emap(i));
+-            multithread.percent = 100 * (i-1)/double(nedges);
+-            if (BRep_Tool::Degenerated(e)) continue;
+-
+-            GProp_GProps system;
+-            BRepGProp::LinearProperties(e, system);
+-            double len = system.Mass();
+-
+-            if (len < mincurvelength)
+-            {
+-               (*testout) << "ignored" << endl;
+-               continue;
+-            }
+-
+-            double localh = len/mparam.segmentsperedge;
+-            double s0, s1;
+-
+-            // Philippose - 23/01/2009
+-            // Find all the parent faces of a given edge
+-            // and limit the mesh size of the edge based on the
+-            // mesh size limit of the face
+-            TopTools_IndexedDataMapOfShapeListOfShape edge_face_map;
+-            edge_face_map.Clear();
+-
+-            TopExp::MapShapesAndAncestors(geom.shape, TopAbs_EDGE, TopAbs_FACE, edge_face_map);
+-            const TopTools_ListOfShape& parent_faces = edge_face_map.FindFromKey(e);
+-
+-            TopTools_ListIteratorOfListOfShape parent_face_list;
+-
+-            for(parent_face_list.Initialize(parent_faces); parent_face_list.More(); parent_face_list.Next())
+-            {
+-               TopoDS_Face parent_face = TopoDS::Face(parent_face_list.Value());
+-
+-               int face_index = geom.fmap.FindIndex(parent_face);
+-
+-               if(face_index >= 1) localh = min(localh,geom.face_maxh[face_index - 1]);
+-            }
+-
+-            Handle(Geom_Curve) c = BRep_Tool::Curve(e, s0, s1);
+-
+-            maxedgelen = max (maxedgelen, len);
+-            minedgelen = min (minedgelen, len);
+-
+-            // Philippose - 23/01/2009
+-            // Modified the calculation of maxj, because the
+-            // method used so far always results in maxj = 2,
+-            // which causes the localh to be set only at the
+-            // starting, mid and end of the edge.
+-            // Old Algorithm:
+-            // int maxj = 2 * (int) ceil (localh/len);
+-            int maxj = max((int) ceil(len/localh), 2);
+-
+-            for (int j = 0; j <= maxj; j++)
+-            {
+-               gp_Pnt pnt = c->Value (s0+double(j)/maxj*(s1-s0));
+-               mesh.RestrictLocalH (Point3d(pnt.X(), pnt.Y(), pnt.Z()), localh);
+-            }
+-         }
+-
+-         multithread.task = "Setting local mesh size (edge curvature)";
+-
+-         // setting edge curvature
+-
+-         int nsections = 20;
+-
+-         for (int i = 1; i <= nedges && !multithread.terminate; i++)
+-         {
+-            double maxcur = 0;
+-            multithread.percent = 100 * (i-1)/double(nedges);
+-            TopoDS_Edge edge = TopoDS::Edge (geom.emap(i));
+-            if (BRep_Tool::Degenerated(edge)) continue;
+-            double s0, s1;
+-            Handle(Geom_Curve) c = BRep_Tool::Curve(edge, s0, s1);
+-            BRepAdaptor_Curve brepc(edge);
+-            BRepLProp_CLProps prop(brepc, 2, 1e-5);
+-
+-            for (int j = 1; j <= nsections; j++)
+-            {
+-               double s = s0 + j/(double) nsections * (s1-s0);
+-               prop.SetParameter (s);
+-               double curvature = prop.Curvature();
+-               if(curvature> maxcur) maxcur = curvature;
+-
+-               if (curvature >= 1e99)
+-                  continue;
+-
+-               gp_Pnt pnt = c->Value (s);
+-
+-               mesh.RestrictLocalH (Point3d(pnt.X(), pnt.Y(), pnt.Z()), ComputeH (fabs(curvature)));
+-            }
+-            // (*testout) << "edge " << i << " max. curvature: " << maxcur << endl;
+-         }
+-
+-         multithread.task = "Setting local mesh size (face curvature)";
+-
+-         // setting face curvature
+-
+-         int nfaces = geom.fmap.Extent();
+-
+-         for (int i = 1; i <= nfaces && !multithread.terminate; i++)
+-         {
+-            multithread.percent = 100 * (i-1)/double(nfaces);
+-            TopoDS_Face face = TopoDS::Face(geom.fmap(i));
+-            TopLoc_Location loc;
+-            Handle(Geom_Surface) surf = BRep_Tool::Surface (face);
+-            Handle(Poly_Triangulation) triangulation = BRep_Tool::Triangulation (face, loc);
+-
+-            if (triangulation.IsNull()) continue;
+-
+-            BRepAdaptor_Surface sf(face, Standard_True);
+-            BRepLProp_SLProps prop(sf, 2, 1e-5);
+-
+-            int ntriangles = triangulation -> NbTriangles();
+-            for (int j = 1; j <= ntriangles; j++)
+-            {
+-               gp_Pnt p[3];
+-               gp_Pnt2d par[3];
+-
+-               for (int k = 1; k <=3; k++)
+-               {
+-                  int n = triangulation->Triangles()(j)(k);
+-                  p[k-1] = triangulation->Nodes()(n).Transformed(loc);
+-                  par[k-1] = triangulation->UVNodes()(n);
+-               }
+-
+-               //double maxside = 0;
+-               //maxside = max (maxside, p[0].Distance(p[1]));
+-               //maxside = max (maxside, p[0].Distance(p[2]));
+-               //maxside = max (maxside, p[1].Distance(p[2]));
+-               //cout << "\rFace " << i << " pos11 ntriangles " << ntriangles << " maxside " << maxside << flush;
+-
+-               RestrictHTriangle (par[0], par[1], par[2], &prop, mesh, 0);
+-               //cout << "\rFace " << i << " pos12 ntriangles " << ntriangles << flush;
+-            }
+-         }
+-
+-         // setting close edges
+-
+-         if (occparam.resthcloseedgeenable)
+-         {
+-            multithread.task = "Setting local mesh size (close edges)";
+-
+-            int sections = 100;
+-
+-            Array<Line> lines(sections*nedges);
+-
+-            Box3dTree* searchtree =
+-               new Box3dTree (bb.PMin(), bb.PMax());
+-
+-            int nlines = 0;
+-            for (int i = 1; i <= nedges && !multithread.terminate; i++)
+-            {
+-               TopoDS_Edge edge = TopoDS::Edge (geom.emap(i));
+-               if (BRep_Tool::Degenerated(edge)) continue;
+-
+-               double s0, s1;
+-               Handle(Geom_Curve) c = BRep_Tool::Curve(edge, s0, s1);
+-               BRepAdaptor_Curve brepc(edge);
+-               BRepLProp_CLProps prop(brepc, 1, 1e-5);
+-               prop.SetParameter (s0);
+-
+-               gp_Vec d0 = prop.D1().Normalized();
+-               double s_start = s0;
+-               int count = 0;
+-               for (int j = 1; j <= sections; j++)
+-               {
+-                  double s = s0 + (s1-s0)*(double)j/(double)sections;
+-                  prop.SetParameter (s);
+-                  gp_Vec d1 = prop.D1().Normalized();
+-                  double cosalpha = fabs(d0*d1);
+-                  if ((j == sections) || (cosalpha < cos(10.0/180.0*M_PI)))
+-                  {
+-                     count++;
+-                     gp_Pnt p0 = c->Value (s_start);
+-                     gp_Pnt p1 = c->Value (s);
+-                     lines[nlines].p0 = Point<3> (p0.X(), p0.Y(), p0.Z());
+-                     lines[nlines].p1 = Point<3> (p1.X(), p1.Y(), p1.Z());
+-
+-                     Box3d box;
+-                     box.SetPoint (Point3d(lines[nlines].p0));
+-                     box.AddPoint (Point3d(lines[nlines].p1));
+-
+-                     searchtree->Insert (box.PMin(), box.PMax(), nlines+1);
+-                     nlines++;
+-
+-                     s_start = s;
+-                     d0 = d1;
+-                  }
+-               }
+-            }
+-
+-            Array<int> linenums;
+-
+-            for (int i = 0; i < nlines; i++)
+-            {
+-               multithread.percent = (100*i)/double(nlines);
+-               Line & line = lines[i];
+-
+-               Box3d box;
+-               box.SetPoint (Point3d(line.p0));
+-               box.AddPoint (Point3d(line.p1));
+-               double maxhline = max (mesh.GetH(box.PMin()),
+-                  mesh.GetH(box.PMax()));
+-               box.Increase(maxhline);
+-
+-               double mindist = 1e99;
+-               linenums.SetSize(0);
+-               searchtree->GetIntersecting(box.PMin(),box.PMax(),linenums);
+-
+-               for (int j = 0; j < linenums.Size(); j++)
+-               {
+-                  int num = linenums[j]-1;
+-                  if (i == num) continue;
+-                  if ((line.p0-lines[num].p0).Length2() < 1e-15) continue;
+-                  if ((line.p0-lines[num].p1).Length2() < 1e-15) continue;
+-                  if ((line.p1-lines[num].p0).Length2() < 1e-15) continue;
+-                  if ((line.p1-lines[num].p1).Length2() < 1e-15) continue;
+-                  mindist = min (mindist, line.Dist(lines[num]));
+-               }
+-
+-               mindist /= (occparam.resthcloseedgefac + VSMALL);
+-
+-               if (mindist < 1e-3)
+-               {
+-                  (*testout) << "extremely small local h: " << mindist
+-                     << " --> setting to 1e-3" << endl;
+-                  (*testout) << "somewhere near " << line.p0 << " - " << line.p1 << endl;
+-                  mindist = 1e-3;
+-               }
+-
+-               mesh.RestrictLocalHLine(line.p0, line.p1, mindist);
+-            }
+-         }
+-
+-         multithread.task = savetask;
+-
+-      }
+-
+-      // Philippose - 09/03/2009
+-      // Added the capability to load the mesh size from a 
+-      // file also for OpenCascade Geometry
+-      // Note: 
+-      // ** If the "uselocalh" option is ticked in 
+-      // the "mesh options...insider" menu, the mesh 
+-      // size will be further modified by the topology 
+-      // analysis routines.
+-      // ** To use the mesh size file as the sole source 
+-      // for defining the mesh size, uncheck the "uselocalh"
+-      // option.
+-      mesh.LoadLocalMeshSize (mparam.meshsizefilename);
+-   }
+-
+-
+-
+-  int OCCGenerateMesh (OCCGeometry & geom, Mesh *& mesh, MeshingParameters & mparam,
+-                     int perfstepsstart, int perfstepsend)
+-   {
+-      multithread.percent = 0;
+-
+-      if (perfstepsstart <= MESHCONST_ANALYSE)
+-      {
+-         delete mesh;
+-         mesh = new Mesh();
+-         mesh->geomtype = Mesh::GEOM_OCC;
+-
+-         OCCSetLocalMeshSize(geom,*mesh);
+-      }
+-
+-      if (multithread.terminate || perfstepsend <= MESHCONST_ANALYSE)
+-         return TCL_OK;
+-
+-      if (perfstepsstart <= MESHCONST_MESHEDGES)
+-      {
+-         OCCFindEdges (geom, *mesh);
+-
+-         /*
+-         cout << "Removing redundant points" << endl;
+-
+-         int i, j;
+-         int np = mesh->GetNP();
+-         Array<int> equalto;
+-
+-         equalto.SetSize (np);
+-         equalto = 0;
+-
+-         for (i = 1; i <= np; i++)
+-         {
+-         for (j = i+1; j <= np; j++)
+-         {
+-         if (!equalto[j-1] && (Dist2 (mesh->Point(i), mesh->Point(j)) < 1e-12))
+-         equalto[j-1] = i;
+-         }
+-         }
+-
+-         for (i = 1; i <= np; i++)
+-         if (equalto[i-1])
+-         {
+-         cout << "Point " << i << " is equal to Point " << equalto[i-1] << endl;
+-         for (j = 1; j <= mesh->GetNSeg(); j++)
+-         {
+-         Segment & seg = mesh->LineSegment(j);
+-         if (seg[0] == i) seg[0] = equalto[i-1];
+-         if (seg[1] == i) seg[1] = equalto[i-1];
+-         }
+-         }
+-
+-         cout << "Removing degenerated segments" << endl;
+-         for (j = 1; j <= mesh->GetNSeg(); j++)
+-         {
+-         Segment & seg = mesh->LineSegment(j);
+-         if (seg[0] == seg[1])
+-         {
+-         mesh->DeleteSegment(j);
+-         cout << "Deleting Segment " << j << endl;
+-         }
+-         }
+-
+-         mesh->Compress();
+-         */
+-
+-         /*
+-         for (int i = 1; i <= geom.fmap.Extent(); i++)
+-         {
+-         Handle(Geom_Surface) hf1 =
+-         BRep_Tool::Surface(TopoDS::Face(geom.fmap(i)));
+-         for (int j = i+1; j <= geom.fmap.Extent(); j++)
+-         {
+-         Handle(Geom_Surface) hf2 =
+-         BRep_Tool::Surface(TopoDS::Face(geom.fmap(j)));
+-         if (hf1 == hf2) cout << "face " << i << " and face " << j << " lie on same surface" << endl;
+-         }
+-         }
+-         */
+-
+-#ifdef LOG_STREAM
+-         (*logout) << "Edges meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
+-#endif
+-      }
+-
+-      if (multithread.terminate || perfstepsend <= MESHCONST_MESHEDGES)
+-         return TCL_OK;
+-
+-      if (perfstepsstart <= MESHCONST_MESHSURFACE)
+-      {
+-         OCCMeshSurface (geom, *mesh, perfstepsend);
+-         if (multithread.terminate) return TCL_OK;
+-
+-#ifdef LOG_STREAM
+-         (*logout) << "Surfaces meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
+-#endif
+-
+-#ifdef STAT_STREAM
+-         (*statout) << mesh->GetNSeg() << " & "
+-            << mesh->GetNSE() << " & - &"
+-            << GetTime() << " & " << endl;
+-#endif
+-
+-         //      MeshQuality2d (*mesh);
+-         mesh->CalcSurfacesOfNode();
+-      }
+-
+-      if (multithread.terminate || perfstepsend <= MESHCONST_OPTSURFACE)
+-         return TCL_OK;
+-
+-      if (perfstepsstart <= MESHCONST_MESHVOLUME)
+-      {
+-         multithread.task = "Volume meshing";
+-
+-         MESHING3_RESULT res = MeshVolume (mparam, *mesh);
+-
+-/*
+-         ofstream problemfile("occmesh.rep",ios_base::app);
+-
+-         problemfile << "VOLUMEMESHING" << endl << endl;
+-         if(res != MESHING3_OK)
+-            problemfile << "ERROR" << endl << endl;
+-         else
+-            problemfile << "OK" << endl
+-            << mesh->GetNE() << " elements" << endl << endl;
+-
+-         problemfile.close();
+-*/
+-
+-         if (res != MESHING3_OK) return TCL_ERROR;
+-
+-         if (multithread.terminate) return TCL_OK;
+-
+-         RemoveIllegalElements (*mesh);
+-         if (multithread.terminate) return TCL_OK;
+-
+-         MeshQuality3d (*mesh);
+-
+-#ifdef STAT_STREAM
+-         (*statout) << GetTime() << " & ";
+-#endif
+-
+-#ifdef LOG_STREAM
+-         (*logout) << "Volume meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
+-#endif
+-      }
+-
+-      if (multithread.terminate || perfstepsend <= MESHCONST_MESHVOLUME)
+-         return TCL_OK;
+-
+-      if (perfstepsstart <= MESHCONST_OPTVOLUME)
+-      {
+-         multithread.task = "Volume optimization";
+-
+-         OptimizeVolume (mparam, *mesh);
+-         if (multithread.terminate) return TCL_OK;
+-
+-#ifdef STAT_STREAM
+-         (*statout) << GetTime() << " & "
+-            << mesh->GetNE() << " & "
+-            << mesh->GetNP() << " " << '\\' << '\\' << " \\" << "hline" << endl;
+-#endif
+-
+-#ifdef LOG_STREAM
+-         (*logout) << "Volume optimized" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
+-#endif
+-
+-         // cout << "Optimization complete" << endl;
+-
+-      }
+-
+-      (*testout) << "NP: " << mesh->GetNP() << endl;
+-      for (int i = 1; i <= mesh->GetNP(); i++)
+-         (*testout) << mesh->Point(i) << endl;
+-
+-      (*testout) << endl << "NSegments: " << mesh->GetNSeg() << endl;
+-      for (int i = 1; i <= mesh->GetNSeg(); i++)
+-         (*testout) << mesh->LineSegment(i) << endl;
+-
+-      return TCL_OK;
+-   }
+-}
+-
+-#endif
++#ifdef OCCGEOMETRY
++
++#include <mystdlib.h>
++#include <occgeom.hpp>
++#include <meshing.hpp>
++
++
++namespace netgen
++{
++
++#include "occmeshsurf.hpp"
++
++#define TCL_OK 0
++#define TCL_ERROR 1
++
++#define DIVIDEEDGESECTIONS 1000
++#define IGNORECURVELENGTH 1e-4
++#define VSMALL 1e-10
++
++
++   DLL_HEADER bool merge_solids = 1;
++
++
++  // can you please explain what you intend to compute here (JS) !!!
++   double Line :: Dist (Line l)
++   {
++      Vec<3> n = p1-p0;
++      Vec<3> q = l.p1-l.p0;
++      double nq = n*q;
++
++      Point<3> p = p0 + 0.5*n;
++      double lambda = (p-l.p0)*n / (nq + VSMALL);
++
++      if (lambda >= 0 && lambda <= 1)
++      {
++         double d = (p-l.p0-lambda*q).Length();
++         //        if (d < 1e-3) d = 1e99;
++         return d;
++      }
++      else
++         return 1e99;
++   }
++
++
++
++   double Line :: Length ()
++   {
++      return (p1-p0).Length();
++   }
++
++
++
++   inline Point<3> occ2ng (const gp_Pnt & p)
++   {
++      return  Point<3> (p.X(), p.Y(), p.Z());
++   }
++
++
++
++   double ComputeH (double kappa)
++   {
++      double hret;
++      kappa *= mparam.curvaturesafety;
++
++      if (mparam.maxh * kappa < 1)
++         hret = mparam.maxh;
++      else
++         hret = 1 / (kappa + VSMALL);
++
++      if (mparam.maxh < hret)
++         hret = mparam.maxh;
++
++      return (hret);
++   }
++
++
++
++
++   void RestrictHTriangle (gp_Pnt2d & par0, gp_Pnt2d & par1, gp_Pnt2d & par2,
++                           BRepLProp_SLProps * prop, Mesh & mesh, int depth, double h = 0)
++   {
++      int ls = -1;
++
++      gp_Pnt pnt0,pnt1,pnt2;
++
++      prop->SetParameters (par0.X(), par0.Y());
++      pnt0 = prop->Value();
++
++      prop->SetParameters (par1.X(), par1.Y());
++      pnt1 = prop->Value();
++
++      prop->SetParameters (par2.X(), par2.Y());
++      pnt2 = prop->Value();
++
++      double aux;
++      double maxside = pnt0.Distance(pnt1);
++      ls = 2;
++      aux = pnt1.Distance(pnt2);
++      if(aux > maxside)
++      {
++         maxside = aux;
++         ls = 0;
++      }
++      aux = pnt2.Distance(pnt0);
++      if(aux > maxside)
++      {
++         maxside = aux;
++         ls = 1;
++      }
++
++
++
++      gp_Pnt2d parmid;
++
++      parmid.SetX( (par0.X()+par1.X()+par2.X()) / 3 );
++      parmid.SetY( (par0.Y()+par1.Y()+par2.Y()) / 3 );
++
++      if (depth%3 == 0)
++      {
++         double curvature = 0;
++
++         prop->SetParameters (parmid.X(), parmid.Y());
++         if (!prop->IsCurvatureDefined())
++         {
++            (*testout) << "curvature not defined!" << std::endl;
++            return;
++         }
++         curvature = max(fabs(prop->MinCurvature()),
++            fabs(prop->MaxCurvature()));
++
++         prop->SetParameters (par0.X(), par0.Y());
++         if (!prop->IsCurvatureDefined())
++         {
++            (*testout) << "curvature not defined!" << std::endl;
++            return;
++         }
++         curvature = max(curvature,max(fabs(prop->MinCurvature()),
++            fabs(prop->MaxCurvature())));
++
++         prop->SetParameters (par1.X(), par1.Y());
++         if (!prop->IsCurvatureDefined())
++         {
++            (*testout) << "curvature not defined!" << std::endl;
++            return;
++         }
++         curvature = max(curvature,max(fabs(prop->MinCurvature()),
++            fabs(prop->MaxCurvature())));
++
++         prop->SetParameters (par2.X(), par2.Y());
++         if (!prop->IsCurvatureDefined())
++         {
++            (*testout) << "curvature not defined!" << std::endl;
++            return;
++         }
++         curvature = max(curvature,max(fabs(prop->MinCurvature()),
++            fabs(prop->MaxCurvature())));
++
++         //(*testout) << "curvature " << curvature << std::endl;
++
++         if (curvature < 1e-3)
++         {
++            //(*testout) << "curvature too small (" << curvature << ")!" << std::endl;
++            return;
++            // return war bis 10.2.05 auskommentiert
++         }
++
++
++
++         h = ComputeH (curvature+1e-10);
++
++         if(h < 1e-4*maxside)
++            return;
++
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
++      }
++
++      if (h < maxside && depth < 10)
++      {
++         //std::cout << "\r h " << h << flush;
++         gp_Pnt2d pm;
++
++         //std::cout << "h " << h << " maxside " << maxside << " depth " << depth << std::endl;
++         //std::cout << "par0 " << par0.X() << " " << par0.Y()
++         //<< " par1 " << par1.X() << " " << par1.Y()
++         //   << " par2 " << par2.X() << " " << par2.Y()<< std::endl;
++
++         if(ls == 0)
++         {
++            pm.SetX(0.5*(par1.X()+par2.X())); pm.SetY(0.5*(par1.Y()+par2.Y()));
++            RestrictHTriangle(pm, par2, par0, prop, mesh, depth+1, h);
++            RestrictHTriangle(pm, par0, par1, prop, mesh, depth+1, h);
++         }
++         else if(ls == 1)
++         {
++            pm.SetX(0.5*(par0.X()+par2.X())); pm.SetY(0.5*(par0.Y()+par2.Y()));
++            RestrictHTriangle(pm, par1, par2, prop, mesh, depth+1, h);
++            RestrictHTriangle(pm, par0, par1, prop, mesh, depth+1, h);
++         }
++         else if(ls == 2)
++         {
++            pm.SetX(0.5*(par0.X()+par1.X())); pm.SetY(0.5*(par0.Y()+par1.Y()));
++            RestrictHTriangle(pm, par1, par2, prop, mesh, depth+1, h);
++            RestrictHTriangle(pm, par2, par0, prop, mesh, depth+1, h);
++         }
++
++      }
++      else
++      {
++         gp_Pnt pnt;
++         Point3d p3d;
++
++         prop->SetParameters (parmid.X(), parmid.Y());
++         pnt = prop->Value();
++         p3d = Point3d(pnt.X(), pnt.Y(), pnt.Z());
++         mesh.RestrictLocalH (p3d, h);
++
++         p3d = Point3d(pnt0.X(), pnt0.Y(), pnt0.Z());
++         mesh.RestrictLocalH (p3d, h);
++
++         p3d = Point3d(pnt1.X(), pnt1.Y(), pnt1.Z());
++         mesh.RestrictLocalH (p3d, h);
++
++         p3d = Point3d(pnt2.X(), pnt2.Y(), pnt2.Z());
++         mesh.RestrictLocalH (p3d, h);
++
++         //(*testout) << "p = " << p3d << ", h = " << h << ", maxside = " << maxside << std::endl;
++
++      }
++   }
++
++
++
++   void DivideEdge (TopoDS_Edge & edge, Array<MeshPoint> & ps,
++                    Array<double> & params, Mesh & mesh)
++   {
++      double s0, s1;
++      double maxh = mparam.maxh;
++      int nsubedges = 1;
++      gp_Pnt pnt, oldpnt;
++      double svalue[DIVIDEEDGESECTIONS];
++
++      GProp_GProps system;
++      BRepGProp::LinearProperties(edge, system);
++      double L = system.Mass();
++
++      Handle(Geom_Curve) c = BRep_Tool::Curve(edge, s0, s1);
++
++      double hvalue[DIVIDEEDGESECTIONS+1];
++      hvalue[0] = 0;
++      pnt = c->Value(s0);
++
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
++
++      int tmpVal = (int)(DIVIDEEDGESECTIONS);
++
++      for (int i = 1; i <= tmpVal; i++)
++      {
++         oldpnt = pnt;
++         pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
++         // -- no more than 1 segment per <edge length>/DIVIDEEDGESECTIONS
++         hvalue[i] = hvalue[i-1] +
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
++            1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++                pnt.Distance(oldpnt));
++
++         //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
++         //      <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << std::endl;
++
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
++      }
++
++      //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
++      nsubedges = max (1, int(floor(hvalue[DIVIDEEDGESECTIONS]+0.5)));
++
++      ps.SetSize(nsubedges-1);
++      params.SetSize(nsubedges+1);
++
++      int i = 1;
++      int i1 = 0;
++      do
++      {
++         if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
++         {
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            pnt = c->Value(params[i]);
++            ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
++            i++;
++         }
++         i1++;
++         if (i1 > DIVIDEEDGESECTIONS)
++         {
++            nsubedges = i;
++            ps.SetSize(nsubedges-1);
++            params.SetSize(nsubedges+1);
++            std::cout << "divide edge: local h too small" << std::endl;
++         }
++      } while (i < nsubedges);
++
++      params[0] = s0;
++      params[nsubedges] = s1;
++
++      if (params[nsubedges] <= params[nsubedges-1])
++      {
++         std::cout << "CORRECTED" << std::endl;
++         ps.SetSize (nsubedges-2);
++         params.SetSize (nsubedges);
++         params[nsubedges] = s1;
++      }
++   }
++
++
++
++
++   void OCCFindEdges (OCCGeometry & geom, Mesh & mesh)
++   {
++      const char * savetask = multithread.task;
++      multithread.task = "Edge meshing";
++
++      (*testout) << "edge meshing" << std::endl;
++
++      int nvertices = geom.vmap.Extent();
++      int nedges = geom.emap.Extent();
++
++      (*testout) << "nvertices = " << nvertices << std::endl;
++      (*testout) << "nedges = " << nedges << std::endl;
++
++      double eps = 1e-6 * geom.GetBoundingBox().Diam();
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
++
++      for (int i = 1; i <= nvertices; i++)
++      {
++         gp_Pnt pnt = BRep_Tool::Pnt (TopoDS::Vertex(geom.vmap(i)));
++         MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++
++         bool exists = 0;
++         if (merge_solids)
++            for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
++               {
++                  exists = 1;
++                  break;
++               }
++
++               if (!exists)
++                  mesh.AddPoint (mp);
++      }
++
++      (*testout) << "different vertices = " << mesh.GetNP() << std::endl;
++
++
++      int first_ep = mesh.GetNP()+1;
++
++      Array<int> face2solid[2];
++      for (int i = 0; i<2; i++)
++      {
++         face2solid[i].SetSize (geom.fmap.Extent());
++         face2solid[i] = 0;
++      }
++
++      int solidnr = 0;
++      for (TopExp_Explorer exp0(geom.shape, TopAbs_SOLID); exp0.More(); exp0.Next())
++      {
++         solidnr++;
++         for (TopExp_Explorer exp1(exp0.Current(), TopAbs_FACE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Face face = TopoDS::Face(exp1.Current());
++            int facenr = geom.fmap.FindIndex(face);
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
++
++            if (face2solid[0][facenr-1] == 0)
++               face2solid[0][facenr-1] = solidnr;
++            else
++               face2solid[1][facenr-1] = solidnr;
++         }
++      }
++
++
++      int total = 0;
++      for (int i3 = 1; i3 <= geom.fmap.Extent(); i3++)
++         for (TopExp_Explorer exp2(geom.fmap(i3), TopAbs_WIRE); exp2.More(); exp2.Next())
++            for (TopExp_Explorer exp3(exp2.Current(), TopAbs_EDGE); exp3.More(); exp3.Next())
++               total++;
++
++
++      int facenr = 0;
++      int edgenr = 0;
++
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
++
++      (*testout) << "faces = " << geom.fmap.Extent() << std::endl;
++      int curr = 0;
++
++      for (int i3 = 1; i3 <= geom.fmap.Extent(); i3++)
++      {
++         TopoDS_Face face = TopoDS::Face(geom.fmap(i3));
++         facenr = geom.fmap.FindIndex (face);       // sollte doch immer == i3 sein ??? JS
++
++         int solidnr0 = face2solid[0][i3-1];
++         int solidnr1 = face2solid[1][i3-1];
++
++         /* auskommentiert am 3.3.05 von robert
++         for (exp2.Init (geom.somap(solidnr0), TopAbs_FACE); exp2.More(); exp2.Next())
++         {
++         TopoDS_Face face2 = TopoDS::Face(exp2.Current());
++         if (geom.fmap.FindIndex(face2) == facenr)
++         {
++         //                 if (face.Orientation() != face2.Orientation()) swap (solidnr0, solidnr1);
++         }
++         }
++         */
++
++         mesh.AddFaceDescriptor (FaceDescriptor(facenr, solidnr0, solidnr1, 0));
++
++         // Philippose - 06/07/2009
++         // Add the face colour to the mesh data
++         Quantity_Color face_colour;
++
++         if(!(geom.face_colours.IsNull())
++            && (geom.face_colours->GetColor(face,XCAFDoc_ColorSurf,face_colour)))
++         {
++            mesh.GetFaceDescriptor(facenr).SetSurfColour(Vec3d(face_colour.Red(),face_colour.Green(),face_colour.Blue()));
++         }
++         else
++         {
++            mesh.GetFaceDescriptor(facenr).SetSurfColour(Vec3d(0.0,1.0,0.0));
++         }
++         // ACHTUNG! STIMMT NICHT ALLGEMEIN (RG)
++
++
++         Handle(Geom_Surface) occface = BRep_Tool::Surface(face);
++
++         for (TopExp_Explorer exp2 (face, TopAbs_WIRE); exp2.More(); exp2.Next())
++         {
++            TopoDS_Shape wire = exp2.Current();
++
++            for (TopExp_Explorer exp3 (wire, TopAbs_EDGE); exp3.More(); exp3.Next())
++            {
++               curr++;
++               (*testout) << "edge nr " << curr << std::endl;
++
++               multithread.percent = 100 * curr / double (total);
++               if (multithread.terminate) return;
++
++               TopoDS_Edge edge = TopoDS::Edge (exp3.Current());
++               if (BRep_Tool::Degenerated(edge))
++               {
++                  //(*testout) << "ignoring degenerated edge" << std::endl;
++                  continue;
++               }
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
++
++               if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
++                  geom.vmap.FindIndex(TopExp::LastVertex (edge)))
++               {
++                  GProp_GProps system;
++                  BRepGProp::LinearProperties(edge, system);
++
++                  if (system.Mass() < eps)
++                  {
++                     std::cout << "ignoring edge " << geom.emap.FindIndex (edge)
++                        << ". closed edge with length < " << eps << std::endl;
++                     continue;
++                  }
++               }
++
++
++               Handle(Geom2d_Curve) cof;
++               double s0, s1;
++               cof = BRep_Tool::CurveOnSurface (edge, face, s0, s1);
++
++               int geomedgenr = geom.emap.FindIndex(edge);
++
++               Array <MeshPoint> mp;
++               Array <double> params;
++
++               DivideEdge (edge, mp, params, mesh);
++ 
++               Array <int> pnums;
++               pnums.SetSize (mp.Size()+2);
++
++               if (!merge_solids)
++               {
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
++               }
++               else
++               {
++                     ip += first_vp - 1;
++                   }
++                 }
++               }
++               else
++               {
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
++
++                  pnums[0] = -1;
++                  pnums.Last() = -1;
++                  for (PointIndex pi = 1; pi < first_ep; pi++)
++                  {
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
++                  }
++               }
++
++
++               for (int i = 1; i <= mp.Size(); i++)
++               {
++                  bool exists = 0;
++                  int j;
++                  for (j = first_ep; j <= mesh.GetNP(); j++)
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
++                     if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)
++                     {
++                        exists = 1;
++                        break;
++                     }
++                  }
++
++                     if (exists)
++                        pnums[i] = j;
++                     else
++                     {
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
++                        (*testout) << "add meshpoint " << mp[i-1] << std::endl;
++                        pnums[i] = mesh.GetNP();
++                     }
++               }
++               (*testout) << "NP = " << mesh.GetNP() << std::endl;
++
++               //(*testout) << pnums[pnums.Size()-1] << std::endl;
++
++               for (int i = 1; i <= mp.Size()+1; i++)
++               {
++                  edgenr++;
++                  Segment seg;
++
++                  seg[0] = pnums[i-1];
++                  seg[1] = pnums[i];
++                  seg.edgenr = edgenr;
++                  seg.si = facenr;
++                  seg.epgeominfo[0].dist = params[i-1];
++                  seg.epgeominfo[1].dist = params[i];
++                  seg.epgeominfo[0].edgenr = geomedgenr;
++                  seg.epgeominfo[1].edgenr = geomedgenr;
++
++                  gp_Pnt2d p2d;
++                  p2d = cof->Value(params[i-1]);
++                  //                  if (i == 1) p2d = cof->Value(s0);
++                  seg.epgeominfo[0].u = p2d.X();
++                  seg.epgeominfo[0].v = p2d.Y();
++                  p2d = cof->Value(params[i]);
++                  //                  if (i == mp.Size()+1) p2d = cof -> Value(s1);
++                  seg.epgeominfo[1].u = p2d.X();
++                  seg.epgeominfo[1].v = p2d.Y();
++
++                  /*
++                  if (occface->IsUPeriodic())
++                  {
++                  std::cout << "U Periodic" << std::endl;
++                  if (fabs(seg.epgeominfo[1].u-seg.epgeominfo[0].u) >
++                  fabs(seg.epgeominfo[1].u-
++                  (seg.epgeominfo[0].u-occface->UPeriod())))
++                  seg.epgeominfo[0].u = p2d.X()+occface->UPeriod();
++
++                  if (fabs(seg.epgeominfo[1].u-seg.epgeominfo[0].u) >
++                  fabs(seg.epgeominfo[1].u-
++                  (seg.epgeominfo[0].u+occface->UPeriod())))
++                  seg.epgeominfo[0].u = p2d.X()-occface->UPeriod();
++                  }
++
++                  if (occface->IsVPeriodic())
++                  {
++                  std::cout << "V Periodic" << std::endl;
++                  if (fabs(seg.epgeominfo[1].v-seg.epgeominfo[0].v) >
++                  fabs(seg.epgeominfo[1].v-
++                  (seg.epgeominfo[0].v-occface->VPeriod())))
++                  seg.epgeominfo[0].v = p2d.Y()+occface->VPeriod();
++
++                  if (fabs(seg.epgeominfo[1].v-seg.epgeominfo[0].v) >
++                  fabs(seg.epgeominfo[1].v-
++                  (seg.epgeominfo[0].v+occface->VPeriod())))
++                  seg.epgeominfo[0].v = p2d.Y()-occface->VPeriod();
++                  }
++                  */
++
++                  if (edge.Orientation() == TopAbs_REVERSED)
++                  {
++                     swap (seg[0], seg[1]);
++                     swap (seg.epgeominfo[0].dist, seg.epgeominfo[1].dist);
++                     swap (seg.epgeominfo[0].u, seg.epgeominfo[1].u);
++                     swap (seg.epgeominfo[0].v, seg.epgeominfo[1].v);
++                  }
++
++                  mesh.AddSegment (seg);
++
++                  //edgesegments[geomedgenr-1]->Append(mesh.GetNSeg());
++
++               }
++            }
++         }
++      }
++
++      //      for(i=1; i<=mesh.GetNSeg(); i++)
++      //              (*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
++      //                              << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << std::endl;
++      //      exit(10);
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
++
++      mesh.CalcSurfacesOfNode();
++      multithread.task = savetask;
++   }
++
++
++
++
++   void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend)
++   {
++      int i, j, k;
++      int changed;
++
++      const char * savetask = multithread.task;
++      multithread.task = "Surface meshing";
++
++      geom.facemeshstatus = 0;
++
++      int noldp = mesh.GetNP();
++
++      double starttime = GetTime();
++
++      Array<int> glob2loc(noldp);
++
++      //int projecttype = PARAMETERSPACE;
++
++      int projecttype = PARAMETERSPACE;
++
++      int notrys = 1;
++
++      int surfmesherror = 0;
++
++      for (k = 1; k <= mesh.GetNFD(); k++)
++      {
++         if(1==0 && !geom.fvispar[k-1].IsDrawable())
++         {
++            (*testout) << "ignoring face " << k << std::endl;
++            std::cout << "ignoring face " << k << std::endl;
++            continue;
++         }
++
++         (*testout) << "mesh face " << k << std::endl;
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
++         geom.facemeshstatus[k-1] = -1;
++
++
++         /*
++         if (k != 42)
++         {
++         std::cout << "skipped" << std::endl;
++         continue;
++         }
++         */
++
++
++         FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
++
++         int oldnf = mesh.GetNSE();
++
++         Box<3> bb = geom.GetBoundingBox();
++
++         //      int projecttype = PLANESPACE;
++
++         Meshing2OCCSurfaces meshing(TopoDS::Face(geom.fmap(k)), bb, projecttype);
++
++         if (meshing.GetProjectionType() == PLANESPACE)
++            PrintMessage (2, "Face ", k, " / ", mesh.GetNFD(), " (plane space projection)");
++         else
++            PrintMessage (2, "Face ", k, " / ", mesh.GetNFD(), " (parameter space projection)");
++
++         if (surfmesherror)
++            std::cout << "Surface meshing error occured before (in " << surfmesherror << " faces)" << std::endl;
++
++         //      Meshing2OCCSurfaces meshing(f2, bb);
++         meshing.SetStartTime (starttime);
++
++         //(*testout) << "Face " << k << std::endl << std::endl;
++
++
++         if (meshing.GetProjectionType() == PLANESPACE)
++         {
++            int cntp = 0;
++            glob2loc = 0;
++            for (i = 1; i <= mesh.GetNSeg(); i++)
++            {
++               Segment & seg = mesh.LineSegment(i);
++               if (seg.si == k)
++               {
++                  for (j = 1; j <= 2; j++)
++                  {
++                     int pi = (j == 1) ? seg[0] : seg[1];
++                     if (!glob2loc.Get(pi))
++                     {
++                        meshing.AddPoint (mesh.Point(pi), pi);
++                        cntp++;
++                        glob2loc.Elem(pi) = cntp;
++                     }
++                  }
++               }
++            }
++
++            for (i = 1; i <= mesh.GetNSeg(); i++)
++            {
++               Segment & seg = mesh.LineSegment(i);
++               if (seg.si == k)
++               {
++                  PointGeomInfo gi0, gi1;
++                  gi0.trignum = gi1.trignum = k;
++                  gi0.u = seg.epgeominfo[0].u;
++                  gi0.v = seg.epgeominfo[0].v;
++                  gi1.u = seg.epgeominfo[1].u;
++                  gi1.v = seg.epgeominfo[1].v;
++
++                  meshing.AddBoundaryElement (glob2loc.Get(seg[0]), glob2loc.Get(seg[1]), gi0, gi1);
++                  //(*testout) << gi0.u << " " << gi0.v << std::endl;
++                  //(*testout) << gi1.u << " " << gi1.v << std::endl;
++               }
++            }
++         }
++         else
++         {
++            int cntp = 0;
++
++            for (i = 1; i <= mesh.GetNSeg(); i++)
++               if (mesh.LineSegment(i).si == k)
++                  cntp+=2;
++
++
++            Array< PointGeomInfo > gis;
++
++            gis.SetAllocSize (cntp);
++            gis.SetSize (0);
++
++            for (i = 1; i <= mesh.GetNSeg(); i++)
++            {
++               Segment & seg = mesh.LineSegment(i);
++               if (seg.si == k)
++               {
++                  PointGeomInfo gi0, gi1;
++                  gi0.trignum = gi1.trignum = k;
++                  gi0.u = seg.epgeominfo[0].u;
++                  gi0.v = seg.epgeominfo[0].v;
++                  gi1.u = seg.epgeominfo[1].u;
++                  gi1.v = seg.epgeominfo[1].v;
++
++                  int locpnum[2] = {0, 0};
++
++                  for (j = 0; j < 2; j++)
++                  {
++                     PointGeomInfo gi = (j == 0) ? gi0 : gi1;
++
++                     int l;
++                     for (l = 0; l < gis.Size() && locpnum[j] == 0; l++)
++                     {
++                        double dist = sqr (gis[l].u-gi.u)+sqr(gis[l].v-gi.v);
++
++                        if (dist < 1e-10)
++                           locpnum[j] = l+1;
++                     }
++
++                     if (locpnum[j] == 0)
++                     {
++                        int pi = (j == 0) ? seg[0] : seg[1];
++                        meshing.AddPoint (mesh.Point(pi), pi);
++
++                        gis.SetSize (gis.Size()+1);
++                        gis[l] = gi;
++                        locpnum[j] = l+1;
++                     }
++                  }
++
++                  meshing.AddBoundaryElement (locpnum[0], locpnum[1], gi0, gi1);
++                  //(*testout) << gi0.u << " " << gi0.v << std::endl;
++                  //(*testout) << gi1.u << " " << gi1.v << std::endl;
++
++               }
++            }
++         }
++
++
++
++
++
++         // Philippose - 15/01/2009
++         double maxh = geom.face_maxh[k-1];
++         //double maxh = mparam.maxh;
++         mparam.checkoverlap = 0;
++         //      int noldpoints = mesh->GetNP();
++         int noldsurfel = mesh.GetNSE();
++
++         GProp_GProps sprops;
++         BRepGProp::SurfaceProperties(TopoDS::Face(geom.fmap(k)),sprops);
++         meshing.SetMaxArea(2.*sprops.Mass());
++
++         MESHING2_RESULT res;
++
++         try {
++         res = meshing.GenerateMesh (mesh, mparam, maxh, k);
++         }
++
++         catch (SingularMatrixException)
++         {
++            (*myerr) << "Singular Matrix" << std::endl;
++            res = MESHING2_GIVEUP;
++         }
++
++         catch (UVBoundsException)
++         {
++            (*myerr) << "UV bounds exceeded" << std::endl;
++            res = MESHING2_GIVEUP;
++         }
++
++         projecttype = PARAMETERSPACE;
++
++         if (res != MESHING2_OK)
++         {
++            if (notrys == 1)
++            {
++               for (int i = noldsurfel+1; i <= mesh.GetNSE(); i++)
++                  mesh.DeleteSurfaceElement (i);
++
++               mesh.Compress();
++
++               std::cout << "retry Surface " << k << std::endl;
++
++               k--;
++               projecttype*=-1;
++               notrys++;
++               continue;
++            }
++            else
++            {
++               geom.facemeshstatus[k-1] = -1;
++               PrintError ("Problem in Surface mesh generation");
++               surfmesherror++;
++               //           throw NgException ("Problem in Surface mesh generation");
++            }
++         }
++         else
++         {
++            geom.facemeshstatus[k-1] = 1;
++         }
++
++         notrys = 1;
++
++         for (i = oldnf+1; i <= mesh.GetNSE(); i++)
++            mesh.SurfaceElement(i).SetIndex (k);
++
++      }
++
++//      ofstream problemfile("occmesh.rep");
++
++//      problemfile << "SURFACEMESHING" << std::endl << std::endl;
++
++      if (surfmesherror)
++      {
++         std::cout << "WARNING! NOT ALL FACES HAVE BEEN MESHED" << std::endl;
++         std::cout << "SURFACE MESHING ERROR OCCURED IN " << surfmesherror << " FACES:" << std::endl;
++         for (int i = 1; i <= geom.fmap.Extent(); i++)
++            if (geom.facemeshstatus[i-1] == -1)
++            {
++               std::cout << "Face " << i << std::endl;
++//               problemfile << "problem with face " << i << std::endl;
++//               problemfile << "vertices: " << std::endl;
++               TopExp_Explorer exp0,exp1,exp2;
++               for ( exp0.Init(TopoDS::Face (geom.fmap(i)), TopAbs_WIRE); exp0.More(); exp0.Next() )
++               {
++                  TopoDS_Wire wire = TopoDS::Wire(exp0.Current());
++                  for ( exp1.Init(wire,TopAbs_EDGE); exp1.More(); exp1.Next() )
++                  {
++                     TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++                     for ( exp2.Init(edge,TopAbs_VERTEX); exp2.More(); exp2.Next() )
++                     {
++                        TopoDS_Vertex vertex = TopoDS::Vertex(exp2.Current());
++                        gp_Pnt point = BRep_Tool::Pnt(vertex);
++//                        problemfile << point.X() << " " << point.Y() << " " << point.Z() << std::endl;
++                     }
++                  }
++               }
++//               problemfile << std::endl;
++
++            }
++            std::cout << std::endl << std::endl;
++            std::cout << "for more information open IGES/STEP Topology Explorer" << std::endl;
++//            problemfile.close();
++            throw NgException ("Problem in Surface mesh generation");
++      }
++      else
++      {
++//         problemfile << "OK" << std::endl << std::endl;
++//         problemfile.close();
++      }
++
++
++
++
++      if (multithread.terminate || perfstepsend < MESHCONST_OPTSURFACE)
++         return;
++
++      multithread.task = "Optimizing surface";
++
++      static int timer_opt2d = NgProfiler::CreateTimer ("Optimization 2D");
++      NgProfiler::StartTimer (timer_opt2d);
++
++      for (k = 1; k <= mesh.GetNFD(); k++)
++      {
++         //      if (k != 42) continue;
++         //      if (k != 36) continue;
++
++         //      (*testout) << "optimize face " << k << std::endl;
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
++
++         FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
++
++         PrintMessage (1, "Optimize Surface ", k);
++         for (i = 1; i <= mparam.optsteps2d; i++)
++         {
++            //          (*testout) << "optstep " << i << std::endl;
++            if (multithread.terminate) return;
++
++            {
++               MeshOptimize2dOCCSurfaces meshopt(geom);
++               meshopt.SetFaceIndex (k);
++               meshopt.SetImproveEdges (0);
++               meshopt.SetMetricWeight (mparam.elsizeweight);
++               //meshopt.SetMetricWeight (0.2);
++               meshopt.SetWriteStatus (0);
++
++               //         (*testout) << "EdgeSwapping (mesh, (i > mparam.optsteps2d/2))" << std::endl;
++               meshopt.EdgeSwapping (mesh, (i > mparam.optsteps2d/2));
++            }
++
++            if (multithread.terminate) return;
++            {
++               MeshOptimize2dOCCSurfaces meshopt(geom);
++               meshopt.SetFaceIndex (k);
++               meshopt.SetImproveEdges (0);
++               //meshopt.SetMetricWeight (0.2);
++               meshopt.SetMetricWeight (mparam.elsizeweight);
++               meshopt.SetWriteStatus (0);
++
++               //         (*testout) << "ImproveMesh (mesh)" << std::endl;
++               meshopt.ImproveMesh (mesh, mparam);
++            }
++
++            {
++               MeshOptimize2dOCCSurfaces meshopt(geom);
++               meshopt.SetFaceIndex (k);
++               meshopt.SetImproveEdges (0);
++               //meshopt.SetMetricWeight (0.2);
++               meshopt.SetMetricWeight (mparam.elsizeweight);
++               meshopt.SetWriteStatus (0);
++
++               //         (*testout) << "CombineImprove (mesh)" << std::endl;
++               meshopt.CombineImprove (mesh);
++            }
++
++            if (multithread.terminate) return;
++            {
++               MeshOptimize2dOCCSurfaces meshopt(geom);
++               meshopt.SetFaceIndex (k);
++               meshopt.SetImproveEdges (0);
++               //meshopt.SetMetricWeight (0.2);
++               meshopt.SetMetricWeight (mparam.elsizeweight);
++               meshopt.SetWriteStatus (0);
++
++               //         (*testout) << "ImproveMesh (mesh)" << std::endl;
++               meshopt.ImproveMesh (mesh, mparam);
++            }
++         }
++
++      }
++
++
++      mesh.CalcSurfacesOfNode();
++      mesh.Compress();
++
++      NgProfiler::StopTimer (timer_opt2d);
++
++      multithread.task = savetask;
++   }
++
++
++
++   void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh)
++   {
++      mesh.SetGlobalH (mparam.maxh);
++      mesh.SetMinimalH (mparam.minh);
++
++      Array<double> maxhdom;
++      maxhdom.SetSize (geom.NrSolids());
++      maxhdom = mparam.maxh;
++
++      mesh.SetMaxHDomain (maxhdom);
++
++      Box<3> bb = geom.GetBoundingBox();
++      bb.Increase (bb.Diam()/10);
++
++      mesh.SetLocalH (bb.PMin(), bb.PMax(), 0.5);
++
++      if (mparam.uselocalh)
++      {
++         const char * savetask = multithread.task;
++         multithread.percent = 0;
++
++         mesh.SetLocalH (bb.PMin(), bb.PMax(), mparam.grading);
++
++         int nedges = geom.emap.Extent();
++
++               double mincurvelength = IGNORECURVELENGTH;
++         double maxedgelen = 0;
++         double minedgelen = 1e99;
++
++               if(occparam.resthminedgelenenable) 
++               {
++                      mincurvelength = occparam.resthminedgelen;
++                      if(mincurvelength < IGNORECURVELENGTH) mincurvelength = IGNORECURVELENGTH;
++               }
++
++         multithread.task = "Setting local mesh size (elements per edge)";
++
++         // setting elements per edge
++
++         for (int i = 1; i <= nedges && !multithread.terminate; i++)
++         {
++            TopoDS_Edge e = TopoDS::Edge (geom.emap(i));
++            multithread.percent = 100 * (i-1)/double(nedges);
++            if (BRep_Tool::Degenerated(e)) continue;
++
++            GProp_GProps system;
++            BRepGProp::LinearProperties(e, system);
++            double len = system.Mass();
++
++            if (len < mincurvelength)
++            {
++               (*testout) << "ignored" << std::endl;
++               continue;
++            }
++
++            double localh = len/mparam.segmentsperedge;
++            double s0, s1;
++
++            // Philippose - 23/01/2009
++            // Find all the parent faces of a given edge
++            // and limit the mesh size of the edge based on the
++            // mesh size limit of the face
++            TopTools_IndexedDataMapOfShapeListOfShape edge_face_map;
++            edge_face_map.Clear();
++
++            TopExp::MapShapesAndAncestors(geom.shape, TopAbs_EDGE, TopAbs_FACE, edge_face_map);
++            const TopTools_ListOfShape& parent_faces = edge_face_map.FindFromKey(e);
++
++            TopTools_ListIteratorOfListOfShape parent_face_list;
++
++            for(parent_face_list.Initialize(parent_faces); parent_face_list.More(); parent_face_list.Next())
++            {
++               TopoDS_Face parent_face = TopoDS::Face(parent_face_list.Value());
++
++               int face_index = geom.fmap.FindIndex(parent_face);
++
++               if(face_index >= 1) localh = min(localh,geom.face_maxh[face_index - 1]);
++            }
++
++            Handle(Geom_Curve) c = BRep_Tool::Curve(e, s0, s1);
++
++            maxedgelen = max (maxedgelen, len);
++            minedgelen = min (minedgelen, len);
++
++            // Philippose - 23/01/2009
++            // Modified the calculation of maxj, because the
++            // method used so far always results in maxj = 2,
++            // which causes the localh to be set only at the
++            // starting, mid and end of the edge.
++            // Old Algorithm:
++            // int maxj = 2 * (int) ceil (localh/len);
++            int maxj = max((int) ceil(len/localh), 2);
++
++            for (int j = 0; j <= maxj; j++)
++            {
++               gp_Pnt pnt = c->Value (s0+double(j)/maxj*(s1-s0));
++               mesh.RestrictLocalH (Point3d(pnt.X(), pnt.Y(), pnt.Z()), localh);
++            }
++         }
++
++         multithread.task = "Setting local mesh size (edge curvature)";
++
++         // setting edge curvature
++
++         int nsections = 20;
++
++         for (int i = 1; i <= nedges && !multithread.terminate; i++)
++         {
++            double maxcur = 0;
++            multithread.percent = 100 * (i-1)/double(nedges);
++            TopoDS_Edge edge = TopoDS::Edge (geom.emap(i));
++            if (BRep_Tool::Degenerated(edge)) continue;
++            double s0, s1;
++            Handle(Geom_Curve) c = BRep_Tool::Curve(edge, s0, s1);
++            BRepAdaptor_Curve brepc(edge);
++            BRepLProp_CLProps prop(brepc, 2, 1e-5);
++
++            for (int j = 1; j <= nsections; j++)
++            {
++               double s = s0 + j/(double) nsections * (s1-s0);
++               prop.SetParameter (s);
++               double curvature = prop.Curvature();
++               if(curvature> maxcur) maxcur = curvature;
++
++               if (curvature >= 1e99)
++                  continue;
++
++               gp_Pnt pnt = c->Value (s);
++
++               mesh.RestrictLocalH (Point3d(pnt.X(), pnt.Y(), pnt.Z()), ComputeH (fabs(curvature)));
++            }
++            // (*testout) << "edge " << i << " max. curvature: " << maxcur << std::endl;
++         }
++
++         multithread.task = "Setting local mesh size (face curvature)";
++
++         // setting face curvature
++
++         int nfaces = geom.fmap.Extent();
++
++         for (int i = 1; i <= nfaces && !multithread.terminate; i++)
++         {
++            multithread.percent = 100 * (i-1)/double(nfaces);
++            TopoDS_Face face = TopoDS::Face(geom.fmap(i));
++            TopLoc_Location loc;
++            Handle(Geom_Surface) surf = BRep_Tool::Surface (face);
++            Handle(Poly_Triangulation) triangulation = BRep_Tool::Triangulation (face, loc);
++
++            if (triangulation.IsNull()) continue;
++
++            BRepAdaptor_Surface sf(face, Standard_True);
++            BRepLProp_SLProps prop(sf, 2, 1e-5);
++
++            int ntriangles = triangulation -> NbTriangles();
++            for (int j = 1; j <= ntriangles; j++)
++            {
++               gp_Pnt p[3];
++               gp_Pnt2d par[3];
++
++               for (int k = 1; k <=3; k++)
++               {
++                  int n = triangulation->Triangles()(j)(k);
++                  p[k-1] = triangulation->Nodes()(n).Transformed(loc);
++                  par[k-1] = triangulation->UVNodes()(n);
++               }
++
++               //double maxside = 0;
++               //maxside = max (maxside, p[0].Distance(p[1]));
++               //maxside = max (maxside, p[0].Distance(p[2]));
++               //maxside = max (maxside, p[1].Distance(p[2]));
++               //std::cout << "\rFace " << i << " pos11 ntriangles " << ntriangles << " maxside " << maxside << flush;
++
++               RestrictHTriangle (par[0], par[1], par[2], &prop, mesh, 0);
++               //std::cout << "\rFace " << i << " pos12 ntriangles " << ntriangles << flush;
++            }
++         }
++
++         // setting close edges
++
++         if (occparam.resthcloseedgeenable)
++         {
++            multithread.task = "Setting local mesh size (close edges)";
++
++            int sections = 100;
++
++            Array<Line> lines(sections*nedges);
++
++            Box3dTree* searchtree =
++               new Box3dTree (bb.PMin(), bb.PMax());
++
++            int nlines = 0;
++            for (int i = 1; i <= nedges && !multithread.terminate; i++)
++            {
++               TopoDS_Edge edge = TopoDS::Edge (geom.emap(i));
++               if (BRep_Tool::Degenerated(edge)) continue;
++
++               double s0, s1;
++               Handle(Geom_Curve) c = BRep_Tool::Curve(edge, s0, s1);
++               BRepAdaptor_Curve brepc(edge);
++               BRepLProp_CLProps prop(brepc, 1, 1e-5);
++               prop.SetParameter (s0);
++
++               gp_Vec d0 = prop.D1().Normalized();
++               double s_start = s0;
++               int count = 0;
++               for (int j = 1; j <= sections; j++)
++               {
++                  double s = s0 + (s1-s0)*(double)j/(double)sections;
++                  prop.SetParameter (s);
++                  gp_Vec d1 = prop.D1().Normalized();
++                  double cosalpha = fabs(d0*d1);
++                  if ((j == sections) || (cosalpha < cos(10.0/180.0*M_PI)))
++                  {
++                     count++;
++                     gp_Pnt p0 = c->Value (s_start);
++                     gp_Pnt p1 = c->Value (s);
++                     lines[nlines].p0 = Point<3> (p0.X(), p0.Y(), p0.Z());
++                     lines[nlines].p1 = Point<3> (p1.X(), p1.Y(), p1.Z());
++
++                     Box3d box;
++                     box.SetPoint (Point3d(lines[nlines].p0));
++                     box.AddPoint (Point3d(lines[nlines].p1));
++
++                     searchtree->Insert (box.PMin(), box.PMax(), nlines+1);
++                     nlines++;
++
++                     s_start = s;
++                     d0 = d1;
++                  }
++               }
++            }
++
++            Array<int> linenums;
++
++            for (int i = 0; i < nlines; i++)
++            {
++               multithread.percent = (100*i)/double(nlines);
++               Line & line = lines[i];
++
++               Box3d box;
++               box.SetPoint (Point3d(line.p0));
++               box.AddPoint (Point3d(line.p1));
++               double maxhline = max (mesh.GetH(box.PMin()),
++                  mesh.GetH(box.PMax()));
++               box.Increase(maxhline);
++
++               double mindist = 1e99;
++               linenums.SetSize(0);
++               searchtree->GetIntersecting(box.PMin(),box.PMax(),linenums);
++
++               for (int j = 0; j < linenums.Size(); j++)
++               {
++                  int num = linenums[j]-1;
++                  if (i == num) continue;
++                  if ((line.p0-lines[num].p0).Length2() < 1e-15) continue;
++                  if ((line.p0-lines[num].p1).Length2() < 1e-15) continue;
++                  if ((line.p1-lines[num].p0).Length2() < 1e-15) continue;
++                  if ((line.p1-lines[num].p1).Length2() < 1e-15) continue;
++                  mindist = min (mindist, line.Dist(lines[num]));
++               }
++
++               mindist /= (occparam.resthcloseedgefac + VSMALL);
++
++               if (mindist < 1e-3)
++               {
++                  (*testout) << "extremely small local h: " << mindist
++                     << " --> setting to 1e-3" << std::endl;
++                  (*testout) << "somewhere near " << line.p0 << " - " << line.p1 << std::endl;
++                  mindist = 1e-3;
++               }
++
++               mesh.RestrictLocalHLine(line.p0, line.p1, mindist);
++            }
++         }
++
++         multithread.task = savetask;
++
++      }
++
++      // Philippose - 09/03/2009
++      // Added the capability to load the mesh size from a 
++      // file also for OpenCascade Geometry
++      // Note: 
++      // ** If the "uselocalh" option is ticked in 
++      // the "mesh options...insider" menu, the mesh 
++      // size will be further modified by the topology 
++      // analysis routines.
++      // ** To use the mesh size file as the sole source 
++      // for defining the mesh size, uncheck the "uselocalh"
++      // option.
++      mesh.LoadLocalMeshSize (mparam.meshsizefilename);
++   }
++
++
++
++  int OCCGenerateMesh (OCCGeometry & geom, Mesh *& mesh, MeshingParameters & mparam,
++                     int perfstepsstart, int perfstepsend)
++   {
++      multithread.percent = 0;
++
++      if (perfstepsstart <= MESHCONST_ANALYSE)
++      {
++         delete mesh;
++         mesh = new Mesh();
++         mesh->geomtype = Mesh::GEOM_OCC;
++
++         OCCSetLocalMeshSize(geom,*mesh);
++      }
++
++      if (multithread.terminate || perfstepsend <= MESHCONST_ANALYSE)
++         return TCL_OK;
++
++      if (perfstepsstart <= MESHCONST_MESHEDGES)
++      {
++         OCCFindEdges (geom, *mesh);
++
++         /*
++         std::cout << "Removing redundant points" << std::endl;
++
++         int i, j;
++         int np = mesh->GetNP();
++         Array<int> equalto;
++
++         equalto.SetSize (np);
++         equalto = 0;
++
++         for (i = 1; i <= np; i++)
++         {
++         for (j = i+1; j <= np; j++)
++         {
++         if (!equalto[j-1] && (Dist2 (mesh->Point(i), mesh->Point(j)) < 1e-12))
++         equalto[j-1] = i;
++         }
++         }
++
++         for (i = 1; i <= np; i++)
++         if (equalto[i-1])
++         {
++         std::cout << "Point " << i << " is equal to Point " << equalto[i-1] << std::endl;
++         for (j = 1; j <= mesh->GetNSeg(); j++)
++         {
++         Segment & seg = mesh->LineSegment(j);
++         if (seg[0] == i) seg[0] = equalto[i-1];
++         if (seg[1] == i) seg[1] = equalto[i-1];
++         }
++         }
++
++         std::cout << "Removing degenerated segments" << std::endl;
++         for (j = 1; j <= mesh->GetNSeg(); j++)
++         {
++         Segment & seg = mesh->LineSegment(j);
++         if (seg[0] == seg[1])
++         {
++         mesh->DeleteSegment(j);
++         std::cout << "Deleting Segment " << j << std::endl;
++         }
++         }
++
++         mesh->Compress();
++         */
++
++         /*
++         for (int i = 1; i <= geom.fmap.Extent(); i++)
++         {
++         Handle(Geom_Surface) hf1 =
++         BRep_Tool::Surface(TopoDS::Face(geom.fmap(i)));
++         for (int j = i+1; j <= geom.fmap.Extent(); j++)
++         {
++         Handle(Geom_Surface) hf2 =
++         BRep_Tool::Surface(TopoDS::Face(geom.fmap(j)));
++         if (hf1 == hf2) std::cout << "face " << i << " and face " << j << " lie on same surface" << std::endl;
++         }
++         }
++         */
++
++#ifdef LOG_STREAM
++         (*logout) << "Edges meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
++#endif
++      }
++
++      if (multithread.terminate || perfstepsend <= MESHCONST_MESHEDGES)
++         return TCL_OK;
++
++      if (perfstepsstart <= MESHCONST_MESHSURFACE)
++      {
++         OCCMeshSurface (geom, *mesh, perfstepsend);
++         if (multithread.terminate) return TCL_OK;
++
++#ifdef LOG_STREAM
++         (*logout) << "Surfaces meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
++#endif
++
++#ifdef STAT_STREAM
++         (*statout) << mesh->GetNSeg() << " & "
++            << mesh->GetNSE() << " & - &"
++            << GetTime() << " & " << std::endl;
++#endif
++
++         //      MeshQuality2d (*mesh);
++         mesh->CalcSurfacesOfNode();
++      }
++
++      if (multithread.terminate || perfstepsend <= MESHCONST_OPTSURFACE)
++         return TCL_OK;
++
++      if (perfstepsstart <= MESHCONST_MESHVOLUME)
++      {
++         multithread.task = "Volume meshing";
++
++         MESHING3_RESULT res = MeshVolume (mparam, *mesh);
++
++/*
++         ofstream problemfile("occmesh.rep",ios_base::app);
++
++         problemfile << "VOLUMEMESHING" << std::endl << std::endl;
++         if(res != MESHING3_OK)
++            problemfile << "ERROR" << std::endl << std::endl;
++         else
++            problemfile << "OK" << std::endl
++            << mesh->GetNE() << " elements" << std::endl << std::endl;
++
++         problemfile.close();
++*/
++
++         if (res != MESHING3_OK) return TCL_ERROR;
++
++         if (multithread.terminate) return TCL_OK;
++
++         RemoveIllegalElements (*mesh);
++         if (multithread.terminate) return TCL_OK;
++
++         MeshQuality3d (*mesh);
++
++#ifdef STAT_STREAM
++         (*statout) << GetTime() << " & ";
++#endif
++
++#ifdef LOG_STREAM
++         (*logout) << "Volume meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
++#endif
++      }
++
++      if (multithread.terminate || perfstepsend <= MESHCONST_MESHVOLUME)
++         return TCL_OK;
++
++      if (perfstepsstart <= MESHCONST_OPTVOLUME)
++      {
++         multithread.task = "Volume optimization";
++
++         OptimizeVolume (mparam, *mesh);
++         if (multithread.terminate) return TCL_OK;
++
++#ifdef STAT_STREAM
++         (*statout) << GetTime() << " & "
++            << mesh->GetNE() << " & "
++            << mesh->GetNP() << " " << '\\' << '\\' << " \\" << "hline" << std::endl;
++#endif
++
++#ifdef LOG_STREAM
++         (*logout) << "Volume optimized" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
++#endif
++
++         // std::cout << "Optimization complete" << std::endl;
++
++      }
++
++      (*testout) << "NP: " << mesh->GetNP() << std::endl;
++      for (int i = 1; i <= mesh->GetNP(); i++)
++         (*testout) << mesh->Point(i) << std::endl;
++
++      (*testout) << std::endl << "NSegments: " << mesh->GetNSeg() << std::endl;
++      for (int i = 1; i <= mesh->GetNSeg(); i++)
++         (*testout) << mesh->LineSegment(i) << std::endl;
++
++      return TCL_OK;
++   }
++}
++
++#endif
+--- netgen_ref/libsrc/occ/occgeom.cpp
++++ netgen/libsrc/occ/occgeom.cpp
+@@ -1,1612 +1,1669 @@
+-
+-#ifdef OCCGEOMETRY
+-
+-#include <mystdlib.h>
+-#include <occgeom.hpp>
+-#include "ShapeAnalysis_ShapeTolerance.hxx"
+-#include "ShapeAnalysis_ShapeContents.hxx"
+-#include "ShapeAnalysis_CheckSmallFace.hxx"
+-#include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
+-#include "ShapeAnalysis_Surface.hxx"
+-#include "BRepAlgoAPI_Fuse.hxx"
+-#include "BRepCheck_Analyzer.hxx"
+-#include "BRepLib.hxx"
+-#include "ShapeBuild_ReShape.hxx"
+-#include "ShapeFix.hxx"
+-#include "ShapeFix_FixSmallFace.hxx"
+-#include "Partition_Spliter.hxx"
+-
+-
+-namespace netgen
+-{
+-   void OCCGeometry :: PrintNrShapes ()
+-   {
+-      TopExp_Explorer e;
+-      int count = 0;
+-      for (e.Init(shape, TopAbs_COMPSOLID); e.More(); e.Next()) count++;
+-      cout << "CompSolids: " << count << endl;
+-
+-      cout << "Solids    : " << somap.Extent() << endl;
+-      cout << "Shells    : " << shmap.Extent() << endl;
+-      cout << "Faces     : " << fmap.Extent() << endl;
+-      cout << "Edges     : " << emap.Extent() << endl;
+-      cout << "Vertices  : " << vmap.Extent() << endl;
+-   }
+-
+-
+-
+-
+-   void PrintContents (OCCGeometry * geom)
+-   {
+-      ShapeAnalysis_ShapeContents cont;
+-      cont.Clear();
+-      cont.Perform(geom->shape);
+-
+-      (*testout) << "OCC CONTENTS" << endl;
+-      (*testout) << "============" << endl;
+-      (*testout) << "SOLIDS   : " << cont.NbSolids() << endl;
+-      (*testout) << "SHELLS   : " << cont.NbShells() << endl;
+-      (*testout) << "FACES    : " << cont.NbFaces() << endl;
+-      (*testout) << "WIRES    : " << cont.NbWires() << endl;
+-      (*testout) << "EDGES    : " << cont.NbEdges() << endl;
+-      (*testout) << "VERTICES : " << cont.NbVertices() << endl;
+-
+-      TopExp_Explorer e;
+-      int count = 0;
+-      for (e.Init(geom->shape, TopAbs_COMPOUND); e.More(); e.Next())
+-         count++;
+-      (*testout) << "Compounds: " << count << endl;
+-
+-      count = 0;
+-      for (e.Init(geom->shape, TopAbs_COMPSOLID); e.More(); e.Next())
+-         count++;
+-      (*testout) << "CompSolids: " << count << endl;
+-
+-      (*testout) << endl;
+-
+-      cout << "Highest entry in topology hierarchy: " << endl;
+-      if (count)
+-         cout << count << " composite solid(s)" << endl;
+-      else
+-         if (geom->somap.Extent())
+-            cout << geom->somap.Extent() << " solid(s)" << endl;
+-         else
+-            if (geom->shmap.Extent())
+-               cout << geom->shmap.Extent() << " shells(s)" << endl;
+-            else
+-               if (geom->fmap.Extent())
+-                  cout << geom->fmap.Extent() << " face(s)" << endl;
+-               else
+-                  if (geom->wmap.Extent())
+-                     cout << geom->wmap.Extent() << " wire(s)" << endl;
+-                  else
+-                     if (geom->emap.Extent())
+-                        cout << geom->emap.Extent() << " edge(s)" << endl;
+-                     else
+-                        if (geom->vmap.Extent())
+-                           cout << geom->vmap.Extent() << " vertices(s)" << endl;
+-                        else
+-                           cout << "no entities" << endl;
+-
+-   }
+-
+-
+-
+-   void OCCGeometry :: HealGeometry ()
+-   {
+-      int nrc = 0, nrcs = 0,
+-         nrso = somap.Extent(),
+-         nrsh = shmap.Extent(),
+-         nrf = fmap.Extent(),
+-         nrw = wmap.Extent(),
+-         nre = emap.Extent(),
+-         nrv = vmap.Extent();
+-
+-      TopExp_Explorer exp0;
+-      TopExp_Explorer exp1;
+-
+-
+-      for (exp0.Init(shape, TopAbs_COMPOUND); exp0.More(); exp0.Next()) nrc++;
+-      for (exp0.Init(shape, TopAbs_COMPSOLID); exp0.More(); exp0.Next()) nrcs++;
+-
+-      double surfacecont = 0;
+-
+-      {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-         rebuild->Apply(shape);
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
+-         }
+-         shape = rebuild->Apply(shape);
+-      }
+-
+-      BuildFMap();
+-
+-
+-      for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
+-      {
+-         TopoDS_Face face = TopoDS::Face(exp0.Current());
+-
+-         GProp_GProps system;
+-         BRepGProp::SurfaceProperties(face, system);
+-         surfacecont += system.Mass();
+-      }
+-
+-
+-      cout << "Starting geometry healing procedure (tolerance: " << tolerance << ")" << endl
+-         << "-----------------------------------" << endl;
+-
+-      {
+-         cout << endl << "- repairing faces" << endl;
+-
+-         Handle(ShapeFix_Face) sff;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-         rebuild->Apply(shape);
+-
+-
+-         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
+-         {
+-            // Variable to hold the colour (if there exists one) of 
+-            // the current face being processed
+-            Quantity_Color face_colour;
+-
+-            TopoDS_Face face = TopoDS::Face (exp0.Current());
+-
+-            if(face_colours.IsNull()
+-               || (!(face_colours->GetColor(face,XCAFDoc_ColorSurf,face_colour))))
+-            {
+-               // Set the default face colour to green (Netgen Standard)
+-               // if no colour has been defined for the face
+-               face_colour = Quantity_Color(0.0,1.0,0.0,Quantity_TOC_RGB);
+-            }
+-
+-            sff = new ShapeFix_Face (face);
+-            sff->FixAddNaturalBoundMode() = Standard_True;
+-            sff->FixSmallAreaWireMode() = Standard_True;
+-            sff->Perform();
+-
+-            if(sff->Status(ShapeExtend_DONE1) ||
+-               sff->Status(ShapeExtend_DONE2) ||
+-               sff->Status(ShapeExtend_DONE3) ||
+-               sff->Status(ShapeExtend_DONE4) ||
+-               sff->Status(ShapeExtend_DONE5))
+-            {
+-               cout << "repaired face " << fmap.FindIndex(face) << " ";
+-               if(sff->Status(ShapeExtend_DONE1))
+-                  cout << "(some wires are fixed)" <<endl;
+-               else if(sff->Status(ShapeExtend_DONE2))
+-                  cout << "(orientation of wires fixed)" <<endl;
+-               else if(sff->Status(ShapeExtend_DONE3))
+-                  cout << "(missing seam added)" <<endl;
+-               else if(sff->Status(ShapeExtend_DONE4))
+-                  cout << "(small area wire removed)" <<endl;
+-               else if(sff->Status(ShapeExtend_DONE5))
+-                  cout << "(natural bounds added)" <<endl;
+-               TopoDS_Face newface = sff->Face();
+-
+-               rebuild->Replace(face, newface, Standard_False);
+-            }
+-
+-            // Set the original colour of the face to the newly created 
+-            // face (after the healing process)
+-            face = TopoDS::Face (exp0.Current());
+-            face_colours->SetColor(face,face_colour,XCAFDoc_ColorSurf);
+-         }
+-         shape = rebuild->Apply(shape);
+-      }
+-
+-
+-      {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-         rebuild->Apply(shape);
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
+-         }
+-         shape = rebuild->Apply(shape);
+-      }
+-
+-
+-      if (fixsmalledges)
+-      {
+-         cout << endl << "- fixing small edges" << endl;
+-
+-         Handle(ShapeFix_Wire) sfw;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-         rebuild->Apply(shape);
+-
+-
+-         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
+-         {
+-            TopoDS_Face face = TopoDS::Face(exp0.Current());
+-
+-            for (exp1.Init (face, TopAbs_WIRE); exp1.More(); exp1.Next())
+-            {
+-               TopoDS_Wire oldwire = TopoDS::Wire(exp1.Current());
+-               sfw = new ShapeFix_Wire (oldwire, face ,tolerance);
+-               sfw->ModifyTopologyMode() = Standard_True;
+-
+-               sfw->ClosedWireMode() = Standard_True;
+-
+-               bool replace = false;
+-
+-               replace = sfw->FixReorder() || replace;
+-
+-               replace = sfw->FixConnected() || replace;
+-
+-
+-
+-               if (sfw->FixSmall (Standard_False, tolerance) && ! (sfw->StatusSmall(ShapeExtend_FAIL1) ||
+-                  sfw->StatusSmall(ShapeExtend_FAIL2) ||
+-                  sfw->StatusSmall(ShapeExtend_FAIL3)))
+-               {
+-                  cout << "Fixed small edge in wire " << wmap.FindIndex (oldwire) << endl;
+-                  replace = true;
+-
+-               }
+-               else if (sfw->StatusSmall(ShapeExtend_FAIL1))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", edge cannot be checked (no 3d curve and no pcurve)" << endl;
+-               else if (sfw->StatusSmall(ShapeExtend_FAIL2))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", edge is null-length and has different vertives at begin and end, and lockvtx is True or ModifiyTopologyMode is False" << endl;
+-               else if (sfw->StatusSmall(ShapeExtend_FAIL3))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", CheckConnected has failed" << endl;
+-
+-               replace = sfw->FixEdgeCurves() || replace;
+-
+-               replace = sfw->FixDegenerated() || replace;
+-
+-               replace = sfw->FixSelfIntersection() || replace;
+-
+-               replace = sfw->FixLacking(Standard_True) || replace;
+-
+-               if(replace)
+-               {
+-                  TopoDS_Wire newwire = sfw->Wire();
+-                  rebuild->Replace(oldwire, newwire, Standard_False);
+-               }
+-
+-               //delete sfw; sfw = NULL;
+-
+-            }
+-         }
+-
+-         shape = rebuild->Apply(shape);
+-
+-
+-
+-         {
+-            BuildFMap();
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-            rebuild->Apply(shape);
+-
+-            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-            {
+-               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-               if (vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+-                  vmap.FindIndex(TopExp::LastVertex (edge)))
+-               {
+-                  GProp_GProps system;
+-                  BRepGProp::LinearProperties(edge, system);
+-                  if (system.Mass() < tolerance)
+-                  {
+-                     cout << "removing degenerated edge " << emap.FindIndex(edge)
+-                        << " from vertex " << vmap.FindIndex(TopExp::FirstVertex (edge))
+-                        << " to vertex " << vmap.FindIndex(TopExp::LastVertex (edge)) << endl;
+-                     rebuild->Remove(edge, false);
+-                  }
+-               }
+-            }
+-            shape = rebuild->Apply(shape);
+-
+-            //delete rebuild; rebuild = NULL;
+-         }
+-
+-
+-
+-         {
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-            rebuild->Apply(shape);
+-            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-            {
+-               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-               if ( BRep_Tool::Degenerated(edge) )
+-                  rebuild->Remove(edge, false);
+-            }
+-            shape = rebuild->Apply(shape);
+-         }
+-
+-
+-
+-
+-         Handle(ShapeFix_Wireframe) sfwf = new ShapeFix_Wireframe;
+-         sfwf->SetPrecision(tolerance);
+-         sfwf->Load (shape);
+-         sfwf->ModeDropSmallEdges() = Standard_True;
+-
+-         sfwf->SetPrecision(boundingbox.Diam());
+-
+-         if (sfwf->FixWireGaps())
+-         {
+-            cout << endl << "- fixing wire gaps" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_OK)) cout << "no gaps found" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_DONE1)) cout << "some 2D gaps fixed" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_DONE2)) cout << "some 3D gaps fixed" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_FAIL1)) cout << "failed to fix some 2D gaps" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_FAIL2)) cout << "failed to fix some 3D gaps" << endl;
+-         }
+-
+-         sfwf->SetPrecision(tolerance);
+-
+-
+-         {
+-            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-            {
+-               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-               if ( BRep_Tool::Degenerated(edge) )
+-                  cout << "degenerated edge at position 4" << endl;
+-            }
+-         }
+-
+-
+-
+-         if (sfwf->FixSmallEdges())
+-         {
+-            cout << endl << "- fixing wire frames" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_OK)) cout << "no small edges found" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_DONE1)) cout << "some small edges fixed" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_FAIL1)) cout << "failed to fix some small edges" << endl;
+-         }
+-
+-
+-
+-         shape = sfwf->Shape();
+-
+-         //delete sfwf; sfwf = NULL;
+-         //delete rebuild; rebuild = NULL;
+-
+-      }
+-
+-
+-
+-
+-
+-      {
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 5" << endl;
+-         }
+-      }
+-
+-
+-
+-
+-      if (fixspotstripfaces)
+-      {
+-
+-         cout << endl << "- fixing spot and strip faces" << endl;
+-         Handle(ShapeFix_FixSmallFace) sffsm = new ShapeFix_FixSmallFace();
+-         sffsm -> Init (shape);
+-         sffsm -> SetPrecision (tolerance);
+-         sffsm -> Perform();
+-
+-         shape = sffsm -> FixShape();
+-         //delete sffsm; sffsm = NULL;
+-      }
+-
+-
+-      {
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 6" << endl;
+-         }
+-      }
+-
+-
+-
+-      if (sewfaces)
+-      {
+-         cout << endl << "- sewing faces" << endl;
+-
+-         BRepOffsetAPI_Sewing sewedObj(tolerance);
+-
+-         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
+-         {
+-            TopoDS_Face face = TopoDS::Face (exp0.Current());
+-            sewedObj.Add (face);
+-         }
+-
+-         sewedObj.Perform();
+-
+-         if (!sewedObj.SewedShape().IsNull())
+-            shape = sewedObj.SewedShape();
+-         else
+-            cout << " not possible";
+-      }
+-
+-
+-
+-      {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-         rebuild->Apply(shape);
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
+-         }
+-         shape = rebuild->Apply(shape);
+-      }
+-
+-
+-      if (makesolids)
+-      {
+-         cout << endl << "- making solids" << endl;
+-
+-         BRepBuilderAPI_MakeSolid ms;
+-         int count = 0;
+-         for (exp0.Init(shape, TopAbs_SHELL); exp0.More(); exp0.Next())
+-         {
+-            count++;
+-            ms.Add (TopoDS::Shell(exp0.Current()));
+-         }
+-
+-         if (!count)
+-         {
+-            cout << " not possible (no shells)" << endl;
+-         }
+-         else
+-         {
+-            BRepCheck_Analyzer ba(ms);
+-            if (ba.IsValid ())
+-            {
+-               Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;
+-               sfs->Init (ms);
+-               sfs->SetPrecision(tolerance);
+-               sfs->SetMaxTolerance(tolerance);
+-               sfs->Perform();
+-               shape = sfs->Shape();
+-
+-               for (exp0.Init(shape, TopAbs_SOLID); exp0.More(); exp0.Next())
+-               {
+-                  TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+-                  TopoDS_Solid newsolid = solid;
+-                  BRepLib::OrientClosedSolid (newsolid);
+-                  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-                  //            rebuild->Apply(shape);
+-                  rebuild->Replace(solid, newsolid, Standard_False);
+-                  TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);
+-                  //            TopoDS_Shape newshape = rebuild->Apply(shape);
+-                  shape = newshape;
+-               }
+-
+-               //delete sfs; sfs = NULL;
+-            }
+-            else
+-               cout << " not possible" << endl;
+-         }
+-      }
+-
+-
+-
+-      if (splitpartitions)
+-      {
+-         cout << "- running SALOME partition splitter" << endl;
+-
+-         TopExp_Explorer e2;
+-         Partition_Spliter ps;
+-         int count = 0;
+-
+-         for (e2.Init (shape, TopAbs_SOLID);
+-            e2.More(); e2.Next())
+-         {
+-            count++;
+-            ps.AddShape (e2.Current());
+-         }
+-
+-         ps.Compute();
+-         shape = ps.Shape();
+-
+-         cout << " before: " << count << " solids" << endl;
+-
+-         count = 0;
+-         for (e2.Init (shape, TopAbs_SOLID);
+-            e2.More(); e2.Next()) count++;
+-
+-            cout << " after : " << count << " solids" << endl;
+-      }
+-
+-      BuildFMap();
+-
+-
+-
+-      {
+-         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+-         {
+-            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+-            if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 8" << endl;
+-         }
+-      }
+-
+-
+-      double newsurfacecont = 0;
+-
+-
+-      for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
+-      {
+-         TopoDS_Face face = TopoDS::Face(exp0.Current());
+-         GProp_GProps system;
+-         BRepGProp::SurfaceProperties(face, system);
+-         newsurfacecont += system.Mass();
+-      }
+-
+-
+-      int nnrc = 0, nnrcs = 0,
+-         nnrso = somap.Extent(),
+-         nnrsh = shmap.Extent(),
+-         nnrf = fmap.Extent(),
+-         nnrw = wmap.Extent(),
+-         nnre = emap.Extent(),
+-         nnrv = vmap.Extent();
+-
+-      for (exp0.Init(shape, TopAbs_COMPOUND); exp0.More(); exp0.Next()) nnrc++;
+-      for (exp0.Init(shape, TopAbs_COMPSOLID); exp0.More(); exp0.Next()) nnrcs++;
+-
+-      cout << "-----------------------------------" << endl;
+-      cout << "Compounds       : " << nnrc << " (" << nrc << ")" << endl;
+-      cout << "Composite solids: " << nnrcs << " (" << nrcs << ")" << endl;
+-      cout << "Solids          : " << nnrso << " (" << nrso << ")" << endl;
+-      cout << "Shells          : " << nnrsh << " (" << nrsh << ")" << endl;
+-      cout << "Wires           : " << nnrw << " (" << nrw << ")" << endl;
+-      cout << "Faces           : " << nnrf << " (" << nrf << ")" << endl;
+-      cout << "Edges           : " << nnre << " (" << nre << ")" << endl;
+-      cout << "Vertices        : " << nnrv << " (" << nrv << ")" << endl;
+-      cout << endl;
+-      cout << "Totol surface area : " << newsurfacecont << " (" << surfacecont << ")" << endl;
+-      cout << endl;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: BuildFMap()
+-   {
+-      somap.Clear();
+-      shmap.Clear();
+-      fmap.Clear();
+-      wmap.Clear();
+-      emap.Clear();
+-      vmap.Clear();
+-
+-      TopExp_Explorer exp0, exp1, exp2, exp3, exp4, exp5;
+-
+-      for (exp0.Init(shape, TopAbs_COMPOUND);
+-         exp0.More(); exp0.Next())
+-      {
+-         TopoDS_Compound compound = TopoDS::Compound (exp0.Current());
+-         (*testout) << "compound" << endl;
+-         int i = 0;
+-         for (exp1.Init(compound, TopAbs_SHELL);
+-            exp1.More(); exp1.Next())
+-         {
+-            (*testout) << "shell " << ++i << endl;
+-         }
+-      }
+-
+-      for (exp0.Init(shape, TopAbs_SOLID);
+-         exp0.More(); exp0.Next())
+-      {
+-         TopoDS_Solid solid = TopoDS::Solid (exp0.Current());
+-
+-         if (somap.FindIndex(solid) < 1)
+-         {
+-            somap.Add (solid);
+-
+-            for (exp1.Init(solid, TopAbs_SHELL);
+-               exp1.More(); exp1.Next())
+-            {
+-               TopoDS_Shell shell = TopoDS::Shell (exp1.Current());
+-               if (shmap.FindIndex(shell) < 1)
+-               {
+-                  shmap.Add (shell);
+-
+-                  for (exp2.Init(shell, TopAbs_FACE);
+-                     exp2.More(); exp2.Next())
+-                  {
+-                     TopoDS_Face face = TopoDS::Face(exp2.Current());
+-                     if (fmap.FindIndex(face) < 1)
+-                     {
+-                        fmap.Add (face);
+-                        (*testout) << "face " << fmap.FindIndex(face) << " ";
+-                        (*testout) << ((face.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
+-                        (*testout) << ((exp2.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << endl;
+-                        for (exp3.Init(exp2.Current(), TopAbs_WIRE);
+-                           exp3.More(); exp3.Next())
+-                        {
+-                           TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
+-                           if (wmap.FindIndex(wire) < 1)
+-                           {
+-                              wmap.Add (wire);
+-
+-                              for (exp4.Init(exp3.Current(), TopAbs_EDGE);
+-                                 exp4.More(); exp4.Next())
+-                              {
+-                                 TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
+-                                 if (emap.FindIndex(edge) < 1)
+-                                 {
+-                                    emap.Add (edge);
+-                                    for (exp5.Init(exp4.Current(), TopAbs_VERTEX);
+-                                       exp5.More(); exp5.Next())
+-                                    {
+-                                       TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-                                       if (vmap.FindIndex(vertex) < 1)
+-                                          vmap.Add (vertex);
+-                                    }
+-                                 }
+-                              }
+-                           }
+-                        }
+-                     }
+-                  }
+-               }
+-            }
+-         }
+-      }
+-
+-      // Free Shells
+-      for (exp1.Init(shape, TopAbs_SHELL, TopAbs_SOLID); exp1.More(); exp1.Next())
+-      {
+-         TopoDS_Shell shell = TopoDS::Shell(exp1.Current());
+-         if (shmap.FindIndex(shell) < 1)
+-         {
+-            shmap.Add (shell);
+-
+-            (*testout) << "shell " << shmap.FindIndex(shell) << " ";
+-            (*testout) << ((shell.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
+-            (*testout) << ((exp1.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << endl;
+-
+-            for (exp2.Init(shell, TopAbs_FACE); exp2.More(); exp2.Next())
+-            {
+-               TopoDS_Face face = TopoDS::Face(exp2.Current());
+-               if (fmap.FindIndex(face) < 1)
+-               {
+-                  fmap.Add (face);
+-
+-                  for (exp3.Init(face, TopAbs_WIRE); exp3.More(); exp3.Next())
+-                  {
+-                     TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
+-                     if (wmap.FindIndex(wire) < 1)
+-                     {
+-                        wmap.Add (wire);
+-
+-                        for (exp4.Init(wire, TopAbs_EDGE); exp4.More(); exp4.Next())
+-                        {
+-                           TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
+-                           if (emap.FindIndex(edge) < 1)
+-                           {
+-                              emap.Add (edge);
+-                              for (exp5.Init(edge, TopAbs_VERTEX); exp5.More(); exp5.Next())
+-                              {
+-                                 TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-                                 if (vmap.FindIndex(vertex) < 1)
+-                                    vmap.Add (vertex);
+-                              }
+-                           }
+-                        }
+-                     }
+-                  }
+-               }
+-            }
+-         }
+-      }
+-
+-
+-      // Free Faces
+-
+-      for (exp2.Init(shape, TopAbs_FACE, TopAbs_SHELL); exp2.More(); exp2.Next())
+-      {
+-         TopoDS_Face face = TopoDS::Face(exp2.Current());
+-         if (fmap.FindIndex(face) < 1)
+-         {
+-            fmap.Add (face);
+-
+-            for (exp3.Init(exp2.Current(), TopAbs_WIRE); exp3.More(); exp3.Next())
+-            {
+-               TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
+-               if (wmap.FindIndex(wire) < 1)
+-               {
+-                  wmap.Add (wire);
+-
+-                  for (exp4.Init(exp3.Current(), TopAbs_EDGE); exp4.More(); exp4.Next())
+-                  {
+-                     TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
+-                     if (emap.FindIndex(edge) < 1)
+-                     {
+-                        emap.Add (edge);
+-                        for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
+-                        {
+-                           TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-                           if (vmap.FindIndex(vertex) < 1)
+-                              vmap.Add (vertex);
+-                        }
+-                     }
+-                  }
+-               }
+-            }
+-         }
+-      }
+-
+-
+-      // Free Wires
+-
+-      for (exp3.Init(shape, TopAbs_WIRE, TopAbs_FACE); exp3.More(); exp3.Next())
+-      {
+-         TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
+-         if (wmap.FindIndex(wire) < 1)
+-         {
+-            wmap.Add (wire);
+-
+-            for (exp4.Init(exp3.Current(), TopAbs_EDGE); exp4.More(); exp4.Next())
+-            {
+-               TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
+-               if (emap.FindIndex(edge) < 1)
+-               {
+-                  emap.Add (edge);
+-                  for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
+-                  {
+-                     TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-                     if (vmap.FindIndex(vertex) < 1)
+-                        vmap.Add (vertex);
+-                  }
+-               }
+-            }
+-         }
+-      }
+-
+-
+-      // Free Edges
+-
+-      for (exp4.Init(shape, TopAbs_EDGE, TopAbs_WIRE); exp4.More(); exp4.Next())
+-      {
+-         TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
+-         if (emap.FindIndex(edge) < 1)
+-         {
+-            emap.Add (edge);
+-            for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
+-            {
+-               TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-               if (vmap.FindIndex(vertex) < 1)
+-                  vmap.Add (vertex);
+-            }
+-         }
+-      }
+-
+-
+-      // Free Vertices
+-
+-      for (exp5.Init(shape, TopAbs_VERTEX, TopAbs_EDGE); exp5.More(); exp5.Next())
+-      {
+-         TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
+-         if (vmap.FindIndex(vertex) < 1)
+-            vmap.Add (vertex);
+-      }
+-
+-
+-
+-
+-      facemeshstatus.DeleteAll();
+-      facemeshstatus.SetSize (fmap.Extent());
+-      facemeshstatus = 0;
+-
+-      // Philippose - 15/01/2009
+-      face_maxh.DeleteAll();
+-      face_maxh.SetSize (fmap.Extent());
+-      face_maxh = mparam.maxh;
+-
+-      // Philippose - 15/01/2010      
+-      face_maxh_modified.DeleteAll();      
+-      face_maxh_modified.SetSize(fmap.Extent());      
+-      face_maxh_modified = 0;
+-      
+-
+-      // Philippose - 17/01/2009
+-      face_sel_status.DeleteAll();
+-      face_sel_status.SetSize (fmap.Extent());
+-      face_sel_status = 0;
+-
+-      fvispar.SetSize (fmap.Extent());
+-      evispar.SetSize (emap.Extent());
+-      vvispar.SetSize (vmap.Extent());
+-
+-      fsingular.SetSize (fmap.Extent());
+-      esingular.SetSize (emap.Extent());
+-      vsingular.SetSize (vmap.Extent());
+-
+-      fsingular = esingular = vsingular = false;
+-   }
+-
+-
+-
+-   void OCCGeometry :: SewFaces ()
+-   {
+-      (*testout) << "Trying to sew faces ..." << endl;
+-      cout << "Trying to sew faces ..." << flush;
+-
+-      BRepOffsetAPI_Sewing sewedObj(1);
+- 
+-      for (int i = 1; i <= fmap.Extent(); i++)
+-      {
+-         TopoDS_Face face = TopoDS::Face (fmap(i));
+-         sewedObj.Add (face);
+-      }
+-
+-      sewedObj.Perform();
+-
+-      if (!sewedObj.SewedShape().IsNull())
+-      {
+-         shape = sewedObj.SewedShape();
+-         cout << " done" << endl;
+-      }
+-      else
+-         cout << " not possible";
+-   }
+-
+-
+-
+-
+-
+-   void OCCGeometry :: MakeSolid ()
+-   {
+-      TopExp_Explorer exp0;
+-
+-      (*testout) << "Trying to build solids ..." << endl;
+-      cout << "Trying to build solids ..." << flush;
+-
+-      BRepBuilderAPI_MakeSolid ms;
+-      int count = 0;
+-      for (exp0.Init(shape, TopAbs_SHELL); exp0.More(); exp0.Next())
+-      {
+-         count++;
+-         ms.Add (TopoDS::Shell(exp0.Current()));
+-      }
+-
+-      if (!count)
+-      {
+-         cout << " not possible (no shells)" << endl;
+-         return;
+-      }
+-
+-      BRepCheck_Analyzer ba(ms);
+-      if (ba.IsValid ())
+-      {
+-         Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;
+-         sfs->Init (ms);
+-
+-         sfs->SetPrecision(1e-5);
+-         sfs->SetMaxTolerance(1e-5);
+-
+-         sfs->Perform();
+-
+-         shape = sfs->Shape();
+-
+-         for (exp0.Init(shape, TopAbs_SOLID); exp0.More(); exp0.Next())
+-         {
+-            TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+-            TopoDS_Solid newsolid = solid;
+-            BRepLib::OrientClosedSolid (newsolid);
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-            rebuild->Replace(solid, newsolid, Standard_False);
+-
+-            TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);
+-            shape = newshape;
+-         }
+-
+-         cout << " done" << endl;
+-      }
+-      else
+-         cout << " not possible" << endl;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: BuildVisualizationMesh (double deflection)
+-   {
+-      cout << "Preparing visualization (deflection = " << deflection << ") ... " << flush;
+-
+-      BRepTools::Clean (shape);
+-      // BRepMesh_IncrementalMesh::
+-      BRepMesh_IncrementalMesh (shape, deflection, true);
+-      cout << "done" << endl;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: CalcBoundingBox ()
+-   {
+-      Bnd_Box bb;
+-      BRepBndLib::Add (shape, bb);
+-
+-      double x1,y1,z1,x2,y2,z2;
+-      bb.Get (x1,y1,z1,x2,y2,z2);
+-      Point<3> p1 = Point<3> (x1,y1,z1);
+-      Point<3> p2 = Point<3> (x2,y2,z2);
+-
+-      (*testout) << "Bounding Box = [" << p1 << " - " << p2 << "]" << endl;
+-      boundingbox = Box<3> (p1,p2);
+-      SetCenter();
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const
+-   {
+-      static int cnt = 0;
+-      if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
+-
+-      gp_Pnt pnt(p(0), p(1), p(2));
+-
+-      double u,v;
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
+-      suval.Coord( u, v);
+-      pnt = thesurf->Value( u, v );
+-
+-
+-      p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+-
+-   }
+-
+-
+-
+-
+-   bool OCCGeometry :: FastProject (int surfi, Point<3> & ap, double& u, double& v) const
+-   {
+-      gp_Pnt p(ap(0), ap(1), ap(2));
+-
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-
+-      gp_Pnt x = surface->Value (u,v);
+-
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
+-
+-      gp_Vec du, dv;
+-
+-      surface->D1(u,v,x,du,dv);
+-
+-      int count = 0;
+-
+-      gp_Pnt xold;
+-      gp_Vec n;
+-      double det, lambda, mu;
+-
+-      do {
+-         count++;
+-
+-         n = du^dv;
+-
+-         det = Det3 (n.X(), du.X(), dv.X(),
+-            n.Y(), du.Y(), dv.Y(),
+-            n.Z(), du.Z(), dv.Z());
+-
+-         if (det < 1e-15) return false;
+-
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
+-            n.Y(), p.Y()-x.Y(), dv.Y(),
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;
+-
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
+-            n.Y(), du.Y(), p.Y()-x.Y(),
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;
+-
+-         u += lambda;
+-         v += mu;
+-
+-         xold = x;
+-         surface->D1(u,v,x,du,dv);
+-
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+-
+-      //    (*testout) << "FastProject count: " << count << endl;
+-
+-      if (count == 50) return false;
+-
+-      ap = Point<3> (x.X(), x.Y(), x.Z());
+-
+-      return true;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: WriteOCC_STL(char * filename)
+-   {
+-      cout << "writing stl..."; cout.flush();
+-      StlAPI_Writer writer;
+-      writer.RelativeMode() = Standard_False;
+-
+-      writer.SetDeflection(0.02);
+-      writer.Write(shape,filename);
+-
+-      cout << "done" << endl;
+-   }
+-
+-
+-
+-   // Philippose - 23/02/2009
+-   /* Special IGES File load function including the ability
+-   to extract individual surface colours via the extended
+-   OpenCascade XDE and XCAF Feature set.
+-   */
+-   OCCGeometry *LoadOCC_IGES(const char *filename)
+-   {
+-      OCCGeometry *occgeo;
+-      occgeo = new OCCGeometry;
+-
+-      // Initiate a dummy XCAF Application to handle the IGES XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
+-
+-      // Create an XCAF Document to contain the IGES file itself
+-      Handle_TDocStd_Document iges_doc;
+-
+-      // Check if a IGES File is already open under this handle, if so, close it to prevent
+-      // Segmentation Faults when trying to create a new document
+-      if(dummy_app->NbDocuments() > 0)
+-      {
+-         dummy_app->GetDocument(1,iges_doc);
+-         dummy_app->Close(iges_doc);
+-      }
+-      dummy_app->NewDocument ("IGES-XCAF",iges_doc);
+-
+-      IGESCAFControl_Reader reader;
+-
+-      Standard_Integer stat = reader.ReadFile((char*)filename);
+-
+-      if(stat != IFSelect_RetDone)
+-      {
+-         delete occgeo;
+-         return NULL;
+-      }
+-
+-      // Enable transfer of colours
+-      reader.SetColorMode(Standard_True);
+-
+-      reader.Transfer(iges_doc);
+-
+-      // Read in the shape(s) and the colours present in the IGES File
+-      Handle_XCAFDoc_ShapeTool iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
+-      Handle_XCAFDoc_ColorTool iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
+-
+-      TDF_LabelSequence iges_shapes;
+-      iges_shape_contents->GetShapes(iges_shapes);
+-
+-      // List out the available colours in the IGES File as Colour Names
+-      TDF_LabelSequence all_colours;
+-      iges_colour_contents->GetColors(all_colours);
+-      PrintMessage(1,"Number of colours in IGES File: ",all_colours.Length());
+-      for(int i = 1; i <= all_colours.Length(); i++)
+-      {
+-         Quantity_Color col;
+-         stringstream col_rgb;
+-         iges_colour_contents->GetColor(all_colours.Value(i),col);
+-         col_rgb << " : (" << col.Red() << "," << col.Green() << "," << col.Blue() << ")";
+-         PrintMessage(1, "Colour [", i, "] = ",col.StringName(col.Name()),col_rgb.str());
+-      }
+-
+-
+-      // For the IGES Reader, all the shapes can be exported as one compund shape 
+-      // using the "OneShape" member
+-      occgeo->shape = reader.OneShape();
+-      occgeo->face_colours = iges_colour_contents;
+-      occgeo->changed = 1;
+-      occgeo->BuildFMap();
+-
+-      occgeo->CalcBoundingBox();
+-      PrintContents (occgeo);
+-
+-      return occgeo;
+-   }
+-
+-
+-
+-
+-
+-   // Philippose - 29/01/2009
+-   /* Special STEP File load function including the ability
+-   to extract individual surface colours via the extended
+-   OpenCascade XDE and XCAF Feature set.
+-   */
+-   OCCGeometry * LoadOCC_STEP (const char * filename)
+-   {
+-      OCCGeometry * occgeo;
+-      occgeo = new OCCGeometry;
+-
+-      // Initiate a dummy XCAF Application to handle the STEP XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
+-
+-      // Create an XCAF Document to contain the STEP file itself
+-      Handle_TDocStd_Document step_doc;
+-
+-      // Check if a STEP File is already open under this handle, if so, close it to prevent
+-      // Segmentation Faults when trying to create a new document
+-      if(dummy_app->NbDocuments() > 0)
+-      {
+-         dummy_app->GetDocument(1,step_doc);
+-         dummy_app->Close(step_doc);
+-      }
+-      dummy_app->NewDocument ("STEP-XCAF",step_doc);
+-
+-      STEPCAFControl_Reader reader;
+-
+-      // Enable transfer of colours
+-      reader.SetColorMode(Standard_True);
+-
+-      Standard_Integer stat = reader.ReadFile((char*)filename);
+-
+-      if(stat != IFSelect_RetDone)
+-      {
+-         delete occgeo;
+-         return NULL;
+-      }
+-
+-      reader.Transfer(step_doc);
+-
+-      // Read in the shape(s) and the colours present in the STEP File
+-      Handle_XCAFDoc_ShapeTool step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
+-      Handle_XCAFDoc_ColorTool step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
+-
+-      TDF_LabelSequence step_shapes;
+-      step_shape_contents->GetShapes(step_shapes);
+-
+-      // List out the available colours in the STEP File as Colour Names
+-      TDF_LabelSequence all_colours;
+-      step_colour_contents->GetColors(all_colours);
+-      PrintMessage(1,"Number of colours in STEP File: ",all_colours.Length());
+-      for(int i = 1; i <= all_colours.Length(); i++)
+-      {
+-         Quantity_Color col;
+-         stringstream col_rgb;
+-         step_colour_contents->GetColor(all_colours.Value(i),col);
+-         col_rgb << " : (" << col.Red() << "," << col.Green() << "," << col.Blue() << ")";
+-         PrintMessage(1, "Colour [", i, "] = ",col.StringName(col.Name()),col_rgb.str());
+-      }
+-
+-
+-      // For the STEP File Reader in OCC, the 1st Shape contains the entire 
+-      // compound geometry as one shape
+-      occgeo->shape = step_shape_contents->GetShape(step_shapes.Value(1));
+-      occgeo->face_colours = step_colour_contents;
+-      occgeo->changed = 1;
+-      occgeo->BuildFMap();
+-
+-      occgeo->CalcBoundingBox();
+-      PrintContents (occgeo);
+-
+-      return occgeo;
+-   }
+-
+-
+-
+-
+-   OCCGeometry *LoadOCC_BREP (const char *filename)
+-   {
+-      OCCGeometry * occgeo;
+-      occgeo = new OCCGeometry;
+-
+-      BRep_Builder aBuilder;
+-      Standard_Boolean result = BRepTools::Read(occgeo->shape, const_cast<char*> (filename),aBuilder);
+-
+-      if(!result)
+-      {
+-         delete occgeo;
+-         return NULL;
+-      }
+-
+-      // Philippose - 23/02/2009
+-      // Fixed a bug in the OpenCascade XDE Colour handling when 
+-      // opening BREP Files, since BREP Files have no colour data.
+-      // Hence, the face_colours Handle needs to be created as a NULL handle.
+-      occgeo->face_colours = Handle_XCAFDoc_ColorTool();
+-      occgeo->face_colours.Nullify();
+-      occgeo->changed = 1;
+-      occgeo->BuildFMap();
+-
+-      occgeo->CalcBoundingBox();
+-      PrintContents (occgeo);
+-
+-      return occgeo;
+-   }
+-
+-
+-  void OCCGeometry :: Save (string sfilename) const
+-  {
+-    const char * filename = sfilename.c_str();
+-    if (strlen(filename) < 4) 
+-      throw NgException ("illegal filename");
+-    
+-    if (strcmp (&filename[strlen(filename)-3], "igs") == 0)
+-      {
+-      IGESControl_Writer writer("millimeters", 1);
+-      writer.AddShape (shape);
+-      writer.Write (filename);
+-      }
+-    else if (strcmp (&filename[strlen(filename)-3], "stp") == 0)
+-      {
+-      STEPControl_Writer writer;
+-      writer.Transfer (shape, STEPControl_AsIs);
+-      writer.Write (filename);
+-      }
+-    else if (strcmp (&filename[strlen(filename)-3], "stl") == 0)
+-      {
+-      StlAPI_Writer writer;
+-      writer.ASCIIMode() = Standard_True;
+-      writer.Write (shape, filename);
+-      }
+-    else if (strcmp (&filename[strlen(filename)-4], "stlb") == 0)
+-      {
+-      StlAPI_Writer writer;
+-      writer.ASCIIMode() = Standard_False;
+-      writer.Write (shape, filename);
+-      }
+-  }
+-
+-
+-
+-  const char * shapesname[] =
+-   {" ", "CompSolids", "Solids", "Shells",
+-
+-   "Faces", "Wires", "Edges", "Vertices"};
+-
+-  const char * shapename[] =
+-   {" ", "CompSolid", "Solid", "Shell",
+-   "Face", "Wire", "Edge", "Vertex"};
+-
+-  const char * orientationstring[] =
+-     {"+", "-"};
+-
+-
+-
+-
+-   void OCCGeometry :: RecursiveTopologyTree (const TopoDS_Shape & sh,
+-      stringstream & str,
+-      TopAbs_ShapeEnum l,
+-      bool isfree,
+-      const char * lname)
+-   {
+-      if (l > TopAbs_VERTEX) return;
+-
+-      TopExp_Explorer e;
+-      int count = 0;
+-      int count2 = 0;
+-
+-      if (isfree)
+-         e.Init(sh, l, TopAbs_ShapeEnum(l-1));
+-      else
+-         e.Init(sh, l);
+-
+-      for (; e.More(); e.Next())
+-      {
+-         count++;
+-
+-         stringstream lname2;
+-         lname2 << lname << "/" << shapename[l] << count;
+-         str << lname2.str() << " ";
+-
+-         switch (e.Current().ShapeType())
+-         {
+-         case TopAbs_SOLID:
+-           count2 = somap.FindIndex(TopoDS::Solid(e.Current())); break;
+-         case TopAbs_SHELL:
+-           count2 = shmap.FindIndex(TopoDS::Shell(e.Current())); break;
+-         case TopAbs_FACE:
+-           count2 = fmap.FindIndex(TopoDS::Face(e.Current())); break;
+-         case TopAbs_WIRE:
+-           count2 = wmap.FindIndex(TopoDS::Wire(e.Current())); break;
+-         case TopAbs_EDGE:
+-           count2 = emap.FindIndex(TopoDS::Edge(e.Current())); break;
+-         case TopAbs_VERTEX:
+-           count2 = vmap.FindIndex(TopoDS::Vertex(e.Current())); break;
+-         default:
+-           cout << "RecursiveTopologyTree: Case " << e.Current().ShapeType() << " not handeled" << endl;
+-         }
+-
+-         int nrsubshapes = 0;
+-
+-         if (l <= TopAbs_WIRE)
+-         {
+-            TopExp_Explorer e2;
+-            for (e2.Init (e.Current(), TopAbs_ShapeEnum (l+1));
+-               e2.More(); e2.Next())
+-               nrsubshapes++;
+-         }
+-
+-         str << "{" << shapename[l] << " " << count2;
+-
+-         if (l <= TopAbs_EDGE)
+-         {
+-            str << " (" << orientationstring[e.Current().Orientation()];
+-            if (nrsubshapes != 0) str << ", " << nrsubshapes;
+-            str << ") } ";
+-         }
+-         else
+-            str << " } ";
+-
+-         RecursiveTopologyTree (e.Current(), str, TopAbs_ShapeEnum (l+1),
+-            false, (char*)lname2.str().c_str());
+-
+-      }
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: GetTopologyTree (stringstream & str)
+-   {
+-      cout << "Building topology tree ... " << flush;
+-      RecursiveTopologyTree (shape, str, TopAbs_COMPSOLID, false, "CompSolids");
+-      RecursiveTopologyTree (shape, str, TopAbs_SOLID, true, "FreeSolids");
+-      RecursiveTopologyTree (shape, str, TopAbs_SHELL, true, "FreeShells");
+-      RecursiveTopologyTree (shape, str, TopAbs_FACE, true, "FreeFaces");
+-      RecursiveTopologyTree (shape, str, TopAbs_WIRE, true, "FreeWires");
+-      RecursiveTopologyTree (shape, str, TopAbs_EDGE, true, "FreeEdges");
+-      RecursiveTopologyTree (shape, str, TopAbs_VERTEX, true, "FreeVertices");
+-      str << flush;
+-      //  cout << "done" << endl;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: CheckIrregularEntities(stringstream & str)
+-   {
+-      ShapeAnalysis_CheckSmallFace csm;
+-
+-      csm.SetTolerance (1e-6);
+-
+-      TopTools_DataMapOfShapeListOfShape mapEdges;
+-      ShapeAnalysis_DataMapOfShapeListOfReal mapParam;
+-      TopoDS_Compound theAllVert;
+-
+-      int spotfaces = 0;
+-      int stripsupportfaces = 0;
+-      int singlestripfaces = 0;
+-      int stripfaces = 0;
+-      int facessplitbyvertices = 0;
+-      int stretchedpinfaces = 0;
+-      int smoothpinfaces = 0;
+-      int twistedfaces = 0;
+-      // int edgessamebutnotidentified = 0;
+-
+-      cout << "checking faces ... " << flush;
+-
+-      int i;
+-      for (i = 1; i <= fmap.Extent(); i++)
+-      {
+-         TopoDS_Face face = TopoDS::Face (fmap(i));
+-         TopoDS_Edge e1, e2;
+-
+-         if (csm.CheckSpotFace (face))
+-         {
+-            if (!spotfaces++)
+-               str << "SpotFace {Spot face} ";
+-
+-            (*testout) << "Face " << i << " is a spot face" << endl;
+-            str << "SpotFace/Face" << i << " ";
+-            str << "{Face " << i << " } ";
+-         }
+-
+-         if (csm.IsStripSupport (face))
+-         {
+-            if (!stripsupportfaces++)
+-               str << "StripSupportFace {Strip support face} ";
+-
+-            (*testout) << "Face " << i << " has strip support" << endl;
+-            str << "StripSupportFace/Face" << i << " ";
+-            str << "{Face " << i << " } ";
+-         }
+-
+-         if (csm.CheckSingleStrip(face, e1, e2))
+-         {
+-            if (!singlestripfaces++)
+-               str << "SingleStripFace {Single strip face} ";
+-
+-            (*testout) << "Face " << i << " is a single strip (edge " << emap.FindIndex(e1)
+-               << " and edge " << emap.FindIndex(e2) << " are identical)" << endl;
+-            str << "SingleStripFace/Face" << i << " ";
+-            str << "{Face " << i << " (edge " << emap.FindIndex(e1)
+-               << " and edge " << emap.FindIndex(e2) << " are identical)} ";
+-         }
+-
+-         if (csm.CheckStripFace(face, e1, e2))
+-         {
+-            if (!stripfaces++)
+-               str << "StripFace {Strip face} ";
+-
+-            (*testout) << "Face " << i << " is a strip (edge " << emap.FindIndex(e1)
+-               << " and edge " << emap.FindIndex(e2)
+-               << " are identical)" << endl;
+-            str << "StripFace/Face" << i << " ";
+-            str << "{Face " << i << " (edge " << emap.FindIndex(e1)
+-               << " and edge " << emap.FindIndex(e2) << " are identical)} ";
+-         }
+-
+-         if (int count = csm.CheckSplittingVertices(face, mapEdges, mapParam, theAllVert))
+-         {
+-            if (!facessplitbyvertices++)
+-               str << "FaceSplitByVertices {Face split by vertices} ";
+-
+-            (*testout) << "Face " << i << " is split by " << count
+-               << " vertex/vertices " << endl;
+-            str << "FaceSplitByVertices/Face" << i << " ";
+-            str << "{Face " << i << " (split by " << count << "vertex/vertices)} ";
+-         }
+-
+-         int whatrow, sens;
+-         if (int type = csm.CheckPin (face, whatrow, sens))
+-         {
+-            if (type == 1)
+-            {
+-               if (!smoothpinfaces++)
+-                  str << "SmoothPinFace {Smooth pin face} ";
+-
+-               (*testout) << "Face " << i << " is a smooth pin" << endl;
+-               str << "SmoothPinFace/Face" << i << " ";
+-               str << "{Face " << i << " } ";
+-            }
+-            else
+-            {
+-               if (!stretchedpinfaces++)
+-                  str << "StretchedPinFace {Stretched pin face} ";
+-
+-               (*testout) << "Face " << i << " is a streched pin" << endl;
+-               str << "StretchedPinFace/Face" << i << " ";
+-               str << "{Face " << i << " } ";
+-            }
+-         }
+-
+-         double paramu, paramv;
+-         if (csm.CheckTwisted (face, paramu, paramv))
+-         {
+-            if (!twistedfaces++)
+-               str << "TwistedFace {Twisted face} ";
+-
+-            (*testout) << "Face " << i << " is twisted" << endl;
+-            str << "TwistedFace/Face" << i << " ";
+-            str << "{Face " << i << " } ";
+-         }
+-      }
+-
+-      cout << "done" << endl;
+-      cout << "checking edges ... " << flush;
+-
+-      // double dmax;
+-      // int cnt = 0;
+-      Array <double> edgeLengths;
+-      Array <int> order;
+-      edgeLengths.SetSize (emap.Extent());
+-      order.SetSize (emap.Extent());
+-
+-      for (i = 1; i <= emap.Extent(); i++)
+-      {
+-         TopoDS_Edge edge1 = TopoDS::Edge (emap(i));
+-         GProp_GProps system;
+-         BRepGProp::LinearProperties(edge1, system);
+-         edgeLengths[i-1] = system.Mass();
+-      }
+-
+-      Sort (edgeLengths, order);
+-
+-      str << "ShortestEdges {Shortest edges} ";
+-      for (i = 1; i <= min(20, emap.Extent()); i++)
+-      {
+-         str << "ShortestEdges/Edge" << i;
+-         str << " {Edge " << order[i-1] << " (L=" << edgeLengths[order[i-1]-1] << ")} ";
+-      }
+-
+-      str << flush;
+-
+-      cout << "done" << endl;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: GetUnmeshedFaceInfo (stringstream & str)
+-   {
+-      for (int i = 1; i <= fmap.Extent(); i++)
+-      {
+-         if (facemeshstatus[i-1] == -1)
+-            str << "Face" << i << " {Face " << i << " } ";
+-      }
+-      str << flush;
+-   }
+-
+-
+-
+-
+-   void OCCGeometry :: GetNotDrawableFaces (stringstream & str)
+-   {
+-      for (int i = 1; i <= fmap.Extent(); i++)
+-      {
+-         if (!fvispar[i-1].IsDrawable())
+-            str << "Face" << i << " {Face " << i << " } ";
+-      }
+-      str << flush;
+-   }
+-
+-
+-
+-
+-   bool OCCGeometry :: ErrorInSurfaceMeshing ()
+-   {
+-      for (int i = 1; i <= fmap.Extent(); i++)
+-         if (facemeshstatus[i-1] == -1)
+-            return true;
+-
+-      return false;
+-   }
+-
+-
+-
+-
+-  int OCCGeometry :: GenerateMesh (Mesh*& mesh, MeshingParameters & mparam,
+-      int perfstepsstart, int perfstepsend)
+-   {
+-     return OCCGenerateMesh (*this, mesh, mparam, perfstepsstart, perfstepsend);
+-   }
+-
+-
+-
+-
+-   const Refinement & OCCGeometry :: GetRefinement () const
+-   {
+-      return * new OCCRefinementSurfaces (*this);
+-   }
+-
+-
+-
+-
+-   OCCParameters :: OCCParameters()
+-   {
+-      resthcloseedgefac = 1;
+-      resthcloseedgeenable = 1;
+-        resthminedgelen = 0.001;
+-        resthminedgelenenable = 1;
+-   }
+-
+-
+-
+-
+-   void OCCParameters :: Print(ostream & ost) const
+-   {
+-      ost << "OCC Parameters:" << endl
+-         << "close edges: " << resthcloseedgeenable
+-         << ", fac = " << resthcloseedgefac << endl
+-               << "minimum edge length: " << resthminedgelenenable
+-               << ", min len = " << resthminedgelen << endl;
+-   }
+-
+-
+-
+-
+-   OCCParameters occparam;
+-
+-}
+-
+-
+-#endif
++
++#ifdef OCCGEOMETRY
++
++#include <mystdlib.h>
++#include <occgeom.hpp>
++#include "ShapeAnalysis_ShapeTolerance.hxx"
++#include "ShapeAnalysis_ShapeContents.hxx"
++#include "ShapeAnalysis_CheckSmallFace.hxx"
++#include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
++#include "ShapeAnalysis_Surface.hxx"
++#include <BRepTopAdaptor_FClass2d.hxx> // -- to optimize Project() and FastProject()
++#include <TopAbs_State.hxx>
++#include "BRepAlgoAPI_Fuse.hxx"
++#include "BRepCheck_Analyzer.hxx"
++#include "BRepLib.hxx"
++#include "ShapeBuild_ReShape.hxx"
++#include "ShapeFix.hxx"
++#include "ShapeFix_FixSmallFace.hxx"
++#include "Partition_Spliter.hxx"
++
++namespace netgen
++{
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap<int,BRepTopAdaptor_FClass2d*>::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
++   void OCCGeometry :: PrintNrShapes ()
++   {
++      TopExp_Explorer e;
++      int count = 0;
++      for (e.Init(shape, TopAbs_COMPSOLID); e.More(); e.Next()) count++;
++      std::cout << "CompSolids: " << count << std::endl;
++
++      std::cout << "Solids    : " << somap.Extent() << std::endl;
++      std::cout << "Shells    : " << shmap.Extent() << std::endl;
++      std::cout << "Faces     : " << fmap.Extent() << std::endl;
++      std::cout << "Edges     : " << emap.Extent() << std::endl;
++      std::cout << "Vertices  : " << vmap.Extent() << std::endl;
++   }
++
++
++
++
++   void PrintContents (OCCGeometry * geom)
++   {
++      ShapeAnalysis_ShapeContents cont;
++      cont.Clear();
++      cont.Perform(geom->shape);
++
++      (*testout) << "OCC CONTENTS" << std::endl;
++      (*testout) << "============" << std::endl;
++      (*testout) << "SOLIDS   : " << cont.NbSolids() << std::endl;
++      (*testout) << "SHELLS   : " << cont.NbShells() << std::endl;
++      (*testout) << "FACES    : " << cont.NbFaces() << std::endl;
++      (*testout) << "WIRES    : " << cont.NbWires() << std::endl;
++      (*testout) << "EDGES    : " << cont.NbEdges() << std::endl;
++      (*testout) << "VERTICES : " << cont.NbVertices() << std::endl;
++
++      TopExp_Explorer e;
++      int count = 0;
++      for (e.Init(geom->shape, TopAbs_COMPOUND); e.More(); e.Next())
++         count++;
++      (*testout) << "Compounds: " << count << std::endl;
++
++      count = 0;
++      for (e.Init(geom->shape, TopAbs_COMPSOLID); e.More(); e.Next())
++         count++;
++      (*testout) << "CompSolids: " << count << std::endl;
++
++      (*testout) << std::endl;
++
++      std::cout << "Highest entry in topology hierarchy: " << std::endl;
++      if (count)
++         std::cout << count << " composite solid(s)" << std::endl;
++      else
++         if (geom->somap.Extent())
++            std::cout << geom->somap.Extent() << " solid(s)" << std::endl;
++         else
++            if (geom->shmap.Extent())
++               std::cout << geom->shmap.Extent() << " shells(s)" << std::endl;
++            else
++               if (geom->fmap.Extent())
++                  std::cout << geom->fmap.Extent() << " face(s)" << std::endl;
++               else
++                  if (geom->wmap.Extent())
++                     std::cout << geom->wmap.Extent() << " wire(s)" << std::endl;
++                  else
++                     if (geom->emap.Extent())
++                        std::cout << geom->emap.Extent() << " edge(s)" << std::endl;
++                     else
++                        if (geom->vmap.Extent())
++                           std::cout << geom->vmap.Extent() << " vertices(s)" << std::endl;
++                        else
++                           std::cout << "no entities" << std::endl;
++
++   }
++
++
++
++   void OCCGeometry :: HealGeometry ()
++   {
++      int nrc = 0, nrcs = 0,
++         nrso = somap.Extent(),
++         nrsh = shmap.Extent(),
++         nrf = fmap.Extent(),
++         nrw = wmap.Extent(),
++         nre = emap.Extent(),
++         nrv = vmap.Extent();
++
++      TopExp_Explorer exp0;
++      TopExp_Explorer exp1;
++
++
++      for (exp0.Init(shape, TopAbs_COMPOUND); exp0.More(); exp0.Next()) nrc++;
++      for (exp0.Init(shape, TopAbs_COMPSOLID); exp0.More(); exp0.Next()) nrcs++;
++
++      double surfacecont = 0;
++
++      {
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++         rebuild->Apply(shape);
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               rebuild->Remove(edge);
++         }
++         shape = rebuild->Apply(shape);
++      }
++
++      BuildFMap();
++
++
++      for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
++      {
++         TopoDS_Face face = TopoDS::Face(exp0.Current());
++
++         GProp_GProps system;
++         BRepGProp::SurfaceProperties(face, system);
++         surfacecont += system.Mass();
++      }
++
++
++      std::cout << "Starting geometry healing procedure (tolerance: " << tolerance << ")" << std::endl
++         << "-----------------------------------" << std::endl;
++
++      {
++         std::cout << std::endl << "- repairing faces" << std::endl;
++
++         Handle(ShapeFix_Face) sff;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++         rebuild->Apply(shape);
++
++
++         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
++         {
++            // Variable to hold the colour (if there exists one) of 
++            // the current face being processed
++            Quantity_Color face_colour;
++
++            TopoDS_Face face = TopoDS::Face (exp0.Current());
++
++            if(face_colours.IsNull()
++               || (!(face_colours->GetColor(face,XCAFDoc_ColorSurf,face_colour))))
++            {
++               // Set the default face colour to green (Netgen Standard)
++               // if no colour has been defined for the face
++               face_colour = Quantity_Color(0.0,1.0,0.0,Quantity_TOC_RGB);
++            }
++
++            sff = new ShapeFix_Face (face);
++            sff->FixAddNaturalBoundMode() = Standard_True;
++            sff->FixSmallAreaWireMode() = Standard_True;
++            sff->Perform();
++
++            if(sff->Status(ShapeExtend_DONE1) ||
++               sff->Status(ShapeExtend_DONE2) ||
++               sff->Status(ShapeExtend_DONE3) ||
++               sff->Status(ShapeExtend_DONE4) ||
++               sff->Status(ShapeExtend_DONE5))
++            {
++               std::cout << "repaired face " << fmap.FindIndex(face) << " ";
++               if(sff->Status(ShapeExtend_DONE1))
++                  std::cout << "(some wires are fixed)" <<std::endl;
++               else if(sff->Status(ShapeExtend_DONE2))
++                  std::cout << "(orientation of wires fixed)" <<std::endl;
++               else if(sff->Status(ShapeExtend_DONE3))
++                  std::cout << "(missing seam added)" <<std::endl;
++               else if(sff->Status(ShapeExtend_DONE4))
++                  std::cout << "(small area wire removed)" <<std::endl;
++               else if(sff->Status(ShapeExtend_DONE5))
++                  std::cout << "(natural bounds added)" <<std::endl;
++               TopoDS_Face newface = sff->Face();
++
++               rebuild->Replace(face, newface);
++            }
++
++            // Set the original colour of the face to the newly created 
++            // face (after the healing process)
++            face = TopoDS::Face (exp0.Current());
++            face_colours->SetColor(face,face_colour,XCAFDoc_ColorSurf);
++         }
++         shape = rebuild->Apply(shape);
++      }
++
++
++      {
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++         rebuild->Apply(shape);
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               rebuild->Remove(edge);
++         }
++         shape = rebuild->Apply(shape);
++      }
++
++
++      if (fixsmalledges)
++      {
++         std::cout << std::endl << "- fixing small edges" << std::endl;
++
++         Handle(ShapeFix_Wire) sfw;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++         rebuild->Apply(shape);
++
++
++         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
++         {
++            TopoDS_Face face = TopoDS::Face(exp0.Current());
++
++            for (exp1.Init (face, TopAbs_WIRE); exp1.More(); exp1.Next())
++            {
++               TopoDS_Wire oldwire = TopoDS::Wire(exp1.Current());
++               sfw = new ShapeFix_Wire (oldwire, face ,tolerance);
++               sfw->ModifyTopologyMode() = Standard_True;
++
++               sfw->ClosedWireMode() = Standard_True;
++
++               bool replace = false;
++
++               replace = sfw->FixReorder() || replace;
++
++               replace = sfw->FixConnected() || replace;
++
++
++
++               if (sfw->FixSmall (Standard_False, tolerance) && ! (sfw->StatusSmall(ShapeExtend_FAIL1) ||
++                  sfw->StatusSmall(ShapeExtend_FAIL2) ||
++                  sfw->StatusSmall(ShapeExtend_FAIL3)))
++               {
++                  std::cout << "Fixed small edge in wire " << wmap.FindIndex (oldwire) << std::endl;
++                  replace = true;
++
++               }
++               else if (sfw->StatusSmall(ShapeExtend_FAIL1))
++                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", edge cannot be checked (no 3d curve and no pcurve)" << std::endl;
++               else if (sfw->StatusSmall(ShapeExtend_FAIL2))
++                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", edge is null-length and has different vertives at begin and end, and lockvtx is True or ModifiyTopologyMode is False" << std::endl;
++               else if (sfw->StatusSmall(ShapeExtend_FAIL3))
++                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", CdheckConnected has failed" << std::endl;
++
++               replace = sfw->FixEdgeCurves() || replace;
++
++               replace = sfw->FixDegenerated() || replace;
++
++               replace = sfw->FixSelfIntersection() || replace;
++
++               replace = sfw->FixLacking(Standard_True) || replace;
++
++               if(replace)
++               {
++                  TopoDS_Wire newwire = sfw->Wire();
++                  rebuild->Replace(oldwire, newwire);
++               }
++
++               //delete sfw; sfw = NULL;
++
++            }
++         }
++
++         shape = rebuild->Apply(shape);
++
++
++
++         {
++            BuildFMap();
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++            rebuild->Apply(shape);
++
++            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++            {
++               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++               if (vmap.FindIndex(TopExp::FirstVertex (edge)) ==
++                  vmap.FindIndex(TopExp::LastVertex (edge)))
++               {
++                  GProp_GProps system;
++                  BRepGProp::LinearProperties(edge, system);
++                  if (system.Mass() < tolerance)
++                  {
++                     std::cout << "removing degenerated edge " << emap.FindIndex(edge)
++                        << " from vertex " << vmap.FindIndex(TopExp::FirstVertex (edge))
++                        << " to vertex " << vmap.FindIndex(TopExp::LastVertex (edge)) << std::endl;
++                     rebuild->Remove(edge);
++                  }
++               }
++            }
++            shape = rebuild->Apply(shape);
++
++            //delete rebuild; rebuild = NULL;
++         }
++
++
++
++         {
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++            rebuild->Apply(shape);
++            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++            {
++               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++               if ( BRep_Tool::Degenerated(edge) )
++                  rebuild->Remove(edge);
++            }
++            shape = rebuild->Apply(shape);
++         }
++
++
++
++
++         Handle(ShapeFix_Wireframe) sfwf = new ShapeFix_Wireframe;
++         sfwf->SetPrecision(tolerance);
++         sfwf->Load (shape);
++         sfwf->ModeDropSmallEdges() = Standard_True;
++
++         sfwf->SetPrecision(boundingbox.Diam());
++
++         if (sfwf->FixWireGaps())
++         {
++            std::cout << std::endl << "- fixing wire gaps" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_OK)) std::cout << "no gaps found" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_DONE1)) std::cout << "some 2D gaps fixed" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_DONE2)) std::cout << "some 3D gaps fixed" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_FAIL1)) std::cout << "failed to fix some 2D gaps" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_FAIL2)) std::cout << "failed to fix some 3D gaps" << std::endl;
++         }
++
++         sfwf->SetPrecision(tolerance);
++
++
++         {
++            for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++            {
++               TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++               if ( BRep_Tool::Degenerated(edge) )
++                  std::cout << "degenerated edge at position 4" << std::endl;
++            }
++         }
++
++
++
++         if (sfwf->FixSmallEdges())
++         {
++            std::cout << std::endl << "- fixing wire frames" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_OK)) std::cout << "no small edges found" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_DONE1)) std::cout << "some small edges fixed" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_FAIL1)) std::cout << "failed to fix some small edges" << std::endl;
++         }
++
++
++
++         shape = sfwf->Shape();
++
++         //delete sfwf; sfwf = NULL;
++         //delete rebuild; rebuild = NULL;
++
++      }
++
++
++
++
++
++      {
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               std::cout << "degenerated edge at position 5" << std::endl;
++         }
++      }
++
++
++
++
++      if (fixspotstripfaces)
++      {
++
++         std::cout << std::endl << "- fixing spot and strip faces" << std::endl;
++         Handle(ShapeFix_FixSmallFace) sffsm = new ShapeFix_FixSmallFace();
++         sffsm -> Init (shape);
++         sffsm -> SetPrecision (tolerance);
++         sffsm -> Perform();
++
++         shape = sffsm -> FixShape();
++         //delete sffsm; sffsm = NULL;
++      }
++
++
++      {
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               std::cout << "degenerated edge at position 6" << std::endl;
++         }
++      }
++
++
++
++      if (sewfaces)
++      {
++         std::cout << std::endl << "- sewing faces" << std::endl;
++
++         BRepOffsetAPI_Sewing sewedObj(tolerance);
++
++         for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
++         {
++            TopoDS_Face face = TopoDS::Face (exp0.Current());
++            sewedObj.Add (face);
++         }
++
++         sewedObj.Perform();
++
++         if (!sewedObj.SewedShape().IsNull())
++            shape = sewedObj.SewedShape();
++         else
++            std::cout << " not possible";
++      }
++
++
++
++      {
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++         rebuild->Apply(shape);
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               rebuild->Remove(edge);
++         }
++         shape = rebuild->Apply(shape);
++      }
++
++
++      if (makesolids)
++      {
++         std::cout << std::endl << "- making solids" << std::endl;
++
++         BRepBuilderAPI_MakeSolid ms;
++         int count = 0;
++         for (exp0.Init(shape, TopAbs_SHELL); exp0.More(); exp0.Next())
++         {
++            count++;
++            ms.Add (TopoDS::Shell(exp0.Current()));
++         }
++
++         if (!count)
++         {
++            std::cout << " not possible (no shells)" << std::endl;
++         }
++         else
++         {
++            BRepCheck_Analyzer ba(ms);
++            if (ba.IsValid ())
++            {
++               Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;
++               sfs->Init (ms);
++               sfs->SetPrecision(tolerance);
++               sfs->SetMaxTolerance(tolerance);
++               sfs->Perform();
++               shape = sfs->Shape();
++
++               for (exp0.Init(shape, TopAbs_SOLID); exp0.More(); exp0.Next())
++               {
++                  TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
++                  TopoDS_Solid newsolid = solid;
++                  BRepLib::OrientClosedSolid (newsolid);
++                  Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++                  //            rebuild->Apply(shape);
++                  rebuild->Replace(solid, newsolid);
++                  TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);
++                  //            TopoDS_Shape newshape = rebuild->Apply(shape);
++                  shape = newshape;
++               }
++
++               //delete sfs; sfs = NULL;
++            }
++            else
++               std::cout << " not possible" << std::endl;
++         }
++      }
++
++
++
++      if (splitpartitions)
++      {
++         std::cout << "- running SALOME partition splitter" << std::endl;
++
++         TopExp_Explorer e2;
++         Partition_Spliter ps;
++         int count = 0;
++
++         for (e2.Init (shape, TopAbs_SOLID);
++            e2.More(); e2.Next())
++         {
++            count++;
++            ps.AddShape (e2.Current());
++         }
++
++         ps.Compute();
++         shape = ps.Shape();
++
++         std::cout << " before: " << count << " solids" << std::endl;
++
++         count = 0;
++         for (e2.Init (shape, TopAbs_SOLID);
++            e2.More(); e2.Next()) count++;
++
++            std::cout << " after : " << count << " solids" << std::endl;
++      }
++
++      BuildFMap();
++
++
++
++      {
++         for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
++         {
++            TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
++            if ( BRep_Tool::Degenerated(edge) )
++               std::cout << "degenerated edge at position 8" << std::endl;
++         }
++      }
++
++
++      double newsurfacecont = 0;
++
++
++      for (exp0.Init (shape, TopAbs_FACE); exp0.More(); exp0.Next())
++      {
++         TopoDS_Face face = TopoDS::Face(exp0.Current());
++         GProp_GProps system;
++         BRepGProp::SurfaceProperties(face, system);
++         newsurfacecont += system.Mass();
++      }
++
++
++      int nnrc = 0, nnrcs = 0,
++         nnrso = somap.Extent(),
++         nnrsh = shmap.Extent(),
++         nnrf = fmap.Extent(),
++         nnrw = wmap.Extent(),
++         nnre = emap.Extent(),
++         nnrv = vmap.Extent();
++
++      for (exp0.Init(shape, TopAbs_COMPOUND); exp0.More(); exp0.Next()) nnrc++;
++      for (exp0.Init(shape, TopAbs_COMPSOLID); exp0.More(); exp0.Next()) nnrcs++;
++
++      std::cout << "-----------------------------------" << std::endl;
++      std::cout << "Compounds       : " << nnrc << " (" << nrc << ")" << std::endl;
++      std::cout << "Composite solids: " << nnrcs << " (" << nrcs << ")" << std::endl;
++      std::cout << "Solids          : " << nnrso << " (" << nrso << ")" << std::endl;
++      std::cout << "Shells          : " << nnrsh << " (" << nrsh << ")" << std::endl;
++      std::cout << "Wires           : " << nnrw << " (" << nrw << ")" << std::endl;
++      std::cout << "Faces           : " << nnrf << " (" << nrf << ")" << std::endl;
++      std::cout << "Edges           : " << nnre << " (" << nre << ")" << std::endl;
++      std::cout << "Vertices        : " << nnrv << " (" << nrv << ")" << std::endl;
++      std::cout << std::endl;
++      std::cout << "Totol surface area : " << newsurfacecont << " (" << surfacecont << ")" << std::endl;
++      std::cout << std::endl;
++   }
++
++
++
++
++   void OCCGeometry :: BuildFMap()
++   {
++      somap.Clear();
++      shmap.Clear();
++      fmap.Clear();
++      wmap.Clear();
++      emap.Clear();
++      vmap.Clear();
++
++      TopExp_Explorer exp0, exp1, exp2, exp3, exp4, exp5;
++
++      for (exp0.Init(shape, TopAbs_COMPOUND);
++         exp0.More(); exp0.Next())
++      {
++         TopoDS_Compound compound = TopoDS::Compound (exp0.Current());
++         (*testout) << "compound" << std::endl;
++         int i = 0;
++         for (exp1.Init(compound, TopAbs_SHELL);
++            exp1.More(); exp1.Next())
++         {
++            (*testout) << "shell " << ++i << std::endl;
++         }
++      }
++
++      for (exp0.Init(shape, TopAbs_SOLID);
++         exp0.More(); exp0.Next())
++      {
++         TopoDS_Solid solid = TopoDS::Solid (exp0.Current());
++
++         if (somap.FindIndex(solid) < 1)
++         {
++            somap.Add (solid);
++
++            for (exp1.Init(solid, TopAbs_SHELL);
++               exp1.More(); exp1.Next())
++            {
++               TopoDS_Shell shell = TopoDS::Shell (exp1.Current());
++               if (shmap.FindIndex(shell) < 1)
++               {
++                  shmap.Add (shell);
++
++                  for (exp2.Init(shell, TopAbs_FACE);
++                     exp2.More(); exp2.Next())
++                  {
++                     TopoDS_Face face = TopoDS::Face(exp2.Current());
++                     if (fmap.FindIndex(face) < 1)
++                     {
++                        fmap.Add (face);
++                        (*testout) << "face " << fmap.FindIndex(face) << " ";
++                        (*testout) << ((face.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
++                        (*testout) << ((exp2.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << std::endl;
++                        for (exp3.Init(exp2.Current(), TopAbs_WIRE);
++                           exp3.More(); exp3.Next())
++                        {
++                           TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
++                           if (wmap.FindIndex(wire) < 1)
++                           {
++                              wmap.Add (wire);
++
++                              for (exp4.Init(exp3.Current(), TopAbs_EDGE);
++                                 exp4.More(); exp4.Next())
++                              {
++                                 TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
++                                 if (emap.FindIndex(edge) < 1)
++                                 {
++                                    emap.Add (edge);
++                                    for (exp5.Init(exp4.Current(), TopAbs_VERTEX);
++                                       exp5.More(); exp5.Next())
++                                    {
++                                       TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++                                       if (vmap.FindIndex(vertex) < 1)
++                                          vmap.Add (vertex);
++                                    }
++                                 }
++                              }
++                           }
++                        }
++                     }
++                  }
++               }
++            }
++         }
++      }
++
++      // Free Shells
++      for (exp1.Init(shape, TopAbs_SHELL, TopAbs_SOLID); exp1.More(); exp1.Next())
++      {
++         TopoDS_Shell shell = TopoDS::Shell(exp1.Current());
++         if (shmap.FindIndex(shell) < 1)
++         {
++            shmap.Add (shell);
++
++            (*testout) << "shell " << shmap.FindIndex(shell) << " ";
++            (*testout) << ((shell.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
++            (*testout) << ((exp1.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << std::endl;
++
++            for (exp2.Init(shell, TopAbs_FACE); exp2.More(); exp2.Next())
++            {
++               TopoDS_Face face = TopoDS::Face(exp2.Current());
++               if (fmap.FindIndex(face) < 1)
++               {
++                  fmap.Add (face);
++
++                  for (exp3.Init(face, TopAbs_WIRE); exp3.More(); exp3.Next())
++                  {
++                     TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
++                     if (wmap.FindIndex(wire) < 1)
++                     {
++                        wmap.Add (wire);
++
++                        for (exp4.Init(wire, TopAbs_EDGE); exp4.More(); exp4.Next())
++                        {
++                           TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
++                           if (emap.FindIndex(edge) < 1)
++                           {
++                              emap.Add (edge);
++                              for (exp5.Init(edge, TopAbs_VERTEX); exp5.More(); exp5.Next())
++                              {
++                                 TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++                                 if (vmap.FindIndex(vertex) < 1)
++                                    vmap.Add (vertex);
++                              }
++                           }
++                        }
++                     }
++                  }
++               }
++            }
++         }
++      }
++
++
++      // Free Faces
++
++      for (exp2.Init(shape, TopAbs_FACE, TopAbs_SHELL); exp2.More(); exp2.Next())
++      {
++         TopoDS_Face face = TopoDS::Face(exp2.Current());
++         if (fmap.FindIndex(face) < 1)
++         {
++            fmap.Add (face);
++
++            for (exp3.Init(exp2.Current(), TopAbs_WIRE); exp3.More(); exp3.Next())
++            {
++               TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
++               if (wmap.FindIndex(wire) < 1)
++               {
++                  wmap.Add (wire);
++
++                  for (exp4.Init(exp3.Current(), TopAbs_EDGE); exp4.More(); exp4.Next())
++                  {
++                     TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
++                     if (emap.FindIndex(edge) < 1)
++                     {
++                        emap.Add (edge);
++                        for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
++                        {
++                           TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++                           if (vmap.FindIndex(vertex) < 1)
++                              vmap.Add (vertex);
++                        }
++                     }
++                  }
++               }
++            }
++         }
++      }
++
++
++      // Free Wires
++
++      for (exp3.Init(shape, TopAbs_WIRE, TopAbs_FACE); exp3.More(); exp3.Next())
++      {
++         TopoDS_Wire wire = TopoDS::Wire (exp3.Current());
++         if (wmap.FindIndex(wire) < 1)
++         {
++            wmap.Add (wire);
++
++            for (exp4.Init(exp3.Current(), TopAbs_EDGE); exp4.More(); exp4.Next())
++            {
++               TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
++               if (emap.FindIndex(edge) < 1)
++               {
++                  emap.Add (edge);
++                  for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
++                  {
++                     TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++                     if (vmap.FindIndex(vertex) < 1)
++                        vmap.Add (vertex);
++                  }
++               }
++            }
++         }
++      }
++
++
++      // Free Edges
++
++      for (exp4.Init(shape, TopAbs_EDGE, TopAbs_WIRE); exp4.More(); exp4.Next())
++      {
++         TopoDS_Edge edge = TopoDS::Edge(exp4.Current());
++         if (emap.FindIndex(edge) < 1)
++         {
++            emap.Add (edge);
++            for (exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next())
++            {
++               TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++               if (vmap.FindIndex(vertex) < 1)
++                  vmap.Add (vertex);
++            }
++         }
++      }
++
++
++      // Free Vertices
++
++      for (exp5.Init(shape, TopAbs_VERTEX, TopAbs_EDGE); exp5.More(); exp5.Next())
++      {
++         TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());
++         if (vmap.FindIndex(vertex) < 1)
++            vmap.Add (vertex);
++      }
++
++
++
++
++      facemeshstatus.DeleteAll();
++      facemeshstatus.SetSize (fmap.Extent());
++      facemeshstatus = 0;
++
++      // Philippose - 15/01/2009
++      face_maxh.DeleteAll();
++      face_maxh.SetSize (fmap.Extent());
++      face_maxh = mparam.maxh;
++
++      // Philippose - 15/01/2010      
++      face_maxh_modified.DeleteAll();      
++      face_maxh_modified.SetSize(fmap.Extent());      
++      face_maxh_modified = 0;
++      
++
++      // Philippose - 17/01/2009
++      face_sel_status.DeleteAll();
++      face_sel_status.SetSize (fmap.Extent());
++      face_sel_status = 0;
++
++      fvispar.SetSize (fmap.Extent());
++      evispar.SetSize (emap.Extent());
++      vvispar.SetSize (vmap.Extent());
++
++      fsingular.SetSize (fmap.Extent());
++      esingular.SetSize (emap.Extent());
++      vsingular.SetSize (vmap.Extent());
++
++      fsingular = esingular = vsingular = false;
++   }
++
++
++
++   void OCCGeometry :: SewFaces ()
++   {
++      (*testout) << "Trying to sew faces ..." << std::endl;
++      std::cout << "Trying to sew faces ..." << flush;
++
++      BRepOffsetAPI_Sewing sewedObj(1);
++ 
++      for (int i = 1; i <= fmap.Extent(); i++)
++      {
++         TopoDS_Face face = TopoDS::Face (fmap(i));
++         sewedObj.Add (face);
++      }
++
++      sewedObj.Perform();
++
++      if (!sewedObj.SewedShape().IsNull())
++      {
++         shape = sewedObj.SewedShape();
++         std::cout << " done" << std::endl;
++      }
++      else
++         std::cout << " not possible";
++   }
++
++
++
++
++
++   void OCCGeometry :: MakeSolid ()
++   {
++      TopExp_Explorer exp0;
++
++      (*testout) << "Trying to build solids ..." << std::endl;
++      std::cout << "Trying to build solids ..." << flush;
++
++      BRepBuilderAPI_MakeSolid ms;
++      int count = 0;
++      for (exp0.Init(shape, TopAbs_SHELL); exp0.More(); exp0.Next())
++      {
++         count++;
++         ms.Add (TopoDS::Shell(exp0.Current()));
++      }
++
++      if (!count)
++      {
++         std::cout << " not possible (no shells)" << std::endl;
++         return;
++      }
++
++      BRepCheck_Analyzer ba(ms);
++      if (ba.IsValid ())
++      {
++         Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;
++         sfs->Init (ms);
++
++         sfs->SetPrecision(1e-5);
++         sfs->SetMaxTolerance(1e-5);
++
++         sfs->Perform();
++
++         shape = sfs->Shape();
++
++         for (exp0.Init(shape, TopAbs_SOLID); exp0.More(); exp0.Next())
++         {
++            TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
++            TopoDS_Solid newsolid = solid;
++            BRepLib::OrientClosedSolid (newsolid);
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++            rebuild->Replace(solid, newsolid);
++
++            TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);
++            shape = newshape;
++         }
++
++         std::cout << " done" << std::endl;
++      }
++      else
++         std::cout << " not possible" << std::endl;
++   }
++
++
++
++
++   void OCCGeometry :: BuildVisualizationMesh (double deflection)
++   {
++      std::cout << "Preparing visualization (deflection = " << deflection << ") ... " << flush;
++
++      BRepTools::Clean (shape);
++      // BRepMesh_IncrementalMesh::
++      BRepMesh_IncrementalMesh (shape, deflection, true);
++      std::cout << "done" << std::endl;
++   }
++
++
++
++
++   void OCCGeometry :: CalcBoundingBox ()
++   {
++      Bnd_Box bb;
++      BRepBndLib::Add (shape, bb);
++
++      double x1,y1,z1,x2,y2,z2;
++      bb.Get (x1,y1,z1,x2,y2,z2);
++      Point<3> p1 = Point<3> (x1,y1,z1);
++      Point<3> p2 = Point<3> (x2,y2,z2);
++
++      (*testout) << "Bounding Box = [" << p1 << " - " << p2 << "]" << std::endl;
++      boundingbox = Box<3> (p1,p2);
++      SetCenter();
++   }
++
++
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
++
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
++   {
++      static int cnt = 0;
++      if (++cnt % 1000 == 0) std::cout << "Project cnt = " << cnt << std::endl;
++
++      gp_Pnt pnt(p(0), p(1), p(2));
++
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
++
++      p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
++
++      return true;
++   }
++
++
++
++
++   bool OCCGeometry :: FastProject (int surfi, Point<3> & ap, double& u, double& v) const
++   {
++      gp_Pnt p(ap(0), ap(1), ap(2));
++
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << std::endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //std::cout << "Projection fails" << std::endl;
++        return false;
++      }
++
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
++
++      return true;
++   }
++
++
++
++
++   void OCCGeometry :: WriteOCC_STL(char * filename)
++   {
++      std::cout << "writing stl..."; std::cout.flush();
++      StlAPI_Writer writer;
++      //writer.RelativeMode() = Standard_False;
++
++      //writer.SetDeflection(0.02);
++      writer.Write(shape,filename);
++
++      std::cout << "done" << std::endl;
++   }
++
++
++
++   // Philippose - 23/02/2009
++   /* Special IGES File load function including the ability
++   to extract individual surface colours via the extended
++   OpenCascade XDE and XCAF Feature set.
++   */
++   OCCGeometry *LoadOCC_IGES(const char *filename)
++   {
++      OCCGeometry *occgeo;
++      occgeo = new OCCGeometry;
++
++      // Initiate a dummy XCAF Application to handle the IGES XCAF Document
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
++
++      // Create an XCAF Document to contain the IGES file itself
++      Handle(TDocStd_Document) iges_doc;
++
++      // Check if a IGES File is already open under this handle, if so, close it to prevent
++      // Segmentation Faults when trying to create a new document
++      if(dummy_app->NbDocuments() > 0)
++      {
++         dummy_app->GetDocument(1,iges_doc);
++         dummy_app->Close(iges_doc);
++      }
++      dummy_app->NewDocument ("IGES-XCAF",iges_doc);
++
++      IGESCAFControl_Reader reader;
++
++      Standard_Integer stat = reader.ReadFile((char*)filename);
++
++      if(stat != IFSelect_RetDone)
++      {
++         delete occgeo;
++         return NULL;
++      }
++
++      // Enable transfer of colours
++      reader.SetColorMode(Standard_True);
++
++      reader.Transfer(iges_doc);
++
++      // Read in the shape(s) and the colours present in the IGES File
++      Handle(XCAFDoc_ShapeTool) iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
++      Handle(XCAFDoc_ColorTool) iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
++
++      TDF_LabelSequence iges_shapes;
++      iges_shape_contents->GetShapes(iges_shapes);
++
++      // List out the available colours in the IGES File as Colour Names
++      TDF_LabelSequence all_colours;
++      iges_colour_contents->GetColors(all_colours);
++      PrintMessage(1,"Number of colours in IGES File: ",all_colours.Length());
++      for(int i = 1; i <= all_colours.Length(); i++)
++      {
++         Quantity_Color col;
++         stringstream col_rgb;
++         iges_colour_contents->GetColor(all_colours.Value(i),col);
++         col_rgb << " : (" << col.Red() << "," << col.Green() << "," << col.Blue() << ")";
++         PrintMessage(1, "Colour [", i, "] = ",col.StringName(col.Name()),col_rgb.str());
++      }
++
++
++      // For the IGES Reader, all the shapes can be exported as one compund shape 
++      // using the "OneShape" member
++      occgeo->shape = reader.OneShape();
++      occgeo->face_colours = iges_colour_contents;
++      occgeo->changed = 1;
++      occgeo->BuildFMap();
++
++      occgeo->CalcBoundingBox();
++      PrintContents (occgeo);
++
++      return occgeo;
++   }
++
++
++
++
++
++   // Philippose - 29/01/2009
++   /* Special STEP File load function including the ability
++   to extract individual surface colours via the extended
++   OpenCascade XDE and XCAF Feature set.
++   */
++   OCCGeometry * LoadOCC_STEP (const char * filename)
++   {
++      OCCGeometry * occgeo;
++      occgeo = new OCCGeometry;
++
++      // Initiate a dummy XCAF Application to handle the STEP XCAF Document
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
++
++      // Create an XCAF Document to contain the STEP file itself
++      Handle(TDocStd_Document) step_doc;
++
++      // Check if a STEP File is already open under this handle, if so, close it to prevent
++      // Segmentation Faults when trying to create a new document
++      if(dummy_app->NbDocuments() > 0)
++      {
++         dummy_app->GetDocument(1,step_doc);
++         dummy_app->Close(step_doc);
++      }
++      dummy_app->NewDocument ("STEP-XCAF",step_doc);
++
++      STEPCAFControl_Reader reader;
++
++      // Enable transfer of colours
++      reader.SetColorMode(Standard_True);
++
++      Standard_Integer stat = reader.ReadFile((char*)filename);
++
++      if(stat != IFSelect_RetDone)
++      {
++         delete occgeo;
++         return NULL;
++      }
++
++      reader.Transfer(step_doc);
++
++      // Read in the shape(s) and the colours present in the STEP File
++      Handle(XCAFDoc_ShapeTool) step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
++      Handle(XCAFDoc_ColorTool) step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
++
++      TDF_LabelSequence step_shapes;
++      step_shape_contents->GetShapes(step_shapes);
++
++      // List out the available colours in the STEP File as Colour Names
++      TDF_LabelSequence all_colours;
++      step_colour_contents->GetColors(all_colours);
++      PrintMessage(1,"Number of colours in STEP File: ",all_colours.Length());
++      for(int i = 1; i <= all_colours.Length(); i++)
++      {
++         Quantity_Color col;
++         stringstream col_rgb;
++         step_colour_contents->GetColor(all_colours.Value(i),col);
++         col_rgb << " : (" << col.Red() << "," << col.Green() << "," << col.Blue() << ")";
++         PrintMessage(1, "Colour [", i, "] = ",col.StringName(col.Name()),col_rgb.str());
++      }
++
++
++      // For the STEP File Reader in OCC, the 1st Shape contains the entire 
++      // compound geometry as one shape
++      occgeo->shape = step_shape_contents->GetShape(step_shapes.Value(1));
++      occgeo->face_colours = step_colour_contents;
++      occgeo->changed = 1;
++      occgeo->BuildFMap();
++
++      occgeo->CalcBoundingBox();
++      PrintContents (occgeo);
++
++      return occgeo;
++   }
++
++
++
++
++   OCCGeometry *LoadOCC_BREP (const char *filename)
++   {
++      OCCGeometry * occgeo;
++      occgeo = new OCCGeometry;
++
++      BRep_Builder aBuilder;
++      Standard_Boolean result = BRepTools::Read(occgeo->shape, const_cast<char*> (filename),aBuilder);
++
++      if(!result)
++      {
++         delete occgeo;
++         return NULL;
++      }
++
++      // Philippose - 23/02/2009
++      // Fixed a bug in the OpenCascade XDE Colour handling when 
++      // opening BREP Files, since BREP Files have no colour data.
++      // Hence, the face_colours Handle needs to be created as a NULL handle.
++      occgeo->face_colours = Handle(XCAFDoc_ColorTool)();
++      occgeo->face_colours.Nullify();
++      occgeo->changed = 1;
++      occgeo->BuildFMap();
++
++      occgeo->CalcBoundingBox();
++      PrintContents (occgeo);
++
++      return occgeo;
++   }
++
++
++  void OCCGeometry :: Save (string sfilename) const
++  {
++    const char * filename = sfilename.c_str();
++    if (strlen(filename) < 4) 
++      throw NgException ("illegal filename");
++    
++    if (strcmp (&filename[strlen(filename)-3], "igs") == 0)
++      {
++      IGESControl_Writer writer("millimeters", 1);
++      writer.AddShape (shape);
++      writer.Write (filename);
++      }
++    else if (strcmp (&filename[strlen(filename)-3], "stp") == 0)
++      {
++      STEPControl_Writer writer;
++      writer.Transfer (shape, STEPControl_AsIs);
++      writer.Write (filename);
++      }
++    else if (strcmp (&filename[strlen(filename)-3], "stl") == 0)
++      {
++      StlAPI_Writer writer;
++      writer.ASCIIMode() = Standard_True;
++      writer.Write (shape, filename);
++      }
++    else if (strcmp (&filename[strlen(filename)-4], "stlb") == 0)
++      {
++      StlAPI_Writer writer;
++      writer.ASCIIMode() = Standard_False;
++      writer.Write (shape, filename);
++      }
++  }
++
++
++
++  const char * shapesname[] =
++   {" ", "CompSolids", "Solids", "Shells",
++
++   "Faces", "Wires", "Edges", "Vertices"};
++
++  const char * shapename[] =
++   {" ", "CompSolid", "Solid", "Shell",
++   "Face", "Wire", "Edge", "Vertex"};
++
++  const char * orientationstring[] =
++     {"+", "-"};
++
++
++
++
++   void OCCGeometry :: RecursiveTopologyTree (const TopoDS_Shape & sh,
++      stringstream & str,
++      TopAbs_ShapeEnum l,
++      bool isfree,
++      const char * lname)
++   {
++      if (l > TopAbs_VERTEX) return;
++
++      TopExp_Explorer e;
++      int count = 0;
++      int count2 = 0;
++
++      if (isfree)
++         e.Init(sh, l, TopAbs_ShapeEnum(l-1));
++      else
++         e.Init(sh, l);
++
++      for (; e.More(); e.Next())
++      {
++         count++;
++
++         stringstream lname2;
++         lname2 << lname << "/" << shapename[l] << count;
++         str << lname2.str() << " ";
++
++         switch (e.Current().ShapeType())
++         {
++         case TopAbs_SOLID:
++           count2 = somap.FindIndex(TopoDS::Solid(e.Current())); break;
++         case TopAbs_SHELL:
++           count2 = shmap.FindIndex(TopoDS::Shell(e.Current())); break;
++         case TopAbs_FACE:
++           count2 = fmap.FindIndex(TopoDS::Face(e.Current())); break;
++         case TopAbs_WIRE:
++           count2 = wmap.FindIndex(TopoDS::Wire(e.Current())); break;
++         case TopAbs_EDGE:
++           count2 = emap.FindIndex(TopoDS::Edge(e.Current())); break;
++         case TopAbs_VERTEX:
++           count2 = vmap.FindIndex(TopoDS::Vertex(e.Current())); break;
++         default:
++           std::cout << "RecursiveTopologyTree: Case " << e.Current().ShapeType() << " not handeled" << std::endl;
++         }
++
++         int nrsubshapes = 0;
++
++         if (l <= TopAbs_WIRE)
++         {
++            TopExp_Explorer e2;
++            for (e2.Init (e.Current(), TopAbs_ShapeEnum (l+1));
++               e2.More(); e2.Next())
++               nrsubshapes++;
++         }
++
++         str << "{" << shapename[l] << " " << count2;
++
++         if (l <= TopAbs_EDGE)
++         {
++            str << " (" << orientationstring[e.Current().Orientation()];
++            if (nrsubshapes != 0) str << ", " << nrsubshapes;
++            str << ") } ";
++         }
++         else
++            str << " } ";
++
++         RecursiveTopologyTree (e.Current(), str, TopAbs_ShapeEnum (l+1),
++            false, (char*)lname2.str().c_str());
++
++      }
++   }
++
++
++
++
++   void OCCGeometry :: GetTopologyTree (stringstream & str)
++   {
++      std::cout << "Building topology tree ... " << flush;
++      RecursiveTopologyTree (shape, str, TopAbs_COMPSOLID, false, "CompSolids");
++      RecursiveTopologyTree (shape, str, TopAbs_SOLID, true, "FreeSolids");
++      RecursiveTopologyTree (shape, str, TopAbs_SHELL, true, "FreeShells");
++      RecursiveTopologyTree (shape, str, TopAbs_FACE, true, "FreeFaces");
++      RecursiveTopologyTree (shape, str, TopAbs_WIRE, true, "FreeWires");
++      RecursiveTopologyTree (shape, str, TopAbs_EDGE, true, "FreeEdges");
++      RecursiveTopologyTree (shape, str, TopAbs_VERTEX, true, "FreeVertices");
++      str << flush;
++      //  std::cout << "done" << std::endl;
++   }
++
++
++
++
++   void OCCGeometry :: CheckIrregularEntities(stringstream & str)
++   {
++      ShapeAnalysis_CheckSmallFace csm;
++
++      csm.SetTolerance (1e-6);
++
++      TopTools_DataMapOfShapeListOfShape mapEdges;
++      ShapeAnalysis_DataMapOfShapeListOfReal mapParam;
++      TopoDS_Compound theAllVert;
++
++      int spotfaces = 0;
++      int stripsupportfaces = 0;
++      int singlestripfaces = 0;
++      int stripfaces = 0;
++      int facessplitbyvertices = 0;
++      int stretchedpinfaces = 0;
++      int smoothpinfaces = 0;
++      int twistedfaces = 0;
++      // int edgessamebutnotidentified = 0;
++
++      std::cout << "checking faces ... " << flush;
++
++      int i;
++      for (i = 1; i <= fmap.Extent(); i++)
++      {
++         TopoDS_Face face = TopoDS::Face (fmap(i));
++         TopoDS_Edge e1, e2;
++
++         if (csm.CheckSpotFace (face))
++         {
++            if (!spotfaces++)
++               str << "SpotFace {Spot face} ";
++
++            (*testout) << "Face " << i << " is a spot face" << std::endl;
++            str << "SpotFace/Face" << i << " ";
++            str << "{Face " << i << " } ";
++         }
++
++         if (csm.IsStripSupport (face))
++         {
++            if (!stripsupportfaces++)
++               str << "StripSupportFace {Strip support face} ";
++
++            (*testout) << "Face " << i << " has strip support" << std::endl;
++            str << "StripSupportFace/Face" << i << " ";
++            str << "{Face " << i << " } ";
++         }
++
++         if (csm.CheckSingleStrip(face, e1, e2))
++         {
++            if (!singlestripfaces++)
++               str << "SingleStripFace {Single strip face} ";
++
++            (*testout) << "Face " << i << " is a single strip (edge " << emap.FindIndex(e1)
++               << " and edge " << emap.FindIndex(e2) << " are identical)" << std::endl;
++            str << "SingleStripFace/Face" << i << " ";
++            str << "{Face " << i << " (edge " << emap.FindIndex(e1)
++               << " and edge " << emap.FindIndex(e2) << " are identical)} ";
++         }
++
++         if (csm.CheckStripFace(face, e1, e2))
++         {
++            if (!stripfaces++)
++               str << "StripFace {Strip face} ";
++
++            (*testout) << "Face " << i << " is a strip (edge " << emap.FindIndex(e1)
++               << " and edge " << emap.FindIndex(e2)
++               << " are identical)" << std::endl;
++            str << "StripFace/Face" << i << " ";
++            str << "{Face " << i << " (edge " << emap.FindIndex(e1)
++               << " and edge " << emap.FindIndex(e2) << " are identical)} ";
++         }
++
++         if (int count = csm.CheckSplittingVertices(face, mapEdges, mapParam, theAllVert))
++         {
++            if (!facessplitbyvertices++)
++               str << "FaceSplitByVertices {Face split by vertices} ";
++
++            (*testout) << "Face " << i << " is split by " << count
++               << " vertex/vertices " << std::endl;
++            str << "FaceSplitByVertices/Face" << i << " ";
++            str << "{Face " << i << " (split by " << count << "vertex/vertices)} ";
++         }
++
++         int whatrow, sens;
++         if (int type = csm.CheckPin (face, whatrow, sens))
++         {
++            if (type == 1)
++            {
++               if (!smoothpinfaces++)
++                  str << "SmoothPinFace {Smooth pin face} ";
++
++               (*testout) << "Face " << i << " is a smooth pin" << std::endl;
++               str << "SmoothPinFace/Face" << i << " ";
++               str << "{Face " << i << " } ";
++            }
++            else
++            {
++               if (!stretchedpinfaces++)
++                  str << "StretchedPinFace {Stretched pin face} ";
++
++               (*testout) << "Face " << i << " is a streched pin" << std::endl;
++               str << "StretchedPinFace/Face" << i << " ";
++               str << "{Face " << i << " } ";
++            }
++         }
++
++         double paramu, paramv;
++         if (csm.CheckTwisted (face, paramu, paramv))
++         {
++            if (!twistedfaces++)
++               str << "TwistedFace {Twisted face} ";
++
++            (*testout) << "Face " << i << " is twisted" << std::endl;
++            str << "TwistedFace/Face" << i << " ";
++            str << "{Face " << i << " } ";
++         }
++      }
++
++      std::cout << "done" << std::endl;
++      std::cout << "checking edges ... " << flush;
++
++      // double dmax;
++      // int cnt = 0;
++      Array <double> edgeLengths;
++      Array <int> order;
++      edgeLengths.SetSize (emap.Extent());
++      order.SetSize (emap.Extent());
++
++      for (i = 1; i <= emap.Extent(); i++)
++      {
++         TopoDS_Edge edge1 = TopoDS::Edge (emap(i));
++         GProp_GProps system;
++         BRepGProp::LinearProperties(edge1, system);
++         edgeLengths[i-1] = system.Mass();
++      }
++
++      Sort (edgeLengths, order);
++
++      str << "ShortestEdges {Shortest edges} ";
++      for (i = 1; i <= min(20, emap.Extent()); i++)
++      {
++         str << "ShortestEdges/Edge" << i;
++         str << " {Edge " << order[i-1] << " (L=" << edgeLengths[order[i-1]-1] << ")} ";
++      }
++
++      str << flush;
++
++      std::cout << "done" << std::endl;
++   }
++
++
++
++
++   void OCCGeometry :: GetUnmeshedFaceInfo (stringstream & str)
++   {
++      for (int i = 1; i <= fmap.Extent(); i++)
++      {
++         if (facemeshstatus[i-1] == -1)
++            str << "Face" << i << " {Face " << i << " } ";
++      }
++      str << flush;
++   }
++
++
++
++
++   void OCCGeometry :: GetNotDrawableFaces (stringstream & str)
++   {
++      for (int i = 1; i <= fmap.Extent(); i++)
++      {
++         if (!fvispar[i-1].IsDrawable())
++            str << "Face" << i << " {Face " << i << " } ";
++      }
++      str << flush;
++   }
++
++
++
++
++   bool OCCGeometry :: ErrorInSurfaceMeshing ()
++   {
++      for (int i = 1; i <= fmap.Extent(); i++)
++         if (facemeshstatus[i-1] == -1)
++            return true;
++
++      return false;
++   }
++
++
++
++
++  int OCCGeometry :: GenerateMesh (Mesh*& mesh, MeshingParameters & mparam,
++      int perfstepsstart, int perfstepsend)
++   {
++     return OCCGenerateMesh (*this, mesh, mparam, perfstepsstart, perfstepsend);
++   }
++
++
++
++
++   const Refinement & OCCGeometry :: GetRefinement () const
++   {
++      return * new OCCRefinementSurfaces (*this);
++   }
++
++
++
++
++   OCCParameters :: OCCParameters()
++   {
++      resthcloseedgefac = 1;
++      resthcloseedgeenable = 1;
++        resthminedgelen = 0.001;
++        resthminedgelenenable = 1;
++   }
++
++
++
++
++   void OCCParameters :: Print(ostream & ost) const
++   {
++      ost << "OCC Parameters:" << std::endl
++         << "close edges: " << resthcloseedgeenable
++         << ", fac = " << resthcloseedgefac << std::endl
++               << "minimum edge length: " << resthminedgelenenable
++               << ", min len = " << resthminedgelen << std::endl;
++   }
++
++
++
++
++   OCCParameters occparam;
++
++}
++
++
++#endif
+--- netgen_ref/libsrc/occ/occgeom.hpp
++++ netgen/libsrc/occ/occgeom.hpp
+@@ -1,457 +1,478 @@
+-#ifndef FILE_OCCGEOM
+-#define FILE_OCCGEOM
+-
+-/* *************************************************************************/
+-/* File:   occgeom.hpp                                                     */
+-/* Author: Robert Gaisbauer                                                */
+-/* Date:   26. May  03                                                     */
+-/* *************************************************************************/
+-
+-#ifdef OCCGEOMETRY
+-
+-#include <meshing.hpp>
+-
+-#include "BRep_Tool.hxx"
+-#include "Geom_Curve.hxx"
+-#include "Geom2d_Curve.hxx"
+-#include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
+-#include "BRepTools.hxx"
+-#include "TopExp.hxx"
+-#include "BRepBuilderAPI_MakeVertex.hxx"
+-#include "BRepBuilderAPI_MakeShell.hxx"
+-#include "BRepBuilderAPI_MakeSolid.hxx"
+-#include "BRepOffsetAPI_Sewing.hxx"
+-#include "BRepLProp_SLProps.hxx"
+-#include "BRepAdaptor_Surface.hxx"
+-#include "Poly_Triangulation.hxx"
+-#include "Poly_Array1OfTriangle.hxx"
+-#include "TColgp_Array1OfPnt2d.hxx"
+-#include "Poly_Triangle.hxx"
+-#include "GProp_GProps.hxx"
+-#include "BRepGProp.hxx"
+-#include "Geom_Surface.hxx"
+-#include "TopExp.hxx"
+-#include "gp_Pnt.hxx"
+-#include "TopoDS.hxx"
+-#include "TopoDS_Solid.hxx"
+-#include "TopExp_Explorer.hxx"
+-#include "TopTools_ListIteratorOfListOfShape.hxx"
+-#include "BRep_Tool.hxx"
+-#include "Geom_Curve.hxx"
+-#include "Geom2d_Curve.hxx"
+-#include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
+-#include "TopoDS_Wire.hxx"
+-#include "BRepTools_WireExplorer.hxx"
+-#include "BRepTools.hxx"
+-#include "TopTools_IndexedMapOfShape.hxx"
+-#include "TopExp.hxx"
+-#include "BRepBuilderAPI_MakeVertex.hxx"
+-#include "BRepBuilderAPI_MakeShell.hxx"
+-#include "BRepBuilderAPI_MakeSolid.hxx"
+-#include "BRepOffsetAPI_Sewing.hxx"
+-#include "BRepLProp_CLProps.hxx"
+-#include "BRepLProp_SLProps.hxx"
+-#include "BRepAdaptor_Surface.hxx"
+-#include "BRepAdaptor_Curve.hxx"
+-#include "Poly_Triangulation.hxx"
+-#include "Poly_Array1OfTriangle.hxx"
+-#include "TColgp_Array1OfPnt2d.hxx"
+-#include "Poly_Triangle.hxx"
+-#include "GProp_GProps.hxx"
+-#include "BRepGProp.hxx"
+-#include "TopoDS_Shape.hxx"
+-#include "TopoDS_Face.hxx"
+-#include "IGESToBRep_Reader.hxx"
+-#include "Interface_Static.hxx"
+-#include "GeomAPI_ExtremaCurveCurve.hxx"
+-#include "Standard_ErrorHandler.hxx"
+-#include "Standard_Failure.hxx"
+-#include "ShapeUpgrade_ShellSewing.hxx"
+-#include "ShapeFix_Shape.hxx"
+-#include "ShapeFix_Wireframe.hxx"
+-#include "BRepMesh.hxx"
+-#include "BRepMesh_IncrementalMesh.hxx"
+-#include "BRepBndLib.hxx"
+-#include "Bnd_Box.hxx"
+-#include "ShapeAnalysis.hxx"
+-#include "ShapeBuild_ReShape.hxx"
+-
+-
+-// Philippose - 29/01/2009
+-// OpenCascade XDE Support
+-// Include support for OpenCascade XDE Features
+-#include "TDocStd_Document.hxx"
+-#include "Quantity_Color.hxx"
+-#include "XCAFApp_Application.hxx"
+-#include "XCAFDoc_ShapeTool.hxx"
+-#include "XCAFDoc_Color.hxx"
+-#include "XCAFDoc_ColorTool.hxx"
+-#include "XCAFDoc_ColorType.hxx"
+-#include "XCAFDoc_LayerTool.hxx"
+-#include "XCAFDoc_DimTolTool.hxx"
+-#include "XCAFDoc_MaterialTool.hxx"
+-#include "XCAFDoc_DocumentTool.hxx"
+-#include "TDF_Label.hxx"
+-#include "TDF_LabelSequence.hxx"
+-#include "STEPCAFControl_Reader.hxx"
+-#include "STEPCAFControl_Writer.hxx"
+-#include "IGESCAFControl_Reader.hxx"
+-#include "IGESCAFControl_Writer.hxx"
+-
+-#include "IGESControl_Reader.hxx"
+-#include "STEPControl_Reader.hxx"
+-#include "IGESControl_Writer.hxx"
+-#include "STEPControl_Writer.hxx"
+-
+-#include "StlAPI_Writer.hxx"
+-#include "STEPControl_StepModelType.hxx"
+-
+-namespace netgen
+-{
+-#include "occmeshsurf.hpp"
+-
+-  extern DLL_HEADER MeshingParameters mparam;
+-
+-#define PROJECTION_TOLERANCE 1e-10
+-
+-#define ENTITYISVISIBLE 1
+-#define ENTITYISHIGHLIGHTED 2
+-#define ENTITYISDRAWABLE 4
+-
+-#define OCCGEOMETRYVISUALIZATIONNOCHANGE   0
+-#define OCCGEOMETRYVISUALIZATIONFULLCHANGE 1  // Compute transformation matrices and redraw
+-#define OCCGEOMETRYVISUALIZATIONHALFCHANGE 2  // Redraw
+-
+-
+-
+-   class EntityVisualizationCode
+-   {
+-      int code;
+-
+-   public:
+-
+-      EntityVisualizationCode()
+-      {  code = ENTITYISVISIBLE + !ENTITYISHIGHLIGHTED + ENTITYISDRAWABLE;}
+-
+-      int IsVisible ()
+-      {  return code & ENTITYISVISIBLE;}
+-
+-      int IsHighlighted ()
+-      {  return code & ENTITYISHIGHLIGHTED;}
+-
+-      int IsDrawable ()
+-      {  return code & ENTITYISDRAWABLE;}
+-
+-      void Show ()
+-      {  code |= ENTITYISVISIBLE;}
+-
+-      void Hide ()
+-      {  code &= ~ENTITYISVISIBLE;}
+-
+-      void Highlight ()
+-      {  code |= ENTITYISHIGHLIGHTED;}
+-
+-      void Lowlight ()
+-      {  code &= ~ENTITYISHIGHLIGHTED;}
+-
+-      void SetDrawable ()
+-      {  code |= ENTITYISDRAWABLE;}
+-
+-      void SetNotDrawable ()
+-      {  code &= ~ENTITYISDRAWABLE;}
+-   };
+-
+-
+-
+-   class Line
+-   {
+-   public:
+-      Point<3> p0, p1;
+-
+-      double Dist (Line l);
+-
+-      double Length ();
+-   };
+-
+-
+-
+-   inline double Det3 (double a00, double a01, double a02,
+-      double a10, double a11, double a12,
+-      double a20, double a21, double a22)
+-   {
+-      return a00*a11*a22 + a01*a12*a20 + a10*a21*a02 - a20*a11*a02 - a10*a01*a22 - a21*a12*a00;
+-   }
+-
+-
+-
+-
+-   class OCCGeometry : public NetgenGeometry
+-   {
+-      Point<3> center;
+-
+-   public:
+-      TopoDS_Shape shape;
+-      TopTools_IndexedMapOfShape fmap, emap, vmap, somap, shmap, wmap;
+-      Array<bool> fsingular, esingular, vsingular;
+-      Box<3> boundingbox;
+-
+-      // Philippose - 29/01/2009
+-      // OpenCascade XDE Support
+-      // XCAF Handle to make the face colours available to the rest of
+-      // the system
+-      Handle_XCAFDoc_ColorTool face_colours;
+-
+-     mutable int changed;
+-      Array<int> facemeshstatus;
+-
+-      // Philippose - 15/01/2009
+-      // Maximum mesh size for a given face
+-      // (Used to explicitly define mesh size limits on individual faces)
+-      Array<double> face_maxh;
+-      
+-      // Philippose - 14/01/2010
+-      // Boolean array to detect whether a face has been explicitly modified 
+-      // by the user or not
+-      Array<bool> face_maxh_modified;
+-
+-      // Philippose - 15/01/2009
+-      // Indicates which faces have been selected by the user in geometry mode
+-      // (Currently handles only selection of one face at a time, but an array would
+-      //  help to extend this to multiple faces)
+-      Array<bool> face_sel_status;
+-
+-      Array<EntityVisualizationCode> fvispar, evispar, vvispar;
+-
+-      double tolerance;
+-      bool fixsmalledges;
+-      bool fixspotstripfaces;
+-      bool sewfaces;
+-      bool makesolids;
+-      bool splitpartitions;
+-
+-      OCCGeometry()
+-      {
+-         somap.Clear();
+-         shmap.Clear();
+-         fmap.Clear();
+-         wmap.Clear();
+-         emap.Clear();
+-         vmap.Clear();
+-      }
+-
+-
+-     virtual void Save (string filename) const;
+-
+-
+-      void BuildFMap();
+-
+-      Box<3> GetBoundingBox()
+-      {  return boundingbox;}
+-
+-      int NrSolids()
+-      {  return somap.Extent();}
+-
+-      // Philippose - 17/01/2009
+-      // Total number of faces in the geometry
+-      int NrFaces()
+-      {  return fmap.Extent();}
+-
+-      void SetCenter()
+-      {  center = boundingbox.Center();}
+-
+-      Point<3> Center()
+-      {  return center;}
+-
+-      void Project (int surfi, Point<3> & p) const;
+-      bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
+-
+-      OCCSurface GetSurface (int surfi)
+-      {
+-         cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
+-         return OCCSurface (TopoDS::Face(fmap(surfi)), PLANESPACE);
+-      }
+-
+-      void CalcBoundingBox ();
+-      void BuildVisualizationMesh (double deflection);
+-
+-      void RecursiveTopologyTree (const TopoDS_Shape & sh,
+-         stringstream & str,
+-         TopAbs_ShapeEnum l,
+-         bool free,
+-         const char * lname);
+-
+-      void GetTopologyTree (stringstream & str);
+-
+-      void PrintNrShapes ();
+-
+-      void CheckIrregularEntities (stringstream & str);
+-
+-      void SewFaces();
+-
+-      void MakeSolid();
+-
+-      void HealGeometry();
+-
+-      // Philippose - 15/01/2009
+-      // Sets the maximum mesh size for a given face
+-      // (Note: Local mesh size limited by the global max mesh size)
+-      void SetFaceMaxH(int facenr, double faceh)
+-      {
+-         if((facenr> 0) && (facenr <= fmap.Extent()))
+-         {
+-         face_maxh[facenr-1] = min(mparam.maxh,faceh);
+-            
+-            // Philippose - 14/01/2010
+-            // If the face maxh is greater than or equal to the 
+-            // current global maximum, then identify the face as 
+-            // not explicitly controlled by the user any more
+-            if(faceh >= mparam.maxh)
+-            {
+-               face_maxh_modified[facenr-1] = 0;
+-            }
+-            else
+-            {
+-               face_maxh_modified[facenr-1] = 1;
+-            }
+-         }
+-      }
+-
+-      // Philippose - 15/01/2009
+-      // Returns the local mesh size of a given face
+-      double GetFaceMaxH(int facenr)
+-      {
+-         if((facenr> 0) && (facenr <= fmap.Extent()))
+-         {
+-            return face_maxh[facenr-1];
+-         }
+-         else
+-         {
+-            return 0.0;
+-         }
+-      }
+-      
+-      // Philippose - 14/01/2010
+-      // Returns the flag whether the given face 
+-      // has a mesh size controlled by the user or not
+-      bool GetFaceMaxhModified(int facenr)
+-      {
+-         return face_maxh_modified[facenr-1];
+-      }
+-      
+-      // Philippose - 17/01/2009
+-      // Returns the index of the currently selected face
+-      int SelectedFace()
+-      {
+-         int i;
+-
+-         for(i = 1; i <= fmap.Extent(); i++)
+-         {
+-            if(face_sel_status[i-1])
+-            {
+-               return i;
+-            }
+-         }
+-
+-         return 0;
+-      }
+-
+-      // Philippose - 17/01/2009
+-      // Sets the currently selected face
+-      void SetSelectedFace(int facenr)
+-      {
+-         face_sel_status = 0;
+-
+-         if((facenr >= 1) && (facenr <= fmap.Extent()))
+-         {
+-            face_sel_status[facenr-1] = 1;
+-         }
+-      }
+-
+-      void LowLightAll()
+-      {
+-         for (int i = 1; i <= fmap.Extent(); i++)
+-            fvispar[i-1].Lowlight();
+-         for (int i = 1; i <= emap.Extent(); i++)
+-            evispar[i-1].Lowlight();
+-         for (int i = 1; i <= vmap.Extent(); i++)
+-            vvispar[i-1].Lowlight();
+-      }
+-
+-      void GetUnmeshedFaceInfo (stringstream & str);
+-      void GetNotDrawableFaces (stringstream & str);
+-      bool ErrorInSurfaceMeshing ();
+-
+-     void WriteOCC_STL(char * filename);
+-
+-     virtual int GenerateMesh (Mesh*& mesh, MeshingParameters & mparam, 
+-         int perfstepsstart, int perfstepsend);
+-
+-      virtual const Refinement & GetRefinement () const;
+-   };
+-
+-
+-
+-   class OCCParameters
+-   {
+-   public:
+-
+-      /// Factor for meshing close edges 
+-      double resthcloseedgefac;
+-
+-
+-      /// Enable / Disable detection of close edges
+-      int resthcloseedgeenable;
+-
+-
+-        /// Minimum edge length to be used for dividing edges to mesh points
+-        double resthminedgelen;
+-
+-
+-        /// Enable / Disable use of the minimum edge length (by default use 1e-4)
+-        int resthminedgelenenable;
+-
+-      /*!
+-         Default Constructor for the OpenCascade
+-         Mesh generation parameter set
+-      */
+-      OCCParameters();
+-
+-
+-      /*!
+-         Dump all the OpenCascade specific meshing parameters 
+-         to console
+-      */
+-      void Print (ostream & ost) const;
+-   };
+-   
+-
+-   void PrintContents (OCCGeometry * geom);
+-
+-   OCCGeometry * LoadOCC_IGES (const char * filename);
+-   OCCGeometry * LoadOCC_STEP (const char * filename);
+-   OCCGeometry * LoadOCC_BREP (const char * filename);
+-
+-   extern OCCParameters occparam;
+-
+-
+-   // Philippose - 31.09.2009
+-   // External access to the mesh generation functions within the OCC
+-   // subsystem (Not sure if this is the best way to implement this....!!)
+-   extern int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
+-                             MeshingParameters & mparam,
+-                             int perfstepsstart, int perfstepsend);
+-
+-  extern void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
+-
+-   extern void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
+-
+-   extern void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
+-}
+-
+-#endif
+-
+-#endif
++#ifndef FILE_OCCGEOM
++#define FILE_OCCGEOM
++
++/* *************************************************************************/
++/* File:   occgeom.hpp                                                     */
++/* Author: Robert Gaisbauer                                                */
++/* Date:   26. May  03                                                     */
++/* *************************************************************************/
++
++#ifdef OCCGEOMETRY
++
++#include <myadt.hpp>
++#include <iostream>
++
++#include <meshing.hpp>
++
++#include "BRep_Tool.hxx"
++#include "Geom_Curve.hxx"
++#include "Geom2d_Curve.hxx"
++#include "Geom_Surface.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
++#include "BRepTools.hxx"
++#include "TopExp.hxx"
++#include "BRepBuilderAPI_MakeVertex.hxx"
++#include "BRepBuilderAPI_MakeShell.hxx"
++#include "BRepBuilderAPI_MakeSolid.hxx"
++#include "BRepOffsetAPI_Sewing.hxx"
++#include "BRepLProp_SLProps.hxx"
++#include "BRepAdaptor_Surface.hxx"
++#include "Poly_Triangulation.hxx"
++#include "Poly_Array1OfTriangle.hxx"
++#include "TColgp_Array1OfPnt2d.hxx"
++#include "Poly_Triangle.hxx"
++#include "GProp_GProps.hxx"
++#include "BRepGProp.hxx"
++#include "Geom_Surface.hxx"
++#include "TopExp.hxx"
++#include "gp_Pnt.hxx"
++#include "TopoDS.hxx"
++#include "TopoDS_Solid.hxx"
++#include "TopExp_Explorer.hxx"
++#include "TopTools_ListIteratorOfListOfShape.hxx"
++#include "BRep_Tool.hxx"
++#include "Geom_Curve.hxx"
++#include "Geom2d_Curve.hxx"
++#include "Geom_Surface.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
++#include "TopoDS_Wire.hxx"
++#include "BRepTools_WireExplorer.hxx"
++#include "BRepTools.hxx"
++#include "TopTools_IndexedMapOfShape.hxx"
++#include "TopExp.hxx"
++#include "BRepBuilderAPI_MakeVertex.hxx"
++#include "BRepBuilderAPI_MakeShell.hxx"
++#include "BRepBuilderAPI_MakeSolid.hxx"
++#include "BRepOffsetAPI_Sewing.hxx"
++#include "BRepLProp_CLProps.hxx"
++#include "BRepLProp_SLProps.hxx"
++#include "BRepAdaptor_Surface.hxx"
++#include "BRepAdaptor_Curve.hxx"
++#include "Poly_Triangulation.hxx"
++#include "Poly_Array1OfTriangle.hxx"
++#include "TColgp_Array1OfPnt2d.hxx"
++#include "Poly_Triangle.hxx"
++#include "GProp_GProps.hxx"
++#include "BRepGProp.hxx"
++#include "TopoDS_Shape.hxx"
++#include "TopoDS_Face.hxx"
++#include "IGESToBRep_Reader.hxx"
++#include "Interface_Static.hxx"
++#include "GeomAPI_ExtremaCurveCurve.hxx"
++//#include "Standard_ErrorHandler.hxx"
++#include "Standard_Failure.hxx"
++#include "ShapeUpgrade_ShellSewing.hxx"
++#include "ShapeFix_Shape.hxx"
++#include "ShapeFix_Wireframe.hxx"
++#include <Standard_Version.hxx>
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
++#include "BRepMesh.hxx"
++#endif
++#include "BRepMesh_IncrementalMesh.hxx"
++#include "BRepBndLib.hxx"
++#include "Bnd_Box.hxx"
++#include "ShapeAnalysis.hxx"
++#include "ShapeBuild_ReShape.hxx"
++
++// -- Optimization: to use cached projector and classifier
++#include <NCollection_DataMap.hxx>
++class ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
++
++// Philippose - 29/01/2009
++// OpenCascade XDE Support
++// Include support for OpenCascade XDE Features
++#include "TDocStd_Document.hxx"
++#include "Quantity_Color.hxx"
++#include "XCAFApp_Application.hxx"
++#include "XCAFDoc_ShapeTool.hxx"
++#include "XCAFDoc_Color.hxx"
++#include "XCAFDoc_ColorTool.hxx"
++#include "XCAFDoc_ColorType.hxx"
++#include "XCAFDoc_LayerTool.hxx"
++#include "XCAFDoc_DimTolTool.hxx"
++#include "XCAFDoc_MaterialTool.hxx"
++#include "XCAFDoc_DocumentTool.hxx"
++#include "TDF_Label.hxx"
++#include "TDF_LabelSequence.hxx"
++#include "STEPCAFControl_Reader.hxx"
++#include "STEPCAFControl_Writer.hxx"
++#include "IGESCAFControl_Reader.hxx"
++#include "IGESCAFControl_Writer.hxx"
++
++#include "IGESControl_Reader.hxx"
++#include "STEPControl_Reader.hxx"
++#include "IGESControl_Writer.hxx"
++#include "STEPControl_Writer.hxx"
++
++#include "StlAPI_Writer.hxx"
++#include "STEPControl_StepModelType.hxx"
++
++namespace netgen
++{
++#include "occmeshsurf.hpp"
++
++  DLL_HEADER extern MeshingParameters mparam;
++
++#define PROJECTION_TOLERANCE 1e-10
++
++#define ENTITYISVISIBLE 1
++#define ENTITYISHIGHLIGHTED 2
++#define ENTITYISDRAWABLE 4
++
++#define OCCGEOMETRYVISUALIZATIONNOCHANGE   0
++#define OCCGEOMETRYVISUALIZATIONFULLCHANGE 1  // Compute transformation matrices and redraw
++#define OCCGEOMETRYVISUALIZATIONHALFCHANGE 2  // Redraw
++
++
++
++   class EntityVisualizationCode
++   {
++      int code;
++
++   public:
++
++      EntityVisualizationCode()
++      {  code = ENTITYISVISIBLE + !ENTITYISHIGHLIGHTED + ENTITYISDRAWABLE;}
++
++      int IsVisible ()
++      {  return code & ENTITYISVISIBLE;}
++
++      int IsHighlighted ()
++      {  return code & ENTITYISHIGHLIGHTED;}
++
++      int IsDrawable ()
++      {  return code & ENTITYISDRAWABLE;}
++
++      void Show ()
++      {  code |= ENTITYISVISIBLE;}
++
++      void Hide ()
++      {  code &= ~ENTITYISVISIBLE;}
++
++      void Highlight ()
++      {  code |= ENTITYISHIGHLIGHTED;}
++
++      void Lowlight ()
++      {  code &= ~ENTITYISHIGHLIGHTED;}
++
++      void SetDrawable ()
++      {  code |= ENTITYISDRAWABLE;}
++
++      void SetNotDrawable ()
++      {  code &= ~ENTITYISDRAWABLE;}
++   };
++
++
++
++   class Line
++   {
++   public:
++      Point<3> p0, p1;
++
++      double Dist (Line l);
++
++      double Length ();
++   };
++
++
++
++   inline double Det3 (double a00, double a01, double a02,
++      double a10, double a11, double a12,
++      double a20, double a21, double a22)
++   {
++      return a00*a11*a22 + a01*a12*a20 + a10*a21*a02 - a20*a11*a02 - a10*a01*a22 - a21*a12*a00;
++   }
++
++
++
++
++   class DLL_HEADER OCCGeometry : public NetgenGeometry
++   {
++      Point<3> center;
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap<int,Handle(ShapeAnalysis_Surface)> fprjmap;
++      mutable NCollection_DataMap<int,BRepTopAdaptor_FClass2d*> fclsmap;
++
++   public:
++      TopoDS_Shape shape;
++      TopTools_IndexedMapOfShape fmap, emap, vmap, somap, shmap, wmap;
++      Array<bool> fsingular, esingular, vsingular;
++      Box<3> boundingbox;
++
++      // Philippose - 29/01/2009
++      // OpenCascade XDE Support
++      // XCAF Handle to make the face colours available to the rest of
++      // the system
++      Handle(XCAFDoc_ColorTool) face_colours;
++
++     mutable int changed;
++      Array<int> facemeshstatus;
++
++      // Philippose - 15/01/2009
++      // Maximum mesh size for a given face
++      // (Used to explicitly define mesh size limits on individual faces)
++      Array<double> face_maxh;
++      
++      // Philippose - 14/01/2010
++      // Boolean array to detect whether a face has been explicitly modified 
++      // by the user or not
++      Array<bool> face_maxh_modified;
++
++      // Philippose - 15/01/2009
++      // Indicates which faces have been selected by the user in geometry mode
++      // (Currently handles only selection of one face at a time, but an array would
++      //  help to extend this to multiple faces)
++      Array<bool> face_sel_status;
++
++      Array<EntityVisualizationCode> fvispar, evispar, vvispar;
++
++      double tolerance;
++      bool fixsmalledges;
++      bool fixspotstripfaces;
++      bool sewfaces;
++      bool makesolids;
++      bool splitpartitions;
++
++      OCCGeometry()
++      {
++         somap.Clear();
++         shmap.Clear();
++         fmap.Clear();
++         wmap.Clear();
++         emap.Clear();
++         vmap.Clear();
++      }
++
++
++     virtual void Save (string filename) const;
++
++
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
++      void BuildFMap();
++
++      Box<3> GetBoundingBox()
++      {  return boundingbox;}
++
++      int NrSolids()
++      {  return somap.Extent();}
++
++      // Philippose - 17/01/2009
++      // Total number of faces in the geometry
++      int NrFaces()
++      {  return fmap.Extent();}
++
++      void SetCenter()
++      {  center = boundingbox.Center();}
++
++      Point<3> Center()
++      {  return center;}
++
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
++      bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
++
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
++      OCCSurface GetSurface (int surfi)
++      {
++         std::cout << "OCCGeometry::GetSurface using PLANESPACE" << std::endl;
++         return OCCSurface (TopoDS::Face(fmap(surfi)), PLANESPACE);
++      }
++
++      void CalcBoundingBox ();
++      void BuildVisualizationMesh (double deflection);
++
++      void RecursiveTopologyTree (const TopoDS_Shape & sh,
++         stringstream & str,
++         TopAbs_ShapeEnum l,
++         bool free,
++         const char * lname);
++
++      void GetTopologyTree (stringstream & str);
++
++      void PrintNrShapes ();
++
++      void CheckIrregularEntities (stringstream & str);
++
++      void SewFaces();
++
++      void MakeSolid();
++
++      void HealGeometry();
++
++      // Philippose - 15/01/2009
++      // Sets the maximum mesh size for a given face
++      // (Note: Local mesh size limited by the global max mesh size)
++      void SetFaceMaxH(int facenr, double faceh)
++      {
++         if((facenr> 0) && (facenr <= fmap.Extent()))
++         {
++         face_maxh[facenr-1] = min(mparam.maxh,faceh);
++            
++            // Philippose - 14/01/2010
++            // If the face maxh is greater than or equal to the 
++            // current global maximum, then identify the face as 
++            // not explicitly controlled by the user any more
++            if(faceh >= mparam.maxh)
++            {
++               face_maxh_modified[facenr-1] = 0;
++            }
++            else
++            {
++               face_maxh_modified[facenr-1] = 1;
++            }
++         }
++      }
++
++      // Philippose - 15/01/2009
++      // Returns the local mesh size of a given face
++      double GetFaceMaxH(int facenr)
++      {
++         if((facenr> 0) && (facenr <= fmap.Extent()))
++         {
++            return face_maxh[facenr-1];
++         }
++         else
++         {
++            return 0.0;
++         }
++      }
++      
++      // Philippose - 14/01/2010
++      // Returns the flag whether the given face 
++      // has a mesh size controlled by the user or not
++      bool GetFaceMaxhModified(int facenr)
++      {
++         return face_maxh_modified[facenr-1];
++      }
++      
++      // Philippose - 17/01/2009
++      // Returns the index of the currently selected face
++      int SelectedFace()
++      {
++         int i;
++
++         for(i = 1; i <= fmap.Extent(); i++)
++         {
++            if(face_sel_status[i-1])
++            {
++               return i;
++            }
++         }
++
++         return 0;
++      }
++
++      // Philippose - 17/01/2009
++      // Sets the currently selected face
++      void SetSelectedFace(int facenr)
++      {
++         face_sel_status = 0;
++
++         if((facenr >= 1) && (facenr <= fmap.Extent()))
++         {
++            face_sel_status[facenr-1] = 1;
++         }
++      }
++
++      void LowLightAll()
++      {
++         for (int i = 1; i <= fmap.Extent(); i++)
++            fvispar[i-1].Lowlight();
++         for (int i = 1; i <= emap.Extent(); i++)
++            evispar[i-1].Lowlight();
++         for (int i = 1; i <= vmap.Extent(); i++)
++            vvispar[i-1].Lowlight();
++      }
++
++      void GetUnmeshedFaceInfo (stringstream & str);
++      void GetNotDrawableFaces (stringstream & str);
++      bool ErrorInSurfaceMeshing ();
++
++     void WriteOCC_STL(char * filename);
++
++     virtual int GenerateMesh (Mesh*& mesh, MeshingParameters & mparam, 
++         int perfstepsstart, int perfstepsend);
++
++      virtual const Refinement & GetRefinement () const;
++   };
++
++
++
++   class DLL_HEADER OCCParameters
++   {
++   public:
++
++      /// Factor for meshing close edges 
++      double resthcloseedgefac;
++
++
++      /// Enable / Disable detection of close edges
++      int resthcloseedgeenable;
++
++
++        /// Minimum edge length to be used for dividing edges to mesh points
++        double resthminedgelen;
++
++
++        /// Enable / Disable use of the minimum edge length (by default use 1e-4)
++        int resthminedgelenenable;
++
++      /*!
++         Default Constructor for the OpenCascade
++         Mesh generation parameter set
++      */
++      OCCParameters();
++
++
++      /*!
++         Dump all the OpenCascade specific meshing parameters 
++         to console
++      */
++      void Print (ostream & ost) const;
++   };
++   
++
++   void PrintContents (OCCGeometry * geom);
++
++   OCCGeometry * LoadOCC_IGES (const char * filename);
++   OCCGeometry * LoadOCC_STEP (const char * filename);
++   OCCGeometry * LoadOCC_BREP (const char * filename);
++
++   extern DLL_HEADER OCCParameters occparam;
++
++
++   // Philippose - 31.09.2009
++   // External access to the mesh generation functions within the OCC
++   // subsystem (Not sure if this is the best way to implement this....!!)
++   extern DLL_HEADER int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
++                             MeshingParameters & mparam,
++                             int perfstepsstart, int perfstepsend);
++
++  extern DLL_HEADER void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
++
++   extern DLL_HEADER void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
++
++   extern DLL_HEADER void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
++}
++
++#endif
++
++#endif
+--- /dev/null
++++ netgen/libsrc/occ/occgeom.hpp.orig
+@@ -0,0 +1,457 @@
++#ifndef FILE_OCCGEOM
++#define FILE_OCCGEOM
++
++/* *************************************************************************/
++/* File:   occgeom.hpp                                                     */
++/* Author: Robert Gaisbauer                                                */
++/* Date:   26. May  03                                                     */
++/* *************************************************************************/
++
++#ifdef OCCGEOMETRY
++
++#include <meshing.hpp>
++
++#include "BRep_Tool.hxx"
++#include "Geom_Curve.hxx"
++#include "Geom2d_Curve.hxx"
++#include "Geom_Surface.hxx"
++#include "GeomAPI_ProjectPointOnSurf.hxx"
++#include "GeomAPI_ProjectPointOnCurve.hxx"
++#include "BRepTools.hxx"
++#include "TopExp.hxx"
++#include "BRepBuilderAPI_MakeVertex.hxx"
++#include "BRepBuilderAPI_MakeShell.hxx"
++#include "BRepBuilderAPI_MakeSolid.hxx"
++#include "BRepOffsetAPI_Sewing.hxx"
++#include "BRepLProp_SLProps.hxx"
++#include "BRepAdaptor_Surface.hxx"
++#include "Poly_Triangulation.hxx"
++#include "Poly_Array1OfTriangle.hxx"
++#include "TColgp_Array1OfPnt2d.hxx"
++#include "Poly_Triangle.hxx"
++#include "GProp_GProps.hxx"
++#include "BRepGProp.hxx"
++#include "Geom_Surface.hxx"
++#include "TopExp.hxx"
++#include "gp_Pnt.hxx"
++#include "TopoDS.hxx"
++#include "TopoDS_Solid.hxx"
++#include "TopExp_Explorer.hxx"
++#include "TopTools_ListIteratorOfListOfShape.hxx"
++#include "BRep_Tool.hxx"
++#include "Geom_Curve.hxx"
++#include "Geom2d_Curve.hxx"
++#include "Geom_Surface.hxx"
++#include "GeomAPI_ProjectPointOnSurf.hxx"
++#include "GeomAPI_ProjectPointOnCurve.hxx"
++#include "TopoDS_Wire.hxx"
++#include "BRepTools_WireExplorer.hxx"
++#include "BRepTools.hxx"
++#include "TopTools_IndexedMapOfShape.hxx"
++#include "TopExp.hxx"
++#include "BRepBuilderAPI_MakeVertex.hxx"
++#include "BRepBuilderAPI_MakeShell.hxx"
++#include "BRepBuilderAPI_MakeSolid.hxx"
++#include "BRepOffsetAPI_Sewing.hxx"
++#include "BRepLProp_CLProps.hxx"
++#include "BRepLProp_SLProps.hxx"
++#include "BRepAdaptor_Surface.hxx"
++#include "BRepAdaptor_Curve.hxx"
++#include "Poly_Triangulation.hxx"
++#include "Poly_Array1OfTriangle.hxx"
++#include "TColgp_Array1OfPnt2d.hxx"
++#include "Poly_Triangle.hxx"
++#include "GProp_GProps.hxx"
++#include "BRepGProp.hxx"
++#include "TopoDS_Shape.hxx"
++#include "TopoDS_Face.hxx"
++#include "IGESToBRep_Reader.hxx"
++#include "Interface_Static.hxx"
++#include "GeomAPI_ExtremaCurveCurve.hxx"
++#include "Standard_ErrorHandler.hxx"
++#include "Standard_Failure.hxx"
++#include "ShapeUpgrade_ShellSewing.hxx"
++#include "ShapeFix_Shape.hxx"
++#include "ShapeFix_Wireframe.hxx"
++#include "BRepMesh.hxx"
++#include "BRepMesh_IncrementalMesh.hxx"
++#include "BRepBndLib.hxx"
++#include "Bnd_Box.hxx"
++#include "ShapeAnalysis.hxx"
++#include "ShapeBuild_ReShape.hxx"
++
++
++// Philippose - 29/01/2009
++// OpenCascade XDE Support
++// Include support for OpenCascade XDE Features
++#include "TDocStd_Document.hxx"
++#include "Quantity_Color.hxx"
++#include "XCAFApp_Application.hxx"
++#include "XCAFDoc_ShapeTool.hxx"
++#include "XCAFDoc_Color.hxx"
++#include "XCAFDoc_ColorTool.hxx"
++#include "XCAFDoc_ColorType.hxx"
++#include "XCAFDoc_LayerTool.hxx"
++#include "XCAFDoc_DimTolTool.hxx"
++#include "XCAFDoc_MaterialTool.hxx"
++#include "XCAFDoc_DocumentTool.hxx"
++#include "TDF_Label.hxx"
++#include "TDF_LabelSequence.hxx"
++#include "STEPCAFControl_Reader.hxx"
++#include "STEPCAFControl_Writer.hxx"
++#include "IGESCAFControl_Reader.hxx"
++#include "IGESCAFControl_Writer.hxx"
++
++#include "IGESControl_Reader.hxx"
++#include "STEPControl_Reader.hxx"
++#include "IGESControl_Writer.hxx"
++#include "STEPControl_Writer.hxx"
++
++#include "StlAPI_Writer.hxx"
++#include "STEPControl_StepModelType.hxx"
++
++namespace netgen
++{
++#include "occmeshsurf.hpp"
++
++  extern DLL_HEADER MeshingParameters mparam;
++
++#define PROJECTION_TOLERANCE 1e-10
++
++#define ENTITYISVISIBLE 1
++#define ENTITYISHIGHLIGHTED 2
++#define ENTITYISDRAWABLE 4
++
++#define OCCGEOMETRYVISUALIZATIONNOCHANGE   0
++#define OCCGEOMETRYVISUALIZATIONFULLCHANGE 1  // Compute transformation matrices and redraw
++#define OCCGEOMETRYVISUALIZATIONHALFCHANGE 2  // Redraw
++
++
++
++   class EntityVisualizationCode
++   {
++      int code;
++
++   public:
++
++      EntityVisualizationCode()
++      {  code = ENTITYISVISIBLE + !ENTITYISHIGHLIGHTED + ENTITYISDRAWABLE;}
++
++      int IsVisible ()
++      {  return code & ENTITYISVISIBLE;}
++
++      int IsHighlighted ()
++      {  return code & ENTITYISHIGHLIGHTED;}
++
++      int IsDrawable ()
++      {  return code & ENTITYISDRAWABLE;}
++
++      void Show ()
++      {  code |= ENTITYISVISIBLE;}
++
++      void Hide ()
++      {  code &= ~ENTITYISVISIBLE;}
++
++      void Highlight ()
++      {  code |= ENTITYISHIGHLIGHTED;}
++
++      void Lowlight ()
++      {  code &= ~ENTITYISHIGHLIGHTED;}
++
++      void SetDrawable ()
++      {  code |= ENTITYISDRAWABLE;}
++
++      void SetNotDrawable ()
++      {  code &= ~ENTITYISDRAWABLE;}
++   };
++
++
++
++   class Line
++   {
++   public:
++      Point<3> p0, p1;
++
++      double Dist (Line l);
++
++      double Length ();
++   };
++
++
++
++   inline double Det3 (double a00, double a01, double a02,
++      double a10, double a11, double a12,
++      double a20, double a21, double a22)
++   {
++      return a00*a11*a22 + a01*a12*a20 + a10*a21*a02 - a20*a11*a02 - a10*a01*a22 - a21*a12*a00;
++   }
++
++
++
++
++   class OCCGeometry : public NetgenGeometry
++   {
++      Point<3> center;
++
++   public:
++      TopoDS_Shape shape;
++      TopTools_IndexedMapOfShape fmap, emap, vmap, somap, shmap, wmap;
++      Array<bool> fsingular, esingular, vsingular;
++      Box<3> boundingbox;
++
++      // Philippose - 29/01/2009
++      // OpenCascade XDE Support
++      // XCAF Handle to make the face colours available to the rest of
++      // the system
++      Handle_XCAFDoc_ColorTool face_colours;
++
++     mutable int changed;
++      Array<int> facemeshstatus;
++
++      // Philippose - 15/01/2009
++      // Maximum mesh size for a given face
++      // (Used to explicitly define mesh size limits on individual faces)
++      Array<double> face_maxh;
++      
++      // Philippose - 14/01/2010
++      // Boolean array to detect whether a face has been explicitly modified 
++      // by the user or not
++      Array<bool> face_maxh_modified;
++
++      // Philippose - 15/01/2009
++      // Indicates which faces have been selected by the user in geometry mode
++      // (Currently handles only selection of one face at a time, but an array would
++      //  help to extend this to multiple faces)
++      Array<bool> face_sel_status;
++
++      Array<EntityVisualizationCode> fvispar, evispar, vvispar;
++
++      double tolerance;
++      bool fixsmalledges;
++      bool fixspotstripfaces;
++      bool sewfaces;
++      bool makesolids;
++      bool splitpartitions;
++
++      OCCGeometry()
++      {
++         somap.Clear();
++         shmap.Clear();
++         fmap.Clear();
++         wmap.Clear();
++         emap.Clear();
++         vmap.Clear();
++      }
++
++
++     virtual void Save (string filename) const;
++
++
++      void BuildFMap();
++
++      Box<3> GetBoundingBox()
++      {  return boundingbox;}
++
++      int NrSolids()
++      {  return somap.Extent();}
++
++      // Philippose - 17/01/2009
++      // Total number of faces in the geometry
++      int NrFaces()
++      {  return fmap.Extent();}
++
++      void SetCenter()
++      {  center = boundingbox.Center();}
++
++      Point<3> Center()
++      {  return center;}
++
++      void Project (int surfi, Point<3> & p) const;
++      bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
++
++      OCCSurface GetSurface (int surfi)
++      {
++         cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
++         return OCCSurface (TopoDS::Face(fmap(surfi)), PLANESPACE);
++      }
++
++      void CalcBoundingBox ();
++      void BuildVisualizationMesh (double deflection);
++
++      void RecursiveTopologyTree (const TopoDS_Shape & sh,
++         stringstream & str,
++         TopAbs_ShapeEnum l,
++         bool free,
++         const char * lname);
++
++      void GetTopologyTree (stringstream & str);
++
++      void PrintNrShapes ();
++
++      void CheckIrregularEntities (stringstream & str);
++
++      void SewFaces();
++
++      void MakeSolid();
++
++      void HealGeometry();
++
++      // Philippose - 15/01/2009
++      // Sets the maximum mesh size for a given face
++      // (Note: Local mesh size limited by the global max mesh size)
++      void SetFaceMaxH(int facenr, double faceh)
++      {
++         if((facenr> 0) && (facenr <= fmap.Extent()))
++         {
++         face_maxh[facenr-1] = min(mparam.maxh,faceh);
++            
++            // Philippose - 14/01/2010
++            // If the face maxh is greater than or equal to the 
++            // current global maximum, then identify the face as 
++            // not explicitly controlled by the user any more
++            if(faceh >= mparam.maxh)
++            {
++               face_maxh_modified[facenr-1] = 0;
++            }
++            else
++            {
++               face_maxh_modified[facenr-1] = 1;
++            }
++         }
++      }
++
++      // Philippose - 15/01/2009
++      // Returns the local mesh size of a given face
++      double GetFaceMaxH(int facenr)
++      {
++         if((facenr> 0) && (facenr <= fmap.Extent()))
++         {
++            return face_maxh[facenr-1];
++         }
++         else
++         {
++            return 0.0;
++         }
++      }
++      
++      // Philippose - 14/01/2010
++      // Returns the flag whether the given face 
++      // has a mesh size controlled by the user or not
++      bool GetFaceMaxhModified(int facenr)
++      {
++         return face_maxh_modified[facenr-1];
++      }
++      
++      // Philippose - 17/01/2009
++      // Returns the index of the currently selected face
++      int SelectedFace()
++      {
++         int i;
++
++         for(i = 1; i <= fmap.Extent(); i++)
++         {
++            if(face_sel_status[i-1])
++            {
++               return i;
++            }
++         }
++
++         return 0;
++      }
++
++      // Philippose - 17/01/2009
++      // Sets the currently selected face
++      void SetSelectedFace(int facenr)
++      {
++         face_sel_status = 0;
++
++         if((facenr >= 1) && (facenr <= fmap.Extent()))
++         {
++            face_sel_status[facenr-1] = 1;
++         }
++      }
++
++      void LowLightAll()
++      {
++         for (int i = 1; i <= fmap.Extent(); i++)
++            fvispar[i-1].Lowlight();
++         for (int i = 1; i <= emap.Extent(); i++)
++            evispar[i-1].Lowlight();
++         for (int i = 1; i <= vmap.Extent(); i++)
++            vvispar[i-1].Lowlight();
++      }
++
++      void GetUnmeshedFaceInfo (stringstream & str);
++      void GetNotDrawableFaces (stringstream & str);
++      bool ErrorInSurfaceMeshing ();
++
++     void WriteOCC_STL(char * filename);
++
++     virtual int GenerateMesh (Mesh*& mesh, MeshingParameters & mparam, 
++         int perfstepsstart, int perfstepsend);
++
++      virtual const Refinement & GetRefinement () const;
++   };
++
++
++
++   class OCCParameters
++   {
++   public:
++
++      /// Factor for meshing close edges 
++      double resthcloseedgefac;
++
++
++      /// Enable / Disable detection of close edges
++      int resthcloseedgeenable;
++
++
++        /// Minimum edge length to be used for dividing edges to mesh points
++        double resthminedgelen;
++
++
++        /// Enable / Disable use of the minimum edge length (by default use 1e-4)
++        int resthminedgelenenable;
++
++      /*!
++         Default Constructor for the OpenCascade
++         Mesh generation parameter set
++      */
++      OCCParameters();
++
++
++      /*!
++         Dump all the OpenCascade specific meshing parameters 
++         to console
++      */
++      void Print (ostream & ost) const;
++   };
++   
++
++   void PrintContents (OCCGeometry * geom);
++
++   OCCGeometry * LoadOCC_IGES (const char * filename);
++   OCCGeometry * LoadOCC_STEP (const char * filename);
++   OCCGeometry * LoadOCC_BREP (const char * filename);
++
++   extern OCCParameters occparam;
++
++
++   // Philippose - 31.09.2009
++   // External access to the mesh generation functions within the OCC
++   // subsystem (Not sure if this is the best way to implement this....!!)
++   extern int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
++                             MeshingParameters & mparam,
++                             int perfstepsstart, int perfstepsend);
++
++  extern void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
++
++   extern void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
++
++   extern void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
++}
++
++#endif
++
++#endif
+--- netgen_ref/libsrc/occ/occmeshsurf.cpp
++++ netgen/libsrc/occ/occmeshsurf.cpp
+@@ -6,6 +6,7 @@
+ #include <meshing.hpp>
+ #include <GeomLProp_SLProps.hxx>
+ #include <ShapeAnalysis_Surface.hxx>
++#include <GeomAPI_ProjectPointOnCurve.hxx> // -- moved here from occgeom.hpp
+ namespace netgen
+@@ -96,24 +97,27 @@
+       n.Normalize();
+       }
+-    else
++    else if ( lprop.IsNormalDefined() )
+       {
+       n(0)=lprop.Normal().X();
+       n(1)=lprop.Normal().Y();
+       n(2)=lprop.Normal().Z();
+       }
+-
++    else
++      {
++        n = 0;
++      }
+     if(glob_testout)
+       {
+       (*testout) << "u " << geominfo.u << " v " << geominfo.v 
+                  << " du " << lprop.D1U().X() << " "<< lprop.D1U().Y() << " "<< lprop.D1U().Z()
+-                 << " dv " << lprop.D1V().X() << " "<< lprop.D1V().Y() << " "<< lprop.D1V().Z() << endl;
++                 << " dv " << lprop.D1V().X() << " "<< lprop.D1V().Y() << " "<< lprop.D1V().Z() << std::endl;
+       }
+     if (orient == TopAbs_REVERSED) n = -1*n;
+-    //  (*testout) << "GetNormalVector" << endl;
++    //  (*testout) << "GetNormalVector" << std::endl;
+   }
+@@ -126,8 +130,8 @@
+       {
+       p1 = ap1; p2 = ap2;
+-      //cout << "p1 = " << p1 << endl;
+-      //cout << "p2 = " << p2 << endl;
++      //std::cout << "p1 = " << p1 << std::endl;
++      //std::cout << "p2 = " << p2 << std::endl;
+       
+       GetNormalVector (p1, geominfo1, ez);
+       
+@@ -148,7 +152,7 @@
+       ez.Normalize();
+       ey = Cross (ez, ex);
+       nmid = ez;
+-      //cout << "ex " << ex << " ey " << ey << " ez " << ez << endl;
++      //std::cout << "ex " << ex << " ey " << ey << " ez " << ez << std::endl;
+       }
+     else
+       {
+@@ -178,9 +182,9 @@
+       D1(0,1) = dv.X(); D1(1,1) = dv.Y(); D1(2,1) = dv.Z();
+       /*
+-        (*testout) << "DefineTangentialPlane" << endl
+-        << "---------------------" << endl;
+-        (*testout) << "D1 = " << endl << D1 << endl;
++        (*testout) << "DefineTangentialPlane" << std::endl
++        << "---------------------" << std::endl;
++        (*testout) << "D1 = " << std::endl << D1 << std::endl;
+       */
+       Transpose (D1, D1T);
+@@ -270,7 +274,7 @@
+       /*
+         if(zone == -1)
+         {
+-        (*testout) << "zone = -1 for " << p3d << " 2D: " << pplane << " n " << n << " nmid " << nmid << endl;
++        (*testout) << "zone = -1 for " << p3d << " 2D: " << pplane << " n " << n << " nmid " << nmid << std::endl;
+         glob_testout = true;
+         GetNormalVector (p3d, geominfo, n);
+         glob_testout = false;
+@@ -280,7 +284,7 @@
+     else
+       {
+       pplane = Point<2>(geominfo.u, geominfo.v);
+-      //      (*testout) << "(u,v) = " << geominfo.u << ", " << geominfo.v << endl;
++      //      (*testout) << "(u,v) = " << geominfo.u << ", " << geominfo.v << std::endl;
+       pplane = Point<2> (1/h * (Amatinv * (pplane-psp1)));
+       //      pplane = Point<2> (h * (Amatinv * (pplane-psp1)));
+       //      pplane = Point<2> (1/h * ((pplane-psp1)));
+@@ -297,11 +301,11 @@
+   { 
+     if (projecttype == PLANESPACE)
+       {
+-      //      cout << "2d   : " << pplane << endl;
++      //      std::cout << "2d   : " << pplane << std::endl;
+       p3d = p1 + (h * pplane(0)) * ex + (h * pplane(1)) * ey;
+-      //      cout << "3d   : " << p3d << endl;
++      //      std::cout << "3d   : " << p3d << std::endl;
+       Project (p3d, gi);  
+-      //      cout << "proj : " << p3d << endl;
++      //      std::cout << "proj : " << p3d << std::endl;
+       }
+     else
+       {
+@@ -321,11 +325,11 @@
+   void OCCSurface :: Project (Point<3> & p, PointGeomInfo & gi)
+   {
+     //   static int cnt = 0;
+-    //  if (cnt++ % 1000 == 0) cout << "********************************************** OCCSurfce :: Project, cnt = " << cnt << endl;
++    //  if (cnt++ % 1000 == 0) std::cout << "********************************************** OCCSurfce :: Project, cnt = " << cnt << std::endl;
+   
+     gp_Pnt pnt(p(0), p(1), p(2));
+-    //(*testout) << "pnt = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << endl;
++    //(*testout) << "pnt = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << std::endl;
+     /*
+@@ -333,7 +337,7 @@
+     if (!proj.NbPoints())
+       {
+-      cout << "Project Point on Surface FAIL" << endl;
++      std::cout << "Project Point on Surface FAIL" << std::endl;
+       throw UVBoundsException();
+       }
+     */
+@@ -343,13 +347,13 @@
+     /*
+-      cout << "NP = " << proj.NbPoints() << endl;
++      std::cout << "NP = " << proj.NbPoints() << std::endl;
+       for (int i = 1; i <= proj.NbPoints(); i++)
+       {
+       gp_Pnt pnt2 = proj.Point(i);
+       Point<3> p2 = Point<3> (pnt2.X(), pnt2.Y(), pnt2.Z());
+-      cout << i << ". p = " << p2 << ", dist = " << (p2-p).Length() << endl;
++      std::cout << i << ". p = " << p2 << ", dist = " << (p2-p).Length() << std::endl;
+       }
+     */
+@@ -364,7 +368,7 @@
+     suval.Coord( u, v);
+     pnt = occface->Value( u, v );
+     
+-    //(*testout) << "pnt(proj) = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << endl;
++    //(*testout) << "pnt(proj) = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << std::endl;
+     gi.u = u;
+     gi.v = v;
+     
+@@ -434,23 +438,33 @@
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
+       p = hp;
+-      return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    return ok;
+   }
+@@ -506,7 +520,7 @@
+   GetNormalVector(INDEX surfind, const Point<3> & p, Vec<3> & n) const
+   {
+     //  static int cnt = 0;
+-    //  if (cnt++ % 1000 == 0) cout << "GetNV cnt = " << cnt << endl;
++    //  if (cnt++ % 1000 == 0) std::cout << "GetNV cnt = " << cnt << std::endl;
+     Standard_Real u,v;
+     gp_Pnt pnt(p(0), p(1), p(2));
+@@ -519,9 +533,9 @@
+     if (proj.NbPoints() < 1)
+       {
+-      cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
+-           << endl;
+-      cout << p << endl;
++      std::cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
++           << std::endl;
++      std::cout << p << std::endl;
+       return;
+       }
+  
+@@ -540,7 +554,7 @@
+     /*
+       if (!occface->IsCNu (1) || !occface->IsCNv (1))
+-      (*testout) << "SurfOpt: Differentiation FAIL" << endl;
++      (*testout) << "SurfOpt: Differentiation FAIL" << std::endl;
+     */
+     n = Cross (Vec3d(du.X(), du.Y(), du.Z()),
+@@ -566,9 +580,9 @@
+     if (proj.NbPoints() < 1)
+       {
+-      cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
+-           << endl;
+-      cout << p << endl;
++      std::cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
++           << std::endl;
++      std::cout << p << std::endl;
+       return 0;
+       }
+  
+@@ -679,8 +693,9 @@
+  
+       if (!geometry.FastProject (surfi, hnewp, u, v))
+         {
+-        //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-          geometry.Project (surfi, hnewp);
++        //  std::cout << "Fast projection to surface fails! Using OCC projection" << std::endl;
++          // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++          geometry.Project (surfi, hnewp, u, v);
+         }
+       newgi.trignum = 1;
+@@ -689,7 +704,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: 
+@@ -708,24 +723,29 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi) const
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      //geometry.Project (surfi, p);
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi) const
+   {
+     if (surfi > 0)
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+       {
+-        cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-        geometry.Project (surfi, p);
++        std::cout << "Fast projection to surface fails! Using OCC projection" << std::endl;
++          double u, v;
++        geometry.Project (surfi, p, u, v);
+       }
+-  };
++      }
+--- netgen_ref/libsrc/occ/occmeshsurf.hpp
++++ netgen/libsrc/occ/occmeshsurf.hpp
+@@ -169,7 +169,7 @@
+ class OCCGeometry;
+-class OCCRefinementSurfaces : public Refinement
++class DLL_HEADER OCCRefinementSurfaces : public Refinement
+ {
+   const OCCGeometry & geometry;
+--- netgen_ref/libsrc/occ/occpkg.cpp
++++ netgen/libsrc/occ/occpkg.cpp
+@@ -1,1024 +1,1024 @@
+-#ifdef OCCGEOMETRY
+-
+-#include <mystdlib.h>
+-#include <myadt.hpp>
+-#include <linalg.hpp>
+-#include <csg.hpp>
+-#include <occgeom.hpp>
+-
+-
+-#include <incvis.hpp>
+-#include <visual.hpp>
+-
+-#include "../meshing/bcfunctions.hpp"
+-
+-#include "vsocc.hpp"
+-
+-
+-extern "C" int Ng_occ_Init (Tcl_Interp * interp);
+-
+-
+-
+-namespace netgen
+-{
+-  extern AutoPtr<NetgenGeometry> ng_geometry;
+-  extern AutoPtr<Mesh> mesh;
+- 
+-  char * err_needsoccgeometry = (char*) "This operation needs an OCC geometry";
+-  extern char * err_needsmesh;
+-  extern char * err_jobrunning;
+-
+-
+-
+-                          
+-  class OCCGeometryRegister : public GeometryRegister
+-  {
+-  public:
+-    virtual NetgenGeometry * Load (string filename) const;
+-    virtual VisualScene * GetVisualScene (const NetgenGeometry * geom) const;
+-
+-    virtual void SetParameters (Tcl_Interp * interp) 
+-    {
+-      occparam.resthcloseedgefac =
+-      atof (Tcl_GetVar (interp, "::stloptions.resthcloseedgefac", 0));
+-      occparam.resthcloseedgeenable =
+-      atoi (Tcl_GetVar (interp, "::stloptions.resthcloseedgeenable", 0));
+-        occparam.resthminedgelen = 
+-      atof (Tcl_GetVar (interp, "::stloptions.resthminedgelen", 0));
+-        occparam.resthminedgelenenable = 
+-      atoi (Tcl_GetVar (interp, "::stloptions.resthminedgelenenable", 0));
+-    }
+-  };
+-
+-
+-
+-
+-  int Ng_SetOCCVisParameters  (ClientData clientData,
+-                             Tcl_Interp * interp,
+-                             int argc, tcl_const char *argv[])
+-  {
+-#ifdef OCCGEOMETRY
+-    int showvolume;
+-      OCCGeometry * occgeometry = dynamic_cast<OCCGeometry*> (ng_geometry.Ptr());
+-
+-    showvolume = atoi (Tcl_GetVar (interp, "::occoptions.showvolumenr", 0));
+-
+-    if (occgeometry)
+-      if (showvolume != vispar.occshowvolumenr)
+-      {
+-        if (showvolume < 0 || showvolume > occgeometry->NrSolids())
+-          {
+-            char buf[20];
+-            sprintf (buf, "%5i", vispar.occshowvolumenr);
+-            Tcl_SetVar (interp, "::occoptions.showvolumenr", buf, 0);
+-          }
+-        else
+-          {
+-            vispar.occshowvolumenr = showvolume;
+-            if (occgeometry)
+-              occgeometry -> changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-          }
+-      }
+-    
+-    int temp;
+-
+-    temp = atoi (Tcl_GetVar (interp, "::occoptions.visproblemfaces", 0));
+-
+-    if ((bool) temp != vispar.occvisproblemfaces)
+-      {
+-      vispar.occvisproblemfaces = temp;
+-      if (occgeometry)
+-        occgeometry -> changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-      }
+-
+-    vispar.occshowsurfaces = atoi (Tcl_GetVar (interp, "::occoptions.showsurfaces", 0));
+-    vispar.occshowedges = atoi (Tcl_GetVar (interp, "::occoptions.showedges", 0));
+-    vispar.occzoomtohighlightedentity = atoi (Tcl_GetVar (interp, "::occoptions.zoomtohighlightedentity", 0));
+-    vispar.occdeflection = pow(10.0,-1-atof (Tcl_GetVar (interp, "::occoptions.deflection", 0)));
+-
+-#endif
+-
+-
+-
+-
+-
+-#ifdef ACIS
+-    vispar.ACISshowfaces = atoi (Tcl_GetVar (interp, "::occoptions.showsurfaces", 0));
+-    vispar.ACISshowedges = atoi (Tcl_GetVar (interp, "::occoptions.showedges", 0));
+-    vispar.ACISshowsolidnr = atoi (Tcl_GetVar (interp, "::occoptions.showsolidnr", 0));
+-    vispar.ACISshowsolidnr2 = atoi (Tcl_GetVar (interp, "::occoptions.showsolidnr2", 0));
+-
+-#endif
+-
+-
+-
+-    return TCL_OK;
+-  }  
+-
+-
+-
+-
+-  int Ng_GetOCCData (ClientData clientData,
+-                   Tcl_Interp * interp,
+-                   int argc, tcl_const char *argv[])
+-  {
+-#ifdef OCCGEOMETRY
+-    OCCGeometry * occgeometry = dynamic_cast<OCCGeometry*> (ng_geometry.Ptr());
+-
+-    static char buf[1000];
+-    buf[0] = 0;
+-    stringstream str;
+-
+-    if (argc >= 2)
+-      {
+-      if (strcmp (argv[1], "getentities") == 0)
+-        {
+-          if (occgeometry)
+-            {
+-              occgeometry->GetTopologyTree(str);
+-            }
+-        }
+-      }
+-
+-    Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
+-
+-#endif
+-    return TCL_OK;
+-  }
+-
+-  
+-
+-  int Ng_OCCCommand (ClientData clientData,
+-                   Tcl_Interp * interp,
+-                   int argc, tcl_const char *argv[])
+-  {
+-#ifdef OCCGEOMETRY
+-    OCCGeometry * occgeometry = dynamic_cast<OCCGeometry*> (ng_geometry.Ptr());
+-
+-    stringstream str;
+-    if (argc >= 2)
+-      {
+-      if (strcmp (argv[1], "isoccgeometryloaded") == 0)
+-        {
+-          if (occgeometry)
+-            str << "1 " << flush;
+-          else str << "0 " << flush;
+-
+-          Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
+-        }
+-      if (occgeometry)
+-        {
+-          if (strcmp (argv[1], "buildvisualizationmesh") == 0)
+-            {
+-              occgeometry->BuildVisualizationMesh(vispar.occdeflection);
+-              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-            }
+-          if (strcmp (argv[1], "mesherror") == 0)
+-            {
+-              if (occgeometry->ErrorInSurfaceMeshing())
+-                str << 1;
+-              else
+-                str << 0;
+-            }
+-          if (strcmp (argv[1], "sewfaces") == 0)
+-            {
+-              cout << "Before operation:" << endl;
+-              occgeometry->PrintNrShapes();
+-              occgeometry->SewFaces();
+-              occgeometry->BuildFMap();
+-              cout << endl << "After operation:" << endl;
+-              occgeometry->PrintNrShapes();
+-              occgeometry->BuildVisualizationMesh(vispar.occdeflection);
+-              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-            }
+-          if (strcmp (argv[1], "makesolid") == 0)
+-            {
+-              cout << "Before operation:" << endl;
+-              occgeometry->PrintNrShapes();
+-              occgeometry->MakeSolid();
+-              occgeometry->BuildFMap();
+-              cout << endl << "After operation:" << endl;
+-              occgeometry->PrintNrShapes();
+-              occgeometry->BuildVisualizationMesh(vispar.occdeflection);
+-              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-            }
+-          if (strcmp (argv[1], "upgradetopology") == 0)
+-            {
+-              cout << "Before operation:" << endl;
+-              occgeometry->PrintNrShapes();
+-              occgeometry->SewFaces();
+-              occgeometry->MakeSolid();
+-              occgeometry->BuildFMap();
+-              cout << endl << "After operation:" << endl;
+-              occgeometry->PrintNrShapes();
+-              occgeometry->BuildVisualizationMesh(vispar.occdeflection);
+-              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-            }
+-          if (strcmp (argv[1], "shapehealing") == 0)
+-            {
+-              occgeometry->tolerance =
+-                atof (Tcl_GetVar (interp, "::occoptions.tolerance", 0));
+-              occgeometry->fixsmalledges =
+-                atoi (Tcl_GetVar (interp, "::occoptions.fixsmalledges", 0));
+-              occgeometry->fixspotstripfaces =
+-                atoi (Tcl_GetVar (interp, "::occoptions.fixspotstripfaces", 0));
+-              occgeometry->sewfaces =
+-                atoi (Tcl_GetVar (interp, "::occoptions.sewfaces", 0));
+-              occgeometry->makesolids =
+-                atoi (Tcl_GetVar (interp, "::occoptions.makesolids", 0));
+-              occgeometry->splitpartitions =
+-                atoi (Tcl_GetVar (interp, "::occoptions.splitpartitions", 0));
+-
+-              //            cout << "Before operation:" << endl;
+-              //            occgeometry->PrintNrShapes();
+-              occgeometry->HealGeometry();
+-              occgeometry->BuildFMap();
+-              //            cout << endl << "After operation:" << endl;
+-              //            occgeometry->PrintNrShapes();
+-              occgeometry->BuildVisualizationMesh(vispar.occdeflection);
+-              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-            }
+-
+-
+-          if (strcmp (argv[1], "highlightentity") == 0)
+-            {
+-              if (strcmp (argv[2], "Face") == 0)
+-                {
+-                  int nr = atoi (argv[3]);
+-                  occgeometry->LowLightAll();
+-
+-                  occgeometry->fvispar[nr-1].Highlight();
+-                  if (vispar.occzoomtohighlightedentity)
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-                  else
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-                }
+-              if (strcmp (argv[2], "Shell") == 0)
+-                {
+-                  int nr = atoi (argv[3]);
+-                  occgeometry->LowLightAll();
+-
+-                  TopExp_Explorer exp;
+-                  for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
+-                       exp.More(); exp.Next())
+-                    {
+-                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-                      occgeometry->fvispar[i-1].Highlight();
+-                    }
+-                  if (vispar.occzoomtohighlightedentity)
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-                  else
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-                }
+-              if (strcmp (argv[2], "Solid") == 0)
+-                {
+-                  int nr = atoi (argv[3]);
+-                  occgeometry->LowLightAll();
+-
+-                  TopExp_Explorer exp;
+-                  for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
+-                       exp.More(); exp.Next())
+-                    {
+-                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-                      occgeometry->fvispar[i-1].Highlight();
+-                    }
+-                  if (vispar.occzoomtohighlightedentity)
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-                  else
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-                }
+-              /*
+-                if (strcmp (argv[2], "CompSolid") == 0)
+-                {
+-                int nr = atoi (argv[3]);
+-                occgeometry->LowLightAll();
+-
+-                TopExp_Explorer exp;
+-                for (exp.Init (occgeometry->cmap(nr), TopAbs_FACE);
+-                exp.More(); exp.Next())
+-                {
+-                int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-                occgeometry->fvispar[i-1].Highlight();
+-                }
+-                occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-                }
+-              */
+-
+-              if (strcmp (argv[2], "Edge") == 0)
+-                {
+-                  int nr = atoi (argv[3]);
+-                  occgeometry->LowLightAll();
+-
+-                  occgeometry->evispar[nr-1].Highlight();
+-                  if (vispar.occzoomtohighlightedentity)
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-                  else
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-                }
+-              if (strcmp (argv[2], "Wire") == 0)
+-                {
+-                  int nr = atoi (argv[3]);
+-                  occgeometry->LowLightAll();
+-
+-                  TopExp_Explorer exp;
+-                  for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
+-                       exp.More(); exp.Next())
+-                    {
+-                      int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
+-                      occgeometry->evispar[i-1].Highlight();
+-                    }
+-                  if (vispar.occzoomtohighlightedentity)
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-                  else
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-                }
+-
+-              if (strcmp (argv[2], "Vertex") == 0)
+-                {
+-                  int nr = atoi (argv[3]);
+-                  occgeometry->LowLightAll();
+-
+-                  occgeometry->vvispar[nr-1].Highlight();
+-                  if (vispar.occzoomtohighlightedentity)
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
+-                  else
+-                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-                }
+-
+-            }
+-
+-
+-
+-          if (strcmp (argv[1], "show") == 0)
+-            {
+-              int nr = atoi (argv[3]);
+-              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-
+-              if (strcmp (argv[2], "Face") == 0)
+-                {
+-                  occgeometry->fvispar[nr-1].Show();
+-                }
+-              if (strcmp (argv[2], "Shell") == 0)
+-                {
+-                  TopExp_Explorer exp;
+-                  for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
+-                       exp.More(); exp.Next())
+-                    {
+-                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-                      occgeometry->fvispar[i-1].Show();
+-                    }
+-                }
+-              if (strcmp (argv[2], "Solid") == 0)
+-                {
+-                  TopExp_Explorer exp;
+-                  for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
+-                       exp.More(); exp.Next())
+-                    {
+-                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-                      occgeometry->fvispar[i-1].Show();
+-                    }
+-                }
+-              if (strcmp (argv[2], "Edge") == 0)
+-                {
+-                  occgeometry->evispar[nr-1].Show();
+-                }
+-              if (strcmp (argv[2], "Wire") == 0)
+-                {
+-                  TopExp_Explorer exp;
+-                  for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
+-                       exp.More(); exp.Next())
+-                    {
+-                      int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
+-                      occgeometry->evispar[i-1].Show();
+-                    }
+-                }
+-            }
+-
+-
+-          if (strcmp (argv[1], "hide") == 0)
+-            {
+-              int nr = atoi (argv[3]);
+-              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-
+-              if (strcmp (argv[2], "Face") == 0)
+-                {
+-                  occgeometry->fvispar[nr-1].Hide();
+-                }
+-              if (strcmp (argv[2], "Shell") == 0)
+-                {
+-                  TopExp_Explorer exp;
+-                  for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
+-                       exp.More(); exp.Next())
+-                    {
+-                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-                      occgeometry->fvispar[i-1].Hide();
+-                    }
+-                }
+-              if (strcmp (argv[2], "Solid") == 0)
+-                {
+-                  TopExp_Explorer exp;
+-                  for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
+-                       exp.More(); exp.Next())
+-                    {
+-                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
+-                      occgeometry->fvispar[i-1].Hide();
+-                    }
+-                }
+-              if (strcmp (argv[2], "Edge") == 0)
+-                {
+-                  occgeometry->evispar[nr-1].Hide();
+-                }
+-              if (strcmp (argv[2], "Wire") == 0)
+-                {
+-                  TopExp_Explorer exp;
+-                  for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
+-                       exp.More(); exp.Next())
+-                    {
+-                      int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
+-                      occgeometry->evispar[i-1].Hide();
+-                    }
+-                }
+-            }
+-
+-
+-
+-          if (strcmp (argv[1], "findsmallentities") == 0)
+-            {
+-              stringstream str("");
+-              occgeometry->CheckIrregularEntities(str);
+-              Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
+-            }
+-          if (strcmp (argv[1], "getunmeshedfaceinfo") == 0)
+-            {
+-              occgeometry->GetUnmeshedFaceInfo(str);
+-              Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
+-            }
+-          if (strcmp (argv[1], "getnotdrawablefaces") == 0)
+-            {
+-              occgeometry->GetNotDrawableFaces(str);
+-              Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
+-            }
+-          if (strcmp (argv[1], "redrawstatus") == 0)
+-            {
+-              int i = atoi (argv[2]);
+-              occgeometry->changed = i;
+-            }
+-          if (strcmp (argv[1], "swaporientation") == 0)
+-            {
+-              IGESControl_Writer writer("millimeters", 1);
+-              writer.AddShape (occgeometry->shape);
+-              writer.Write ("1.igs");
+-              /*
+-                int nr = atoi (argv[3]);
+-
+-                //          const_cast<TopoDS_Shape&> (occgeometry->fmap(nr)).Reverse();
+-
+-                Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-                rebuild->Apply(occgeometry->shape);
+-
+-                TopoDS_Shape sh;
+-
+-                //          if (strcmp (argv[2], "CompSolid") == 0) sh = occgeometry->cmap(nr);
+-                if (strcmp (argv[2], "Solid") == 0) sh = occgeometry->somap(nr);
+-                if (strcmp (argv[2], "Shell") == 0) sh = occgeometry->shmap(nr);
+-                if (strcmp (argv[2], "Face") == 0) sh = occgeometry->fmap(nr);
+-                if (strcmp (argv[2], "Wire") == 0) sh = occgeometry->wmap(nr);
+-                if (strcmp (argv[2], "Edge") == 0) sh = occgeometry->emap(nr);
+-
+-                rebuild->Replace(sh, sh.Reversed(), Standard_False);
+-
+-                TopoDS_Shape newshape = rebuild->Apply(occgeometry->shape, TopAbs_SHELL, 1);
+-                occgeometry->shape = newshape;
+-
+-                occgeometry->BuildFMap();
+-                occgeometry->BuildVisualizationMesh();
+-                occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-              */
+-            }
+-          if (strcmp (argv[1], "marksingular") == 0)
+-            {
+-              int nr = atoi (argv[3]);
+-              cout << "marking " << argv[2] << " " << nr << endl;
+-              char buf[2]; buf[0] = '0'; buf[1] = 0;
+-              bool sing = false;
+-              if (strcmp (argv[2], "Face") == 0)
+-                sing = occgeometry->fsingular[nr-1] = !occgeometry->fsingular[nr-1];
+-              if (strcmp (argv[2], "Edge") == 0)
+-                sing = occgeometry->esingular[nr-1] = !occgeometry->esingular[nr-1];
+-              if (strcmp (argv[2], "Vertex") == 0)
+-                sing = occgeometry->vsingular[nr-1] = !occgeometry->vsingular[nr-1];
+-
+-              if (sing) buf[0] = '1';
+-
+-                Tcl_SetVar (interp, "::ismarkedsingular", buf, 0);
+-
+-              stringstream str;
+-              occgeometry->GetTopologyTree (str);
+-
+-              char* cstr = (char*)str.str().c_str();
+-
+-              (*testout) << cstr << endl;
+-
+-              char helpstr[1000];
+-
+-              while (strchr (cstr, '}'))
+-                {
+-                  strncpy (helpstr, cstr+2, strlen(strchr(cstr+2, '}')));
+-                  (*testout) << "***" << cstr << "***" << endl;
+-                  cstr = strchr (cstr, '}');
+-                } 
+-            }
+-        }
+-      }
+-
+-#endif
+-    return TCL_OK;
+-  }
+-
+-
+-
+-#ifdef OCCGEOMETRY
+-  /*
+-  void OCCConstructGeometry (OCCGeometry & geom);
+-
+-  int Ng_OCCConstruction (ClientData clientData,
+-                        Tcl_Interp * interp,
+-                        int argc, tcl_const char *argv[])
+-  {
+-    if (occgeometry)
+-      OCCConstructGeometry (*occgeometry);
+-    return TCL_OK;
+-  }
+-  */
+-#endif
+-
+-
+-
+-
+-  // Philippose - 30/01/2009
+-  // TCL interface function for the Local Face Mesh size
+-  // definition functionality
+-  int Ng_SurfaceMeshSize (ClientData clientData,
+-                                  Tcl_Interp * interp,
+-                                  int argc, tcl_const char *argv[])
+-  {
+-#ifdef OCCGEOMETRY
+-
+-    static char buf[100];
+-
+-    if (argc < 2)
+-    {
+-         Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize needs arguments", TCL_STATIC);
+-         return TCL_ERROR;
+-    }
+-
+-    OCCGeometry * occgeometry = dynamic_cast<OCCGeometry*> (ng_geometry.Ptr());
+-    if (!occgeometry)
+-    {
+-      Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize currently supports only OCC (STEP/IGES) Files", TCL_STATIC);
+-         return TCL_ERROR;
+-    }
+-
+-    // Update the face mesh sizes to reflect the global maximum mesh size
+-    for(int i = 1; i <= occgeometry->NrFaces(); i++)
+-    {
+-           if(!occgeometry->GetFaceMaxhModified(i))
+-           {
+-              occgeometry->SetFaceMaxH(i, mparam.maxh);
+-           }   
+-    }
+-
+-    if (strcmp (argv[1], "setsurfms") == 0)
+-    {
+-         int facenr = atoi (argv[2]);
+-         double surfms = atof (argv[3]);
+-         if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
+-           occgeometry->SetFaceMaxH(facenr, surfms);
+-
+-    }
+-
+-    if (strcmp (argv[1], "setall") == 0)
+-    {
+-         double surfms = atof (argv[2]);
+-         if (occgeometry)
+-         {
+-           int nrFaces = occgeometry->NrFaces();
+-           for (int i = 1; i <= nrFaces; i++)
+-            occgeometry->SetFaceMaxH(i, surfms);
+-         }
+-    }
+-
+-    if (strcmp (argv[1], "getsurfms") == 0)
+-    {
+-         int facenr = atoi (argv[2]);
+-         if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
+-         {
+-           sprintf (buf, "%5.2f", occgeometry->GetFaceMaxH(facenr));
+-         }
+-         else
+-         {
+-           sprintf (buf, "%5.2f", mparam.maxh);
+-         }
+-         Tcl_SetResult (interp, buf, TCL_STATIC);
+-    }
+-
+-    if (strcmp (argv[1], "getactive") == 0)
+-    {
+-         sprintf (buf, "%d", occgeometry->SelectedFace());
+-         Tcl_SetResult (interp, buf, TCL_STATIC);
+-    }
+-
+-    if (strcmp (argv[1], "setactive") == 0)
+-    {
+-         int facenr = atoi (argv[2]);
+-         if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
+-         {
+-           occgeometry->SetSelectedFace (facenr);
+-
+-        occgeometry->LowLightAll();
+-        occgeometry->fvispar[facenr-1].Highlight();
+-        occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
+-         }
+-    }
+-
+-    if (strcmp (argv[1], "getnfd") == 0)
+-    {
+-         if (occgeometry)
+-           sprintf (buf, "%d", occgeometry->NrFaces());
+-         else
+-           sprintf (buf, "0");
+-         Tcl_SetResult (interp, buf, TCL_STATIC);
+-    }
+-    return TCL_OK;
+-#else // No OCCGEOMETRY 
+-
+-    Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize currently supports only OCC (STEP/IGES) Files", TCL_STATIC);
+-    return TCL_ERROR;
+-    
+-#endif // OCCGEOMETRY
+-  }
+-
+-
+-
+-  // Philippose - 25/07/2010
+-  // TCL interface function for extracting and eventually 
+-  // setting or editing the current colours present in the mesh
+-  int Ng_CurrentFaceColours (ClientData clientData,
+-                             Tcl_Interp * interp,
+-                             int argc, tcl_const char *argv[])
+-  {
+-     if(argc < 1)
+-     {
+-        Tcl_SetResult (interp, (char *)"Ng_GetCurrentFaceColours needs arguments", TCL_STATIC);
+-        return TCL_ERROR;
+-     }
+-
+-     if(!mesh.Ptr())
+-     {
+-        Tcl_SetResult (interp, (char *)"Ng_GetCurrentFaceColours: Valid netgen mesh required...please mesh the Geometry first", TCL_STATIC);
+-           return TCL_ERROR;
+-     }
+-
+-     if(strcmp(argv[1], "getcolours") == 0)
+-     {
+-        stringstream outVar;
+-        Array<Vec3d> face_colours;
+-        GetFaceColours(*mesh, face_colours);
+-
+-        for(int i = 0; i < face_colours.Size();i++)
+-        {
+-           outVar << "{ " << face_colours[i].X(1)
+-                  << " "  << face_colours[i].X(2)
+-                  << " "  << face_colours[i].X(3)
+-                  << " } ";
+-        }
+-
+-        tcl_const char * valuevar = argv[2];
+-        Tcl_SetVar  (interp, valuevar, (char*)outVar.str().c_str(), 0);
+-     }
+-
+-     if(strcmp(argv[1], "showalso") == 0)
+-     {
+-        Array<Vec3d> face_colours;
+-        GetFaceColours(*mesh,face_colours);
+-
+-        int colourind = atoi (argv[2]);
+-
+-        for(int i = 1; i <= mesh->GetNFD(); i++)
+-        {
+-           Array<SurfaceElementIndex> surfElems;
+-           mesh->GetSurfaceElementsOfFace(i,surfElems);
+-
+-           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(1);
+-              }
+-           }
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     if(strcmp(argv[1], "hidealso") == 0)
+-     {
+-        Array<Vec3d> face_colours;
+-        GetFaceColours(*mesh,face_colours);
+-
+-        int colourind = atoi (argv[2]);
+-
+-        for(int i = 1; i <= mesh->GetNFD(); i++)
+-        {
+-           Array<SurfaceElementIndex> surfElems;
+-           mesh->GetSurfaceElementsOfFace(i,surfElems);
+-
+-           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(0);
+-              }
+-           }
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     if(strcmp(argv[1], "showonly") == 0)
+-     {
+-        Array<Vec3d> face_colours;
+-        GetFaceColours(*mesh,face_colours);
+-
+-        int colourind = atoi (argv[2]);
+-
+-        for(int i = 1; i <= mesh->GetNFD(); i++)
+-        {
+-           Array<SurfaceElementIndex> surfElems;
+-           mesh->GetSurfaceElementsOfFace(i,surfElems);
+-
+-           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(1);
+-              }
+-           }
+-           else
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(0);
+-              }
+-           }
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     if(strcmp(argv[1], "hideonly") == 0)
+-     {
+-        Array<Vec3d> face_colours;
+-        GetFaceColours(*mesh,face_colours);
+-
+-        int colourind = atoi (argv[2]);
+-
+-        for(int i = 1; i <= mesh->GetNFD(); i++)
+-        {
+-           Array<SurfaceElementIndex> surfElems;
+-           mesh->GetSurfaceElementsOfFace(i,surfElems);
+-
+-           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(0);
+-              }
+-           }
+-           else
+-           {
+-              for(int j = 0; j < surfElems.Size(); j++)
+-              {
+-                 mesh->SurfaceElement(surfElems[j]).Visible(1);
+-              }
+-           }
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     if(strcmp(argv[1], "showall") == 0)
+-     {
+-        for(int i = 1; i <= mesh->GetNSE(); i++)
+-        {
+-           mesh->SurfaceElement(i).Visible(1);
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     if(strcmp(argv[1], "hideall") == 0)
+-     {
+-        for(int i = 1; i <= mesh->GetNSE(); i++)
+-        {
+-           mesh->SurfaceElement(i).Visible(0);
+-        }
+-
+-        mesh->SetNextTimeStamp();
+-     }
+-
+-     return TCL_OK;
+-  }
+-
+-
+-
+-
+-  // Philippose - 10/03/2009
+-  // TCL interface function for the Automatic Colour-based
+-  // definition of boundary conditions for OCC Geometry
+-  int Ng_AutoColourBcProps (ClientData clientData,
+-                                    Tcl_Interp * interp,
+-                                    int argc, tcl_const char *argv[])
+-  {
+-     if(argc < 1)
+-     {
+-        Tcl_SetResult (interp, (char *)"Ng_AutoColourBcProps needs arguments", TCL_STATIC);
+-        return TCL_ERROR;
+-     }
+-
+-     if(!mesh.Ptr())
+-     {
+-        Tcl_SetResult (interp, (char *)"Ng_AutoColourBcProps: Valid netgen mesh required...please mesh the Geometry first", TCL_STATIC);
+-           return TCL_ERROR;
+-     }
+-
+-     if(strcmp(argv[1], "auto") == 0)
+-     {
+-        AutoColourBcProps(*mesh, 0);
+-     }
+-
+-     if(strcmp(argv[1], "profile") == 0)
+-     {
+-        AutoColourBcProps(*mesh, argv[2]);
+-     }
+-
+-     return TCL_OK;
+-  }
+-
+-
+-  int Ng_SetOCCParameters  (ClientData clientData,
+-                          Tcl_Interp * interp,
+-                          int argc, tcl_const char *argv[])
+-  {
+-    OCCGeometryRegister reg;
+-    reg.SetParameters (interp);
+-    /*
+-    occparam.resthcloseedgefac =
+-      atof (Tcl_GetVar (interp, "::stloptions.resthcloseedgefac", 0));
+-
+-    occparam.resthcloseedgeenable =
+-      atoi (Tcl_GetVar (interp, "::stloptions.resthcloseedgeenable", 0));
+-    */
+-    return TCL_OK;
+-  }
+-
+-
+-
+-
+-  NetgenGeometry *  OCCGeometryRegister :: Load (string filename) const
+-  {
+-    const char * lgfilename = filename.c_str();
+-
+-
+-    /*
+-    if (strcmp (&cfilename[strlen(cfilename)-3], "geo") == 0)
+-      {
+-      PrintMessage (1, "Load OCCG geometry file ", cfilename);
+-      
+-      extern OCCGeometry * ParseOCCG (istream & istr);
+-
+-      ifstream infile(cfilename);
+-
+-      OCCGeometry * hgeom = ParseOCCG (infile);
+-      if (!hgeom)
+-        throw NgException ("geo-file should start with 'algebraic3d'");
+-
+-      hgeom -> FindIdenticSurfaces(1e-8 * hgeom->MaxSize()); 
+-      return hgeom;
+-      }
+-    */
+-
+-
+-    if ((strcmp (&lgfilename[strlen(lgfilename)-4], "iges") == 0) ||
+-      (strcmp (&lgfilename[strlen(lgfilename)-3], "igs") == 0) ||
+-      (strcmp (&lgfilename[strlen(lgfilename)-3], "IGS") == 0) ||
+-      (strcmp (&lgfilename[strlen(lgfilename)-4], "IGES") == 0))
+-      {
+-      PrintMessage (1, "Load IGES geometry file ", lgfilename);
+-      OCCGeometry * occgeometry = LoadOCC_IGES (lgfilename);
+-      return occgeometry;
+-      }
+-
+-    else if ((strcmp (&lgfilename[strlen(lgfilename)-4], "step") == 0) ||
+-                   (strcmp (&lgfilename[strlen(lgfilename)-3], "stp") == 0) ||
+-                   (strcmp (&lgfilename[strlen(lgfilename)-3], "STP") == 0) ||
+-                   (strcmp (&lgfilename[strlen(lgfilename)-4], "STEP") == 0))
+-      {
+-      PrintMessage (1, "Load STEP geometry file ", lgfilename);
+-      OCCGeometry * occgeometry = LoadOCC_STEP (lgfilename);
+-      return occgeometry;    
+-      }
+-    else if ((strcmp (&lgfilename[strlen(lgfilename)-4], "brep") == 0) ||
+-           (strcmp (&lgfilename[strlen(lgfilename)-4], "Brep") == 0) ||
+-           (strcmp (&lgfilename[strlen(lgfilename)-4], "BREP") == 0))
+-      {
+-      PrintMessage (1, "Load BREP geometry file ", lgfilename);
+-      OCCGeometry * occgeometry = LoadOCC_BREP (lgfilename);
+-      return occgeometry;
+-      }
+-    
+-    return NULL;
+-  }
+-
+-
+-  static VisualSceneOCCGeometry vsoccgeom;
+-
+-  VisualScene * OCCGeometryRegister :: GetVisualScene (const NetgenGeometry * geom) const
+-  {
+-    OCCGeometry * geometry = dynamic_cast<OCCGeometry*> (ng_geometry.Ptr());
+-    if (geometry)
+-      {
+-      vsoccgeom.SetGeometry (geometry);
+-      return &vsoccgeom;
+-      }
+-    return NULL;
+-  }
+-
+-
+-
+-}
+-
+-
+-
+-using namespace netgen;
+-
+-int Ng_occ_Init (Tcl_Interp * interp)
+-{
+-  geometryregister.Append (new OCCGeometryRegister);
+-
+-
+-    Tcl_CreateCommand (interp, "Ng_SetOCCVisParameters",
+-                     Ng_SetOCCVisParameters,
+-                     (ClientData)NULL,
+-                     (Tcl_CmdDeleteProc*) NULL);
+-
+-    Tcl_CreateCommand (interp, "Ng_GetOCCData",
+-                     Ng_GetOCCData,
+-                     (ClientData)NULL,
+-                     (Tcl_CmdDeleteProc*) NULL);
+-
+-    /*
+-#ifdef OCCGEOMETRY
+-    Tcl_CreateCommand (interp, "Ng_OCCConstruction",
+-                     Ng_OCCConstruction,
+-                     (ClientData)NULL,
+-                     (Tcl_CmdDeleteProc*) NULL);
+-#endif
+-    */
+-
+-    Tcl_CreateCommand (interp, "Ng_OCCCommand",
+-                     Ng_OCCCommand,
+-                     (ClientData)NULL,
+-                     (Tcl_CmdDeleteProc*) NULL);
+-
+-
+-    Tcl_CreateCommand (interp, "Ng_SetOCCParameters", Ng_SetOCCParameters,
+-                     (ClientData)NULL,
+-                     (Tcl_CmdDeleteProc*) NULL);
+-
+-
+-
+-    // Philippose - 30/01/2009
+-    // Register the TCL Interface Command for local face mesh size
+-    // definition
+-    Tcl_CreateCommand (interp, "Ng_SurfaceMeshSize", Ng_SurfaceMeshSize,
+-                     (ClientData)NULL,
+-                     (Tcl_CmdDeleteProc*) NULL);
+-
+-    Tcl_CreateCommand (interp, "Ng_AutoColourBcProps", Ng_AutoColourBcProps,
+-                     (ClientData)NULL,
+-                     (Tcl_CmdDeleteProc*) NULL);
+-
+-    // Philippose - 25/07/2010
+-    // Register the TCL Interface Command for handling the face colours 
+-    // present in the mesh
+-    Tcl_CreateCommand(interp, "Ng_CurrentFaceColours", Ng_CurrentFaceColours,
+-                      (ClientData)NULL,
+-                      (Tcl_CmdDeleteProc*) NULL);
+-
+-
+-  return TCL_OK;
+-}
+-
+-#endif
+-
++#ifdef OCCGEOMETRY
++
++#include <mystdlib.h>
++#include <myadt.hpp>
++#include <linalg.hpp>
++#include <csg.hpp>
++#include <occgeom.hpp>
++
++
++#include <incvis.hpp>
++#include <visual.hpp>
++
++#include "../meshing/bcfunctions.hpp"
++
++#include "vsocc.hpp"
++
++
++extern "C" int Ng_occ_Init (Tcl_Interp * interp);
++
++
++
++namespace netgen
++{
++  extern AutoPtr<NetgenGeometry> ng_geometry;
++  extern AutoPtr<Mesh> mesh;
++ 
++  char * err_needsoccgeometry = (char*) "This operation needs an OCC geometry";
++  extern char * err_needsmesh;
++  extern char * err_jobrunning;
++
++
++
++                          
++  class OCCGeometryRegister : public GeometryRegister
++  {
++  public:
++    virtual NetgenGeometry * Load (string filename) const;
++    virtual VisualScene * GetVisualScene (const NetgenGeometry * geom) const;
++
++    virtual void SetParameters (Tcl_Interp * interp) 
++    {
++      occparam.resthcloseedgefac =
++      atof (Tcl_GetVar (interp, "::stloptions.resthcloseedgefac", 0));
++      occparam.resthcloseedgeenable =
++      atoi (Tcl_GetVar (interp, "::stloptions.resthcloseedgeenable", 0));
++        occparam.resthminedgelen = 
++      atof (Tcl_GetVar (interp, "::stloptions.resthminedgelen", 0));
++        occparam.resthminedgelenenable = 
++      atoi (Tcl_GetVar (interp, "::stloptions.resthminedgelenenable", 0));
++    }
++  };
++
++
++
++
++  int Ng_SetOCCVisParameters  (ClientData clientData,
++                             Tcl_Interp * interp,
++                             int argc, tcl_const char *argv[])
++  {
++#ifdef OCCGEOMETRY
++    int showvolume;
++      OCCGeometry * occgeometry = dynamic_cast<OCCGeometry*> (ng_geometry.Ptr());
++
++    showvolume = atoi (Tcl_GetVar (interp, "::occoptions.showvolumenr", 0));
++
++    if (occgeometry)
++      if (showvolume != vispar.occshowvolumenr)
++      {
++        if (showvolume < 0 || showvolume > occgeometry->NrSolids())
++          {
++            char buf[20];
++            sprintf (buf, "%5i", vispar.occshowvolumenr);
++            Tcl_SetVar (interp, "::occoptions.showvolumenr", buf, 0);
++          }
++        else
++          {
++            vispar.occshowvolumenr = showvolume;
++            if (occgeometry)
++              occgeometry -> changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++          }
++      }
++    
++    int temp;
++
++    temp = atoi (Tcl_GetVar (interp, "::occoptions.visproblemfaces", 0));
++
++    if ((bool) temp != vispar.occvisproblemfaces)
++      {
++      vispar.occvisproblemfaces = temp;
++      if (occgeometry)
++        occgeometry -> changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++      }
++
++    vispar.occshowsurfaces = atoi (Tcl_GetVar (interp, "::occoptions.showsurfaces", 0));
++    vispar.occshowedges = atoi (Tcl_GetVar (interp, "::occoptions.showedges", 0));
++    vispar.occzoomtohighlightedentity = atoi (Tcl_GetVar (interp, "::occoptions.zoomtohighlightedentity", 0));
++    vispar.occdeflection = pow(10.0,-1-atof (Tcl_GetVar (interp, "::occoptions.deflection", 0)));
++
++#endif
++
++
++
++
++
++#ifdef ACIS
++    vispar.ACISshowfaces = atoi (Tcl_GetVar (interp, "::occoptions.showsurfaces", 0));
++    vispar.ACISshowedges = atoi (Tcl_GetVar (interp, "::occoptions.showedges", 0));
++    vispar.ACISshowsolidnr = atoi (Tcl_GetVar (interp, "::occoptions.showsolidnr", 0));
++    vispar.ACISshowsolidnr2 = atoi (Tcl_GetVar (interp, "::occoptions.showsolidnr2", 0));
++
++#endif
++
++
++
++    return TCL_OK;
++  }  
++
++
++
++
++  int Ng_GetOCCData (ClientData clientData,
++                   Tcl_Interp * interp,
++                   int argc, tcl_const char *argv[])
++  {
++#ifdef OCCGEOMETRY
++    OCCGeometry * occgeometry = dynamic_cast<OCCGeometry*> (ng_geometry.Ptr());
++
++    static char buf[1000];
++    buf[0] = 0;
++    stringstream str;
++
++    if (argc >= 2)
++      {
++      if (strcmp (argv[1], "getentities") == 0)
++        {
++          if (occgeometry)
++            {
++              occgeometry->GetTopologyTree(str);
++            }
++        }
++      }
++
++    Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
++
++#endif
++    return TCL_OK;
++  }
++
++  
++
++  int Ng_OCCCommand (ClientData clientData,
++                   Tcl_Interp * interp,
++                   int argc, tcl_const char *argv[])
++  {
++#ifdef OCCGEOMETRY
++    OCCGeometry * occgeometry = dynamic_cast<OCCGeometry*> (ng_geometry.Ptr());
++
++    stringstream str;
++    if (argc >= 2)
++      {
++      if (strcmp (argv[1], "isoccgeometryloaded") == 0)
++        {
++          if (occgeometry)
++            str << "1 " << flush;
++          else str << "0 " << flush;
++
++          Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
++        }
++      if (occgeometry)
++        {
++          if (strcmp (argv[1], "buildvisualizationmesh") == 0)
++            {
++              occgeometry->BuildVisualizationMesh(vispar.occdeflection);
++              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++            }
++          if (strcmp (argv[1], "mesherror") == 0)
++            {
++              if (occgeometry->ErrorInSurfaceMeshing())
++                str << 1;
++              else
++                str << 0;
++            }
++          if (strcmp (argv[1], "sewfaces") == 0)
++            {
++              cout << "Before operation:" << endl;
++              occgeometry->PrintNrShapes();
++              occgeometry->SewFaces();
++              occgeometry->BuildFMap();
++              cout << endl << "After operation:" << endl;
++              occgeometry->PrintNrShapes();
++              occgeometry->BuildVisualizationMesh(vispar.occdeflection);
++              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++            }
++          if (strcmp (argv[1], "makesolid") == 0)
++            {
++              cout << "Before operation:" << endl;
++              occgeometry->PrintNrShapes();
++              occgeometry->MakeSolid();
++              occgeometry->BuildFMap();
++              cout << endl << "After operation:" << endl;
++              occgeometry->PrintNrShapes();
++              occgeometry->BuildVisualizationMesh(vispar.occdeflection);
++              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++            }
++          if (strcmp (argv[1], "upgradetopology") == 0)
++            {
++              cout << "Before operation:" << endl;
++              occgeometry->PrintNrShapes();
++              occgeometry->SewFaces();
++              occgeometry->MakeSolid();
++              occgeometry->BuildFMap();
++              cout << endl << "After operation:" << endl;
++              occgeometry->PrintNrShapes();
++              occgeometry->BuildVisualizationMesh(vispar.occdeflection);
++              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++            }
++          if (strcmp (argv[1], "shapehealing") == 0)
++            {
++              occgeometry->tolerance =
++                atof (Tcl_GetVar (interp, "::occoptions.tolerance", 0));
++              occgeometry->fixsmalledges =
++                atoi (Tcl_GetVar (interp, "::occoptions.fixsmalledges", 0));
++              occgeometry->fixspotstripfaces =
++                atoi (Tcl_GetVar (interp, "::occoptions.fixspotstripfaces", 0));
++              occgeometry->sewfaces =
++                atoi (Tcl_GetVar (interp, "::occoptions.sewfaces", 0));
++              occgeometry->makesolids =
++                atoi (Tcl_GetVar (interp, "::occoptions.makesolids", 0));
++              occgeometry->splitpartitions =
++                atoi (Tcl_GetVar (interp, "::occoptions.splitpartitions", 0));
++
++              //            cout << "Before operation:" << endl;
++              //            occgeometry->PrintNrShapes();
++              occgeometry->HealGeometry();
++              occgeometry->BuildFMap();
++              //            cout << endl << "After operation:" << endl;
++              //            occgeometry->PrintNrShapes();
++              occgeometry->BuildVisualizationMesh(vispar.occdeflection);
++              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++            }
++
++
++          if (strcmp (argv[1], "highlightentity") == 0)
++            {
++              if (strcmp (argv[2], "Face") == 0)
++                {
++                  int nr = atoi (argv[3]);
++                  occgeometry->LowLightAll();
++
++                  occgeometry->fvispar[nr-1].Highlight();
++                  if (vispar.occzoomtohighlightedentity)
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++                  else
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++                }
++              if (strcmp (argv[2], "Shell") == 0)
++                {
++                  int nr = atoi (argv[3]);
++                  occgeometry->LowLightAll();
++
++                  TopExp_Explorer exp;
++                  for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
++                       exp.More(); exp.Next())
++                    {
++                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++                      occgeometry->fvispar[i-1].Highlight();
++                    }
++                  if (vispar.occzoomtohighlightedentity)
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++                  else
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++                }
++              if (strcmp (argv[2], "Solid") == 0)
++                {
++                  int nr = atoi (argv[3]);
++                  occgeometry->LowLightAll();
++
++                  TopExp_Explorer exp;
++                  for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
++                       exp.More(); exp.Next())
++                    {
++                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++                      occgeometry->fvispar[i-1].Highlight();
++                    }
++                  if (vispar.occzoomtohighlightedentity)
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++                  else
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++                }
++              /*
++                if (strcmp (argv[2], "CompSolid") == 0)
++                {
++                int nr = atoi (argv[3]);
++                occgeometry->LowLightAll();
++
++                TopExp_Explorer exp;
++                for (exp.Init (occgeometry->cmap(nr), TopAbs_FACE);
++                exp.More(); exp.Next())
++                {
++                int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++                occgeometry->fvispar[i-1].Highlight();
++                }
++                occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++                }
++              */
++
++              if (strcmp (argv[2], "Edge") == 0)
++                {
++                  int nr = atoi (argv[3]);
++                  occgeometry->LowLightAll();
++
++                  occgeometry->evispar[nr-1].Highlight();
++                  if (vispar.occzoomtohighlightedentity)
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++                  else
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++                }
++              if (strcmp (argv[2], "Wire") == 0)
++                {
++                  int nr = atoi (argv[3]);
++                  occgeometry->LowLightAll();
++
++                  TopExp_Explorer exp;
++                  for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
++                       exp.More(); exp.Next())
++                    {
++                      int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
++                      occgeometry->evispar[i-1].Highlight();
++                    }
++                  if (vispar.occzoomtohighlightedentity)
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++                  else
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++                }
++
++              if (strcmp (argv[2], "Vertex") == 0)
++                {
++                  int nr = atoi (argv[3]);
++                  occgeometry->LowLightAll();
++
++                  occgeometry->vvispar[nr-1].Highlight();
++                  if (vispar.occzoomtohighlightedentity)
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONFULLCHANGE;
++                  else
++                    occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++                }
++
++            }
++
++
++
++          if (strcmp (argv[1], "show") == 0)
++            {
++              int nr = atoi (argv[3]);
++              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++
++              if (strcmp (argv[2], "Face") == 0)
++                {
++                  occgeometry->fvispar[nr-1].Show();
++                }
++              if (strcmp (argv[2], "Shell") == 0)
++                {
++                  TopExp_Explorer exp;
++                  for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
++                       exp.More(); exp.Next())
++                    {
++                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++                      occgeometry->fvispar[i-1].Show();
++                    }
++                }
++              if (strcmp (argv[2], "Solid") == 0)
++                {
++                  TopExp_Explorer exp;
++                  for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
++                       exp.More(); exp.Next())
++                    {
++                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++                      occgeometry->fvispar[i-1].Show();
++                    }
++                }
++              if (strcmp (argv[2], "Edge") == 0)
++                {
++                  occgeometry->evispar[nr-1].Show();
++                }
++              if (strcmp (argv[2], "Wire") == 0)
++                {
++                  TopExp_Explorer exp;
++                  for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
++                       exp.More(); exp.Next())
++                    {
++                      int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
++                      occgeometry->evispar[i-1].Show();
++                    }
++                }
++            }
++
++
++          if (strcmp (argv[1], "hide") == 0)
++            {
++              int nr = atoi (argv[3]);
++              occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++
++              if (strcmp (argv[2], "Face") == 0)
++                {
++                  occgeometry->fvispar[nr-1].Hide();
++                }
++              if (strcmp (argv[2], "Shell") == 0)
++                {
++                  TopExp_Explorer exp;
++                  for (exp.Init (occgeometry->shmap(nr), TopAbs_FACE);
++                       exp.More(); exp.Next())
++                    {
++                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++                      occgeometry->fvispar[i-1].Hide();
++                    }
++                }
++              if (strcmp (argv[2], "Solid") == 0)
++                {
++                  TopExp_Explorer exp;
++                  for (exp.Init (occgeometry->somap(nr), TopAbs_FACE);
++                       exp.More(); exp.Next())
++                    {
++                      int i = occgeometry->fmap.FindIndex (TopoDS::Face(exp.Current()));
++                      occgeometry->fvispar[i-1].Hide();
++                    }
++                }
++              if (strcmp (argv[2], "Edge") == 0)
++                {
++                  occgeometry->evispar[nr-1].Hide();
++                }
++              if (strcmp (argv[2], "Wire") == 0)
++                {
++                  TopExp_Explorer exp;
++                  for (exp.Init (occgeometry->wmap(nr), TopAbs_EDGE);
++                       exp.More(); exp.Next())
++                    {
++                      int i = occgeometry->emap.FindIndex (TopoDS::Edge(exp.Current()));
++                      occgeometry->evispar[i-1].Hide();
++                    }
++                }
++            }
++
++
++
++          if (strcmp (argv[1], "findsmallentities") == 0)
++            {
++              stringstream str("");
++              occgeometry->CheckIrregularEntities(str);
++              Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
++            }
++          if (strcmp (argv[1], "getunmeshedfaceinfo") == 0)
++            {
++              occgeometry->GetUnmeshedFaceInfo(str);
++              Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
++            }
++          if (strcmp (argv[1], "getnotdrawablefaces") == 0)
++            {
++              occgeometry->GetNotDrawableFaces(str);
++              Tcl_SetResult (interp, (char*)str.str().c_str(), TCL_VOLATILE);
++            }
++          if (strcmp (argv[1], "redrawstatus") == 0)
++            {
++              int i = atoi (argv[2]);
++              occgeometry->changed = i;
++            }
++          if (strcmp (argv[1], "swaporientation") == 0)
++            {
++              IGESControl_Writer writer("millimeters", 1);
++              writer.AddShape (occgeometry->shape);
++              writer.Write ("1.igs");
++              /*
++                int nr = atoi (argv[3]);
++
++                //          const_cast<TopoDS_Shape&> (occgeometry->fmap(nr)).Reverse();
++
++                Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++                rebuild->Apply(occgeometry->shape);
++
++                TopoDS_Shape sh;
++
++                //          if (strcmp (argv[2], "CompSolid") == 0) sh = occgeometry->cmap(nr);
++                if (strcmp (argv[2], "Solid") == 0) sh = occgeometry->somap(nr);
++                if (strcmp (argv[2], "Shell") == 0) sh = occgeometry->shmap(nr);
++                if (strcmp (argv[2], "Face") == 0) sh = occgeometry->fmap(nr);
++                if (strcmp (argv[2], "Wire") == 0) sh = occgeometry->wmap(nr);
++                if (strcmp (argv[2], "Edge") == 0) sh = occgeometry->emap(nr);
++
++                rebuild->Replace(sh, sh.Reversed());
++
++                TopoDS_Shape newshape = rebuild->Apply(occgeometry->shape, TopAbs_SHELL, 1);
++                occgeometry->shape = newshape;
++
++                occgeometry->BuildFMap();
++                occgeometry->BuildVisualizationMesh();
++                occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++              */
++            }
++          if (strcmp (argv[1], "marksingular") == 0)
++            {
++              int nr = atoi (argv[3]);
++              cout << "marking " << argv[2] << " " << nr << endl;
++              char buf[2]; buf[0] = '0'; buf[1] = 0;
++              bool sing = false;
++              if (strcmp (argv[2], "Face") == 0)
++                sing = occgeometry->fsingular[nr-1] = !occgeometry->fsingular[nr-1];
++              if (strcmp (argv[2], "Edge") == 0)
++                sing = occgeometry->esingular[nr-1] = !occgeometry->esingular[nr-1];
++              if (strcmp (argv[2], "Vertex") == 0)
++                sing = occgeometry->vsingular[nr-1] = !occgeometry->vsingular[nr-1];
++
++              if (sing) buf[0] = '1';
++
++                Tcl_SetVar (interp, "::ismarkedsingular", buf, 0);
++
++              stringstream str;
++              occgeometry->GetTopologyTree (str);
++
++              char* cstr = (char*)str.str().c_str();
++
++              (*testout) << cstr << endl;
++
++              char helpstr[1000];
++
++              while (strchr (cstr, '}'))
++                {
++                  strncpy (helpstr, cstr+2, strlen(strchr(cstr+2, '}')));
++                  (*testout) << "***" << cstr << "***" << endl;
++                  cstr = strchr (cstr, '}');
++                } 
++            }
++        }
++      }
++
++#endif
++    return TCL_OK;
++  }
++
++
++
++#ifdef OCCGEOMETRY
++  /*
++  void OCCConstructGeometry (OCCGeometry & geom);
++
++  int Ng_OCCConstruction (ClientData clientData,
++                        Tcl_Interp * interp,
++                        int argc, tcl_const char *argv[])
++  {
++    if (occgeometry)
++      OCCConstructGeometry (*occgeometry);
++    return TCL_OK;
++  }
++  */
++#endif
++
++
++
++
++  // Philippose - 30/01/2009
++  // TCL interface function for the Local Face Mesh size
++  // definition functionality
++  int Ng_SurfaceMeshSize (ClientData clientData,
++                                  Tcl_Interp * interp,
++                                  int argc, tcl_const char *argv[])
++  {
++#ifdef OCCGEOMETRY
++
++    static char buf[100];
++
++    if (argc < 2)
++    {
++         Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize needs arguments", TCL_STATIC);
++         return TCL_ERROR;
++    }
++
++    OCCGeometry * occgeometry = dynamic_cast<OCCGeometry*> (ng_geometry.Ptr());
++    if (!occgeometry)
++    {
++      Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize currently supports only OCC (STEP/IGES) Files", TCL_STATIC);
++         return TCL_ERROR;
++    }
++
++    // Update the face mesh sizes to reflect the global maximum mesh size
++    for(int i = 1; i <= occgeometry->NrFaces(); i++)
++    {
++           if(!occgeometry->GetFaceMaxhModified(i))
++           {
++              occgeometry->SetFaceMaxH(i, mparam.maxh);
++           }   
++    }
++
++    if (strcmp (argv[1], "setsurfms") == 0)
++    {
++         int facenr = atoi (argv[2]);
++         double surfms = atof (argv[3]);
++         if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
++           occgeometry->SetFaceMaxH(facenr, surfms);
++
++    }
++
++    if (strcmp (argv[1], "setall") == 0)
++    {
++         double surfms = atof (argv[2]);
++         if (occgeometry)
++         {
++           int nrFaces = occgeometry->NrFaces();
++           for (int i = 1; i <= nrFaces; i++)
++            occgeometry->SetFaceMaxH(i, surfms);
++         }
++    }
++
++    if (strcmp (argv[1], "getsurfms") == 0)
++    {
++         int facenr = atoi (argv[2]);
++         if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
++         {
++           sprintf (buf, "%5.2f", occgeometry->GetFaceMaxH(facenr));
++         }
++         else
++         {
++           sprintf (buf, "%5.2f", mparam.maxh);
++         }
++         Tcl_SetResult (interp, buf, TCL_STATIC);
++    }
++
++    if (strcmp (argv[1], "getactive") == 0)
++    {
++         sprintf (buf, "%d", occgeometry->SelectedFace());
++         Tcl_SetResult (interp, buf, TCL_STATIC);
++    }
++
++    if (strcmp (argv[1], "setactive") == 0)
++    {
++         int facenr = atoi (argv[2]);
++         if (occgeometry && facenr >= 1 && facenr <= occgeometry->NrFaces())
++         {
++           occgeometry->SetSelectedFace (facenr);
++
++        occgeometry->LowLightAll();
++        occgeometry->fvispar[facenr-1].Highlight();
++        occgeometry->changed = OCCGEOMETRYVISUALIZATIONHALFCHANGE;
++         }
++    }
++
++    if (strcmp (argv[1], "getnfd") == 0)
++    {
++         if (occgeometry)
++           sprintf (buf, "%d", occgeometry->NrFaces());
++         else
++           sprintf (buf, "0");
++         Tcl_SetResult (interp, buf, TCL_STATIC);
++    }
++    return TCL_OK;
++#else // No OCCGEOMETRY 
++
++    Tcl_SetResult (interp, (char *)"Ng_SurfaceMeshSize currently supports only OCC (STEP/IGES) Files", TCL_STATIC);
++    return TCL_ERROR;
++    
++#endif // OCCGEOMETRY
++  }
++
++
++
++  // Philippose - 25/07/2010
++  // TCL interface function for extracting and eventually 
++  // setting or editing the current colours present in the mesh
++  int Ng_CurrentFaceColours (ClientData clientData,
++                             Tcl_Interp * interp,
++                             int argc, tcl_const char *argv[])
++  {
++     if(argc < 1)
++     {
++        Tcl_SetResult (interp, (char *)"Ng_GetCurrentFaceColours needs arguments", TCL_STATIC);
++        return TCL_ERROR;
++     }
++
++     if(!mesh.Ptr())
++     {
++        Tcl_SetResult (interp, (char *)"Ng_GetCurrentFaceColours: Valid netgen mesh required...please mesh the Geometry first", TCL_STATIC);
++           return TCL_ERROR;
++     }
++
++     if(strcmp(argv[1], "getcolours") == 0)
++     {
++        stringstream outVar;
++        Array<Vec3d> face_colours;
++        GetFaceColours(*mesh, face_colours);
++
++        for(int i = 0; i < face_colours.Size();i++)
++        {
++           outVar << "{ " << face_colours[i].X(1)
++                  << " "  << face_colours[i].X(2)
++                  << " "  << face_colours[i].X(3)
++                  << " } ";
++        }
++
++        tcl_const char * valuevar = argv[2];
++        Tcl_SetVar  (interp, valuevar, (char*)outVar.str().c_str(), 0);
++     }
++
++     if(strcmp(argv[1], "showalso") == 0)
++     {
++        Array<Vec3d> face_colours;
++        GetFaceColours(*mesh,face_colours);
++
++        int colourind = atoi (argv[2]);
++
++        for(int i = 1; i <= mesh->GetNFD(); i++)
++        {
++           Array<SurfaceElementIndex> surfElems;
++           mesh->GetSurfaceElementsOfFace(i,surfElems);
++
++           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(1);
++              }
++           }
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     if(strcmp(argv[1], "hidealso") == 0)
++     {
++        Array<Vec3d> face_colours;
++        GetFaceColours(*mesh,face_colours);
++
++        int colourind = atoi (argv[2]);
++
++        for(int i = 1; i <= mesh->GetNFD(); i++)
++        {
++           Array<SurfaceElementIndex> surfElems;
++           mesh->GetSurfaceElementsOfFace(i,surfElems);
++
++           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(0);
++              }
++           }
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     if(strcmp(argv[1], "showonly") == 0)
++     {
++        Array<Vec3d> face_colours;
++        GetFaceColours(*mesh,face_colours);
++
++        int colourind = atoi (argv[2]);
++
++        for(int i = 1; i <= mesh->GetNFD(); i++)
++        {
++           Array<SurfaceElementIndex> surfElems;
++           mesh->GetSurfaceElementsOfFace(i,surfElems);
++
++           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(1);
++              }
++           }
++           else
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(0);
++              }
++           }
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     if(strcmp(argv[1], "hideonly") == 0)
++     {
++        Array<Vec3d> face_colours;
++        GetFaceColours(*mesh,face_colours);
++
++        int colourind = atoi (argv[2]);
++
++        for(int i = 1; i <= mesh->GetNFD(); i++)
++        {
++           Array<SurfaceElementIndex> surfElems;
++           mesh->GetSurfaceElementsOfFace(i,surfElems);
++
++           if(ColourMatch(face_colours[colourind],mesh->GetFaceDescriptor(i).SurfColour()))
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(0);
++              }
++           }
++           else
++           {
++              for(int j = 0; j < surfElems.Size(); j++)
++              {
++                 mesh->SurfaceElement(surfElems[j]).Visible(1);
++              }
++           }
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     if(strcmp(argv[1], "showall") == 0)
++     {
++        for(int i = 1; i <= mesh->GetNSE(); i++)
++        {
++           mesh->SurfaceElement(i).Visible(1);
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     if(strcmp(argv[1], "hideall") == 0)
++     {
++        for(int i = 1; i <= mesh->GetNSE(); i++)
++        {
++           mesh->SurfaceElement(i).Visible(0);
++        }
++
++        mesh->SetNextTimeStamp();
++     }
++
++     return TCL_OK;
++  }
++
++
++
++
++  // Philippose - 10/03/2009
++  // TCL interface function for the Automatic Colour-based
++  // definition of boundary conditions for OCC Geometry
++  int Ng_AutoColourBcProps (ClientData clientData,
++                                    Tcl_Interp * interp,
++                                    int argc, tcl_const char *argv[])
++  {
++     if(argc < 1)
++     {
++        Tcl_SetResult (interp, (char *)"Ng_AutoColourBcProps needs arguments", TCL_STATIC);
++        return TCL_ERROR;
++     }
++
++     if(!mesh.Ptr())
++     {
++        Tcl_SetResult (interp, (char *)"Ng_AutoColourBcProps: Valid netgen mesh required...please mesh the Geometry first", TCL_STATIC);
++           return TCL_ERROR;
++     }
++
++     if(strcmp(argv[1], "auto") == 0)
++     {
++        AutoColourBcProps(*mesh, 0);
++     }
++
++     if(strcmp(argv[1], "profile") == 0)
++     {
++        AutoColourBcProps(*mesh, argv[2]);
++     }
++
++     return TCL_OK;
++  }
++
++
++  int Ng_SetOCCParameters  (ClientData clientData,
++                          Tcl_Interp * interp,
++                          int argc, tcl_const char *argv[])
++  {
++    OCCGeometryRegister reg;
++    reg.SetParameters (interp);
++    /*
++    occparam.resthcloseedgefac =
++      atof (Tcl_GetVar (interp, "::stloptions.resthcloseedgefac", 0));
++
++    occparam.resthcloseedgeenable =
++      atoi (Tcl_GetVar (interp, "::stloptions.resthcloseedgeenable", 0));
++    */
++    return TCL_OK;
++  }
++
++
++
++
++  NetgenGeometry *  OCCGeometryRegister :: Load (string filename) const
++  {
++    const char * lgfilename = filename.c_str();
++
++
++    /*
++    if (strcmp (&cfilename[strlen(cfilename)-3], "geo") == 0)
++      {
++      PrintMessage (1, "Load OCCG geometry file ", cfilename);
++      
++      extern OCCGeometry * ParseOCCG (istream & istr);
++
++      ifstream infile(cfilename);
++
++      OCCGeometry * hgeom = ParseOCCG (infile);
++      if (!hgeom)
++        throw NgException ("geo-file should start with 'algebraic3d'");
++
++      hgeom -> FindIdenticSurfaces(1e-8 * hgeom->MaxSize()); 
++      return hgeom;
++      }
++    */
++
++
++    if ((strcmp (&lgfilename[strlen(lgfilename)-4], "iges") == 0) ||
++      (strcmp (&lgfilename[strlen(lgfilename)-3], "igs") == 0) ||
++      (strcmp (&lgfilename[strlen(lgfilename)-3], "IGS") == 0) ||
++      (strcmp (&lgfilename[strlen(lgfilename)-4], "IGES") == 0))
++      {
++      PrintMessage (1, "Load IGES geometry file ", lgfilename);
++      OCCGeometry * occgeometry = LoadOCC_IGES (lgfilename);
++      return occgeometry;
++      }
++
++    else if ((strcmp (&lgfilename[strlen(lgfilename)-4], "step") == 0) ||
++                   (strcmp (&lgfilename[strlen(lgfilename)-3], "stp") == 0) ||
++                   (strcmp (&lgfilename[strlen(lgfilename)-3], "STP") == 0) ||
++                   (strcmp (&lgfilename[strlen(lgfilename)-4], "STEP") == 0))
++      {
++      PrintMessage (1, "Load STEP geometry file ", lgfilename);
++      OCCGeometry * occgeometry = LoadOCC_STEP (lgfilename);
++      return occgeometry;    
++      }
++    else if ((strcmp (&lgfilename[strlen(lgfilename)-4], "brep") == 0) ||
++           (strcmp (&lgfilename[strlen(lgfilename)-4], "Brep") == 0) ||
++           (strcmp (&lgfilename[strlen(lgfilename)-4], "BREP") == 0))
++      {
++      PrintMessage (1, "Load BREP geometry file ", lgfilename);
++      OCCGeometry * occgeometry = LoadOCC_BREP (lgfilename);
++      return occgeometry;
++      }
++    
++    return NULL;
++  }
++
++
++  static VisualSceneOCCGeometry vsoccgeom;
++
++  VisualScene * OCCGeometryRegister :: GetVisualScene (const NetgenGeometry * geom) const
++  {
++    OCCGeometry * geometry = dynamic_cast<OCCGeometry*> (ng_geometry.Ptr());
++    if (geometry)
++      {
++      vsoccgeom.SetGeometry (geometry);
++      return &vsoccgeom;
++      }
++    return NULL;
++  }
++
++
++
++}
++
++
++
++using namespace netgen;
++
++int Ng_occ_Init (Tcl_Interp * interp)
++{
++  geometryregister.Append (new OCCGeometryRegister);
++
++
++    Tcl_CreateCommand (interp, "Ng_SetOCCVisParameters",
++                     Ng_SetOCCVisParameters,
++                     (ClientData)NULL,
++                     (Tcl_CmdDeleteProc*) NULL);
++
++    Tcl_CreateCommand (interp, "Ng_GetOCCData",
++                     Ng_GetOCCData,
++                     (ClientData)NULL,
++                     (Tcl_CmdDeleteProc*) NULL);
++
++    /*
++#ifdef OCCGEOMETRY
++    Tcl_CreateCommand (interp, "Ng_OCCConstruction",
++                     Ng_OCCConstruction,
++                     (ClientData)NULL,
++                     (Tcl_CmdDeleteProc*) NULL);
++#endif
++    */
++
++    Tcl_CreateCommand (interp, "Ng_OCCCommand",
++                     Ng_OCCCommand,
++                     (ClientData)NULL,
++                     (Tcl_CmdDeleteProc*) NULL);
++
++
++    Tcl_CreateCommand (interp, "Ng_SetOCCParameters", Ng_SetOCCParameters,
++                     (ClientData)NULL,
++                     (Tcl_CmdDeleteProc*) NULL);
++
++
++
++    // Philippose - 30/01/2009
++    // Register the TCL Interface Command for local face mesh size
++    // definition
++    Tcl_CreateCommand (interp, "Ng_SurfaceMeshSize", Ng_SurfaceMeshSize,
++                     (ClientData)NULL,
++                     (Tcl_CmdDeleteProc*) NULL);
++
++    Tcl_CreateCommand (interp, "Ng_AutoColourBcProps", Ng_AutoColourBcProps,
++                     (ClientData)NULL,
++                     (Tcl_CmdDeleteProc*) NULL);
++
++    // Philippose - 25/07/2010
++    // Register the TCL Interface Command for handling the face colours 
++    // present in the mesh
++    Tcl_CreateCommand(interp, "Ng_CurrentFaceColours", Ng_CurrentFaceColours,
++                      (ClientData)NULL,
++                      (Tcl_CmdDeleteProc*) NULL);
++
++
++  return TCL_OK;
++}
++
++#endif
++
+--- netgen_ref/libsrc/occ/utilities.h
++++ netgen/libsrc/occ/utilities.h
+@@ -33,6 +33,7 @@
+ #include <string>
+ #include <iostream>
++#include <iomanip>
+ #include <cstdlib>
+ // #include "SALOME_Log.hxx"
+--- netgen_ref/libsrc/stlgeom/Makefile.am
++++ netgen/libsrc/stlgeom/Makefile.am
+@@ -4,10 +4,10 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libstl.la 
++noinst_LTLIBRARIES = libstl.la 
+ if NGGUI
+-lib_LTLIBRARIES += libstlvis.la 
++lib_LTLIBRARIES = libstlvis.la 
+ endif
+ libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
+@@ -16,6 +16,5 @@
+ libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
+ libstlvis_la_LIBADD = libstl.la
+-libstl_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+ # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la 
+--- netgen_ref/libsrc/stlgeom/stlgeom.cpp
++++ netgen/libsrc/stlgeom/stlgeom.cpp
+@@ -250,7 +250,7 @@
+         if (!nbt)
+           {
+-            cerr << "ERROR: stlgeom::Smoothnormals, nbt = 0" << endl;
++            std::cerr << "ERROR: stlgeom::Smoothnormals, nbt = 0" << std::endl;
+           }
+         // smoothed normal
+--- netgen_ref/libsrc/stlgeom/stlgeom.hpp
++++ netgen/libsrc/stlgeom/stlgeom.hpp
+@@ -38,7 +38,7 @@
+     return true;
+   }
+   
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+   
+--- /dev/null
++++ netgen/nglib/CMakeLists.txt
+@@ -0,0 +1,252 @@
++# Copyright (C) 2016 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
++#
++INCLUDE_DIRECTORIES(
++    ${CMAKE_CURRENT_SOURCE_DIR}
++    ${PROJECT_SOURCE_DIR}/libsrc/include
++    ${ZLIB_INCLUDE_DIRS}
++    ${CAS_INCLUDE_DIRS}
++)
++
++
++# CGS
++SET(CGS_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/algprim.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/brick.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/bspline2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/csgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/csgparser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/curve2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/edgeflw.cpp      
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/explicitcurve2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/extrusion.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/gencyl.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/genmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/identify.cpp  
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/manifold.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/meshsurf.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/polyhedra.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/revolution.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/singularref.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/solid.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/specpoin.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/spline3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/surface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/triapprox.cpp)
++
++# GENERAL
++SET(GENERAL_SOURCES 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/array.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/bitarray.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/dynamicmem.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/flags.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/hashtabl.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/mystring.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/ngexception.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/optmem.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/parthreads.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/profiler.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/seti.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/sort.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/spbita2d.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/symbolta.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/table.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/mpi_interface.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/gzstream.cpp)
++
++FILE(GLOB GENERAL_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/general/*.hpp")
++LIST(APPEND GENERAL_INCLUDES ${PROJECT_SOURCE_DIR}/libsrc/general/gzstream.h)
++
++# GEOM2D
++SET (GEOM2D_SOURCES 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/genmesh2d.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/geom2dmesh.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/geometry2d.cpp)
++
++# GPRIM
++SET(GPRIM_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/adtree.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geom2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geom3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geomfuncs.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geomtest3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/transform3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/spline.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/splinegeometry.cpp)
++
++FILE(GLOB GPRIM_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/gprim/*.hpp")
++
++# INCLUDE
++SET(INCLUDE_INCLUDES 
++    ${PROJECT_SOURCE_DIR}/libsrc/include/nginterface.h
++    ${PROJECT_SOURCE_DIR}/libsrc/include/nginterface_v2.hpp
++    ${PROJECT_SOURCE_DIR}/libsrc/include/mystdlib.h
++    ${PROJECT_SOURCE_DIR}/libsrc/include/mydefs.hpp)
++
++# INTERFACE
++SET(INTERFACE_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/nginterface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/nginterface_v2.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/read_fnf_mesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/readtetmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/readuser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeabaqus.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writediffpack.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writedolfin.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeelmer.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writefeap.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writefluent.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writegmsh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writejcm.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writepermas.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetecplot.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetet.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetochnog.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeuser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/wuchemnitz.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writegmsh2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeOpenFOAM15x.cpp)
++
++# LINALG
++SET (LINALG_SOURCES 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/densemat.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/polynomial.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/bfgs.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/linopt.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/linsearch.cpp)
++
++FILE(GLOB LINALG_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/linalg/*.hpp")
++
++# MESHING
++SET(MESHING_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/adfront2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/adfront3.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/bisect.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/boundarylayer.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/clusters.cpp      
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/curvedelems.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/delaunay.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/delaunay2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/geomsearch.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/global.cpp     
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/hprefinement.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve2gen.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/localh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshclass.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshfunc.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshfunc2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshing2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshing3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshtool.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshtype.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/msghandler.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/netrule2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/netrule3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parser2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parser3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/prism2rls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/pyramid2rls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/pyramidrls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/quadrls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/refine.cpp   
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/ruler2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/ruler3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/secondorder.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing2.5.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/specials.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/tetrarls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/topology.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/triarls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/validate.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/zrefine.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/bcfunctions.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parallelmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/paralleltop.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/paralleltop.hpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/basegeom.cpp)
++
++FILE(GLOB MESHING_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/meshing/*.hpp")
++
++# OCC
++SET(OCC_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Inter2d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Inter3d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop2d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop3d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Spliter.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occconstruction.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occgenmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occmeshsurf.cpp)
++
++SET(OCC_INCLUDES ${PROJECT_SOURCE_DIR}/libsrc/occ/occgeom.hpp ${PROJECT_SOURCE_DIR}/libsrc/occ/occmeshsurf.hpp)
++
++# STLGEOM
++SET(STLGEOM_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/meshstlsurface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeomchart.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeommesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlline.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltool.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltopology.cpp)
++
++# NGLIB
++SET(NGLIB_SOURCES nglib.cpp)
++ADD_LIBRARY(nglib SHARED 
++            ${NGLIB_SOURCES}
++            ${CGS_SOURCES} 
++            ${GENERAL_SOURCES}
++            ${GPRIM_SOURCES}
++            ${GEOM2D_SOURCES}
++            ${INTERFACE_SOURCES} 
++            ${LINALG_SOURCES} 
++            ${MESHING_SOURCES} 
++            ${OCC_SOURCES}
++            ${STLGEOM_SOURCES})
++
++TARGET_LINK_LIBRARIES(nglib ${OCCLIBS} ${PLATFORM_LIBADD} ${ZLIB_LIBRARIES})
++INSTALL(TARGETS nglib DESTINATION ${NETGEN_INSTALL_LIBS}) 
++
++# Install headers
++INSTALL(FILES ${GENERAL_INCLUDES} 
++              ${INCLUDE_INCLUDES}
++              ${GPRIM_INCLUDES} 
++              ${LINALG_INCLUDES} 
++              ${MESHING_INCLUDES} 
++              ${OCC_INCLUDES} 
++              nglib.h 
++              DESTINATION ${NETGEN_INSTALL_HEADERS})
++
++
++# NG_VOL
++SET(NG_VOL_SOURCES ng_vol.cpp)
++ADD_EXECUTABLE(ng_vol ${NG_VOL_SOURCES})
++TARGET_LINK_LIBRARIES(ng_vol nglib)
++INSTALL(TARGETS ng_vol  DESTINATION ${NETGEN_INSTALL_BINS})
++
++# NG_STL
++SET(NG_STL_SOURCES ng_stl.cpp)
++ADD_EXECUTABLE(ng_stl ${NG_STL_SOURCES})
++TARGET_LINK_LIBRARIES(ng_stl nglib)
++INSTALL(TARGETS ng_stl  DESTINATION ${NETGEN_INSTALL_BINS})
+--- netgen_ref/nglib/Makefile.am
++++ netgen/nglib/Makefile.am
+@@ -14,6 +14,9 @@
+       $(top_builddir)/libsrc/stlgeom/libstl.la \
+       $(top_builddir)/libsrc/occ/libocc.la \
+       $(top_builddir)/libsrc/meshing/libmesh.la \
++      $(top_builddir)/libsrc/general/libgen.la \
++      $(top_builddir)/libsrc/gprim/libgprim.la \
++      $(top_builddir)/libsrc/linalg/libla.la
+       $(OCCLIBS) $(MPI_LIBS)
+ libnglib_la_LDFLAGS = -avoid-version
+--- netgen_ref/nglib/nglib.cpp
++++ netgen/nglib/nglib.cpp
+@@ -1,1242 +1,1243 @@
+-/**************************************************************************/
+-/* File:   nglib.cpp                                                      */
+-/* Author: Joachim Schoeberl                                              */
+-/* Date:   7. May. 2000                                                   */
+-/**************************************************************************/
+-
+-/*
+-  
+-  Interface to the netgen meshing kernel
+-  
+-*/
+-#include <mystdlib.h>
+-#include <myadt.hpp>
+-
+-#include <linalg.hpp>
+-#include <csg.hpp>
+-#include <stlgeom.hpp>
+-#include <geometry2d.hpp>
+-#include <meshing.hpp>
+-#include <../visualization/soldata.hpp>
+-
+-#ifdef OCCGEOMETRY
+-#include <occgeom.hpp>
+-#endif
+-
+-#include <nginterface.h>
+-
+-
+-namespace netgen {
+-   extern void MeshFromSpline2D (SplineGeometry2d & geometry,
+-                                 Mesh *& mesh, 
+-                                 MeshingParameters & mp);
+-}
+-
+-
+-
+-#ifdef PARALLEL
+-#include <mpi.h>
+-
+-namespace netgen
+-{
+-  // int id = 0, ntasks = 1;
+-  MPI_Comm mesh_comm;
+-}
+-#endif
+-
+-
+-namespace netgen
+-{
+-  int id = 0, ntasks = 1;
+-}
+-
+-
+-
+-/*
+-// should not be needed (occ currently requires it)
+-namespace netgen {
+-#include "../libsrc/visualization/vispar.hpp"
+-  VisualizationParameters vispar;
+-  VisualizationParameters :: VisualizationParameters() { ; }
+-}
+-*/
+-
+-
+-namespace nglib {
+-#include "nglib.h"
+-}
+-
+-using namespace netgen;
+-
+-// constants and types:
+-
+-namespace nglib
+-{
+-   // initialize, deconstruct Netgen library:
+-   DLL_HEADER void Ng_Init ()
+-   {
+-      mycout = &cout;
+-      myerr = &cerr;
+-      // netgen::testout->SetOutStream (new ofstream ("test.out"));
+-      testout = new ofstream ("test.out");
+-   }
+-
+-
+-
+-
+-   // Clean-up functions before ending usage of nglib
+-   DLL_HEADER void Ng_Exit ()
+-   {
+-      ;
+-   }
+-
+-
+-
+-
+-   // Create a new netgen mesh object
+-   DLL_HEADER Ng_Mesh * Ng_NewMesh ()
+-   {
+-      Mesh * mesh = new Mesh;  
+-      mesh->AddFaceDescriptor (FaceDescriptor (1, 1, 0, 1));
+-      return (Ng_Mesh*)(void*)mesh;
+-   }
+-
+-
+-
+-
+-   // Delete an existing netgen mesh object
+-   DLL_HEADER void Ng_DeleteMesh (Ng_Mesh * mesh)
+-   {
+-      if(mesh != NULL)
+-      {
+-         // Delete the Mesh structures
+-         ((Mesh*)mesh)->DeleteMesh();
+-
+-         // Now delete the Mesh class itself
+-         delete (Mesh*)mesh;
+-
+-         // Set the Ng_Mesh pointer to NULL
+-         mesh = NULL;
+-      }
+-   }
+-
+-
+-
+-
+-   // Save a netgen mesh in the native VOL format 
+-   DLL_HEADER void Ng_SaveMesh(Ng_Mesh * mesh, const char* filename)
+-   {
+-      ((Mesh*)mesh)->Save(filename);
+-   }
+-
+-
+-
+-
+-   // Load a netgen native VOL mesh from a given file
+-   DLL_HEADER Ng_Mesh * Ng_LoadMesh(const char* filename)
+-   {
+-      Mesh * mesh = new Mesh;
+-      mesh->Load(filename);
+-      return ( (Ng_Mesh*)mesh );
+-   }
+-
+-
+-
+-
+-   // Merge another mesh file into the currently loaded one
+-   DLL_HEADER Ng_Result Ng_MergeMesh( Ng_Mesh* mesh, const char* filename)
+-   {
+-      Ng_Result status = NG_OK;
+-
+-      ifstream infile(filename);
+-      Mesh * m = (Mesh*)mesh;
+-
+-      if(!infile.good())
+-      {
+-         status = NG_FILE_NOT_FOUND;
+-      }
+-
+-      if(!m)
+-      {
+-         status = NG_ERROR;
+-      }
+-
+-      if(status == NG_OK)
+-      {
+-         const int num_pts = m->GetNP();
+-         const int face_offset = m->GetNFD();
+-
+-         m->Merge(infile, face_offset);
+-
+-         if(m->GetNP() > num_pts)
+-         {
+-            status = NG_OK;
+-         }
+-         else
+-         {
+-            status = NG_ERROR;
+-         }
+-      }
+-
+-      return status;
+-   }
+-
+-
+-
+-
+-   // Merge another mesh file into the currently loaded one
+-   DLL_HEADER Ng_Result Ng_MergeMesh( Ng_Mesh* mesh1, Ng_Mesh* mesh2)
+-   {
+-      return NG_ERROR;
+-   }
+-
+-
+-
+-
+-   // Manually add a point to an existing mesh object
+-   DLL_HEADER void Ng_AddPoint (Ng_Mesh * mesh, double * x)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      m->AddPoint (Point3d (x[0], x[1], x[2]));
+-   }
+-
+-
+-
+-
+-   // Manually add a surface element of a given type to an existing mesh object
+-   DLL_HEADER void Ng_AddSurfaceElement (Ng_Mesh * mesh, Ng_Surface_Element_Type et,
+-                                         int * pi)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      Element2d el (3);
+-      el.SetIndex (1);
+-      el.PNum(1) = pi[0];
+-      el.PNum(2) = pi[1];
+-      el.PNum(3) = pi[2];
+-      m->AddSurfaceElement (el);
+-   }
+-
+-
+-
+-
+-   // Manually add a volume element of a given type to an existing mesh object
+-   DLL_HEADER void Ng_AddVolumeElement (Ng_Mesh * mesh, Ng_Volume_Element_Type et,
+-                                        int * pi)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      Element el (4);
+-      el.SetIndex (1);
+-      el.PNum(1) = pi[0];
+-      el.PNum(2) = pi[1];
+-      el.PNum(3) = pi[2];
+-      el.PNum(4) = pi[3];
+-      m->AddVolumeElement (el);
+-   }
+-
+-
+-
+-
+-   // Obtain the number of points in the mesh
+-   DLL_HEADER int Ng_GetNP (Ng_Mesh * mesh)
+-   {
+-      return ((Mesh*)mesh) -> GetNP();
+-   }
+-
+-
+-
+-
+-   // Obtain the number of surface elements in the mesh
+-   DLL_HEADER int Ng_GetNSE (Ng_Mesh * mesh)
+-   {
+-      return ((Mesh*)mesh) -> GetNSE();
+-   }
+-
+-
+-
+-
+-   // Obtain the number of volume elements in the mesh
+-   DLL_HEADER int Ng_GetNE (Ng_Mesh * mesh)
+-   {
+-      return ((Mesh*)mesh) -> GetNE();
+-   }
+-
+-
+-
+-
+-   //  Return point coordinates of a given point index in the mesh
+-   DLL_HEADER void Ng_GetPoint (Ng_Mesh * mesh, int num, double * x)
+-   {
+-      const Point3d & p = ((Mesh*)mesh)->Point(num);
+-      x[0] = p.X();
+-      x[1] = p.Y();
+-      x[2] = p.Z();
+-   }
+-
+-
+-
+-
+-   // Return the surface element at a given index "pi"
+-   DLL_HEADER Ng_Surface_Element_Type 
+-      Ng_GetSurfaceElement (Ng_Mesh * mesh, int num, int * pi)
+-   {
+-      const Element2d & el = ((Mesh*)mesh)->SurfaceElement(num);
+-      for (int i = 1; i <= el.GetNP(); i++)
+-         pi[i-1] = el.PNum(i);
+-      Ng_Surface_Element_Type et;
+-      switch (el.GetNP())
+-      {
+-      case 3: et = NG_TRIG; break;
+-      case 4: et = NG_QUAD; break;
+-      case 6: 
+-         switch (el.GetNV())
+-         {
+-         case 3: et = NG_TRIG6; break;
+-         case 4: et = NG_QUAD6; break;
+-         default:
+-            et = NG_TRIG6; break;
+-         }
+-         break;
+-      case 8: et = NG_QUAD8; break;
+-      default:
+-         et = NG_TRIG; break; // for the compiler
+-      }
+-      return et;
+-   }
+-
+-
+-
+-
+-   // Return the volume element at a given index "pi"
+-   DLL_HEADER Ng_Volume_Element_Type
+-      Ng_GetVolumeElement (Ng_Mesh * mesh, int num, int * pi)
+-   {
+-      const Element & el = ((Mesh*)mesh)->VolumeElement(num);
+-      for (int i = 1; i <= el.GetNP(); i++)
+-         pi[i-1] = el.PNum(i);
+-      Ng_Volume_Element_Type et;
+-      switch (el.GetNP())
+-      {
+-      case 4: et = NG_TET; break;
+-      case 5: et = NG_PYRAMID; break;
+-      case 6: et = NG_PRISM; break;
+-      case 10: et = NG_TET10; break;
+-      default:
+-         et = NG_TET; break; // for the compiler
+-      }
+-      return et;
+-   }
+-
+-
+-
+-
+-   // Set a global limit on the maximum mesh size allowed
+-   DLL_HEADER void Ng_RestrictMeshSizeGlobal (Ng_Mesh * mesh, double h)
+-   {
+-      ((Mesh*)mesh) -> SetGlobalH (h);
+-   }
+-
+-
+-
+-
+-   // Set a local limit on the maximum mesh size allowed around the given point
+-   DLL_HEADER void Ng_RestrictMeshSizePoint (Ng_Mesh * mesh, double * p, double h)
+-   {
+-      ((Mesh*)mesh) -> RestrictLocalH (Point3d (p[0], p[1], p[2]), h);
+-   }
+-
+-
+-
+-
+-   // Set a local limit on the maximum mesh size allowed within a given box region
+-   DLL_HEADER void Ng_RestrictMeshSizeBox (Ng_Mesh * mesh, double * pmin, double * pmax, double h)
+-   {
+-      for (double x = pmin[0]; x < pmax[0]; x += h)
+-         for (double y = pmin[1]; y < pmax[1]; y += h)
+-            for (double z = pmin[2]; z < pmax[2]; z += h)
+-               ((Mesh*)mesh) -> RestrictLocalH (Point3d (x, y, z), h);
+-   }
+-
+-
+-
+-
+-   // Generates volume mesh from an existing surface mesh
+-   DLL_HEADER Ng_Result Ng_GenerateVolumeMesh (Ng_Mesh * mesh, Ng_Meshing_Parameters * mp)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-
+-      // Philippose - 30/08/2009
+-      // Do not locally re-define "mparam" here... "mparam" is a global 
+-      // object 
+-      //MeshingParameters mparam;
+-      mp->Transfer_Parameters();
+-
+-      m->CalcLocalH(mparam.grading);
+-
+-      MeshVolume (mparam, *m);
+-      RemoveIllegalElements (*m);
+-      OptimizeVolume (mparam, *m);
+-
+-      return NG_OK;
+-   }
+-
+-
+-
+-
+-   /* ------------------ 2D Meshing Functions ------------------------- */
+-   DLL_HEADER void Ng_AddPoint_2D (Ng_Mesh * mesh, double * x)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-
+-      m->AddPoint (Point3d (x[0], x[1], 0));
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_AddBoundarySeg_2D (Ng_Mesh * mesh, int pi1, int pi2)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-
+-      Segment seg;
+-      seg[0] = pi1;
+-      seg[1] = pi2;
+-      m->AddSegment (seg);
+-   }
+-
+-
+-
+-
+-   DLL_HEADER int Ng_GetNP_2D (Ng_Mesh * mesh)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      return m->GetNP();
+-   }
+-
+-
+-
+-
+-   DLL_HEADER int Ng_GetNE_2D (Ng_Mesh * mesh)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      return m->GetNSE();
+-   }
+-
+-
+-
+-
+-   DLL_HEADER int Ng_GetNSeg_2D (Ng_Mesh * mesh)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-      return m->GetNSeg();
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_GetPoint_2D (Ng_Mesh * mesh, int num, double * x)
+-   {
+-      Mesh * m = (Mesh*)mesh;
+-
+-      Point<3> & p = m->Point(num);
+-      x[0] = p(0);
+-      x[1] = p(1);
+-   }
+-
+-
+-
+-
+-   DLL_HEADER Ng_Surface_Element_Type
+-      Ng_GetElement_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum)
+-   {
+-      const Element2d & el = ((Mesh*)mesh)->SurfaceElement(num);
+-      for (int i = 1; i <= el.GetNP(); i++)
+-         pi[i-1] = el.PNum(i);
+-
+-      Ng_Surface_Element_Type et;
+-      switch (el.GetNP())
+-      {
+-      case 3: et = NG_TRIG; break;
+-      case 4: et = NG_QUAD; break;
+-      case 6: 
+-         switch (el.GetNV())
+-         {
+-         case 3: et = NG_TRIG6; break;
+-         case 4: et = NG_QUAD6; break;
+-         default:
+-            et = NG_TRIG6; break;
+-         }
+-         break;
+-      case 8: et = NG_QUAD8; break;
+-      default:
+-         et = NG_TRIG; break; // for the compiler
+-      }
+-
+-      if (matnum)
+-         *matnum = el.GetIndex();
+-
+-      return et;
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_GetSegment_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum)
+-   {
+-      const Segment & seg = ((Mesh*)mesh)->LineSegment(num);
+-      pi[0] = seg[0];
+-      pi[1] = seg[1];
+-
+-      if (matnum)
+-         *matnum = seg.edgenr;
+-   }
+-
+-
+-
+-
+-   DLL_HEADER Ng_Geometry_2D * Ng_LoadGeometry_2D (const char * filename)
+-   {
+-      SplineGeometry2d * geom = new SplineGeometry2d();
+-      geom -> Load (filename);
+-      return (Ng_Geometry_2D *)geom;
+-   }
+-
+-
+-
+-
+-   DLL_HEADER Ng_Result Ng_GenerateMesh_2D (Ng_Geometry_2D * geom,
+-                                            Ng_Mesh ** mesh,
+-                                            Ng_Meshing_Parameters * mp)
+-   {
+-      // use global variable mparam
+-      //  MeshingParameters mparam;  
+-      mp->Transfer_Parameters();
+-
+-      Mesh * m;
+-      MeshFromSpline2D (*(SplineGeometry2d*)geom, m, mparam);
+-
+-      cout << m->GetNSE() << " elements, " << m->GetNP() << " points" << endl;
+-
+-      *mesh = (Ng_Mesh*)m;
+-      return NG_OK;
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
+-      Ng_Mesh * mesh,
+-      int levels)
+-   {
+-      Refinement2d ref(*(SplineGeometry2d*)geom);
+-      HPRefinement (*(Mesh*)mesh, &ref, levels);
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
+-      Ng_Mesh * mesh,
+-      int levels, double parameter)
+-   {
+-      Refinement2d ref(*(SplineGeometry2d*)geom);
+-      HPRefinement (*(Mesh*)mesh, &ref, levels, parameter);
+-   }
+-
+-
+-
+-
+-   Array<STLReadTriangle> readtrias; //only before initstlgeometry
+-   Array<Point<3> > readedges; //only before init stlgeometry
+-
+-   // loads geometry from STL file
+-   DLL_HEADER Ng_STL_Geometry * Ng_STL_LoadGeometry (const char * filename, int binary)
+-   {
+-      int i;
+-      STLGeometry geom;
+-      STLGeometry* geo;
+-      ifstream ist(filename);
+-
+-      if (binary)
+-      {
+-         geo = geom.LoadBinary(ist);
+-      }
+-      else
+-      {
+-         geo = geom.Load(ist);
+-      }
+-
+-      readtrias.SetSize(0);
+-      readedges.SetSize(0);
+-
+-      Point3d p;
+-      Vec3d normal;
+-      double p1[3];
+-      double p2[3];
+-      double p3[3];
+-      double n[3];
+-
+-      Ng_STL_Geometry * geo2 = Ng_STL_NewGeometry();
+-
+-      for (i = 1; i <= geo->GetNT(); i++)
+-      {
+-         const STLTriangle& t = geo->GetTriangle(i);
+-         p = geo->GetPoint(t.PNum(1));
+-         p1[0] = p.X(); p1[1] = p.Y(); p1[2] = p.Z(); 
+-         p = geo->GetPoint(t.PNum(2));
+-         p2[0] = p.X(); p2[1] = p.Y(); p2[2] = p.Z(); 
+-         p = geo->GetPoint(t.PNum(3));
+-         p3[0] = p.X(); p3[1] = p.Y(); p3[2] = p.Z();
+-         normal = t.Normal();
+-         n[0] = normal.X(); n[1] = normal.Y(); n[2] = normal.Z();
+-
+-         Ng_STL_AddTriangle(geo2, p1, p2, p3, n);
+-      }
+-
+-      return geo2;
+-   }
+-
+-
+-
+-
+-   // generate new STL Geometry
+-   DLL_HEADER Ng_STL_Geometry * Ng_STL_NewGeometry ()
+-   {
+-      return (Ng_STL_Geometry*)(void*)new STLGeometry;
+-   } 
+-
+-
+-
+-
+-   // after adding triangles (and edges) initialize
+-   DLL_HEADER Ng_Result Ng_STL_InitSTLGeometry (Ng_STL_Geometry * geom)
+-   {
+-      STLGeometry* geo = (STLGeometry*)geom;
+-      geo->InitSTLGeometry(readtrias);
+-      readtrias.SetSize(0);
+-
+-      if (readedges.Size() != 0)
+-      {
+-         /*
+-         for (int i = 1; i <= readedges.Size(); i+=2)
+-         {
+-         cout << "e(" << readedges.Get(i) << "," << readedges.Get(i+1) << ")" << endl;
+-         }
+-         */
+-         geo->AddEdges(readedges);
+-      }
+-
+-      if (geo->GetStatus() == STLTopology::STL_GOOD || geo->GetStatus() == STLTopology::STL_WARNING) return NG_OK;
+-      return NG_SURFACE_INPUT_ERROR;
+-   }
+-
+-
+-
+-
+-   // automatically generates edges:
+-   DLL_HEADER Ng_Result Ng_STL_MakeEdges (Ng_STL_Geometry * geom,
+-                                          Ng_Mesh* mesh,
+-                                          Ng_Meshing_Parameters * mp)
+-   {
+-      STLGeometry* stlgeometry = (STLGeometry*)geom;
+-      Mesh* me = (Mesh*)mesh;
+-
+-      // Philippose - 27/07/2009
+-      // Do not locally re-define "mparam" here... "mparam" is a global 
+-      // object 
+-      //MeshingParameters mparam;
+-      mp->Transfer_Parameters();
+-
+-      me -> SetGlobalH (mparam.maxh);
+-      me -> SetLocalH (stlgeometry->GetBoundingBox().PMin() - Vec3d(10, 10, 10),
+-                       stlgeometry->GetBoundingBox().PMax() + Vec3d(10, 10, 10),
+-                       0.3);
+-
+-      me -> LoadLocalMeshSize (mp->meshsize_filename);
+-      /*
+-      if (mp->meshsize_filename)
+-      {
+-      ifstream infile (mp->meshsize_filename);
+-      if (!infile.good()) return NG_FILE_NOT_FOUND;
+-      me -> LoadLocalMeshSize (infile);
+-      }
+-      */
+-
+-      STLMeshing (*stlgeometry, *me);
+-
+-      stlgeometry->edgesfound = 1;
+-      stlgeometry->surfacemeshed = 0;
+-      stlgeometry->surfaceoptimized = 0;
+-      stlgeometry->volumemeshed = 0;
+-
+-      return NG_OK;
+-   }
+-
+-
+-
+-
+-   // generates mesh, empty mesh be already created.
+-   DLL_HEADER Ng_Result Ng_STL_GenerateSurfaceMesh (Ng_STL_Geometry * geom,
+-                                                    Ng_Mesh* mesh,
+-                                                    Ng_Meshing_Parameters * mp)
+-   {
+-      STLGeometry* stlgeometry = (STLGeometry*)geom;
+-      Mesh* me = (Mesh*)mesh;
+-
+-      // Philippose - 27/07/2009
+-      // Do not locally re-define "mparam" here... "mparam" is a global 
+-      // object
+-      //MeshingParameters mparam;
+-      mp->Transfer_Parameters();
+-
+-
+-      /*
+-      me -> SetGlobalH (mparam.maxh);
+-      me -> SetLocalH (stlgeometry->GetBoundingBox().PMin() - Vec3d(10, 10, 10),
+-      stlgeometry->GetBoundingBox().PMax() + Vec3d(10, 10, 10),
+-      0.3);
+-      */
+-      /*
+-      STLMeshing (*stlgeometry, *me);
+-
+-      stlgeometry->edgesfound = 1;
+-      stlgeometry->surfacemeshed = 0;
+-      stlgeometry->surfaceoptimized = 0;
+-      stlgeometry->volumemeshed = 0;
+-      */  
+-      int retval = STLSurfaceMeshing (*stlgeometry, *me);
+-      if (retval == MESHING3_OK)
+-      {
+-         (*mycout) << "Success !!!!" << endl;
+-         stlgeometry->surfacemeshed = 1;
+-         stlgeometry->surfaceoptimized = 0;
+-         stlgeometry->volumemeshed = 0;
+-      } 
+-      else if (retval == MESHING3_OUTERSTEPSEXCEEDED)
+-      {
+-         (*mycout) << "ERROR: Give up because of too many trials. Meshing aborted!" << endl;
+-      }
+-      else if (retval == MESHING3_TERMINATE)
+-      {
+-         (*mycout) << "Meshing Stopped!" << endl;
+-      }
+-      else
+-      {
+-         (*mycout) << "ERROR: Surface meshing not successful. Meshing aborted!" << endl;
+-      }
+-
+-
+-      STLSurfaceOptimization (*stlgeometry, *me, mparam);
+-
+-      return NG_OK;
+-   }
+-
+-
+-
+-
+-   // fills STL Geometry
+-   // positive orientation
+-   // normal vector may be null-pointer
+-   DLL_HEADER void Ng_STL_AddTriangle (Ng_STL_Geometry * geom, 
+-                                       double * p1, double * p2, double * p3, 
+-                                       double * nv)
+-   {
+-      Point<3> apts[3];
+-      apts[0] = Point<3>(p1[0],p1[1],p1[2]);
+-      apts[1] = Point<3>(p2[0],p2[1],p2[2]);
+-      apts[2] = Point<3>(p3[0],p3[1],p3[2]);
+-
+-      Vec<3> n;
+-      if (!nv)
+-         n = Cross (apts[0]-apts[1], apts[0]-apts[2]);
+-      else
+-         n = Vec<3>(nv[0],nv[1],nv[2]);
+-
+-      readtrias.Append(STLReadTriangle(apts,n));
+-   }
+-
+-   // add (optional) edges:
+-   DLL_HEADER void Ng_STL_AddEdge (Ng_STL_Geometry * geom, 
+-      double * p1, double * p2)
+-   {
+-      readedges.Append(Point3d(p1[0],p1[1],p1[2]));
+-      readedges.Append(Point3d(p2[0],p2[1],p2[2]));
+-   }
+-
+-
+-
+-
+-#ifdef OCCGEOMETRY
+-   // --------------------- OCC Geometry / Meshing Utility Functions -------------------
+-   // Create new OCC Geometry Object
+-   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_NewGeometry ()
+-   {
+-      return (Ng_OCC_Geometry*)(void*)new OCCGeometry;
+-   } 
+-
+-
+-
+-
+-   // Delete the OCC Geometry Object
+-   DLL_HEADER Ng_Result Ng_OCC_DeleteGeometry(Ng_OCC_Geometry * geom)
+-   {
+-      if (geom != NULL)
+-      {
+-         delete (OCCGeometry*)geom;
+-         geom = NULL;
+-         return NG_OK;
+-      }
+-      
+-      return NG_ERROR;
+-   }
+-
+-
+-
+-   
+-   // Loads geometry from STEP File
+-   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename)
+-   {
+-      // Call the STEP File Load function. Note.. the geometry class 
+-      // is created and instantiated within the load function
+-      OCCGeometry * occgeo = LoadOCC_STEP(filename);
+-
+-      return ((Ng_OCC_Geometry *)occgeo);
+-   }
+-
+-
+-
+-   
+-   // Loads geometry from IGES File
+-   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename)
+-   {
+-      // Call the IGES File Load function. Note.. the geometry class 
+-      // is created and instantiated within the load function
+-      OCCGeometry * occgeo = LoadOCC_IGES(filename);
+-
+-      return ((Ng_OCC_Geometry *)occgeo);
+-   }
+-
+-
+-
+-   
+-   // Loads geometry from BREP File
+-   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename)
+-   {
+-      // Call the BREP File Load function. Note.. the geometry class 
+-      // is created and instantiated within the load function
+-      OCCGeometry * occgeo = LoadOCC_BREP(filename);
+-
+-      return ((Ng_OCC_Geometry *)occgeo);
+-   }
+-
+-
+-
+-
+-   // Locally limit the size of the mesh to be generated at various points 
+-   // based on the topology of the geometry
+-   DLL_HEADER Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
+-                                                 Ng_Mesh * mesh,
+-                                                 Ng_Meshing_Parameters * mp)
+-   {
+-      OCCGeometry * occgeom = (OCCGeometry*)geom;
+-      Mesh * me = (Mesh*)mesh;
+-
+-      me->geomtype = Mesh::GEOM_OCC;
+-
+-      mp->Transfer_Parameters();
+-      
+-      occparam.resthcloseedgeenable = mp->closeedgeenable;
+-      occparam.resthcloseedgefac = mp->closeedgefact;
+-
+-      // Delete the mesh structures in order to start with a clean 
+-      // slate
+-      me->DeleteMesh();
+-
+-      OCCSetLocalMeshSize(*occgeom, *me);
+-
+-      return(NG_OK);
+-   }
+-
+-
+-
+-   
+-   // Mesh the edges and add Face descriptors to prepare for surface meshing
+-   DLL_HEADER Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
+-                                                 Ng_Mesh * mesh,
+-                                                 Ng_Meshing_Parameters * mp)
+-   {
+-      OCCGeometry * occgeom = (OCCGeometry*)geom;
+-      Mesh * me = (Mesh*)mesh;
+-
+-      mp->Transfer_Parameters();
+-
+-      OCCFindEdges(*occgeom, *me);
+-
+-      if((me->GetNP()) && (me->GetNFD()))
+-      {
+-         return NG_OK;
+-      }
+-      else
+-      {
+-         return NG_ERROR;
+-      }
+-   }
+-
+-
+-
+-   
+-   // Mesh the edges and add Face descriptors to prepare for surface meshing
+-   DLL_HEADER Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
+-                                                    Ng_Mesh * mesh,
+-                                                    Ng_Meshing_Parameters * mp)
+-   {
+-      int numpoints = 0;
+-
+-      OCCGeometry * occgeom = (OCCGeometry*)geom;
+-      Mesh * me = (Mesh*)mesh;
+-
+-      // Set the internal meshing parameters structure from the nglib meshing 
+-      // parameters structure
+-      mp->Transfer_Parameters();
+-
+-
+-      // Only go into surface meshing if the face descriptors have already been added
+-      if(!me->GetNFD())
+-         return NG_ERROR;
+-
+-      numpoints = me->GetNP();
+-
+-      // Initially set up only for surface meshing without any optimisation
+-      int perfstepsend = MESHCONST_MESHSURFACE;
+-
+-      // Check and if required, enable surface mesh optimisation step
+-      if(mp->optsurfmeshenable)
+-      {
+-         perfstepsend = MESHCONST_OPTSURFACE;
+-      }
+-
+-      OCCMeshSurface(*occgeom, *me, perfstepsend);
+-
+-      me->CalcSurfacesOfNode();
+-      
+-      if(me->GetNP() <= numpoints)
+-         return NG_ERROR;
+-
+-      if(me->GetNSE() <= 0)
+-         return NG_ERROR;
+-
+-      return NG_OK;
+-   }
+-
+-
+-
+-
+-   // Extract the face map from the OCC geometry
+-   // The face map basically gives an index to each face in the geometry, 
+-   // which can be used to access a specific face
+-   DLL_HEADER Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom, 
+-                                       Ng_OCC_TopTools_IndexedMapOfShape * FMap)
+-   {
+-      OCCGeometry* occgeom = (OCCGeometry*)geom;
+-      TopTools_IndexedMapOfShape *occfmap = (TopTools_IndexedMapOfShape *)FMap;
+-
+-      // Copy the face map from the geometry to the given variable
+-      occfmap->Assign(occgeom->fmap);
+-
+-      if(occfmap->Extent())
+-      {
+-         return NG_OK;
+-      }
+-      else
+-      {
+-         return NG_ERROR;
+-      }
+-   }
+-
+-   // ------------------ End - OCC Geometry / Meshing Utility Functions ----------------
+-#endif
+-
+-
+-
+-
+-   // ------------------ Begin - Meshing Parameters related functions ------------------
+-   // Constructor for the local nglib meshing parameters class
+-   DLL_HEADER Ng_Meshing_Parameters :: Ng_Meshing_Parameters()
+-   {
+-      uselocalh = 1;
+-
+-      maxh = 1000;
+-      minh = 0.0;
+-
+-      fineness = 0.5;
+-      grading = 0.3;
+-
+-      elementsperedge = 2.0;
+-      elementspercurve = 2.0;
+-
+-      closeedgeenable = 0;
+-      closeedgefact = 2.0;
+-
+-        minedgelenenable = 0;
+-        minedgelen = 1e-4;
+-
+-      second_order = 0;
+-      quad_dominated = 0;
+-
+-      meshsize_filename = 0;
+-
+-      optsurfmeshenable = 1;
+-      optvolmeshenable = 1;
+-
+-      optsteps_2d = 3;
+-      optsteps_3d = 3;
+-
+-      invert_tets = 0;
+-      invert_trigs = 0;
+-
+-      check_overlap = 1;
+-      check_overlapping_boundary = 1;
+-   }
+-
+-
+-
+-
+-   // Reset the local meshing parameters to the default values
+-   DLL_HEADER void Ng_Meshing_Parameters :: Reset_Parameters()
+-   {
+-      uselocalh = 1;
+-
+-      maxh = 1000;
+-      minh = 0;
+-
+-      fineness = 0.5;
+-      grading = 0.3;
+-
+-      elementsperedge = 2.0;
+-      elementspercurve = 2.0;
+-
+-      closeedgeenable = 0;
+-      closeedgefact = 2.0;
+-
+-        minedgelenenable = 0;
+-        minedgelen = 1e-4;
+-
+-      second_order = 0;
+-      quad_dominated = 0;
+-
+-      meshsize_filename = 0;
+-
+-      optsurfmeshenable = 1;
+-      optvolmeshenable = 1;
+-
+-      optsteps_2d = 3;
+-      optsteps_3d = 3;
+-
+-      invert_tets = 0;
+-      invert_trigs = 0;
+-
+-      check_overlap = 1;
+-      check_overlapping_boundary = 1;
+-   }
+-
+-
+-
+-
+-   // 
+-   DLL_HEADER void Ng_Meshing_Parameters :: Transfer_Parameters()
+-   {
+-      mparam.uselocalh = uselocalh;
+-      
+-      mparam.maxh = maxh;
+-      mparam.minh = minh;
+-
+-      mparam.grading = grading;
+-      mparam.curvaturesafety = elementspercurve;
+-      mparam.segmentsperedge = elementsperedge;
+-
+-      mparam.secondorder = second_order;
+-      mparam.quad = quad_dominated;
+-
+-      mparam.meshsizefilename = meshsize_filename;
+-
+-      mparam.optsteps2d = optsteps_2d;
+-      mparam.optsteps3d = optsteps_3d;
+-
+-      mparam.inverttets = invert_tets;
+-      mparam.inverttrigs = invert_trigs;
+-
+-      mparam.checkoverlap = check_overlap;
+-      mparam.checkoverlappingboundary = check_overlapping_boundary;
+-   }
+-   // ------------------ End - Meshing Parameters related functions --------------------
+-
+-
+-
+-
+-   // ------------------ Begin - Second Order Mesh generation functions ----------------
+-   DLL_HEADER void Ng_Generate_SecondOrder(Ng_Mesh * mesh)
+-   {
+-      Refinement ref;
+-      ref.MakeSecondOrder(*(Mesh*) mesh);
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_2D_Generate_SecondOrder(Ng_Geometry_2D * geom,
+-                                        Ng_Mesh * mesh)
+-   {
+-      ( (SplineGeometry2d*)geom ) -> GetRefinement().MakeSecondOrder( * (Mesh*) mesh );
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_STL_Generate_SecondOrder(Ng_STL_Geometry * geom,
+-                                         Ng_Mesh * mesh)
+-   {
+-      ((STLGeometry*)geom)->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_CSG_Generate_SecondOrder (Ng_CSG_Geometry * geom,
+-                                         Ng_Mesh * mesh)
+-   {
+-      ((CSGeometry*)geom)->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
+-   }
+-
+-
+-
+-
+-#ifdef OCCGEOMETRY
+-   DLL_HEADER void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
+-                  Ng_Mesh * mesh)
+-   {
+-      ((OCCGeometry*)geom )->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
+-   }
+-#endif
+-   // ------------------ End - Second Order Mesh generation functions ------------------
+-
+-
+-
+-
+-   // ------------------ Begin - Uniform Mesh Refinement functions ---------------------
+-   DLL_HEADER void Ng_Uniform_Refinement (Ng_Mesh * mesh)
+-   {
+-      Refinement ref;
+-      ref.Refine ( * (Mesh*) mesh );
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_2D_Uniform_Refinement (Ng_Geometry_2D * geom,
+-      Ng_Mesh * mesh)
+-   {
+-      ( (SplineGeometry2d*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_STL_Uniform_Refinement (Ng_STL_Geometry * geom,
+-      Ng_Mesh * mesh)
+-   {
+-      ( (STLGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
+-   }
+-
+-
+-
+-
+-   DLL_HEADER void Ng_CSG_Uniform_Refinement (Ng_CSG_Geometry * geom,
+-      Ng_Mesh * mesh)
+-   {
+-      ( (CSGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
+-   }
+-
+-
+-
+-
+-#ifdef OCCGEOMETRY
+-   DLL_HEADER void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
+-      Ng_Mesh * mesh)
+-   {
+-      ( (OCCGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
+-   }
+-#endif
+-   // ------------------ End - Uniform Mesh Refinement functions -----------------------
+-} // End of namespace nglib
+-
+-
+-
+-
+-// compatibility functions:
+-namespace netgen 
+-{
+-   char geomfilename[255];
+-
+-   DLL_HEADER void MyError (const char * ch)
+-   {
+-      cerr << ch;
+-   }
+-
+-
+-
+-
+-   //Destination for messages, errors, ...
+-   DLL_HEADER void Ng_PrintDest(const char * s)
+-   {
+-#ifdef PARALLEL
+-     int id = 0;
+-     MPI_Comm_rank(MPI_COMM_WORLD, &id);
+-     if (id != 0) return;
+-#endif
+-     (*mycout) << s << flush;
+-   }
+-
+-
+-
+-
+-   DLL_HEADER double GetTime ()
+-   {
+-      return 0;
+-   }
+-
+-
+-
+-
+-   void ResetTime ()
+-   {
+-      ;
+-   }
+-
+-
+-
+-
+-   void MyBeep (int i)
+-   {
+-      ;
+-   }
+-
+-
+-
+-
+-   void Render()
+-   {
+-      ; 
+-   }
+-} // End of namespace netgen
+-
+-
+-
+-
+-void Ng_Redraw () { ; }
+-void Ng_ClearSolutionData () { ; }
+-void Ng_SetSolutionData (Ng_SolutionData * soldata) 
+-{ 
+-  delete soldata->solclass;
+-}
+-void Ng_InitSolutionData (Ng_SolutionData * soldata) { ; }
+-
+-
++/**************************************************************************/
++/* File:   nglib.cpp                                                      */
++/* Author: Joachim Schoeberl                                              */
++/* Date:   7. May. 2000                                                   */
++/**************************************************************************/
++
++/*
++  
++  Interface to the netgen meshing kernel
++  
++*/
++#include <mystdlib.h>
++#include <myadt.hpp>
++
++#include <linalg.hpp>
++#include <csg.hpp>
++#include <stlgeom.hpp>
++#include <geometry2d.hpp>
++#include <meshing.hpp>
++#include <../visualization/soldata.hpp>
++
++#ifdef OCCGEOMETRY
++#include <occgeom.hpp>
++#endif
++
++#include <nginterface.h>
++
++
++namespace netgen {
++   extern void MeshFromSpline2D (SplineGeometry2d & geometry,
++                                 Mesh *& mesh, 
++                                 MeshingParameters & mp);
++}
++
++
++
++#ifdef PARALLEL
++#include <mpi.h>
++
++namespace netgen
++{
++  // int id = 0, ntasks = 1;
++  MPI_Comm mesh_comm;
++}
++#endif
++
++
++namespace netgen
++{
++  int id = 0, ntasks = 1;
++}
++
++
++
++/*
++// should not be needed (occ currently requires it)
++namespace netgen {
++#include "../libsrc/visualization/vispar.hpp"
++  VisualizationParameters vispar;
++  VisualizationParameters :: VisualizationParameters() { ; }
++}
++*/
++
++
++namespace nglib {
++#include "nglib.h"
++}
++
++using namespace netgen;
++using namespace std;
++// constants and types:
++
++namespace nglib
++{
++   // initialize, deconstruct Netgen library:
++   DLL_HEADER void Ng_Init ()
++   {
++      mycout = &std::cout;
++      myerr = &cerr;
++      // netgen::testout->SetOutStream (new ofstream ("test.out"));
++      testout = new ofstream ("test.out");
++   }
++
++
++
++
++   // Clean-up functions before ending usage of nglib
++   DLL_HEADER void Ng_Exit ()
++   {
++       delete testout;
++       testout = 0;
++   }
++
++
++
++
++   // Create a new netgen mesh object
++   DLL_HEADER Ng_Mesh * Ng_NewMesh ()
++   {
++      Mesh * mesh = new Mesh;  
++      mesh->AddFaceDescriptor (FaceDescriptor (1, 1, 0, 1));
++      return (Ng_Mesh*)(void*)mesh;
++   }
++
++
++
++
++   // Delete an existing netgen mesh object
++   DLL_HEADER void Ng_DeleteMesh (Ng_Mesh * mesh)
++   {
++      if(mesh != NULL)
++      {
++         // Delete the Mesh structures
++         ((Mesh*)mesh)->DeleteMesh();
++
++         // Now delete the Mesh class itself
++         delete (Mesh*)mesh;
++
++         // Set the Ng_Mesh pointer to NULL
++         mesh = NULL;
++      }
++   }
++
++
++
++
++   // Save a netgen mesh in the native VOL format 
++   DLL_HEADER void Ng_SaveMesh(Ng_Mesh * mesh, const char* filename)
++   {
++      ((Mesh*)mesh)->Save(filename);
++   }
++
++
++
++
++   // Load a netgen native VOL mesh from a given file
++   DLL_HEADER Ng_Mesh * Ng_LoadMesh(const char* filename)
++   {
++      Mesh * mesh = new Mesh;
++      mesh->Load(filename);
++      return ( (Ng_Mesh*)mesh );
++   }
++
++
++
++
++   // Merge another mesh file into the currently loaded one
++   DLL_HEADER Ng_Result Ng_MergeMesh( Ng_Mesh* mesh, const char* filename)
++   {
++      Ng_Result status = NG_OK;
++
++      ifstream infile(filename);
++      Mesh * m = (Mesh*)mesh;
++
++      if(!infile.good())
++      {
++         status = NG_FILE_NOT_FOUND;
++      }
++
++      if(!m)
++      {
++         status = NG_ERROR;
++      }
++
++      if(status == NG_OK)
++      {
++         const int num_pts = m->GetNP();
++         const int face_offset = m->GetNFD();
++
++         m->Merge(infile, face_offset);
++
++         if(m->GetNP() > num_pts)
++         {
++            status = NG_OK;
++         }
++         else
++         {
++            status = NG_ERROR;
++         }
++      }
++
++      return status;
++   }
++
++
++
++
++   // Merge another mesh file into the currently loaded one
++   DLL_HEADER Ng_Result Ng_MergeMesh( Ng_Mesh* mesh1, Ng_Mesh* mesh2)
++   {
++      return NG_ERROR;
++   }
++
++
++
++
++   // Manually add a point to an existing mesh object
++   DLL_HEADER void Ng_AddPoint (Ng_Mesh * mesh, double * x)
++   {
++      Mesh * m = (Mesh*)mesh;
++      m->AddPoint (Point3d (x[0], x[1], x[2]));
++   }
++
++
++
++
++   // Manually add a surface element of a given type to an existing mesh object
++   DLL_HEADER void Ng_AddSurfaceElement (Ng_Mesh * mesh, Ng_Surface_Element_Type et,
++                                         int * pi)
++   {
++      Mesh * m = (Mesh*)mesh;
++      Element2d el (3);
++      el.SetIndex (1);
++      el.PNum(1) = pi[0];
++      el.PNum(2) = pi[1];
++      el.PNum(3) = pi[2];
++      m->AddSurfaceElement (el);
++   }
++
++
++
++
++   // Manually add a volume element of a given type to an existing mesh object
++   DLL_HEADER void Ng_AddVolumeElement (Ng_Mesh * mesh, Ng_Volume_Element_Type et,
++                                        int * pi)
++   {
++      Mesh * m = (Mesh*)mesh;
++      Element el (4);
++      el.SetIndex (1);
++      el.PNum(1) = pi[0];
++      el.PNum(2) = pi[1];
++      el.PNum(3) = pi[2];
++      el.PNum(4) = pi[3];
++      m->AddVolumeElement (el);
++   }
++
++
++
++
++   // Obtain the number of points in the mesh
++   DLL_HEADER int Ng_GetNP (Ng_Mesh * mesh)
++   {
++      return ((Mesh*)mesh) -> GetNP();
++   }
++
++
++
++
++   // Obtain the number of surface elements in the mesh
++   DLL_HEADER int Ng_GetNSE (Ng_Mesh * mesh)
++   {
++      return ((Mesh*)mesh) -> GetNSE();
++   }
++
++
++
++
++   // Obtain the number of volume elements in the mesh
++   DLL_HEADER int Ng_GetNE (Ng_Mesh * mesh)
++   {
++      return ((Mesh*)mesh) -> GetNE();
++   }
++
++
++
++
++   //  Return point coordinates of a given point index in the mesh
++   DLL_HEADER void Ng_GetPoint (Ng_Mesh * mesh, int num, double * x)
++   {
++      const Point3d & p = ((Mesh*)mesh)->Point(num);
++      x[0] = p.X();
++      x[1] = p.Y();
++      x[2] = p.Z();
++   }
++
++
++
++
++   // Return the surface element at a given index "pi"
++   DLL_HEADER Ng_Surface_Element_Type 
++      Ng_GetSurfaceElement (Ng_Mesh * mesh, int num, int * pi)
++   {
++      const Element2d & el = ((Mesh*)mesh)->SurfaceElement(num);
++      for (int i = 1; i <= el.GetNP(); i++)
++         pi[i-1] = el.PNum(i);
++      Ng_Surface_Element_Type et;
++      switch (el.GetNP())
++      {
++      case 3: et = NG_TRIG; break;
++      case 4: et = NG_QUAD; break;
++      case 6: 
++         switch (el.GetNV())
++         {
++         case 3: et = NG_TRIG6; break;
++         case 4: et = NG_QUAD6; break;
++         default:
++            et = NG_TRIG6; break;
++         }
++         break;
++      case 8: et = NG_QUAD8; break;
++      default:
++         et = NG_TRIG; break; // for the compiler
++      }
++      return et;
++   }
++
++
++
++
++   // Return the volume element at a given index "pi"
++   DLL_HEADER Ng_Volume_Element_Type
++      Ng_GetVolumeElement (Ng_Mesh * mesh, int num, int * pi)
++   {
++      const Element & el = ((Mesh*)mesh)->VolumeElement(num);
++      for (int i = 1; i <= el.GetNP(); i++)
++         pi[i-1] = el.PNum(i);
++      Ng_Volume_Element_Type et;
++      switch (el.GetNP())
++      {
++      case 4: et = NG_TET; break;
++      case 5: et = NG_PYRAMID; break;
++      case 6: et = NG_PRISM; break;
++      case 10: et = NG_TET10; break;
++      default:
++         et = NG_TET; break; // for the compiler
++      }
++      return et;
++   }
++
++
++
++
++   // Set a global limit on the maximum mesh size allowed
++   DLL_HEADER void Ng_RestrictMeshSizeGlobal (Ng_Mesh * mesh, double h)
++   {
++      ((Mesh*)mesh) -> SetGlobalH (h);
++   }
++
++
++
++
++   // Set a local limit on the maximum mesh size allowed around the given point
++   DLL_HEADER void Ng_RestrictMeshSizePoint (Ng_Mesh * mesh, double * p, double h)
++   {
++      ((Mesh*)mesh) -> RestrictLocalH (Point3d (p[0], p[1], p[2]), h);
++   }
++
++
++
++
++   // Set a local limit on the maximum mesh size allowed within a given box region
++   DLL_HEADER void Ng_RestrictMeshSizeBox (Ng_Mesh * mesh, double * pmin, double * pmax, double h)
++   {
++      for (double x = pmin[0]; x < pmax[0]; x += h)
++         for (double y = pmin[1]; y < pmax[1]; y += h)
++            for (double z = pmin[2]; z < pmax[2]; z += h)
++               ((Mesh*)mesh) -> RestrictLocalH (Point3d (x, y, z), h);
++   }
++
++
++
++
++   // Generates volume mesh from an existing surface mesh
++   DLL_HEADER Ng_Result Ng_GenerateVolumeMesh (Ng_Mesh * mesh, Ng_Meshing_Parameters * mp)
++   {
++      Mesh * m = (Mesh*)mesh;
++
++      // Philippose - 30/08/2009
++      // Do not locally re-define "mparam" here... "mparam" is a global 
++      // object 
++      //MeshingParameters mparam;
++      mp->Transfer_Parameters();
++
++      m->CalcLocalH(mparam.grading);
++
++      MeshVolume (mparam, *m);
++      RemoveIllegalElements (*m);
++      OptimizeVolume (mparam, *m);
++
++      return NG_OK;
++   }
++
++
++
++
++   /* ------------------ 2D Meshing Functions ------------------------- */
++   DLL_HEADER void Ng_AddPoint_2D (Ng_Mesh * mesh, double * x)
++   {
++      Mesh * m = (Mesh*)mesh;
++
++      m->AddPoint (Point3d (x[0], x[1], 0));
++   }
++
++
++
++
++   DLL_HEADER void Ng_AddBoundarySeg_2D (Ng_Mesh * mesh, int pi1, int pi2)
++   {
++      Mesh * m = (Mesh*)mesh;
++
++      Segment seg;
++      seg[0] = pi1;
++      seg[1] = pi2;
++      m->AddSegment (seg);
++   }
++
++
++
++
++   DLL_HEADER int Ng_GetNP_2D (Ng_Mesh * mesh)
++   {
++      Mesh * m = (Mesh*)mesh;
++      return m->GetNP();
++   }
++
++
++
++
++   DLL_HEADER int Ng_GetNE_2D (Ng_Mesh * mesh)
++   {
++      Mesh * m = (Mesh*)mesh;
++      return m->GetNSE();
++   }
++
++
++
++
++   DLL_HEADER int Ng_GetNSeg_2D (Ng_Mesh * mesh)
++   {
++      Mesh * m = (Mesh*)mesh;
++      return m->GetNSeg();
++   }
++
++
++
++
++   DLL_HEADER void Ng_GetPoint_2D (Ng_Mesh * mesh, int num, double * x)
++   {
++      Mesh * m = (Mesh*)mesh;
++
++      Point<3> & p = m->Point(num);
++      x[0] = p(0);
++      x[1] = p(1);
++   }
++
++
++
++
++   DLL_HEADER Ng_Surface_Element_Type
++      Ng_GetElement_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum)
++   {
++      const Element2d & el = ((Mesh*)mesh)->SurfaceElement(num);
++      for (int i = 1; i <= el.GetNP(); i++)
++         pi[i-1] = el.PNum(i);
++
++      Ng_Surface_Element_Type et;
++      switch (el.GetNP())
++      {
++      case 3: et = NG_TRIG; break;
++      case 4: et = NG_QUAD; break;
++      case 6: 
++         switch (el.GetNV())
++         {
++         case 3: et = NG_TRIG6; break;
++         case 4: et = NG_QUAD6; break;
++         default:
++            et = NG_TRIG6; break;
++         }
++         break;
++      case 8: et = NG_QUAD8; break;
++      default:
++         et = NG_TRIG; break; // for the compiler
++      }
++
++      if (matnum)
++         *matnum = el.GetIndex();
++
++      return et;
++   }
++
++
++
++
++   DLL_HEADER void Ng_GetSegment_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum)
++   {
++      const Segment & seg = ((Mesh*)mesh)->LineSegment(num);
++      pi[0] = seg[0];
++      pi[1] = seg[1];
++
++      if (matnum)
++         *matnum = seg.edgenr;
++   }
++
++
++
++
++   DLL_HEADER Ng_Geometry_2D * Ng_LoadGeometry_2D (const char * filename)
++   {
++      SplineGeometry2d * geom = new SplineGeometry2d();
++      geom -> Load (filename);
++      return (Ng_Geometry_2D *)geom;
++   }
++
++
++
++
++   DLL_HEADER Ng_Result Ng_GenerateMesh_2D (Ng_Geometry_2D * geom,
++                                            Ng_Mesh ** mesh,
++                                            Ng_Meshing_Parameters * mp)
++   {
++      // use global variable mparam
++      //  MeshingParameters mparam;  
++      mp->Transfer_Parameters();
++
++      Mesh * m;
++      MeshFromSpline2D (*(SplineGeometry2d*)geom, m, mparam);
++
++      std::cout << m->GetNSE() << " elements, " << m->GetNP() << " points" << std::endl;
++
++      *mesh = (Ng_Mesh*)m;
++      return NG_OK;
++   }
++
++
++
++
++   DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
++      Ng_Mesh * mesh,
++      int levels)
++   {
++      Refinement2d ref(*(SplineGeometry2d*)geom);
++      HPRefinement (*(Mesh*)mesh, &ref, levels);
++   }
++
++
++
++
++   DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
++      Ng_Mesh * mesh,
++      int levels, double parameter)
++   {
++      Refinement2d ref(*(SplineGeometry2d*)geom);
++      HPRefinement (*(Mesh*)mesh, &ref, levels, parameter);
++   }
++
++
++
++
++   Array<STLReadTriangle> readtrias; //only before initstlgeometry
++   Array<Point<3> > readedges; //only before init stlgeometry
++
++   // loads geometry from STL file
++   DLL_HEADER Ng_STL_Geometry * Ng_STL_LoadGeometry (const char * filename, int binary)
++   {
++      int i;
++      STLGeometry geom;
++      STLGeometry* geo;
++      ifstream ist(filename);
++
++      if (binary)
++      {
++         geo = geom.LoadBinary(ist);
++      }
++      else
++      {
++         geo = geom.Load(ist);
++      }
++
++      readtrias.SetSize(0);
++      readedges.SetSize(0);
++
++      Point3d p;
++      Vec3d normal;
++      double p1[3];
++      double p2[3];
++      double p3[3];
++      double n[3];
++
++      Ng_STL_Geometry * geo2 = Ng_STL_NewGeometry();
++
++      for (i = 1; i <= geo->GetNT(); i++)
++      {
++         const STLTriangle& t = geo->GetTriangle(i);
++         p = geo->GetPoint(t.PNum(1));
++         p1[0] = p.X(); p1[1] = p.Y(); p1[2] = p.Z(); 
++         p = geo->GetPoint(t.PNum(2));
++         p2[0] = p.X(); p2[1] = p.Y(); p2[2] = p.Z(); 
++         p = geo->GetPoint(t.PNum(3));
++         p3[0] = p.X(); p3[1] = p.Y(); p3[2] = p.Z();
++         normal = t.Normal();
++         n[0] = normal.X(); n[1] = normal.Y(); n[2] = normal.Z();
++
++         Ng_STL_AddTriangle(geo2, p1, p2, p3, n);
++      }
++
++      return geo2;
++   }
++
++
++
++
++   // generate new STL Geometry
++   DLL_HEADER Ng_STL_Geometry * Ng_STL_NewGeometry ()
++   {
++      return (Ng_STL_Geometry*)(void*)new STLGeometry;
++   } 
++
++
++
++
++   // after adding triangles (and edges) initialize
++   DLL_HEADER Ng_Result Ng_STL_InitSTLGeometry (Ng_STL_Geometry * geom)
++   {
++      STLGeometry* geo = (STLGeometry*)geom;
++      geo->InitSTLGeometry(readtrias);
++      readtrias.SetSize(0);
++
++      if (readedges.Size() != 0)
++      {
++         /*
++         for (int i = 1; i <= readedges.Size(); i+=2)
++         {
++         cout << "e(" << readedges.Get(i) << "," << readedges.Get(i+1) << ")" << endl;
++         }
++         */
++         geo->AddEdges(readedges);
++      }
++
++      if (geo->GetStatus() == STLTopology::STL_GOOD || geo->GetStatus() == STLTopology::STL_WARNING) return NG_OK;
++      return NG_SURFACE_INPUT_ERROR;
++   }
++
++
++
++
++   // automatically generates edges:
++   DLL_HEADER Ng_Result Ng_STL_MakeEdges (Ng_STL_Geometry * geom,
++                                          Ng_Mesh* mesh,
++                                          Ng_Meshing_Parameters * mp)
++   {
++      STLGeometry* stlgeometry = (STLGeometry*)geom;
++      Mesh* me = (Mesh*)mesh;
++
++      // Philippose - 27/07/2009
++      // Do not locally re-define "mparam" here... "mparam" is a global 
++      // object 
++      //MeshingParameters mparam;
++      mp->Transfer_Parameters();
++
++      me -> SetGlobalH (mparam.maxh);
++      me -> SetLocalH (stlgeometry->GetBoundingBox().PMin() - Vec3d(10, 10, 10),
++                       stlgeometry->GetBoundingBox().PMax() + Vec3d(10, 10, 10),
++                       0.3);
++
++      me -> LoadLocalMeshSize (mp->meshsize_filename);
++      /*
++      if (mp->meshsize_filename)
++      {
++      ifstream infile (mp->meshsize_filename);
++      if (!infile.good()) return NG_FILE_NOT_FOUND;
++      me -> LoadLocalMeshSize (infile);
++      }
++      */
++
++      STLMeshing (*stlgeometry, *me);
++
++      stlgeometry->edgesfound = 1;
++      stlgeometry->surfacemeshed = 0;
++      stlgeometry->surfaceoptimized = 0;
++      stlgeometry->volumemeshed = 0;
++
++      return NG_OK;
++   }
++
++
++
++
++   // generates mesh, empty mesh be already created.
++   DLL_HEADER Ng_Result Ng_STL_GenerateSurfaceMesh (Ng_STL_Geometry * geom,
++                                                    Ng_Mesh* mesh,
++                                                    Ng_Meshing_Parameters * mp)
++   {
++      STLGeometry* stlgeometry = (STLGeometry*)geom;
++      Mesh* me = (Mesh*)mesh;
++
++      // Philippose - 27/07/2009
++      // Do not locally re-define "mparam" here... "mparam" is a global 
++      // object
++      //MeshingParameters mparam;
++      mp->Transfer_Parameters();
++
++
++      /*
++      me -> SetGlobalH (mparam.maxh);
++      me -> SetLocalH (stlgeometry->GetBoundingBox().PMin() - Vec3d(10, 10, 10),
++      stlgeometry->GetBoundingBox().PMax() + Vec3d(10, 10, 10),
++      0.3);
++      */
++      /*
++      STLMeshing (*stlgeometry, *me);
++
++      stlgeometry->edgesfound = 1;
++      stlgeometry->surfacemeshed = 0;
++      stlgeometry->surfaceoptimized = 0;
++      stlgeometry->volumemeshed = 0;
++      */  
++      int retval = STLSurfaceMeshing (*stlgeometry, *me);
++      if (retval == MESHING3_OK)
++      {
++         (*mycout) << "Success !!!!" << std::endl;
++         stlgeometry->surfacemeshed = 1;
++         stlgeometry->surfaceoptimized = 0;
++         stlgeometry->volumemeshed = 0;
++      } 
++      else if (retval == MESHING3_OUTERSTEPSEXCEEDED)
++      {
++         (*mycout) << "ERROR: Give up because of too many trials. Meshing aborted!" << std::endl;
++      }
++      else if (retval == MESHING3_TERMINATE)
++      {
++         (*mycout) << "Meshing Stopped!" << std::endl;
++      }
++      else
++      {
++         (*mycout) << "ERROR: Surface meshing not successful. Meshing aborted!" << std::endl;
++      }
++
++
++      STLSurfaceOptimization (*stlgeometry, *me, mparam);
++
++      return NG_OK;
++   }
++
++
++
++
++   // fills STL Geometry
++   // positive orientation
++   // normal vector may be null-pointer
++   DLL_HEADER void Ng_STL_AddTriangle (Ng_STL_Geometry * geom, 
++                                       double * p1, double * p2, double * p3, 
++                                       double * nv)
++   {
++      Point<3> apts[3];
++      apts[0] = Point<3>(p1[0],p1[1],p1[2]);
++      apts[1] = Point<3>(p2[0],p2[1],p2[2]);
++      apts[2] = Point<3>(p3[0],p3[1],p3[2]);
++
++      Vec<3> n;
++      if (!nv)
++         n = Cross (apts[0]-apts[1], apts[0]-apts[2]);
++      else
++         n = Vec<3>(nv[0],nv[1],nv[2]);
++
++      readtrias.Append(STLReadTriangle(apts,n));
++   }
++
++   // add (optional) edges:
++   DLL_HEADER void Ng_STL_AddEdge (Ng_STL_Geometry * geom, 
++      double * p1, double * p2)
++   {
++      readedges.Append(Point3d(p1[0],p1[1],p1[2]));
++      readedges.Append(Point3d(p2[0],p2[1],p2[2]));
++   }
++
++
++
++
++#ifdef OCCGEOMETRY
++   // --------------------- OCC Geometry / Meshing Utility Functions -------------------
++   // Create new OCC Geometry Object
++   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_NewGeometry ()
++   {
++      return (Ng_OCC_Geometry*)(void*)new OCCGeometry;
++   } 
++
++
++
++
++   // Delete the OCC Geometry Object
++   DLL_HEADER Ng_Result Ng_OCC_DeleteGeometry(Ng_OCC_Geometry * geom)
++   {
++      if (geom != NULL)
++      {
++         delete (OCCGeometry*)geom;
++         geom = NULL;
++         return NG_OK;
++      }
++      
++      return NG_ERROR;
++   }
++
++
++
++   
++   // Loads geometry from STEP File
++   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename)
++   {
++      // Call the STEP File Load function. Note.. the geometry class 
++      // is created and instantiated within the load function
++      OCCGeometry * occgeo = LoadOCC_STEP(filename);
++
++      return ((Ng_OCC_Geometry *)occgeo);
++   }
++
++
++
++   
++   // Loads geometry from IGES File
++   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename)
++   {
++      // Call the IGES File Load function. Note.. the geometry class 
++      // is created and instantiated within the load function
++      OCCGeometry * occgeo = LoadOCC_IGES(filename);
++
++      return ((Ng_OCC_Geometry *)occgeo);
++   }
++
++
++
++   
++   // Loads geometry from BREP File
++   DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename)
++   {
++      // Call the BREP File Load function. Note.. the geometry class 
++      // is created and instantiated within the load function
++      OCCGeometry * occgeo = LoadOCC_BREP(filename);
++
++      return ((Ng_OCC_Geometry *)occgeo);
++   }
++
++
++
++
++   // Locally limit the size of the mesh to be generated at various points 
++   // based on the topology of the geometry
++   DLL_HEADER Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
++                                                 Ng_Mesh * mesh,
++                                                 Ng_Meshing_Parameters * mp)
++   {
++      OCCGeometry * occgeom = (OCCGeometry*)geom;
++      Mesh * me = (Mesh*)mesh;
++
++      me->geomtype = Mesh::GEOM_OCC;
++
++      mp->Transfer_Parameters();
++      
++      occparam.resthcloseedgeenable = mp->closeedgeenable;
++      occparam.resthcloseedgefac = mp->closeedgefact;
++
++      // Delete the mesh structures in order to start with a clean 
++      // slate
++      me->DeleteMesh();
++
++      OCCSetLocalMeshSize(*occgeom, *me);
++
++      return(NG_OK);
++   }
++
++
++
++   
++   // Mesh the edges and add Face descriptors to prepare for surface meshing
++   DLL_HEADER Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
++                                                 Ng_Mesh * mesh,
++                                                 Ng_Meshing_Parameters * mp)
++   {
++      OCCGeometry * occgeom = (OCCGeometry*)geom;
++      Mesh * me = (Mesh*)mesh;
++
++      mp->Transfer_Parameters();
++
++      OCCFindEdges(*occgeom, *me);
++
++      if((me->GetNP()) && (me->GetNFD()))
++      {
++         return NG_OK;
++      }
++      else
++      {
++         return NG_ERROR;
++      }
++   }
++
++
++
++   
++   // Mesh the edges and add Face descriptors to prepare for surface meshing
++   DLL_HEADER Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
++                                                    Ng_Mesh * mesh,
++                                                    Ng_Meshing_Parameters * mp)
++   {
++      int numpoints = 0;
++
++      OCCGeometry * occgeom = (OCCGeometry*)geom;
++      Mesh * me = (Mesh*)mesh;
++
++      // Set the internal meshing parameters structure from the nglib meshing 
++      // parameters structure
++      mp->Transfer_Parameters();
++
++
++      // Only go into surface meshing if the face descriptors have already been added
++      if(!me->GetNFD())
++         return NG_ERROR;
++
++      numpoints = me->GetNP();
++
++      // Initially set up only for surface meshing without any optimisation
++      int perfstepsend = MESHCONST_MESHSURFACE;
++
++      // Check and if required, enable surface mesh optimisation step
++      if(mp->optsurfmeshenable)
++      {
++         perfstepsend = MESHCONST_OPTSURFACE;
++      }
++
++      OCCMeshSurface(*occgeom, *me, perfstepsend);
++
++      me->CalcSurfacesOfNode();
++      
++      if(me->GetNP() <= numpoints)
++         return NG_ERROR;
++
++      if(me->GetNSE() <= 0)
++         return NG_ERROR;
++
++      return NG_OK;
++   }
++
++
++
++
++   // Extract the face map from the OCC geometry
++   // The face map basically gives an index to each face in the geometry, 
++   // which can be used to access a specific face
++   DLL_HEADER Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom, 
++                                       Ng_OCC_TopTools_IndexedMapOfShape * FMap)
++   {
++      OCCGeometry* occgeom = (OCCGeometry*)geom;
++      TopTools_IndexedMapOfShape *occfmap = (TopTools_IndexedMapOfShape *)FMap;
++
++      // Copy the face map from the geometry to the given variable
++      occfmap->Assign(occgeom->fmap);
++
++      if(occfmap->Extent())
++      {
++         return NG_OK;
++      }
++      else
++      {
++         return NG_ERROR;
++      }
++   }
++
++   // ------------------ End - OCC Geometry / Meshing Utility Functions ----------------
++#endif
++
++
++
++
++   // ------------------ Begin - Meshing Parameters related functions ------------------
++   // Constructor for the local nglib meshing parameters class
++   DLL_HEADER Ng_Meshing_Parameters :: Ng_Meshing_Parameters()
++   {
++      uselocalh = 1;
++
++      maxh = 1000;
++      minh = 0.0;
++
++      fineness = 0.5;
++      grading = 0.3;
++
++      elementsperedge = 2.0;
++      elementspercurve = 2.0;
++
++      closeedgeenable = 0;
++      closeedgefact = 2.0;
++
++        minedgelenenable = 0;
++        minedgelen = 1e-4;
++
++      second_order = 0;
++      quad_dominated = 0;
++
++      meshsize_filename = 0;
++
++      optsurfmeshenable = 1;
++      optvolmeshenable = 1;
++
++      optsteps_2d = 3;
++      optsteps_3d = 3;
++
++      invert_tets = 0;
++      invert_trigs = 0;
++
++      check_overlap = 1;
++      check_overlapping_boundary = 1;
++   }
++
++
++
++
++   // Reset the local meshing parameters to the default values
++   DLL_HEADER void Ng_Meshing_Parameters :: Reset_Parameters()
++   {
++      uselocalh = 1;
++
++      maxh = 1000;
++      minh = 0;
++
++      fineness = 0.5;
++      grading = 0.3;
++
++      elementsperedge = 2.0;
++      elementspercurve = 2.0;
++
++      closeedgeenable = 0;
++      closeedgefact = 2.0;
++
++        minedgelenenable = 0;
++        minedgelen = 1e-4;
++
++      second_order = 0;
++      quad_dominated = 0;
++
++      meshsize_filename = 0;
++
++      optsurfmeshenable = 1;
++      optvolmeshenable = 1;
++
++      optsteps_2d = 3;
++      optsteps_3d = 3;
++
++      invert_tets = 0;
++      invert_trigs = 0;
++
++      check_overlap = 1;
++      check_overlapping_boundary = 1;
++   }
++
++
++
++
++   // 
++   DLL_HEADER void Ng_Meshing_Parameters :: Transfer_Parameters()
++   {
++      mparam.uselocalh = uselocalh;
++      
++      mparam.maxh = maxh;
++      mparam.minh = minh;
++
++      mparam.grading = grading;
++      mparam.curvaturesafety = elementspercurve;
++      mparam.segmentsperedge = elementsperedge;
++
++      mparam.secondorder = second_order;
++      mparam.quad = quad_dominated;
++
++      mparam.meshsizefilename = meshsize_filename;
++
++      mparam.optsteps2d = optsteps_2d;
++      mparam.optsteps3d = optsteps_3d;
++
++      mparam.inverttets = invert_tets;
++      mparam.inverttrigs = invert_trigs;
++
++      mparam.checkoverlap = check_overlap;
++      mparam.checkoverlappingboundary = check_overlapping_boundary;
++   }
++   // ------------------ End - Meshing Parameters related functions --------------------
++
++
++
++
++   // ------------------ Begin - Second Order Mesh generation functions ----------------
++   DLL_HEADER void Ng_Generate_SecondOrder(Ng_Mesh * mesh)
++   {
++      Refinement ref;
++      ref.MakeSecondOrder(*(Mesh*) mesh);
++   }
++
++
++
++
++   DLL_HEADER void Ng_2D_Generate_SecondOrder(Ng_Geometry_2D * geom,
++                                        Ng_Mesh * mesh)
++   {
++      ( (SplineGeometry2d*)geom ) -> GetRefinement().MakeSecondOrder( * (Mesh*) mesh );
++   }
++
++
++
++
++   DLL_HEADER void Ng_STL_Generate_SecondOrder(Ng_STL_Geometry * geom,
++                                         Ng_Mesh * mesh)
++   {
++      ((STLGeometry*)geom)->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
++   }
++
++
++
++
++   DLL_HEADER void Ng_CSG_Generate_SecondOrder (Ng_CSG_Geometry * geom,
++                                         Ng_Mesh * mesh)
++   {
++      ((CSGeometry*)geom)->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
++   }
++
++
++
++
++#ifdef OCCGEOMETRY
++   DLL_HEADER void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
++                  Ng_Mesh * mesh)
++   {
++      ((OCCGeometry*)geom )->GetRefinement().MakeSecondOrder(*(Mesh*) mesh);
++   }
++#endif
++   // ------------------ End - Second Order Mesh generation functions ------------------
++
++
++
++
++   // ------------------ Begin - Uniform Mesh Refinement functions ---------------------
++   DLL_HEADER void Ng_Uniform_Refinement (Ng_Mesh * mesh)
++   {
++      Refinement ref;
++      ref.Refine ( * (Mesh*) mesh );
++   }
++
++
++
++
++   DLL_HEADER void Ng_2D_Uniform_Refinement (Ng_Geometry_2D * geom,
++      Ng_Mesh * mesh)
++   {
++      ( (SplineGeometry2d*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
++   }
++
++
++
++
++   DLL_HEADER void Ng_STL_Uniform_Refinement (Ng_STL_Geometry * geom,
++      Ng_Mesh * mesh)
++   {
++      ( (STLGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
++   }
++
++
++
++
++   DLL_HEADER void Ng_CSG_Uniform_Refinement (Ng_CSG_Geometry * geom,
++      Ng_Mesh * mesh)
++   {
++      ( (CSGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
++   }
++
++
++
++
++#ifdef OCCGEOMETRY
++   DLL_HEADER void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
++      Ng_Mesh * mesh)
++   {
++      ( (OCCGeometry*)geom ) -> GetRefinement().Refine ( * (Mesh*) mesh );
++   }
++#endif
++   // ------------------ End - Uniform Mesh Refinement functions -----------------------
++} // End of namespace nglib
++
++
++
++
++// compatibility functions:
++namespace netgen 
++{
++   char geomfilename[255];
++
++   DLL_HEADER void MyError (const char * ch)
++   {
++      cerr << ch;
++   }
++
++
++
++
++   //Destination for messages, errors, ...
++   DLL_HEADER void Ng_PrintDest(const char * s)
++   {
++#ifdef PARALLEL
++     int id = 0;
++     MPI_Comm_rank(MPI_COMM_WORLD, &id);
++     if (id != 0) return;
++#endif
++     (*mycout) << s << std::flush;
++   }
++
++
++
++
++   DLL_HEADER double GetTime ()
++   {
++      return 0;
++   }
++
++
++
++
++   void ResetTime ()
++   {
++      ;
++   }
++
++
++
++
++   void MyBeep (int i)
++   {
++      ;
++   }
++
++
++
++
++   void Render()
++   {
++      ; 
++   }
++} // End of namespace netgen
++
++
++
++
++void Ng_Redraw () { ; }
++void Ng_ClearSolutionData () { ; }
++void Ng_SetSolutionData (Ng_SolutionData * soldata) 
++{ 
++  delete soldata->solclass;
++}
++void Ng_InitSolutionData (Ng_SolutionData * soldata) { ; }
++
++
+--- netgen_ref/nglib/nglib.h
++++ netgen/nglib/nglib.h
+@@ -1,747 +1,747 @@
+-#ifndef NGLIB
+-#define NGLIB
+-
+-/**************************************************************************/
+-/* File:   nglib.h                                                        */
+-/* Author: Joachim Schoeberl                                              */
+-/* Date:   7. May. 2000                                                   */
+-/**************************************************************************/
+-
+-/*!
+-   \file nglib.h
+-   \brief Library interface to the netgen meshing kernel
+-   \author Joachim Schoeberl
+-   \date 7. May 2000
+-
+-   This header file provides access to the core functionality of the Netgen 
+-   Mesher via a library interface, without an interactive User Interface.
+-
+-   The intention of providing these set of functions is to allow system 
+-   developers to integrate Netgen into top-level code, to act as the low 
+-   level mesh generation / optimisation kernel.  
+-*/
+-
+-// Philippose - 14.02.2009
+-// Modifications for creating a DLL in Windows
+-#ifdef WIN32
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
+-      #define DLL_HEADER   __declspec(dllexport)
+-   #else
+-      #define DLL_HEADER   __declspec(dllimport)
+-   #endif
+-#else
+-   #define DLL_HEADER 
+-#endif
+-
+-
+-
+-// ** Constants used within Netgen *********************
+-/// Maximum allowed number of nodes per volume element
+-#define NG_VOLUME_ELEMENT_MAXPOINTS 10
+-
+-/// Maximum allowed number of nodes per surface element
+-#define NG_SURFACE_ELEMENT_MAXPOINTS 8
+-
+-
+-
+-// *** Data-types for accessing Netgen functionality ***
+-/// Data type for NETGEN mesh
+-typedef void * Ng_Mesh;
+-
+-/// Data type for NETGEN CSG geometry
+-typedef void * Ng_CSG_Geometry;
+-
+-/// Data type for NETGEN 2D geometry
+-typedef void * Ng_Geometry_2D;
+-
+-/// Data type for NETGEN STL geometry
+-typedef void * Ng_STL_Geometry;
+-
+-#ifdef OCCGEOMETRY
+-/// Data type for NETGEN OpenCascade geometry
+-typedef void * Ng_OCC_Geometry;
+-typedef void * Ng_OCC_TopTools_IndexedMapOfShape;
+-#endif
+-
+-
+-// *** Special Enum types used within Netgen ***********
+-/// Currently implemented surface element types
+-enum Ng_Surface_Element_Type 
+-   { NG_TRIG = 1, NG_QUAD = 2, NG_TRIG6 = 3, NG_QUAD6 = 4, NG_QUAD8 = 5 };
+-
+-/// Currently implemented volume element types
+-enum Ng_Volume_Element_Type 
+-   { NG_TET = 1, NG_PYRAMID = 2, NG_PRISM = 3, NG_TET10 = 4 };
+-
+-/// Values returned by Netgen functions
+-enum Ng_Result 
+-   { 
+-     NG_ERROR               = -1,   
+-     NG_OK                  = 0, 
+-     NG_SURFACE_INPUT_ERROR = 1,
+-     NG_VOLUME_FAILURE      = 2, 
+-     NG_STL_INPUT_ERROR     = 3,
+-     NG_SURFACE_FAILURE     = 4,
+-     NG_FILE_NOT_FOUND      = 5 
+-   };
+-
+-
+-
+-// *** Classes required for use within Netgen **********
+-/// Netgen Meshing Parameters class
+-class Ng_Meshing_Parameters 
+-{
+-public:
+-   int uselocalh;                      //!< Switch to enable / disable usage of local mesh size modifiers
+-
+-   double maxh;                        //!< Maximum global mesh size allowed
+-   double minh;                        //!< Minimum global mesh size allowed
+-
+-   double fineness;                    //!< Mesh density: 0...1 (0 => coarse; 1 => fine)
+-   double grading;                     //!< Mesh grading: 0...1 (0 => uniform mesh; 1 => aggressive local grading)
+-
+-   double elementsperedge;             //!< Number of elements to generate per edge of the geometry
+-   double elementspercurve;            //!< Elements to generate per curvature radius
+-
+-   int closeedgeenable;                //!< Enable / Disable mesh refinement at close edges
+-   double closeedgefact;               //!< Factor to use for refinement at close edges (larger => finer)
+-
+-   int minedgelenenable;                         //!< Enable / Disable user defined minimum edge length for edge subdivision
+-   double minedgelen;                  //!< Minimum edge length to use while subdividing the edges (default = 1e-4)
+-
+-   int second_order;                   //!< Generate second-order surface and volume elements
+-   int quad_dominated;                 //!< Creates a Quad-dominated mesh 
+-
+-   char * meshsize_filename;           //!< Optional external mesh size file 
+-
+-   int optsurfmeshenable;              //!< Enable / Disable automatic surface mesh optimization
+-   int optvolmeshenable;               //!< Enable / Disable automatic volume mesh optimization
+-
+-   int optsteps_3d;                     //!< Number of optimize steps to use for 3-D mesh optimization
+-   int optsteps_2d;                     //!< Number of optimize steps to use for 2-D mesh optimization
+-
+-   // Philippose - 13/09/2010
+-   // Added a couple more parameters into the meshing parameters list 
+-   // from Netgen into Nglib
+-   int invert_tets;                    //!< Invert all the volume elements
+-   int invert_trigs;                   //!< Invert all the surface triangle elements
+-
+-   int check_overlap;                  //!< Check for overlapping surfaces during Surface meshing
+-   int check_overlapping_boundary;     //!< Check for overlapping surface elements before volume meshing
+-
+-
+-   /*!
+-      Default constructor for the Mesh Parameters class
+-
+-      Note: This constructor initialises the variables in the 
+-      class with the following default values
+-      - #uselocalh: 1
+-      - #maxh: 1000.0
+-      - #fineness: 0.5
+-      - #grading: 0.3
+-      - #elementsperedge: 2.0
+-      - #elementspercurve: 2.0
+-      - #closeedgeenable: 0
+-      - #closeedgefact: 2.0
+-      - #secondorder: 0
+-      - #meshsize_filename: null
+-      - #quad_dominated: 0
+-      - #optsurfmeshenable: 1
+-      - #optvolmeshenable: 1
+-      - #optsteps_2d: 3
+-      - #optsteps_3d: 3
+-      - #invert_tets: 0
+-      - #invert_trigs:0 
+-      - #check_overlap: 1
+-      - #check_overlapping_boundary: 1
+-   */
+-   DLL_HEADER Ng_Meshing_Parameters();
+-
+-
+-
+-   /*!
+-       Reset the meshing parameters to their defaults
+-
+-       This member function resets all the meshing parameters 
+-       of the object to the default values
+-   */
+-   DLL_HEADER void Reset_Parameters();
+-
+-
+-
+-   /*!
+-       Transfer local meshing parameters to internal meshing parameters
+-
+-       This member function transfers all the meshing parameters 
+-       defined in the local meshing parameters structure of nglib into 
+-       the internal meshing parameters structure used by the Netgen core
+-   */
+-   DLL_HEADER void Transfer_Parameters();
+-};
+-
+-
+-
+-
+-// *** Functions Exported by this Library *************
+-
+-// ------------------------------------------------------------------
+-// Netgen library initialisation / destruction functions
+-
+-/*! \brief Initialise the Netgen library and prepare for use
+-
+-    This function needs to be called by the third-party 
+-    program before beginning to use the other Netgen 
+-    specific functions.
+-*/
+-DLL_HEADER void Ng_Init ();
+-
+-
+-/*! \brief Exit the Netgen meshing kernel in a clean manner
+-
+-    Use this function to exit the meshing sub-system in 
+-    a clean and orderly manner.
+-*/
+-DLL_HEADER void Ng_Exit ();
+-  
+-
+-/*! \brief Create a new (and empty) Netgen Mesh Structure
+-
+-    This function creates a new Netgen Mesh, initialises 
+-    it, and returns a pointer to the created mesh structure. 
+-
+-    Use the returned pointer for subsequent operations 
+-    which involve mesh operations.
+-
+-    \return Ng_Mesh Pointer to a Netgen Mesh type #Ng_Mesh
+-*/
+-DLL_HEADER  Ng_Mesh * Ng_NewMesh ();
+-
+-
+-/*! \brief Delete an existing Netgen Mesh Structure
+-
+-    Use this function to delete an existing Netgen mesh 
+-    structure and release the used memory. 
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure 
+-                of type #Ng_Mesh
+-*/
+-DLL_HEADER void Ng_DeleteMesh (Ng_Mesh * mesh);
+-
+-
+-/*! \brief Save a Netgen Mesh to disk
+-
+-    This function allows a generated mesh structure to be saved 
+-    to disk.
+-
+-    A Mesh saved using this function, will be written to disk 
+-    in the Netgen VOL file format.
+-
+-    \param mesh    Pointer to an existing Netgen Mesh structure 
+-                   of type #Ng_Mesh
+-    \param filename Pointer to a character array containing the 
+-                    name of the file to which the mesh should 
+-                    be saved
+-*/
+-DLL_HEADER void Ng_SaveMesh(Ng_Mesh * mesh, const char* filename);
+-
+-
+-/*! \brief Load a Netgen VOL Mesh from disk into memory
+-
+-    A Netgen mesh saved in the internal VOL format can be loaded 
+-    into a Netgen Mesh structure using this function. 
+-
+-    \param filename Pointer to a character array containing the 
+-                    name of the file to load
+-    \return Ng_Mesh Pointer to a Netgen Mesh type #Ng_Mesh containing 
+-                    the mesh loaded from disk
+-*/
+-DLL_HEADER Ng_Mesh * Ng_LoadMesh(const char* filename);
+-
+-
+-/*! \brief Merge a Netgen VOL Mesh from disk into an existing mesh in memory
+-
+-    A Netgen mesh saved in the internal VOL format can be merged 
+-    into an existing Netgen Mesh structure using this function. 
+-
+-    \param mesh       Name of the Mesh structure already existent in memory
+-    \param filename   Pointer to a character array containing the 
+-                      name of the file to load
+-    \return Ng_Result Status of the merge operation
+-*/
+-DLL_HEADER Ng_Result Ng_MergeMesh(Ng_Mesh * mesh, const char* filename);
+-
+-
+-/*! \brief Merge one Netgen Mesh into another Netgen Mesh in the case 
+-    when both are already in memory
+-
+-    (NOTE: FUNCTION STILL WORK IN PROGRESS!!!)
+-
+-    This function can be used to merge two Netgen meshes already present 
+-    in memory.
+-
+-    \param mesh1      Parent Mesh structure into which the second mesh 
+-                      will be merged
+-    \param mesh2      Child mesh structure which will get merged into 
+-                      the parent mesh
+-    \return Ng_Result Status of the merge operation
+-*/
+-DLL_HEADER Ng_Result Ng_MergeMesh(Ng_Mesh * mesh1, Ng_Mesh * mesh2);
+-// ------------------------------------------------------------------
+-
+-
+-
+-// ------------------------------------------------------------------
+-// Basic Meshing functions for manually adding points, surface elements 
+-// and volume elements to a Netgen Mesh structure
+-
+-/*! \brief Add a point to a given Netgen Mesh Structure
+-
+-    This function allows points to be directly added to a Netgen 
+-    mesh structure by providing the co-ordinates.
+-
+-    Each call to the function allows only one point to be added.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param x    Pointer to an array of type double containing the co-ordinates 
+-                of the point to be added in the form: \n
+-                - x[0] = X co-ordinate
+-                - x[1] = Y co-ordinate
+-                - x[2] = Z co-ordinate
+-*/
+-DLL_HEADER void Ng_AddPoint (Ng_Mesh * mesh, double * x);
+-
+-
+-/*! \brief Add a surface element to a given Netgen Mesh Structure
+-
+-    This function allows the top-level code to directly add individual 
+-    Surface Elements to a Netgen Mesh Structure by providing the type of 
+-    element to be added and the indices of the points which constitute the 
+-    element.
+-
+-    <i>Note:</i> 
+-    - The points referred to by the surface elements must have been
+-      added prior to calling this function. 
+-    - Currently only triangular elements are supported, and the Surface Element 
+-      Type argument is not used.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param et   Surface Element type provided via the enumerated type 
+-                #Ng_Surface_Element_Type 
+-    \param pi   Pointer to an array of integers containing the indices of the 
+-                points which constitute the surface element being added
+-*/
+-DLL_HEADER void Ng_AddSurfaceElement (Ng_Mesh * mesh, Ng_Surface_Element_Type et, int * pi);
+-
+-
+-/*! \brief Add a volume element to a given Netgen Mesh Structure
+-
+-    This function allows the top-level code to directly add individual 
+-    Volume Elements to a Netgen Mesh Structure by providing the type of 
+-    element to be added and the indices of the points which constitute the 
+-    element.
+-
+-    <i>Note:</i> 
+-    - The points referred to by the volume elements must have been
+-      added prior to calling this function. 
+-    - Currently only tetrahedral elements are supported, and the Volume Element 
+-      Type argument is not used.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param et   Volume Element type provided via the enumerated type 
+-                #Ng_Volume_Element_Type 
+-    \param pi   Pointer to an array of integers containing the indices of the 
+-                points which constitute the volume element being added
+-
+-*/
+-DLL_HEADER void Ng_AddVolumeElement (Ng_Mesh * mesh, Ng_Volume_Element_Type et, int * pi);
+-  
+-// ------------------------------------------------------------------
+-
+-
+-
+-// ------------------------------------------------------------------
+-// Local Mesh Size restriction / limiting utilities
+-
+-/*! \brief Apply a global restriction on mesh element size
+-
+-    This utility allows the user to apply a global mesh element 
+-    size limitation. 
+-
+-    During mesh creation, in the absence of an explicit local 
+-    size restriction around the neighbourhood of a point within 
+-    the meshing domain, this global size restriction will be 
+-    utilised.
+-
+-    <b>Note</b>: This function only limits the <b>Maximum</b> 
+-    size of an element within the mesh.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param h    Variable of type <i>double</i>, specifying the maximum
+-                allowable mesh size
+-*/
+-DLL_HEADER void Ng_RestrictMeshSizeGlobal (Ng_Mesh * mesh, double h);
+-
+-
+-/*! \brief Locally restrict the mesh element size at the given point
+-
+-    Unlike the function #Ng_RestrictMeshSizeGlobal, this function 
+-    allows the user to locally restrict the maximum allowable mesh 
+-    size at a given point.
+-
+-    The point is specified via its three cartesian co-ordinates.
+-
+-    <b>Note</b>: This function only limits the <b>Maximum</b> size 
+-    of the elements around the specified point.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param p    Pointer to an Array of type <i>double</i>, containing 
+-                the three co-ordinates of the point in the form: \n
+-                - p[0] = X co-ordinate
+-                - p[1] = Y co-ordinate
+-                - p[2] = Z co-ordinate
+-    \param h    Variable of type <i>double</i>, specifying the maximum
+-                allowable mesh size at that point
+-*/
+-DLL_HEADER void Ng_RestrictMeshSizePoint (Ng_Mesh * mesh, double * p, double h);
+-
+-
+-/*! \brief Locally restrict the mesh element size within a specified box
+-
+-    Similar to the function #Ng_RestrictMeshSizePoint, this function 
+-    allows the size of elements within a mesh to be locally limited.
+-
+-    However, rather than limit the mesh size at a single point, this 
+-    utility restricts the local mesh size within a 3D Box region, specified 
+-    via the co-ordinates of the two diagonally opposite points of a cuboid.
+-
+-    <b>Note</b>: This function only limits the <b>Maximum</b> size 
+-    of the elements within the specified region.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param pmin Pointer to an Array of type <i>double</i>, containing 
+-                the three co-ordinates of the first point of the cuboid: \n
+-                - pmin[0] = X co-ordinate
+-                - pmin[1] = Y co-ordinate
+-                - pmin[2] = Z co-ordinate
+-    \param pmax Pointer to an Array of type <i>double</i>, containing 
+-                the three co-ordinates of the opposite point of the 
+-                cuboid: \n
+-                - pmax[0] = X co-ordinate
+-                - pmax[1] = Y co-ordinate
+-                - pmax[2] = Z co-ordinate
+-    \param h    Variable of type <i>double</i>, specifying the maximum
+-                allowable mesh size at that point
+-*/
+-DLL_HEADER void Ng_RestrictMeshSizeBox (Ng_Mesh * mesh, double * pmin, double * pmax, double h);
+-
+-// ------------------------------------------------------------------
+-
+-
+-
+-// ------------------------------------------------------------------
+-// 3D Mesh Generation functions
+-
+-/*! \brief Create a 3D Volume Mesh given a Surface Mesh
+-
+-    After creating a surface mesh, this function can be utilised 
+-    to automatically generate the corresponding 3D Volume Mesh.
+-
+-    Mesh generation parameters (such as grading, maximum element size, 
+-    etc.) are specified via the meshing parameters class which also 
+-    needs to be passed to this function.
+-
+-    <b>Note</b>: Currently, Netgen generates pure tetrahedral volume 
+-    meshes.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \param mp   Pointer to a copy of the Meshing Parameters class
+-                (#Ng_Meshing_Parameters), filled up with the 
+-                required values
+-
+-    \return Ng_Result Status of the Mesh Generation routine. More 
+-                      details regarding the return value can be 
+-                      found in the description of #Ng_Result
+-*/
+-DLL_HEADER Ng_Result Ng_GenerateVolumeMesh (Ng_Mesh * mesh, Ng_Meshing_Parameters * mp);
+-
+-// ------------------------------------------------------------------
+-
+-
+-
+-// ------------------------------------------------------------------
+-// Basic Mesh information functions
+-
+-/*! \brief Returns the Number of Points present in the specified Mesh
+-
+-    Given an already existent Netgen Mesh Structure, this function 
+-    returns the number of points currently present within the Mesh.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \return 
+-                Integer Data-type with the number of points in the Mesh
+-*/
+-DLL_HEADER int Ng_GetNP (Ng_Mesh * mesh);
+-
+-
+-/*! \brief Returns the Number of Surface Elements present in the specified Mesh
+-
+-    Given an already existent Netgen Mesh Structure, this function 
+-    returns the number of surface elements currently present within 
+-    the Mesh.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \return 
+-                Integer Data-type with the number of surface elements in the Mesh
+-*/
+-DLL_HEADER int Ng_GetNSE (Ng_Mesh * mesh);
+-
+-
+-/*! \brief Returns the Number of Volume Elements present in the specified Mesh
+-
+-    Given an already existent Netgen Mesh Structure, this function 
+-    returns the number of volume elements currently present within 
+-    the Mesh.
+-
+-    \param mesh Pointer to an existing Netgen Mesh structure of 
+-                type #Ng_Mesh
+-    \return 
+-                Integer Data-type with the number of volume elements in the Mesh
+-*/
+-DLL_HEADER int Ng_GetNE (Ng_Mesh * mesh);
+-
+-// ------------------------------------------------------------------
+-
+-
+-
+-// ------------------------------------------------------------------
+-// Mesh Topology functions
+-// Use these functions to extract points, surface / volume elements, 
+-// perform topological searches, etc..etc...
+-  
+-//  Return the Point Coordinates of a specified Point
+-// The x, y and z co-ordinates are returned in the array pointer as 
+-// x[0] = x ; x[1] = y ; x[2] = z
+-DLL_HEADER void Ng_GetPoint (Ng_Mesh * mesh, int num, double * x);
+-
+-
+-
+-// return surface and volume element in pi
+-DLL_HEADER Ng_Surface_Element_Type 
+-Ng_GetSurfaceElement (Ng_Mesh * mesh, int num, int * pi);
+-
+-DLL_HEADER Ng_Volume_Element_Type
+-Ng_GetVolumeElement (Ng_Mesh * mesh, int num, int * pi);
+-
+-// ------------------------------------------------------------------
+-
+-
+-
+-
+-// **********************************************************
+-// **   2D Meshing                                         **
+-// **********************************************************
+-
+-
+-// feeds points and boundary to mesh
+-
+-DLL_HEADER void Ng_AddPoint_2D (Ng_Mesh * mesh, double * x);
+-DLL_HEADER void Ng_AddBoundarySeg_2D (Ng_Mesh * mesh, int pi1, int pi2);
+-  
+-// ask for number of points, elements and boundary segments
+-DLL_HEADER int Ng_GetNP_2D (Ng_Mesh * mesh);
+-DLL_HEADER int Ng_GetNE_2D (Ng_Mesh * mesh);
+-DLL_HEADER int Ng_GetNSeg_2D (Ng_Mesh * mesh);
+-  
+-//  return point coordinates
+-DLL_HEADER void Ng_GetPoint_2D (Ng_Mesh * mesh, int num, double * x);
+-
+-// return 2d elements
+-DLL_HEADER Ng_Surface_Element_Type 
+-Ng_GetElement_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum = NULL);
+-
+-// return 2d boundary segment
+-DLL_HEADER void Ng_GetSegment_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum = NULL);
+-
+-
+-// load 2d netgen spline geometry
+-DLL_HEADER Ng_Geometry_2D * Ng_LoadGeometry_2D (const char * filename);
+-
+-// generate 2d mesh, mesh is allocated by function
+-DLL_HEADER Ng_Result Ng_GenerateMesh_2D (Ng_Geometry_2D * geom,
+-                                         Ng_Mesh ** mesh,
+-                                         Ng_Meshing_Parameters * mp);
+-  
+-DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
+-                                  Ng_Mesh * mesh,
+-                                  int levels);
+-  
+-
+-
+-
+-
+-// **********************************************************
+-// **   STL Meshing                                        **
+-// **********************************************************
+-
+-
+-// loads geometry from STL file
+-DLL_HEADER Ng_STL_Geometry * Ng_STL_LoadGeometry (const char * filename, int binary = 0);
+-
+-
+-// generate new STL Geometry
+-DLL_HEADER Ng_STL_Geometry * Ng_STL_NewGeometry ();
+-  
+-
+-// fills STL Geometry
+-// positive orientation
+-// normal vector may be null-pointer
+-DLL_HEADER void Ng_STL_AddTriangle (Ng_STL_Geometry * geom, 
+-                         double * p1, double * p2, double * p3, 
+-                         double * nv = NULL);
+-
+-// add (optional) edges :
+-DLL_HEADER void Ng_STL_AddEdge (Ng_STL_Geometry * geom, 
+-                     double * p1, double * p2);
+-
+-// after adding triangles (and edges) initialize
+-DLL_HEADER Ng_Result Ng_STL_InitSTLGeometry (Ng_STL_Geometry * geom);
+-
+-// automatically generates edges:
+-DLL_HEADER Ng_Result Ng_STL_MakeEdges (Ng_STL_Geometry * geom,
+-                            Ng_Mesh* mesh,
+-                            Ng_Meshing_Parameters * mp);
+-
+-
+-// generates mesh, empty mesh must be already created.
+-DLL_HEADER Ng_Result Ng_STL_GenerateSurfaceMesh (Ng_STL_Geometry * geom,
+-                                                 Ng_Mesh * mesh,
+-                                                 Ng_Meshing_Parameters * mp);
+-
+-
+-#ifdef ACIS
+-
+-// **********************************************************
+-// **   ACIS Meshing                                       **
+-// **********************************************************
+-
+-/// Data type for NETGEN STL geomty
+-typedef void * Ng_ACIS_Geometry;
+-
+-// loads geometry from STL file
+-DLL_HEADER Ng_ACIS_Geometry * Ng_ACIS_LoadGeometry (const char * filename);
+-  
+-// generates mesh, empty mesh must be already created.
+-DLL_HEADER Ng_Result Ng_ACIS_GenerateSurfaceMesh (Ng_ACIS_Geometry * geom,
+-                                                  Ng_Mesh * mesh,
+-                                                  Ng_Meshing_Parameters * mp);
+-
+-
+-#endif
+-
+-
+-
+-#ifdef OCCGEOMETRY
+-
+-// **********************************************************
+-// **   OpenCascade Geometry / Meshing Utilities           **
+-// **********************************************************
+-
+-// Create new OCC Geometry Object
+-DLL_HEADER Ng_OCC_Geometry * Ng_OCC_NewGeometry ();
+-
+-// Delete an OCC Geometry Object
+-DLL_HEADER Ng_Result Ng_OCC_DeleteGeometry (Ng_OCC_Geometry * geom);
+-
+-// Loads geometry from STEP file
+-DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename);
+-
+-// Loads geometry from IGES file
+-DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename);
+-
+-// Loads geometry from BREP file
+-DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename);
+-
+-// Set the local mesh size based on geometry / topology
+-DLL_HEADER Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
+-                                              Ng_Mesh * mesh,
+-                                              Ng_Meshing_Parameters * mp);
+-
+-// Mesh the edges and add Face descriptors to prepare for surface meshing
+-DLL_HEADER Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
+-                                              Ng_Mesh * mesh,
+-                                              Ng_Meshing_Parameters * mp);
+-
+-// Mesh the surfaces of an OCC geometry
+-DLL_HEADER Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
+-                                                 Ng_Mesh * mesh,
+-                                                 Ng_Meshing_Parameters * mp); 
+-
+-// Get the face map of an already loaded OCC geometry
+-DLL_HEADER Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom, 
+-                                    Ng_OCC_TopTools_IndexedMapOfShape * FMap);
+-
+-#endif // OCCGEOMETRY
+-
+-
+-
+-// **********************************************************
+-// **   Mesh refinement algorithms                         **
+-// **********************************************************
+-
+-// uniform mesh refinement
+-DLL_HEADER void Ng_Uniform_Refinement (Ng_Mesh * mesh);
+-
+-
+-// uniform mesh refinement with geometry adaption:
+-
+-DLL_HEADER void Ng_2D_Uniform_Refinement (Ng_Geometry_2D * geom,
+-                                        Ng_Mesh * mesh);
+-
+-DLL_HEADER void Ng_STL_Uniform_Refinement (Ng_STL_Geometry * geom,
+-                                         Ng_Mesh * mesh);
+-
+-DLL_HEADER void Ng_CSG_Uniform_Refinement (Ng_CSG_Geometry * geom,
+-                                         Ng_Mesh * mesh);
+-
+-#ifdef OCCGEOMETRY
+-DLL_HEADER void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
+-                                         Ng_Mesh * mesh);
+-#endif
+-
+-
+-
+-// **********************************************************
+-// **   Second Order mesh algorithms                       **
+-// **********************************************************
+-
+-// convert mesh to second order
+-DLL_HEADER void Ng_Generate_SecondOrder (Ng_Mesh * mesh);
+-
+-
+-// convert mesh to second order with geometry adaption:
+-
+-DLL_HEADER void Ng_2D_Generate_SecondOrder (Ng_Geometry_2D * geom,
+-                                        Ng_Mesh * mesh);
+-
+-DLL_HEADER void Ng_STL_Generate_SecondOrder (Ng_STL_Geometry * geom,
+-                                         Ng_Mesh * mesh);
+-
+-DLL_HEADER void Ng_CSG_Generate_SecondOrder (Ng_CSG_Geometry * geom,
+-                                         Ng_Mesh * mesh);
+-
+-#ifdef OCCGEOMETRY
+-DLL_HEADER void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
+-                                         Ng_Mesh * mesh);
+-#endif
+-
+-
+-#endif // NGLIB
++#ifndef NGLIB
++#define NGLIB
++
++/**************************************************************************/
++/* File:   nglib.h                                                        */
++/* Author: Joachim Schoeberl                                              */
++/* Date:   7. May. 2000                                                   */
++/**************************************************************************/
++
++/*!
++   \file nglib.h
++   \brief Library interface to the netgen meshing kernel
++   \author Joachim Schoeberl
++   \date 7. May 2000
++
++   This header file provides access to the core functionality of the Netgen 
++   Mesher via a library interface, without an interactive User Interface.
++
++   The intention of providing these set of functions is to allow system 
++   developers to integrate Netgen into top-level code, to act as the low 
++   level mesh generation / optimisation kernel.  
++*/
++
++// Philippose - 14.02.2009
++// Modifications for creating a DLL in Windows
++#ifdef WIN32
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
++      #define DLL_HEADER   __declspec(dllexport)
++   #else
++      #define DLL_HEADER   __declspec(dllimport)
++   #endif
++#else
++   #define DLL_HEADER 
++#endif
++
++
++
++// ** Constants used within Netgen *********************
++/// Maximum allowed number of nodes per volume element
++#define NG_VOLUME_ELEMENT_MAXPOINTS 10
++
++/// Maximum allowed number of nodes per surface element
++#define NG_SURFACE_ELEMENT_MAXPOINTS 8
++
++
++
++// *** Data-types for accessing Netgen functionality ***
++/// Data type for NETGEN mesh
++typedef void * Ng_Mesh;
++
++/// Data type for NETGEN CSG geometry
++typedef void * Ng_CSG_Geometry;
++
++/// Data type for NETGEN 2D geometry
++typedef void * Ng_Geometry_2D;
++
++/// Data type for NETGEN STL geometry
++typedef void * Ng_STL_Geometry;
++
++#ifdef OCCGEOMETRY
++/// Data type for NETGEN OpenCascade geometry
++typedef void * Ng_OCC_Geometry;
++typedef void * Ng_OCC_TopTools_IndexedMapOfShape;
++#endif
++
++
++// *** Special Enum types used within Netgen ***********
++/// Currently implemented surface element types
++enum Ng_Surface_Element_Type 
++   { NG_TRIG = 1, NG_QUAD = 2, NG_TRIG6 = 3, NG_QUAD6 = 4, NG_QUAD8 = 5 };
++
++/// Currently implemented volume element types
++enum Ng_Volume_Element_Type 
++   { NG_TET = 1, NG_PYRAMID = 2, NG_PRISM = 3, NG_TET10 = 4 };
++
++/// Values returned by Netgen functions
++enum Ng_Result 
++   { 
++     NG_ERROR               = -1,   
++     NG_OK                  = 0, 
++     NG_SURFACE_INPUT_ERROR = 1,
++     NG_VOLUME_FAILURE      = 2, 
++     NG_STL_INPUT_ERROR     = 3,
++     NG_SURFACE_FAILURE     = 4,
++     NG_FILE_NOT_FOUND      = 5 
++   };
++
++
++
++// *** Classes required for use within Netgen **********
++/// Netgen Meshing Parameters class
++class Ng_Meshing_Parameters 
++{
++public:
++   int uselocalh;                      //!< Switch to enable / disable usage of local mesh size modifiers
++
++   double maxh;                        //!< Maximum global mesh size allowed
++   double minh;                        //!< Minimum global mesh size allowed
++
++   double fineness;                    //!< Mesh density: 0...1 (0 => coarse; 1 => fine)
++   double grading;                     //!< Mesh grading: 0...1 (0 => uniform mesh; 1 => aggressive local grading)
++
++   double elementsperedge;             //!< Number of elements to generate per edge of the geometry
++   double elementspercurve;            //!< Elements to generate per curvature radius
++
++   int closeedgeenable;                //!< Enable / Disable mesh refinement at close edges
++   double closeedgefact;               //!< Factor to use for refinement at close edges (larger => finer)
++
++   int minedgelenenable;                         //!< Enable / Disable user defined minimum edge length for edge subdivision
++   double minedgelen;                  //!< Minimum edge length to use while subdividing the edges (default = 1e-4)
++
++   int second_order;                   //!< Generate second-order surface and volume elements
++   int quad_dominated;                 //!< Creates a Quad-dominated mesh 
++
++   char * meshsize_filename;           //!< Optional external mesh size file 
++
++   int optsurfmeshenable;              //!< Enable / Disable automatic surface mesh optimization
++   int optvolmeshenable;               //!< Enable / Disable automatic volume mesh optimization
++
++   int optsteps_3d;                     //!< Number of optimize steps to use for 3-D mesh optimization
++   int optsteps_2d;                     //!< Number of optimize steps to use for 2-D mesh optimization
++
++   // Philippose - 13/09/2010
++   // Added a couple more parameters into the meshing parameters list 
++   // from Netgen into Nglib
++   int invert_tets;                    //!< Invert all the volume elements
++   int invert_trigs;                   //!< Invert all the surface triangle elements
++
++   int check_overlap;                  //!< Check for overlapping surfaces during Surface meshing
++   int check_overlapping_boundary;     //!< Check for overlapping surface elements before volume meshing
++
++
++   /*!
++      Default constructor for the Mesh Parameters class
++
++      Note: This constructor initialises the variables in the 
++      class with the following default values
++      - #uselocalh: 1
++      - #maxh: 1000.0
++      - #fineness: 0.5
++      - #grading: 0.3
++      - #elementsperedge: 2.0
++      - #elementspercurve: 2.0
++      - #closeedgeenable: 0
++      - #closeedgefact: 2.0
++      - #secondorder: 0
++      - #meshsize_filename: null
++      - #quad_dominated: 0
++      - #optsurfmeshenable: 1
++      - #optvolmeshenable: 1
++      - #optsteps_2d: 3
++      - #optsteps_3d: 3
++      - #invert_tets: 0
++      - #invert_trigs:0 
++      - #check_overlap: 1
++      - #check_overlapping_boundary: 1
++   */
++   DLL_HEADER Ng_Meshing_Parameters();
++
++
++
++   /*!
++       Reset the meshing parameters to their defaults
++
++       This member function resets all the meshing parameters 
++       of the object to the default values
++   */
++   DLL_HEADER void Reset_Parameters();
++
++
++
++   /*!
++       Transfer local meshing parameters to internal meshing parameters
++
++       This member function transfers all the meshing parameters 
++       defined in the local meshing parameters structure of nglib into 
++       the internal meshing parameters structure used by the Netgen core
++   */
++   DLL_HEADER void Transfer_Parameters();
++};
++
++
++
++
++// *** Functions Exported by this Library *************
++
++// ------------------------------------------------------------------
++// Netgen library initialisation / destruction functions
++
++/*! \brief Initialise the Netgen library and prepare for use
++
++    This function needs to be called by the third-party 
++    program before beginning to use the other Netgen 
++    specific functions.
++*/
++DLL_HEADER void Ng_Init ();
++
++
++/*! \brief Exit the Netgen meshing kernel in a clean manner
++
++    Use this function to exit the meshing sub-system in 
++    a clean and orderly manner.
++*/
++DLL_HEADER void Ng_Exit ();
++  
++
++/*! \brief Create a new (and empty) Netgen Mesh Structure
++
++    This function creates a new Netgen Mesh, initialises 
++    it, and returns a pointer to the created mesh structure. 
++
++    Use the returned pointer for subsequent operations 
++    which involve mesh operations.
++
++    \return Ng_Mesh Pointer to a Netgen Mesh type #Ng_Mesh
++*/
++DLL_HEADER  Ng_Mesh * Ng_NewMesh ();
++
++
++/*! \brief Delete an existing Netgen Mesh Structure
++
++    Use this function to delete an existing Netgen mesh 
++    structure and release the used memory. 
++
++    \param mesh Pointer to an existing Netgen Mesh structure 
++                of type #Ng_Mesh
++*/
++DLL_HEADER void Ng_DeleteMesh (Ng_Mesh * mesh);
++
++
++/*! \brief Save a Netgen Mesh to disk
++
++    This function allows a generated mesh structure to be saved 
++    to disk.
++
++    A Mesh saved using this function, will be written to disk 
++    in the Netgen VOL file format.
++
++    \param mesh    Pointer to an existing Netgen Mesh structure 
++                   of type #Ng_Mesh
++    \param filename Pointer to a character array containing the 
++                    name of the file to which the mesh should 
++                    be saved
++*/
++DLL_HEADER void Ng_SaveMesh(Ng_Mesh * mesh, const char* filename);
++
++
++/*! \brief Load a Netgen VOL Mesh from disk into memory
++
++    A Netgen mesh saved in the internal VOL format can be loaded 
++    into a Netgen Mesh structure using this function. 
++
++    \param filename Pointer to a character array containing the 
++                    name of the file to load
++    \return Ng_Mesh Pointer to a Netgen Mesh type #Ng_Mesh containing 
++                    the mesh loaded from disk
++*/
++DLL_HEADER Ng_Mesh * Ng_LoadMesh(const char* filename);
++
++
++/*! \brief Merge a Netgen VOL Mesh from disk into an existing mesh in memory
++
++    A Netgen mesh saved in the internal VOL format can be merged 
++    into an existing Netgen Mesh structure using this function. 
++
++    \param mesh       Name of the Mesh structure already existent in memory
++    \param filename   Pointer to a character array containing the 
++                      name of the file to load
++    \return Ng_Result Status of the merge operation
++*/
++DLL_HEADER Ng_Result Ng_MergeMesh(Ng_Mesh * mesh, const char* filename);
++
++
++/*! \brief Merge one Netgen Mesh into another Netgen Mesh in the case 
++    when both are already in memory
++
++    (NOTE: FUNCTION STILL WORK IN PROGRESS!!!)
++
++    This function can be used to merge two Netgen meshes already present 
++    in memory.
++
++    \param mesh1      Parent Mesh structure into which the second mesh 
++                      will be merged
++    \param mesh2      Child mesh structure which will get merged into 
++                      the parent mesh
++    \return Ng_Result Status of the merge operation
++*/
++DLL_HEADER Ng_Result Ng_MergeMesh(Ng_Mesh * mesh1, Ng_Mesh * mesh2);
++// ------------------------------------------------------------------
++
++
++
++// ------------------------------------------------------------------
++// Basic Meshing functions for manually adding points, surface elements 
++// and volume elements to a Netgen Mesh structure
++
++/*! \brief Add a point to a given Netgen Mesh Structure
++
++    This function allows points to be directly added to a Netgen 
++    mesh structure by providing the co-ordinates.
++
++    Each call to the function allows only one point to be added.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param x    Pointer to an array of type double containing the co-ordinates 
++                of the point to be added in the form: \n
++                - x[0] = X co-ordinate
++                - x[1] = Y co-ordinate
++                - x[2] = Z co-ordinate
++*/
++DLL_HEADER void Ng_AddPoint (Ng_Mesh * mesh, double * x);
++
++
++/*! \brief Add a surface element to a given Netgen Mesh Structure
++
++    This function allows the top-level code to directly add individual 
++    Surface Elements to a Netgen Mesh Structure by providing the type of 
++    element to be added and the indices of the points which constitute the 
++    element.
++
++    <i>Note:</i> 
++    - The points referred to by the surface elements must have been
++      added prior to calling this function. 
++    - Currently only triangular elements are supported, and the Surface Element 
++      Type argument is not used.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param et   Surface Element type provided via the enumerated type 
++                #Ng_Surface_Element_Type 
++    \param pi   Pointer to an array of integers containing the indices of the 
++                points which constitute the surface element being added
++*/
++DLL_HEADER void Ng_AddSurfaceElement (Ng_Mesh * mesh, Ng_Surface_Element_Type et, int * pi);
++
++
++/*! \brief Add a volume element to a given Netgen Mesh Structure
++
++    This function allows the top-level code to directly add individual 
++    Volume Elements to a Netgen Mesh Structure by providing the type of 
++    element to be added and the indices of the points which constitute the 
++    element.
++
++    <i>Note:</i> 
++    - The points referred to by the volume elements must have been
++      added prior to calling this function. 
++    - Currently only tetrahedral elements are supported, and the Volume Element 
++      Type argument is not used.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param et   Volume Element type provided via the enumerated type 
++                #Ng_Volume_Element_Type 
++    \param pi   Pointer to an array of integers containing the indices of the 
++                points which constitute the volume element being added
++
++*/
++DLL_HEADER void Ng_AddVolumeElement (Ng_Mesh * mesh, Ng_Volume_Element_Type et, int * pi);
++  
++// ------------------------------------------------------------------
++
++
++
++// ------------------------------------------------------------------
++// Local Mesh Size restriction / limiting utilities
++
++/*! \brief Apply a global restriction on mesh element size
++
++    This utility allows the user to apply a global mesh element 
++    size limitation. 
++
++    During mesh creation, in the absence of an explicit local 
++    size restriction around the neighbourhood of a point within 
++    the meshing domain, this global size restriction will be 
++    utilised.
++
++    <b>Note</b>: This function only limits the <b>Maximum</b> 
++    size of an element within the mesh.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param h    Variable of type <i>double</i>, specifying the maximum
++                allowable mesh size
++*/
++DLL_HEADER void Ng_RestrictMeshSizeGlobal (Ng_Mesh * mesh, double h);
++
++
++/*! \brief Locally restrict the mesh element size at the given point
++
++    Unlike the function #Ng_RestrictMeshSizeGlobal, this function 
++    allows the user to locally restrict the maximum allowable mesh 
++    size at a given point.
++
++    The point is specified via its three cartesian co-ordinates.
++
++    <b>Note</b>: This function only limits the <b>Maximum</b> size 
++    of the elements around the specified point.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param p    Pointer to an Array of type <i>double</i>, containing 
++                the three co-ordinates of the point in the form: \n
++                - p[0] = X co-ordinate
++                - p[1] = Y co-ordinate
++                - p[2] = Z co-ordinate
++    \param h    Variable of type <i>double</i>, specifying the maximum
++                allowable mesh size at that point
++*/
++DLL_HEADER void Ng_RestrictMeshSizePoint (Ng_Mesh * mesh, double * p, double h);
++
++
++/*! \brief Locally restrict the mesh element size within a specified box
++
++    Similar to the function #Ng_RestrictMeshSizePoint, this function 
++    allows the size of elements within a mesh to be locally limited.
++
++    However, rather than limit the mesh size at a single point, this 
++    utility restricts the local mesh size within a 3D Box region, specified 
++    via the co-ordinates of the two diagonally opposite points of a cuboid.
++
++    <b>Note</b>: This function only limits the <b>Maximum</b> size 
++    of the elements within the specified region.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param pmin Pointer to an Array of type <i>double</i>, containing 
++                the three co-ordinates of the first point of the cuboid: \n
++                - pmin[0] = X co-ordinate
++                - pmin[1] = Y co-ordinate
++                - pmin[2] = Z co-ordinate
++    \param pmax Pointer to an Array of type <i>double</i>, containing 
++                the three co-ordinates of the opposite point of the 
++                cuboid: \n
++                - pmax[0] = X co-ordinate
++                - pmax[1] = Y co-ordinate
++                - pmax[2] = Z co-ordinate
++    \param h    Variable of type <i>double</i>, specifying the maximum
++                allowable mesh size at that point
++*/
++DLL_HEADER void Ng_RestrictMeshSizeBox (Ng_Mesh * mesh, double * pmin, double * pmax, double h);
++
++// ------------------------------------------------------------------
++
++
++
++// ------------------------------------------------------------------
++// 3D Mesh Generation functions
++
++/*! \brief Create a 3D Volume Mesh given a Surface Mesh
++
++    After creating a surface mesh, this function can be utilised 
++    to automatically generate the corresponding 3D Volume Mesh.
++
++    Mesh generation parameters (such as grading, maximum element size, 
++    etc.) are specified via the meshing parameters class which also 
++    needs to be passed to this function.
++
++    <b>Note</b>: Currently, Netgen generates pure tetrahedral volume 
++    meshes.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \param mp   Pointer to a copy of the Meshing Parameters class
++                (#Ng_Meshing_Parameters), filled up with the 
++                required values
++
++    \return Ng_Result Status of the Mesh Generation routine. More 
++                      details regarding the return value can be 
++                      found in the description of #Ng_Result
++*/
++DLL_HEADER Ng_Result Ng_GenerateVolumeMesh (Ng_Mesh * mesh, Ng_Meshing_Parameters * mp);
++
++// ------------------------------------------------------------------
++
++
++
++// ------------------------------------------------------------------
++// Basic Mesh information functions
++
++/*! \brief Returns the Number of Points present in the specified Mesh
++
++    Given an already existent Netgen Mesh Structure, this function 
++    returns the number of points currently present within the Mesh.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \return 
++                Integer Data-type with the number of points in the Mesh
++*/
++DLL_HEADER int Ng_GetNP (Ng_Mesh * mesh);
++
++
++/*! \brief Returns the Number of Surface Elements present in the specified Mesh
++
++    Given an already existent Netgen Mesh Structure, this function 
++    returns the number of surface elements currently present within 
++    the Mesh.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \return 
++                Integer Data-type with the number of surface elements in the Mesh
++*/
++DLL_HEADER int Ng_GetNSE (Ng_Mesh * mesh);
++
++
++/*! \brief Returns the Number of Volume Elements present in the specified Mesh
++
++    Given an already existent Netgen Mesh Structure, this function 
++    returns the number of volume elements currently present within 
++    the Mesh.
++
++    \param mesh Pointer to an existing Netgen Mesh structure of 
++                type #Ng_Mesh
++    \return 
++                Integer Data-type with the number of volume elements in the Mesh
++*/
++DLL_HEADER int Ng_GetNE (Ng_Mesh * mesh);
++
++// ------------------------------------------------------------------
++
++
++
++// ------------------------------------------------------------------
++// Mesh Topology functions
++// Use these functions to extract points, surface / volume elements, 
++// perform topological searches, etc..etc...
++  
++//  Return the Point Coordinates of a specified Point
++// The x, y and z co-ordinates are returned in the array pointer as 
++// x[0] = x ; x[1] = y ; x[2] = z
++DLL_HEADER void Ng_GetPoint (Ng_Mesh * mesh, int num, double * x);
++
++
++
++// return surface and volume element in pi
++DLL_HEADER Ng_Surface_Element_Type 
++Ng_GetSurfaceElement (Ng_Mesh * mesh, int num, int * pi);
++
++DLL_HEADER Ng_Volume_Element_Type
++Ng_GetVolumeElement (Ng_Mesh * mesh, int num, int * pi);
++
++// ------------------------------------------------------------------
++
++
++
++
++// **********************************************************
++// **   2D Meshing                                         **
++// **********************************************************
++
++
++// feeds points and boundary to mesh
++
++DLL_HEADER void Ng_AddPoint_2D (Ng_Mesh * mesh, double * x);
++DLL_HEADER void Ng_AddBoundarySeg_2D (Ng_Mesh * mesh, int pi1, int pi2);
++  
++// ask for number of points, elements and boundary segments
++DLL_HEADER int Ng_GetNP_2D (Ng_Mesh * mesh);
++DLL_HEADER int Ng_GetNE_2D (Ng_Mesh * mesh);
++DLL_HEADER int Ng_GetNSeg_2D (Ng_Mesh * mesh);
++  
++//  return point coordinates
++DLL_HEADER void Ng_GetPoint_2D (Ng_Mesh * mesh, int num, double * x);
++
++// return 2d elements
++DLL_HEADER Ng_Surface_Element_Type 
++Ng_GetElement_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum = NULL);
++
++// return 2d boundary segment
++DLL_HEADER void Ng_GetSegment_2D (Ng_Mesh * mesh, int num, int * pi, int * matnum = NULL);
++
++
++// load 2d netgen spline geometry
++DLL_HEADER Ng_Geometry_2D * Ng_LoadGeometry_2D (const char * filename);
++
++// generate 2d mesh, mesh is allocated by function
++DLL_HEADER Ng_Result Ng_GenerateMesh_2D (Ng_Geometry_2D * geom,
++                                         Ng_Mesh ** mesh,
++                                         Ng_Meshing_Parameters * mp);
++  
++DLL_HEADER void Ng_HP_Refinement (Ng_Geometry_2D * geom,
++                                  Ng_Mesh * mesh,
++                                  int levels);
++  
++
++
++
++
++// **********************************************************
++// **   STL Meshing                                        **
++// **********************************************************
++
++
++// loads geometry from STL file
++DLL_HEADER Ng_STL_Geometry * Ng_STL_LoadGeometry (const char * filename, int binary = 0);
++
++
++// generate new STL Geometry
++DLL_HEADER Ng_STL_Geometry * Ng_STL_NewGeometry ();
++  
++
++// fills STL Geometry
++// positive orientation
++// normal vector may be null-pointer
++DLL_HEADER void Ng_STL_AddTriangle (Ng_STL_Geometry * geom, 
++                         double * p1, double * p2, double * p3, 
++                         double * nv = NULL);
++
++// add (optional) edges :
++DLL_HEADER void Ng_STL_AddEdge (Ng_STL_Geometry * geom, 
++                     double * p1, double * p2);
++
++// after adding triangles (and edges) initialize
++DLL_HEADER Ng_Result Ng_STL_InitSTLGeometry (Ng_STL_Geometry * geom);
++
++// automatically generates edges:
++DLL_HEADER Ng_Result Ng_STL_MakeEdges (Ng_STL_Geometry * geom,
++                            Ng_Mesh* mesh,
++                            Ng_Meshing_Parameters * mp);
++
++
++// generates mesh, empty mesh must be already created.
++DLL_HEADER Ng_Result Ng_STL_GenerateSurfaceMesh (Ng_STL_Geometry * geom,
++                                                 Ng_Mesh * mesh,
++                                                 Ng_Meshing_Parameters * mp);
++
++
++#ifdef ACIS
++
++// **********************************************************
++// **   ACIS Meshing                                       **
++// **********************************************************
++
++/// Data type for NETGEN STL geomty
++typedef void * Ng_ACIS_Geometry;
++
++// loads geometry from STL file
++DLL_HEADER Ng_ACIS_Geometry * Ng_ACIS_LoadGeometry (const char * filename);
++  
++// generates mesh, empty mesh must be already created.
++DLL_HEADER Ng_Result Ng_ACIS_GenerateSurfaceMesh (Ng_ACIS_Geometry * geom,
++                                                  Ng_Mesh * mesh,
++                                                  Ng_Meshing_Parameters * mp);
++
++
++#endif
++
++
++
++#ifdef OCCGEOMETRY
++
++// **********************************************************
++// **   OpenCascade Geometry / Meshing Utilities           **
++// **********************************************************
++
++// Create new OCC Geometry Object
++DLL_HEADER Ng_OCC_Geometry * Ng_OCC_NewGeometry ();
++
++// Delete an OCC Geometry Object
++DLL_HEADER Ng_Result Ng_OCC_DeleteGeometry (Ng_OCC_Geometry * geom);
++
++// Loads geometry from STEP file
++DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_STEP (const char * filename);
++
++// Loads geometry from IGES file
++DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_IGES (const char * filename);
++
++// Loads geometry from BREP file
++DLL_HEADER Ng_OCC_Geometry * Ng_OCC_Load_BREP (const char * filename);
++
++// Set the local mesh size based on geometry / topology
++DLL_HEADER Ng_Result Ng_OCC_SetLocalMeshSize (Ng_OCC_Geometry * geom,
++                                              Ng_Mesh * mesh,
++                                              Ng_Meshing_Parameters * mp);
++
++// Mesh the edges and add Face descriptors to prepare for surface meshing
++DLL_HEADER Ng_Result Ng_OCC_GenerateEdgeMesh (Ng_OCC_Geometry * geom,
++                                              Ng_Mesh * mesh,
++                                              Ng_Meshing_Parameters * mp);
++
++// Mesh the surfaces of an OCC geometry
++DLL_HEADER Ng_Result Ng_OCC_GenerateSurfaceMesh (Ng_OCC_Geometry * geom,
++                                                 Ng_Mesh * mesh,
++                                                 Ng_Meshing_Parameters * mp); 
++
++// Get the face map of an already loaded OCC geometry
++DLL_HEADER Ng_Result Ng_OCC_GetFMap(Ng_OCC_Geometry * geom, 
++                                    Ng_OCC_TopTools_IndexedMapOfShape * FMap);
++
++#endif // OCCGEOMETRY
++
++
++
++// **********************************************************
++// **   Mesh refinement algorithms                         **
++// **********************************************************
++
++// uniform mesh refinement
++DLL_HEADER void Ng_Uniform_Refinement (Ng_Mesh * mesh);
++
++
++// uniform mesh refinement with geometry adaption:
++
++DLL_HEADER void Ng_2D_Uniform_Refinement (Ng_Geometry_2D * geom,
++                                        Ng_Mesh * mesh);
++
++DLL_HEADER void Ng_STL_Uniform_Refinement (Ng_STL_Geometry * geom,
++                                         Ng_Mesh * mesh);
++
++DLL_HEADER void Ng_CSG_Uniform_Refinement (Ng_CSG_Geometry * geom,
++                                         Ng_Mesh * mesh);
++
++#ifdef OCCGEOMETRY
++DLL_HEADER void Ng_OCC_Uniform_Refinement (Ng_OCC_Geometry * geom,
++                                         Ng_Mesh * mesh);
++#endif
++
++
++
++// **********************************************************
++// **   Second Order mesh algorithms                       **
++// **********************************************************
++
++// convert mesh to second order
++DLL_HEADER void Ng_Generate_SecondOrder (Ng_Mesh * mesh);
++
++
++// convert mesh to second order with geometry adaption:
++
++DLL_HEADER void Ng_2D_Generate_SecondOrder (Ng_Geometry_2D * geom,
++                                        Ng_Mesh * mesh);
++
++DLL_HEADER void Ng_STL_Generate_SecondOrder (Ng_STL_Geometry * geom,
++                                         Ng_Mesh * mesh);
++
++DLL_HEADER void Ng_CSG_Generate_SecondOrder (Ng_CSG_Geometry * geom,
++                                         Ng_Mesh * mesh);
++
++#ifdef OCCGEOMETRY
++DLL_HEADER void Ng_OCC_Generate_SecondOrder (Ng_OCC_Geometry * geom,
++                                         Ng_Mesh * mesh);
++#endif
++
++
++#endif // NGLIB
diff --git a/products/patches/netgen49ForSalome.patch b/products/patches/netgen49ForSalome.patch
new file mode 100644 (file)
index 0000000..0e78c4a
--- /dev/null
@@ -0,0 +1,1109 @@
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.cpp netgen-4.9.13_new/libsrc/meshing/meshtype.cpp
+--- netgen-4.9.13_orig/libsrc/meshing/meshtype.cpp     2009-09-13 14:28:38.000000000 +0400
++++ netgen-4.9.13_new/libsrc/meshing/meshtype.cpp      2014-07-22 13:01:28.000000000 +0400
+@@ -1,4 +1,5 @@
+ #include <mystdlib.h>
++#include <float.h> // to get DBL_MIN defined
+ #include "meshing.hpp"  
+@@ -650,7 +651,8 @@
+         double det = trans.Det();
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -706,7 +708,8 @@
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+-            if (det <= 0)
++            // if (det <= 0)
++            if (det <= DBL_MIN)  // avoid FPE
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -790,7 +793,8 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -840,7 +844,8 @@
+         frob /= 2;
+         double det = trans.Det();
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1857,7 +1862,8 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          //if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2035,7 +2041,8 @@
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2107,7 +2114,8 @@
+         ddet *= -1;
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -2189,7 +2197,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+@@ -2522,10 +2530,10 @@
+   MeshingParameters :: MeshingParameters ()
+   {
+-    optimize3d = "cmdmustm";
++    optimize3d = (char*)"cmdmustm"; // optimize3d = "cmdmustm";
+     //optimize3d = "cmdmstm";
+     optsteps3d = 3;
+-    optimize2d = "smsmsmSmSmSm";
++    optimize2d = (char*)"smsmsmSmSmSm"; // optimize2d = "smsmsmSmSmSm";
+     optsteps2d = 3;
+     opterrpow = 2;
+     blockfill = 1;
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/meshtype.hpp netgen-4.9.13_new/libsrc/meshing/meshtype.hpp
+--- netgen-4.9.13_orig/libsrc/meshing/meshtype.hpp     2009-11-09 13:50:43.000000000 +0300
++++ netgen-4.9.13_new/libsrc/meshing/meshtype.hpp      2014-07-22 13:01:28.000000000 +0400
+@@ -12,6 +12,7 @@
+     Classes for NETGEN
+ */
++class Mesh; // added due to compilation errors on some platforms
+ enum ELEMENT_TYPE { 
+   SEGMENT = 1, SEGMENT3 = 2,
+diff -Naur netgen-4.9.13_orig/libsrc/meshing/smoothing2.cpp netgen-4.9.13_new/libsrc/meshing/smoothing2.cpp
+--- netgen-4.9.13_orig/libsrc/meshing/smoothing2.cpp   2009-11-09 13:47:09.000000000 +0300
++++ netgen-4.9.13_new/libsrc/meshing/smoothing2.cpp    2014-07-22 13:01:28.000000000 +0400
+@@ -302,7 +302,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+     //  meshthis -> ProjectPoint (surfi, pp1);
+@@ -360,7 +361,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+@@ -514,7 +516,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     pp1 = sp1 + x(0) * t1 + x(1) * t2;
+@@ -586,7 +589,8 @@
+     vgrad = 0;
+     badness = 0;
+-    meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    //normal already computed: meshthis -> GetNormalVector (surfi, sp1, gi1, n);
++    n = normal;
+     // pp1 = sp1;
+     //    pp1.Add2 (x.Get(1), t1, x.Get(2), t2);
+@@ -973,7 +977,7 @@
+               {
+                 mesh[pi] = Point<3> (origp);
+               }
+-          
++            break; // exit as <fact> is not used anymore
+           }
+       }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occconstruction.cpp netgen-4.9.13_new/libsrc/occ/occconstruction.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occconstruction.cpp  2009-08-24 06:32:47.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occconstruction.cpp   2014-07-22 13:01:28.000000000 +0400
+@@ -28,7 +28,7 @@
+ #include <BRepAlgoAPI_Common.hxx>
+ #include <BRepAlgoAPI_Fuse.hxx>
+ #include <BRepAlgoAPI_Section.hxx>
+-#include <BRepOffsetAPI_Sewing.hxx>
++//#include <BRepOffsetAPI_Sewing.hxx>
+ //#include <BRepAlgo_Sewing.hxx>
+ #include <BRepOffsetAPI_MakeOffsetShape.hxx>
+ #include <ShapeFix_Shape.hxx>
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occgenmesh.cpp       2010-03-16 09:30:07.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgenmesh.cpp        2014-07-22 13:01:28.000000000 +0400
+@@ -15,6 +15,8 @@
+ #define DIVIDEEDGESECTIONS 1000
+ #define IGNORECURVELENGTH 1e-4
++// a small value used to avoid FPE
++#define VSMALL 1e-10
+    bool merge_solids = 1;
+@@ -26,7 +28,8 @@
+       double nq = n*q;
+       Point<3> p = p0 + 0.5*n;
+-      double lambda = (p-l.p0)*n / nq;
++      // double lambda = (p-l.p0)*n / nq;  -- avoid FPE
++      double lambda = (fabs(nq) > 1e-10) ? (p-l.p0)*n / nq : -1;
+       if (lambda >= 0 && lambda <= 1)
+       {
+@@ -54,6 +57,8 @@
++   
++   static // useless out of this file
+    double ComputeH (double kappa)
+    {
+       double hret;
+@@ -62,7 +67,8 @@
+       if (mparam.maxh * kappa < 1)
+          hret = mparam.maxh;
+       else
+-         hret = 1 / kappa;
++        // hret = 1 / kappa; -- avoid FPE
++        hret = 1 / (kappa + VSMALL);
+       if (mparam.maxh < hret)
+          hret = mparam.maxh;
+@@ -71,8 +77,7 @@
+    }
+-
+-
++   static // useless out of this file
+    void RestrictHTriangle (gp_Pnt2d & par0, gp_Pnt2d & par1, gp_Pnt2d & par2,
+                            BRepLProp_SLProps * prop, Mesh & mesh, int depth, double h = 0)
+    {
+@@ -168,8 +173,8 @@
+          if(h < 1e-4*maxside)
+             return;
+-
+-         if (h > 30) return;
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
+       }
+       if (h < maxside && depth < 10)
+@@ -228,6 +233,7 @@
++   static // useless out of this file
+    void DivideEdge (TopoDS_Edge & edge, Array<MeshPoint> & ps,
+                     Array<double> & params, Mesh & mesh)
+    {
+@@ -247,8 +253,8 @@
+       hvalue[0] = 0;
+       pnt = c->Value(s0);
+-      double olddist = 0;
+-      double dist = 0;
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
+       int tmpVal = (int)(DIVIDEEDGESECTIONS);
+@@ -256,15 +262,19 @@
+       {
+          oldpnt = pnt;
+          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
++         // -- no more than 1 segment per <edge length>/DIVIDEEDGESECTIONS
+          hvalue[i] = hvalue[i-1] +
+-            1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
+-            pnt.Distance(oldpnt);
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
++                1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++                pnt.Distance(oldpnt));
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+          //      <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
+-         olddist = dist;
+-         dist = pnt.Distance(oldpnt);
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
+       }
+       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
+@@ -279,7 +289,10 @@
+       {
+          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
+          {
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+             pnt = c->Value(params[i]);
+             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
+             i++;
+@@ -323,6 +336,9 @@
+       (*testout) << "nedges = " << nedges << endl;
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
+       for (int i = 1; i <= nvertices; i++)
+       {
+@@ -332,7 +348,8 @@
+          bool exists = 0;
+          if (merge_solids)
+             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
+                {
+                   exists = 1;
+                   break;
+@@ -362,6 +379,7 @@
+          {
+             TopoDS_Face face = TopoDS::Face(exp1.Current());
+             int facenr = geom.fmap.FindIndex(face);
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
+             if (face2solid[0][facenr-1] == 0)
+                face2solid[0][facenr-1] = solidnr;
+@@ -381,6 +399,7 @@
+       int facenr = 0;
+       int edgenr = 0;
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
+       (*testout) << "faces = " << geom.fmap.Extent() << endl;
+       int curr = 0;
+@@ -442,6 +461,7 @@
+                   //(*testout) << "ignoring degenerated edge" << endl;
+                   continue;
+                }
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
+                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))
+@@ -474,20 +494,104 @@
+                if (!merge_solids)
+                {
+-                  pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
+-                  pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
++                   }
++                   else
++                   {
++                     ip += first_vp - 1;
++                   }
++                 }
+                }
+                else
+                {
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
+                   pnums[0] = -1;
+                   pnums.Last() = -1;
+                   for (PointIndex pi = 1; pi < first_ep; pi++)
+                   {
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
+                   }
+                }
+@@ -497,17 +601,20 @@
+                   bool exists = 0;
+                   int j;
+                   for (j = first_ep; j <= mesh.GetNP(); j++)
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
+                      if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)
+                      {
+                         exists = 1;
+                         break;
+                      }
++                  }
+                      if (exists)
+                         pnums[i] = j;
+                      else
+                      {
+-                        mesh.AddPoint (mp[i-1]);
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+                         (*testout) << "add meshpoint " << mp[i-1] << endl;
+                         pnums[i] = mesh.GetNP();
+                      }
+@@ -591,6 +698,8 @@
+       //              (*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
+       //                              << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;
+       //      exit(10);
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
+       mesh.CalcSurfacesOfNode();
+       multithread.task = savetask;
+@@ -633,7 +742,8 @@
+          }
+          (*testout) << "mesh face " << k << endl;
+-         multithread.percent = 100 * k / (mesh.GetNFD()+1e-10);
++         // multithread.percent = 100 * k / (mesh.GetNFD()+1e-10); -- avoid FPE
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+          geom.facemeshstatus[k-1] = -1;
+@@ -901,7 +1011,8 @@
+          //      if (k != 36) continue;
+          //      (*testout) << "optimize face " << k << endl;
+-         multithread.percent = 100 * k / (mesh.GetNFD()+1e-10);
++         //multithread.percent = 100 * k / (mesh.GetNFD()+1e-10); -- avoid FPE
++         multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+          FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
+@@ -1456,3 +1567,4 @@
+ }
+ #endif
++
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.cpp netgen-4.9.13_new/libsrc/occ/occgeom.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occgeom.cpp  2010-03-05 16:16:21.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgeom.cpp   2014-07-22 13:01:28.000000000 +0400
+@@ -8,6 +8,8 @@
+ #include "ShapeAnalysis_CheckSmallFace.hxx"
+ #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
+ #include "ShapeAnalysis_Surface.hxx"
++#include <BRepTopAdaptor_FClass2d.hxx> // -- to optimize Project() and FastProject()
++#include <TopAbs_State.hxx>
+ #include "BRepAlgoAPI_Fuse.hxx"
+ #include "BRepCheck_Analyzer.hxx"
+ #include "BRepLib.hxx"
+@@ -16,10 +18,17 @@
+ #include "ShapeFix_FixSmallFace.hxx"
+ #include "Partition_Spliter.hxx"
+-
+ namespace netgen
+ {
+-   void OCCGeometry :: PrintNrShapes ()
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap<int,BRepTopAdaptor_FClass2d*>::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
++  void OCCGeometry :: PrintNrShapes ()
+    {
+       TopExp_Explorer e;
+       int count = 0;
+@@ -951,25 +960,58 @@
+    }
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
+-
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {
+       static int cnt = 0;
+       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
+       gp_Pnt pnt(p(0), p(1), p(2));
+-      double u,v;
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
+-      suval.Coord( u, v);
+-      pnt = thesurf->Value( u, v );
+-
+-
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++  
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
++  
+       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
++      return true;
+    }
+@@ -979,54 +1021,69 @@
+    {
+       gp_Pnt p(ap(0), ap(1), ap(2));
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-
+-      gp_Pnt x = surface->Value (u,v);
+-
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
+-
+-      gp_Vec du, dv;
+-
+-      surface->D1(u,v,x,du,dv);
+-
+-      int count = 0;
+-
+-      gp_Pnt xold;
+-      gp_Vec n;
+-      double det, lambda, mu;
+-
+-      do {
+-         count++;
+-
+-         n = du^dv;
+-
+-         det = Det3 (n.X(), du.X(), dv.X(),
+-            n.Y(), du.Y(), dv.Y(),
+-            n.Z(), du.Z(), dv.Z());
+-
+-         if (det < 1e-15) return false;
+-
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
+-            n.Y(), p.Y()-x.Y(), dv.Y(),
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;
+-
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
+-            n.Y(), du.Y(), p.Y()-x.Y(),
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;
+-
+-         u += lambda;
+-         v += mu;
+-
+-         xold = x;
+-         surface->D1(u,v,x,du,dv);
+-
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+-
+-      //    (*testout) << "FastProject count: " << count << endl;
+-
+-      if (count == 50) return false;
+-
+-      ap = Point<3> (x.X(), x.Y(), x.Z());
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++    
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //cout << "Projection fails" << endl;
++        return false;
++      }
++    
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
+       return true;
+    }
+@@ -1038,9 +1095,9 @@
+    {
+       cout << "writing stl..."; cout.flush();
+       StlAPI_Writer writer;
+-      writer.RelativeMode() = Standard_False;
++      // writer.RelativeMode() = Standard_False;
+-      writer.SetDeflection(0.02);
++      // writer.SetDeflection(0.02);
+       writer.Write(shape,filename);
+       cout << "done" << endl;
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occgeom.hpp netgen-4.9.13_new/libsrc/occ/occgeom.hpp
+--- netgen-4.9.13_orig/libsrc/occ/occgeom.hpp  2010-01-14 19:56:19.000000000 +0300
++++ netgen-4.9.13_new/libsrc/occ/occgeom.hpp   2014-07-22 13:09:03.000000000 +0400
+@@ -15,8 +15,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "BRepTools.hxx"
+ #include "TopExp.hxx"
+ #include "BRepBuilderAPI_MakeVertex.hxx"
+@@ -42,8 +42,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "TopoDS_Wire.hxx"
+ #include "BRepTools_WireExplorer.hxx"
+ #include "BRepTools.hxx"
+@@ -68,18 +68,26 @@
+ #include "IGESToBRep_Reader.hxx"
+ #include "Interface_Static.hxx"
+ #include "GeomAPI_ExtremaCurveCurve.hxx"
+-#include "Standard_ErrorHandler.hxx"
++//#include "Standard_ErrorHandler.hxx"
+ #include "Standard_Failure.hxx"
+ #include "ShapeUpgrade_ShellSewing.hxx"
+ #include "ShapeFix_Shape.hxx"
+ #include "ShapeFix_Wireframe.hxx"
++#include <Standard_Version.hxx>
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
+ #include "BRepMesh.hxx"
++#endif
+ #include "BRepMesh_IncrementalMesh.hxx"
+ #include "BRepBndLib.hxx"
+ #include "Bnd_Box.hxx"
+ #include "ShapeAnalysis.hxx"
+ #include "ShapeBuild_ReShape.hxx"
++// -- Optimization: to use cached projector and classifier
++#include <NCollection_DataMap.hxx>
++class Handle_ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
+ // Philippose - 29/01/2009
+ // OpenCascade XDE Support
+@@ -190,6 +198,9 @@
+    class OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap<int,Handle_ShapeAnalysis_Surface> fprjmap;
++      mutable NCollection_DataMap<int,BRepTopAdaptor_FClass2d*> fclsmap;
+    public:
+       TopoDS_Shape shape;
+@@ -241,6 +252,8 @@
+          vmap.Clear();
+       }
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
+       void BuildFMap();
+       Box<3> GetBoundingBox()
+@@ -260,9 +273,14 @@
+       Point<3> Center()
+       {  return center;}
+-      void Project (int surfi, Point<3> & p) const;
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
+       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
+       OCCSurface GetSurface (int surfi)
+       {
+          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
+diff -Naur netgen-4.9.13_orig/libsrc/occ/occmeshsurf.cpp netgen-4.9.13_new/libsrc/occ/occmeshsurf.cpp
+--- netgen-4.9.13_orig/libsrc/occ/occmeshsurf.cpp      2009-08-24 06:32:47.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/occmeshsurf.cpp       2014-07-22 13:01:28.000000000 +0400
+@@ -6,6 +6,7 @@
+ #include <meshing.hpp>
+ #include <GeomLProp_SLProps.hxx>
+ #include <ShapeAnalysis_Surface.hxx>
++#include <GeomAPI_ProjectPointOnCurve.hxx> // -- moved here from occgeom.hpp
+ namespace netgen
+@@ -434,23 +435,33 @@
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
+-      p = hp;
+-      return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
++    p = hp;
++    return ok;
+   }
+@@ -680,7 +691,8 @@
+       if (!geometry.FastProject (surfi, hnewp, u, v))
+         {
+         //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-          geometry.Project (surfi, hnewp);
++          // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++          geometry.Project (surfi, hnewp, u, v);
+         }
+       newgi.trignum = 1;
+@@ -689,7 +701,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: 
+@@ -708,14 +720,18 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi)
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      // geometry.Project (surfi, p); -- Project() changed for optimization
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi)
+   {
+@@ -723,9 +739,10 @@
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+       {
+         cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-        geometry.Project (surfi, p);
++          double u, v;
++        geometry.Project (surfi, p, u, v);
+       }
+-  };
++  }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Inter3d.cxx netgen-4.9.13_new/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Inter3d.cxx        2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Inter3d.cxx 2014-07-22 13:01:28.000000000 +0400
+@@ -86,6 +86,9 @@
+ #include <TopOpeBRepTool_OutCurveType.hxx>
+ #include <TopOpeBRep_DSFiller.hxx>
+ #include <TopTools_DataMapIteratorOfDataMapOfShapeShape.hxx>
++
++#include <Standard_Version.hxx>
++
+ #include <stdio.h>
+ //=======================================================================
+@@ -243,7 +246,12 @@
+       Standard_Integer i, nbExt = anExtPS.NbExt();
+       Extrema_POnSurf aPOnSurf;
+       for (i = 1; i <= nbExt; ++i )
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++        if (anExtPS.SquareDistance( i ) <= TolE * TolE) {
++#else
+         if (anExtPS.Value( i ) <= TolE) {
++#endif
+           aPOnSurf = anExtPS.Point( i );
+           break;
+         }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Loop2d.cxx netgen-4.9.13_new/libsrc/occ/Partition_Loop2d.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Loop2d.cxx 2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Loop2d.cxx  2014-07-22 13:01:28.000000000 +0400
+@@ -22,7 +22,6 @@
+ #include <BRepAdaptor_Surface.hxx>
+ #include <BRepAlgo_AsDes.hxx>
+ #include <BRepAlgo_FaceRestrictor.hxx>
+-#include <BRepOffset_DataMapOfShapeReal.hxx>
+ #include <BRepTopAdaptor_FClass2d.hxx>
+ #include <BRep_Builder.hxx>
+ #include <BRep_Tool.hxx>
+@@ -51,6 +50,15 @@
+ #include <gp_Pnt.hxx>
+ #include <gp_Pnt2d.hxx>
++#include <Standard_Version.hxx>
++
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++#include <TopTools_DataMapOfShapeReal.hxx>
++#else
++#include <BRepOffset_DataMapOfShapeReal.hxx>
++#endif
++
+ //=======================================================================
+ //function : Partition_Loop2d
+ //purpose  :
+@@ -209,7 +217,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -233,7 +241,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
+@@ -519,7 +527,12 @@
+     DC.Initialize( DegEdge, F );
+   // avoid intersecting twice the same edge
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++  TopTools_DataMapOfShapeReal EUMap ( EdgesList.Extent() );
++#else
+   BRepOffset_DataMapOfShapeReal EUMap ( EdgesList.Extent() );
++#endif
+   Standard_Real U, f, l;
+   BRep_Tool::Range (DegEdge, f, l);
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Loop.cxx netgen-4.9.13_new/libsrc/occ/Partition_Loop.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Loop.cxx   2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Loop.cxx    2014-07-22 13:01:28.000000000 +0400
+@@ -178,7 +178,7 @@
+       }
+     }
+-    Standard_Real anglemax = - PI;
++    Standard_Real anglemax = - M_PI;
+     TopoDS_Edge   SelectedEdge;       
+     for ( itl.Initialize(LE); itl.More(); itl.Next()) {
+       const TopoDS_Edge& E = TopoDS::Edge(itl.Value());
+diff -Naur netgen-4.9.13_orig/libsrc/occ/Partition_Spliter.cxx netgen-4.9.13_new/libsrc/occ/Partition_Spliter.cxx
+--- netgen-4.9.13_orig/libsrc/occ/Partition_Spliter.cxx        2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/Partition_Spliter.cxx 2014-07-22 13:01:28.000000000 +0400
+@@ -79,6 +79,8 @@
+ #include <GeomAdaptor_Curve.hxx>
+ #include <TopOpeBRepTool_CurveTool.hxx>
++#include <Standard_Version.hxx>
++
+ #ifdef DEB
+ //# define PART_PERF
+ #endif
+@@ -1169,7 +1171,12 @@
+           for (; j<=nbj && ok; ++j) {
+             if (Extrema.IsMin(j)) {
+             hasMin = Standard_True;
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) > 0x060400
++// porting to OCCT6.5.1
++              ok = Extrema.SquareDistance(j) <= tol * tol;
++#else
+               ok = Extrema.Value(j) <= tol;
++#endif
+           }
+           }
+         }
+diff -Naur netgen-4.9.13_orig/libsrc/occ/utilities.h netgen-4.9.13_new/libsrc/occ/utilities.h
+--- netgen-4.9.13_orig/libsrc/occ/utilities.h  2009-08-24 06:12:24.000000000 +0400
++++ netgen-4.9.13_new/libsrc/occ/utilities.h   2014-07-22 13:01:28.000000000 +0400
+@@ -33,6 +33,7 @@
+ #include <string>
+ #include <iostream>
++#include <iomanip>
+ #include <cstdlib>
+ // #include "SALOME_Log.hxx"
+diff -Naur netgen-4.9.13_orig/libsrc/stlgeom/stlgeommesh.cpp netgen-4.9.13_new/libsrc/stlgeom/stlgeommesh.cpp
+--- netgen-4.9.13_orig/libsrc/stlgeom/stlgeommesh.cpp  2009-08-10 15:40:51.000000000 +0400
++++ netgen-4.9.13_new/libsrc/stlgeom/stlgeommesh.cpp   2014-07-22 13:01:28.000000000 +0400
+@@ -1435,7 +1435,8 @@
+         if (!optstring || strlen(optstring) == 0)
+           {
+-            mparam.optimize2d = "smcm";
++            //mparam.optimize2d = (char*)"smcm";
++              mparam.optimize2d = (char*)"smcm";
+           }
+         else
+           {
+@@ -1451,7 +1452,8 @@
+                                mparam.grading);
+             mesh -> LoadLocalMeshSize (mparam.meshsizefilename);            
+             mesh -> CalcLocalHFromSurfaceCurvature (stlparam.resthsurfmeshcurvfac);
+-            mparam.optimize2d = "cmsmSm";
++            //mparam.optimize2d = (char*)"cmsmSm";
++              mparam.optimize2d = (char*)"cmsmSm";
+             STLSurfaceOptimization (*stlgeometry, *mesh, mparam);
+ #ifdef STAT_STREAM
+             (*statout) << GetTime() << " & ";
+@@ -1557,7 +1559,8 @@
+         if (!optstring || strlen(optstring) == 0)
+           {
+-            mparam.optimize3d = "cmdmstm";
++              //mparam.optimize3d = "cmdmstm";
++            mparam.optimize3d = (char*)"cmdmstm";
+           }
+         else
+           {
+diff -Naur netgen-4.9.13_orig/nglib/nglib.h netgen-4.9.13_new/nglib/nglib.h
+--- netgen-4.9.13_orig/nglib/nglib.h   2010-05-18 15:20:25.000000000 +0400
++++ netgen-4.9.13_new/nglib/nglib.h    2014-07-22 13:01:28.000000000 +0400
+@@ -24,7 +24,7 @@
+ // Philippose - 14.02.2009
+ // Modifications for creating a DLL in Windows
+ #ifdef WIN32
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
+       #define DLL_HEADER   __declspec(dllexport)
+    #else
+       #define DLL_HEADER   __declspec(dllimport)
diff --git a/products/patches/netgen53ForSalome.patch b/products/patches/netgen53ForSalome.patch
new file mode 100644 (file)
index 0000000..ccd4e8c
--- /dev/null
@@ -0,0 +1,1455 @@
+diff -NaurwB netgen-5.3.1_orig/Makefile.am netgen-5.3.1_new/Makefile.am
+--- netgen-5.3.1_orig/Makefile.am      2016-10-21 17:32:01.000000000 +0300
++++ netgen-5.3.1_new/Makefile.am       2016-10-21 17:31:54.000000000 +0300
+@@ -2,7 +2,7 @@
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ # TESTS = ng/netgen -batchmode
+diff -NaurwB netgen-5.3.1_orig/Makefile.in netgen-5.3.1_new/Makefile.in
+--- netgen-5.3.1_orig/Makefile.in      2014-10-06 15:04:37.000000000 +0400
++++ netgen-5.3.1_new/Makefile.in       2016-10-03 16:17:10.164707368 +0300
+@@ -280,7 +280,7 @@
+ top_srcdir = @top_srcdir@
+ ACLOCAL_AMFLAGS = -I m4
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+diff -NaurwB netgen-5.3.1_orig/configure.ac netgen-5.3.1_new/configure.ac
+--- netgen-5.3.1_orig/configure.ac     2014-10-06 15:00:17.000000000 +0400
++++ netgen-5.3.1_new/configure.ac      2016-09-29 14:34:11.957389447 +0300
+@@ -20,7 +20,7 @@
+ CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+ # LDFLAGS="$LDFLAGS $OPENMP_CXXFLAGS"
+-AM_PROG_AR
++m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+ AC_PROG_LIBTOOL
+ LT_INIT
+@@ -42,8 +42,8 @@
+ if test a$occon = atrue ; then
+-      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc -I/usr/include/opencascade"])
+-      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
++      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/include/opencascade"])
++      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF"])
+ #  -lTKDCAF
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/findip.hpp netgen-5.3.1_new/libsrc/meshing/findip.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/findip.hpp        2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/findip.hpp 2016-09-30 20:38:56.662234111 +0300
+@@ -75,6 +75,9 @@
+   static int timer = NgProfiler::CreateTimer ("FindInnerPoint");
+   NgProfiler::RegionTimer reg (timer);
++  if ( points.Size() < 3 )
++    return 0;
++
+   Array<Vec3d> a;
+   Array<double> c;
+   Mat<3> m, inv;
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/improve3.cpp netgen-5.3.1_new/libsrc/meshing/improve3.cpp
+--- netgen-5.3.1_orig/libsrc/meshing/improve3.cpp      2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/improve3.cpp       2016-10-03 16:16:57.636639300 +0300
+@@ -1219,6 +1219,7 @@
+             tetused = 0;
+             tetused[0] = 1;
++              int nbtetused = 0;
+             for (int l = 2; l < nsuround; l++)
+               {
+@@ -1239,10 +1240,12 @@
+                             
+                             tetused[k] = 1; 
+                             suroundpts[l] = newpi;
++                              ++nbtetused;
+                           }                   
+                     }
+               }
+-
++              if ( nbtetused < nsuround )
++                continue;
+             
+             bad1 = 0;
+             for (int k = 0; k < nsuround; k++)
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/meshtype.cpp netgen-5.3.1_new/libsrc/meshing/meshtype.cpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshtype.cpp      2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/meshtype.cpp       2016-09-29 14:04:51.500148293 +0300
+@@ -1,4 +1,5 @@
+ #include <mystdlib.h>
++#include <float.h> // to get DBL_MIN defined
+ #include "meshing.hpp"  
+@@ -666,7 +667,8 @@
+         double det = trans.Det();
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -722,7 +724,8 @@
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+-            if (det <= 0)
++            // if (det <= 0)
++            if (det <= DBL_MIN)  // avoid FPE
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -806,7 +809,8 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -856,7 +860,8 @@
+         frob /= 2;
+         double det = trans.Det();
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1864,7 +1869,8 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          //if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2030,7 +2036,8 @@
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2102,7 +2109,8 @@
+         ddet *= -1;
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -2184,7 +2192,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp netgen-5.3.1_new/libsrc/meshing/meshtype.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp      2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/meshtype.hpp       2016-09-30 14:28:09.147575801 +0300
+@@ -15,6 +15,7 @@
+     Classes for NETGEN
+   */
++class Mesh; // added due to compilation errors on some platforms
+   enum ELEMENT_TYPE { 
+@@ -360,7 +361,7 @@
+         {
+ #ifdef DEBUG
+           if (typ != QUAD && typ != QUAD6 && typ != QUAD8)
+-            PrintSysError ("element2d::GetNV not implemented for typ", typ)
++            PrintSysError ("element2d::GetNV not implemented for typ", typ);
+ #endif
+           return 4;
+         }
+@@ -618,7 +619,7 @@
+         return 8;
+       default:
+ #ifdef DEBUG
+-        PrintSysError ("Element3d::GetNV not implemented for typ ", typ)
++        PrintSysError ("Element3d::GetNV not implemented for typ ", typ);
+ #endif
+           ;
+       }
+@@ -682,7 +683,7 @@
+       case PRISM12: return 5;
+       default:
+ #ifdef DEBUG
+-        PrintSysError ("element3d::GetNFaces not implemented for typ", typ)
++        PrintSysError ("element3d::GetNFaces not implemented for typ", typ);
+ #endif
+           ;
+       }
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.cxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.cxx  2016-09-29 14:44:01.996464598 +0300
+@@ -47,9 +47,7 @@
+ #include <TopOpeBRep_EdgesIntersector.hxx>
+ #include <TopOpeBRep_Point2d.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+-#include <TopTools_MapOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Edge.hxx>
+ #include <TopoDS_Vertex.hxx>
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.hxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.hxx  2016-09-29 14:44:01.996464598 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter2d_HeaderFile
+ #define _Partition_Inter2d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
+ #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _Standard_Real_HeaderFile
+@@ -36,11 +38,13 @@
+ #ifndef _Standard_Boolean_HeaderFile
+ #include <Standard_Boolean.hxx>
+ #endif
++
++#include <TopTools_MapOfShape.hxx>
++#include <TopTools_ListOfShape.hxx>
++
+ class BRepAlgo_AsDes;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Vertex;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.cxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.cxx  2016-09-29 14:44:02.000464619 +0300
+@@ -48,7 +48,6 @@
+ #include <TopOpeBRepTool_BoxSort.hxx>
+ #include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Compound.hxx>
+ #include <TopoDS_Edge.hxx>
+@@ -206,7 +205,7 @@
+   Handle (Geom_Surface) S   = BRep_Tool::Surface(F,L);
+   if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) {
+-    S = (*(Handle_Geom_RectangularTrimmedSurface*)&S)->BasisSurface();
++    S = Handle(Geom_RectangularTrimmedSurface)::DownCast (S)->BasisSurface();
+   }
+   if (!S->IsUPeriodic() && !S->IsVPeriodic())
+     return;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.hxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.hxx  2016-09-29 14:44:02.000464619 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter3d_HeaderFile
+ #define _Partition_Inter3d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
+ #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile
+@@ -36,6 +38,9 @@
+ #ifndef _TopTools_MapOfShape_HeaderFile
+ #include <TopTools_MapOfShape.hxx>
+ #endif
++#ifndef _TopTools_ListOfShape_HeaderFile
++#include <TopTools_ListOfShape.hxx>
++#endif
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+@@ -43,10 +48,7 @@
+ #include <Standard_Boolean.hxx>
+ #endif
+ class BRepAlgo_AsDes;
+-class TopTools_ListOfShape;
+-class TopTools_DataMapOfShapeShape;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Shape;
+ class TopoDS_Vertex;
+ class TopoDS_Edge;
+@@ -83,13 +85,13 @@
+    void FacesPartition(const TopoDS_Face& F1,const TopoDS_Face& F2) ;
+    Standard_Boolean IsDone(const TopoDS_Face& F1,const TopoDS_Face& F2) const;
+    TopTools_MapOfShape& TouchedFaces() ;
+-   Handle_BRepAlgo_AsDes AsDes() const;
++   Handle(BRepAlgo_AsDes) AsDes() const;
+    TopTools_MapOfShape& NewEdges() ;
+    Standard_Boolean HasSameDomainF(const TopoDS_Shape& F) const;
+    Standard_Boolean IsSameDomainF(const TopoDS_Shape& F1,const TopoDS_Shape& F2) const;
+    const TopTools_ListOfShape& SameDomain(const TopoDS_Face& F) const;
+    TopoDS_Vertex ReplaceSameDomainV(const TopoDS_Vertex& V,const TopoDS_Edge& E) const;
+-   Handle_BRepAlgo_AsDes SectionEdgesAD() const;
++   Handle(BRepAlgo_AsDes) SectionEdgesAD() const;
+    Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const;
+    Standard_Boolean HasSectionEdge(const TopoDS_Face& F) const;
+    Standard_Boolean IsSplitOn(const TopoDS_Edge& NewE,const TopoDS_Edge& OldE,const TopoDS_Face& F) const;
+@@ -121,11 +123,11 @@
+    // Fields PRIVATE
+    //
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    TopTools_DataMapOfShapeListOfShape myDone;
+    TopTools_MapOfShape myTouched;
+    TopTools_MapOfShape myNewEdges;
+-   Handle_BRepAlgo_AsDes mySectionEdgesAD;
++   Handle(BRepAlgo_AsDes) mySectionEdgesAD;
+    TopTools_DataMapOfShapeListOfShape mySameDomainFM;
+    TopTools_DataMapOfShapeShape mySameDomainVM;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop.hxx    2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop.hxx     2016-09-29 14:44:02.000464619 +0300
+@@ -38,8 +38,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+-
+ #ifndef _Standard_HeaderFile
+ #include <Standard.hxx>
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.cxx  2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.cxx   2016-09-29 14:04:51.504148314 +0300
+@@ -210,7 +210,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -234,7 +234,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.hxx  2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.hxx   2016-09-29 14:44:02.000464619 +0300
+@@ -24,7 +24,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+ class BRepAlgo_Image;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop3d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop3d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop3d.hxx  2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop3d.hxx   2016-09-29 14:44:02.000464619 +0300
+@@ -13,6 +13,9 @@
+ #ifndef _TopTools_ListOfShape_HeaderFile
+ #include <TopTools_ListOfShape.hxx>
+ #endif
++#ifndef _TopTools_MapOfOrientedShape_HeaderFile
++#include <TopTools_MapOfOrientedShape.hxx>
++#endif
+ #ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #endif
+@@ -23,8 +26,6 @@
+ #include <Standard_Real.hxx>
+ #endif
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+-class TopTools_MapOfOrientedShape;
+ class TopoDS_Edge;
+ class TopoDS_Face;
+ class gp_Vec;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.cxx netgen-5.3.1_new/libsrc/occ/Partition_Spliter.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.cxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Spliter.cxx  2016-09-29 14:44:02.000464619 +0300
+@@ -48,7 +48,6 @@
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_IndexedMapOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+ #include <TopTools_SequenceOfShape.hxx>
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.hxx netgen-5.3.1_new/libsrc/occ/Partition_Spliter.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.hxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Spliter.hxx  2016-09-29 14:44:02.004464639 +0300
+@@ -28,9 +28,6 @@
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
+-#include <Handle_BRepAlgo_AsDes.hxx>
+-#endif
+ #ifndef _BRepAlgo_Image_HeaderFile
+ #include <BRepAlgo_Image.hxx>
+ #endif
+@@ -45,7 +42,6 @@
+ #endif
+ class BRepAlgo_AsDes;
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+@@ -129,7 +125,7 @@
+    TopTools_DataMapOfShapeShape myFaceShapeMap;
+    TopTools_DataMapOfShapeShape myInternalFaces;
+    TopTools_DataMapOfShapeShape myIntNotClFaces;
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    BRepAlgo_Image myImagesFaces;
+    BRepAlgo_Image myImagesEdges;
+    BRepAlgo_Image myImageShape;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occconstruction.cpp netgen-5.3.1_new/libsrc/occ/occconstruction.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occconstruction.cpp   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occconstruction.cpp    2016-09-29 14:04:51.500148293 +0300
+@@ -28,7 +28,7 @@
+ #include <BRepAlgoAPI_Common.hxx>
+ #include <BRepAlgoAPI_Fuse.hxx>
+ #include <BRepAlgoAPI_Section.hxx>
+-#include <BRepOffsetAPI_Sewing.hxx>
++//#include <BRepOffsetAPI_Sewing.hxx>
+ //#include <BRepAlgo_Sewing.hxx>
+ #include <BRepOffsetAPI_MakeOffsetShape.hxx>
+ #include <ShapeFix_Shape.hxx>
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp netgen-5.3.1_new/libsrc/occ/occgenmesh.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp        2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgenmesh.cpp 2016-09-29 14:04:51.500148293 +0300
+@@ -171,8 +171,8 @@
+          if(h < 1e-4*maxside)\r
+             return;\r
\r
+-\r
+-         if (h > 30) return;\r
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
+       }\r
\r
+       if (h < maxside && depth < 10)\r
+@@ -250,8 +250,8 @@
+       hvalue[0] = 0;\r
+       pnt = c->Value(s0);\r
\r
+-      double olddist = 0;\r
+-      double dist = 0;\r
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
\r
+       int tmpVal = (int)(DIVIDEEDGESECTIONS);\r
\r
+@@ -259,15 +259,19 @@
+       {\r
+          oldpnt = pnt;\r
+          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));\r
++         // -- no more than 1 segment per <edge length>/DIVIDEEDGESECTIONS
+          hvalue[i] = hvalue[i-1] +\r
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
+             1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*\r
+-            pnt.Distance(oldpnt);\r
++                pnt.Distance(oldpnt));
\r
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))\r
+          //      <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;\r
\r
+-         olddist = dist;\r
+-         dist = pnt.Distance(oldpnt);\r
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
+       }\r
\r
+       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));\r
+@@ -282,7 +286,10 @@
+       {\r
+          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)\r
+          {\r
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);\r
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+             pnt = c->Value(params[i]);\r
+             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));\r
+             i++;\r
+@@ -326,6 +333,9 @@
+       (*testout) << "nedges = " << nedges << endl;\r
\r
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();\r
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
\r
+       for (int i = 1; i <= nvertices; i++)\r
+       {\r
+@@ -335,7 +345,8 @@
+          bool exists = 0;\r
+          if (merge_solids)\r
+             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)\r
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)\r
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
+                {\r
+                   exists = 1;\r
+                   break;\r
+@@ -365,6 +376,7 @@
+          {\r
+             TopoDS_Face face = TopoDS::Face(exp1.Current());\r
+             int facenr = geom.fmap.FindIndex(face);\r
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
\r
+             if (face2solid[0][facenr-1] == 0)\r
+                face2solid[0][facenr-1] = solidnr;\r
+@@ -384,6 +396,7 @@
+       int facenr = 0;\r
+       int edgenr = 0;\r
\r
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
\r
+       (*testout) << "faces = " << geom.fmap.Extent() << endl;\r
+       int curr = 0;\r
+@@ -445,6 +458,7 @@
+                   //(*testout) << "ignoring degenerated edge" << endl;\r
+                   continue;\r
+                }\r
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
\r
+                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==\r
+                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))\r
+@@ -477,20 +491,104 @@
\r
+                if (!merge_solids)\r
+                {\r
+-                  pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));\r
+-                  pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));\r
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
+                }\r
+                else\r
+                {\r
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));\r
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));\r
++                     ip += first_vp - 1;
++                   }
++                 }
++               }
++               else
++               {
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
\r
+                   pnums[0] = -1;\r
+                   pnums.Last() = -1;\r
+                   for (PointIndex pi = 1; pi < first_ep; pi++)\r
+                   {\r
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;\r
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;\r
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
+                   }\r
+                }\r
\r
+@@ -500,17 +598,20 @@
+                   bool exists = 0;\r
+                   int j;\r
+                   for (j = first_ep; j <= mesh.GetNP(); j++)\r
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
+                      if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)\r
+                      {\r
+                         exists = 1;\r
+                         break;\r
+                      }\r
++                  }
\r
+                      if (exists)\r
+                         pnums[i] = j;\r
+                      else\r
+                      {\r
+-                        mesh.AddPoint (mp[i-1]);\r
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+                         (*testout) << "add meshpoint " << mp[i-1] << endl;\r
+                         pnums[i] = mesh.GetNP();\r
+                      }\r
+@@ -594,6 +695,8 @@
+       //              (*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si\r
+       //                              << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;\r
+       //      exit(10);\r
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
\r
+       mesh.CalcSurfacesOfNode();\r
+       multithread.task = savetask;\r
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgeom.cpp netgen-5.3.1_new/libsrc/occ/occgeom.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occgeom.cpp   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgeom.cpp    2016-09-29 16:22:31.636328123 +0300
+@@ -8,6 +8,8 @@
+ #include "ShapeAnalysis_CheckSmallFace.hxx"\r
+ #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"\r
+ #include "ShapeAnalysis_Surface.hxx"\r
++#include <BRepTopAdaptor_FClass2d.hxx> // -- to optimize Project() and FastProject()
++#include <TopAbs_State.hxx>
+ #include "BRepAlgoAPI_Fuse.hxx"\r
+ #include "BRepCheck_Analyzer.hxx"\r
+ #include "BRepLib.hxx"\r
+@@ -16,9 +18,16 @@
+ #include "ShapeFix_FixSmallFace.hxx"\r
+ #include "Partition_Spliter.hxx"\r
\r
+-\r
+ namespace netgen\r
+ {\r
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap<int,BRepTopAdaptor_FClass2d*>::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
+    void OCCGeometry :: PrintNrShapes ()\r
+    {\r
+       TopExp_Explorer e;\r
+@@ -112,7 +121,7 @@
+       double surfacecont = 0;\r
\r
+       {\r
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);\r
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())\r
+          {\r
+@@ -143,7 +152,7 @@
+          cout << endl << "- repairing faces" << endl;\r
\r
+          Handle(ShapeFix_Face) sff;\r
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);\r
\r
\r
+@@ -200,7 +209,7 @@
\r
\r
+       {\r
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);\r
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())\r
+          {\r
+@@ -217,7 +226,7 @@
+          cout << endl << "- fixing small edges" << endl;\r
\r
+          Handle(ShapeFix_Wire) sfw;\r
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);\r
\r
\r
+@@ -284,7 +293,7 @@
\r
+          {\r
+             BuildFMap();\r
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);\r
\r
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())\r
+@@ -312,7 +321,7 @@
\r
\r
+          {\r
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);\r
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())\r
+             {\r
+@@ -438,7 +447,7 @@
\r
\r
+       {\r
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);\r
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())\r
+          {\r
+@@ -483,7 +492,7 @@
+                   TopoDS_Solid solid = TopoDS::Solid(exp0.Current());\r
+                   TopoDS_Solid newsolid = solid;\r
+                   BRepLib::OrientClosedSolid (newsolid);\r
+-                  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++                  Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+                   //            rebuild->Apply(shape);\r
+                   rebuild->Replace(solid, newsolid, Standard_False);\r
+                   TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);\r
+@@ -906,7 +915,7 @@
+             TopoDS_Solid solid = TopoDS::Solid(exp0.Current());\r
+             TopoDS_Solid newsolid = solid;\r
+             BRepLib::OrientClosedSolid (newsolid);\r
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;\r
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Replace(solid, newsolid, Standard_False);\r
\r
+             TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);\r
+@@ -951,25 +960,58 @@
+    }\r
\r
\r
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
\r
+-\r
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const\r
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {\r
+       static int cnt = 0;\r
+       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;\r
\r
+       gp_Pnt pnt(p(0), p(1), p(2));\r
\r
+-      double u,v;\r
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));\r
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );\r
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );\r
+-      suval.Coord( u, v);\r
+-      pnt = thesurf->Value( u, v );\r
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
\r
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
\r
+       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());\r
\r
++      return true;
+    }\r
\r
\r
+@@ -979,54 +1021,69 @@
+    {\r
+       gp_Pnt p(ap(0), ap(1), ap(2));\r
\r
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));\r
+-\r
+-      gp_Pnt x = surface->Value (u,v);\r
+-\r
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;\r
+-\r
+-      gp_Vec du, dv;\r
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
\r
+-      surface->D1(u,v,x,du,dv);\r
+-\r
+-      int count = 0;\r
+-\r
+-      gp_Pnt xold;\r
+-      gp_Vec n;\r
+-      double det, lambda, mu;\r
+-\r
+-      do {\r
+-         count++;\r
+-\r
+-         n = du^dv;\r
+-\r
+-         det = Det3 (n.X(), du.X(), dv.X(),\r
+-            n.Y(), du.Y(), dv.Y(),\r
+-            n.Z(), du.Z(), dv.Z());\r
+-\r
+-         if (det < 1e-15) return false;\r
+-\r
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),\r
+-            n.Y(), p.Y()-x.Y(), dv.Y(),\r
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;\r
+-\r
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),\r
+-            n.Y(), du.Y(), p.Y()-x.Y(),\r
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;\r
+-\r
+-         u += lambda;\r
+-         v += mu;\r
+-\r
+-         xold = x;\r
+-         surface->D1(u,v,x,du,dv);\r
+-\r
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);\r
+-\r
+-      //    (*testout) << "FastProject count: " << count << endl;\r
+-\r
+-      if (count == 50) return false;\r
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //cout << "Projection fails" << endl;
++        return false;
++      }
\r
+-      ap = Point<3> (x.X(), x.Y(), x.Z());\r
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
\r
+       return true;\r
+    }\r
+@@ -1038,9 +1095,9 @@
+    {\r
+       cout << "writing stl..."; cout.flush();\r
+       StlAPI_Writer writer;\r
+-      writer.RelativeMode() = Standard_False;\r
++      //writer.RelativeMode() = Standard_False;
\r
+-      writer.SetDeflection(0.02);\r
++      //writer.SetDeflection(0.02);
+       writer.Write(shape,filename);\r
\r
+       cout << "done" << endl;\r
+@@ -1059,10 +1116,10 @@
+       occgeo = new OCCGeometry;\r
\r
+       // Initiate a dummy XCAF Application to handle the IGES XCAF Document\r
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();\r
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
\r
+       // Create an XCAF Document to contain the IGES file itself\r
+-      Handle_TDocStd_Document iges_doc;\r
++      Handle(TDocStd_Document) iges_doc;
\r
+       // Check if a IGES File is already open under this handle, if so, close it to prevent\r
+       // Segmentation Faults when trying to create a new document\r
+@@ -1089,8 +1146,8 @@
+       reader.Transfer(iges_doc);\r
\r
+       // Read in the shape(s) and the colours present in the IGES File\r
+-      Handle_XCAFDoc_ShapeTool iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());\r
+-      Handle_XCAFDoc_ColorTool iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());\r
++      Handle(XCAFDoc_ShapeTool) iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
++      Handle(XCAFDoc_ColorTool) iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
\r
+       TDF_LabelSequence iges_shapes;\r
+       iges_shape_contents->GetShapes(iges_shapes);\r
+@@ -1137,10 +1194,10 @@
+       occgeo = new OCCGeometry;\r
\r
+       // Initiate a dummy XCAF Application to handle the STEP XCAF Document\r
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();\r
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
\r
+       // Create an XCAF Document to contain the STEP file itself\r
+-      Handle_TDocStd_Document step_doc;\r
++      Handle(TDocStd_Document) step_doc;
\r
+       // Check if a STEP File is already open under this handle, if so, close it to prevent\r
+       // Segmentation Faults when trying to create a new document\r
+@@ -1167,8 +1224,8 @@
+       reader.Transfer(step_doc);\r
\r
+       // Read in the shape(s) and the colours present in the STEP File\r
+-      Handle_XCAFDoc_ShapeTool step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());\r
+-      Handle_XCAFDoc_ColorTool step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());\r
++      Handle(XCAFDoc_ShapeTool) step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
++      Handle(XCAFDoc_ColorTool) step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
\r
+       TDF_LabelSequence step_shapes;\r
+       step_shape_contents->GetShapes(step_shapes);\r
+@@ -1221,7 +1278,7 @@
+       // Fixed a bug in the OpenCascade XDE Colour handling when \r
+       // opening BREP Files, since BREP Files have no colour data.\r
+       // Hence, the face_colours Handle needs to be created as a NULL handle.\r
+-      occgeo->face_colours = Handle_XCAFDoc_ColorTool();\r
++      occgeo->face_colours = Handle(XCAFDoc_ColorTool)();
+       occgeo->face_colours.Nullify();\r
+       occgeo->changed = 1;\r
+       occgeo->BuildFMap();\r
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgeom.hpp netgen-5.3.1_new/libsrc/occ/occgeom.hpp
+--- netgen-5.3.1_orig/libsrc/occ/occgeom.hpp   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgeom.hpp    2016-09-29 14:44:01.996464598 +0300
+@@ -15,8 +15,8 @@
+ #include "Geom_Curve.hxx"\r
+ #include "Geom2d_Curve.hxx"\r
+ #include "Geom_Surface.hxx"\r
+-#include "GeomAPI_ProjectPointOnSurf.hxx"\r
+-#include "GeomAPI_ProjectPointOnCurve.hxx"\r
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "BRepTools.hxx"\r
+ #include "TopExp.hxx"\r
+ #include "BRepBuilderAPI_MakeVertex.hxx"\r
+@@ -42,8 +42,8 @@
+ #include "Geom_Curve.hxx"\r
+ #include "Geom2d_Curve.hxx"\r
+ #include "Geom_Surface.hxx"\r
+-#include "GeomAPI_ProjectPointOnSurf.hxx"\r
+-#include "GeomAPI_ProjectPointOnCurve.hxx"\r
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "TopoDS_Wire.hxx"\r
+ #include "BRepTools_WireExplorer.hxx"\r
+ #include "BRepTools.hxx"\r
+@@ -68,18 +68,26 @@
+ #include "IGESToBRep_Reader.hxx"\r
+ #include "Interface_Static.hxx"\r
+ #include "GeomAPI_ExtremaCurveCurve.hxx"\r
+-#include "Standard_ErrorHandler.hxx"\r
++//#include "Standard_ErrorHandler.hxx"
+ #include "Standard_Failure.hxx"\r
+ #include "ShapeUpgrade_ShellSewing.hxx"\r
+ #include "ShapeFix_Shape.hxx"\r
+ #include "ShapeFix_Wireframe.hxx"\r
++#include <Standard_Version.hxx>
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
+ #include "BRepMesh.hxx"\r
++#endif
+ #include "BRepMesh_IncrementalMesh.hxx"\r
+ #include "BRepBndLib.hxx"\r
+ #include "Bnd_Box.hxx"\r
+ #include "ShapeAnalysis.hxx"\r
+ #include "ShapeBuild_ReShape.hxx"\r
\r
++// -- Optimization: to use cached projector and classifier
++#include <NCollection_DataMap.hxx>
++class ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
\r
+ // Philippose - 29/01/2009\r
+ // OpenCascade XDE Support\r
+@@ -192,6 +200,9 @@
+    class OCCGeometry : public NetgenGeometry\r
+    {\r
+       Point<3> center;\r
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap<int,Handle(ShapeAnalysis_Surface)> fprjmap;
++      mutable NCollection_DataMap<int,BRepTopAdaptor_FClass2d*> fclsmap;
\r
+    public:\r
+       TopoDS_Shape shape;\r
+@@ -203,7 +214,7 @@
+       // OpenCascade XDE Support\r
+       // XCAF Handle to make the face colours available to the rest of\r
+       // the system\r
+-      Handle_XCAFDoc_ColorTool face_colours;\r
++      Handle(XCAFDoc_ColorTool) face_colours;
\r
+      mutable int changed;\r
+       Array<int> facemeshstatus;\r
+@@ -247,6 +258,8 @@
+      virtual void Save (string filename) const;\r
\r
\r
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
+       void BuildFMap();\r
\r
+       Box<3> GetBoundingBox()\r
+@@ -266,9 +279,14 @@
+       Point<3> Center()\r
+       {  return center;}\r
\r
+-      void Project (int surfi, Point<3> & p) const;\r
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
+       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;\r
\r
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
+       OCCSurface GetSurface (int surfi)\r
+       {\r
+          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;\r
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occmeshsurf.cpp netgen-5.3.1_new/libsrc/occ/occmeshsurf.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occmeshsurf.cpp       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occmeshsurf.cpp        2016-09-29 14:08:00.045144560 +0300
+@@ -6,6 +6,7 @@
+ #include <meshing.hpp>
+ #include <GeomLProp_SLProps.hxx>
+ #include <ShapeAnalysis_Surface.hxx>
++#include <GeomAPI_ProjectPointOnCurve.hxx> // -- moved here from occgeom.hpp
+ namespace netgen
+@@ -96,13 +97,16 @@
+       n.Normalize();
+       }
+-    else
++    else if ( lprop.IsNormalDefined() )
+       {
+       n(0)=lprop.Normal().X();
+       n(1)=lprop.Normal().Y();
+       n(2)=lprop.Normal().Z();
+       }
+-
++    else
++      {
++        n = 0;
++      }
+     if(glob_testout)
+       {
+       (*testout) << "u " << geominfo.u << " v " << geominfo.v 
+@@ -434,23 +435,33 @@
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
+       p = hp;
+-      return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    return ok;
+   }
+@@ -680,7 +691,8 @@
+       if (!geometry.FastProject (surfi, hnewp, u, v))
+         {
+         //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-          geometry.Project (surfi, hnewp);
++          // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++          geometry.Project (surfi, hnewp, u, v);
+         }
+       newgi.trignum = 1;
+@@ -689,7 +701,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: 
+@@ -708,14 +720,18 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi) const
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      //geometry.Project (surfi, p);
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi) const
+   {
+@@ -723,9 +739,10 @@
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+       {
+         cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-        geometry.Project (surfi, p);
++          double u, v;
++        geometry.Project (surfi, p, u, v);
++      }
+       }
+-  };
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/utilities.h netgen-5.3.1_new/libsrc/occ/utilities.h
+--- netgen-5.3.1_orig/libsrc/occ/utilities.h   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/utilities.h    2016-09-29 14:04:51.504148314 +0300
+@@ -33,6 +33,7 @@
+ #include <string>
+ #include <iostream>
++#include <iomanip>
+ #include <cstdlib>
+ // #include "SALOME_Log.hxx"
+diff -NaurwB netgen-5.3.1_orig/nglib/nglib.h netgen-5.3.1_new/nglib/nglib.h
+--- netgen-5.3.1_orig/nglib/nglib.h    2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_new/nglib/nglib.h     2016-09-29 14:04:51.504148314 +0300
+@@ -24,7 +24,7 @@
+ // Philippose - 14.02.2009\r
+ // Modifications for creating a DLL in Windows\r
+ #ifdef WIN32\r
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS\r
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
+       #define DLL_HEADER   __declspec(dllexport)\r
+    #else\r
+       #define DLL_HEADER   __declspec(dllimport)\r
+diff -Naur netgen-5.3.1_orig/libsrc/csg/Makefile.am netgen-5.3.1_new/libsrc/csg/Makefile.am
+--- netgen-5.3.1_orig/libsrc/csg/Makefile.am   2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_new/libsrc/csg/Makefile.am    2016-11-08 17:48:02.000000000 +0300
+@@ -8,7 +8,7 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include  $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libcsg.la
++noinst_LTLIBRARIES = libcsg.la
+ libcsg_la_SOURCES = algprim.cpp brick.cpp   \
+@@ -17,12 +17,9 @@
+ manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
+ solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp
+-libcsg_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+-
+-
+ if NGGUI
+-lib_LTLIBRARIES += libcsgvis.la 
++lib_LTLIBRARIES = libcsgvis.la 
+ libcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp
+ libcsgvis_la_LIBADD = libcsg.la
+diff -Naur netgen-5.3.1_orig/libsrc/geom2d/Makefile.am netgen-5.3.1_new/libsrc/geom2d/Makefile.am
+--- netgen-5.3.1_orig/libsrc/geom2d/Makefile.am        2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_new/libsrc/geom2d/Makefile.am 2016-11-08 17:49:13.000000000 +0300
+@@ -4,16 +4,15 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libgeom2d.la 
++noinst_LTLIBRARIES = libgeom2d.la 
+ if NGGUI
+-lib_LTLIBRARIES += libgeom2dvis.la 
++lib_LTLIBRARIES = libgeom2dvis.la 
+ endif
+ libgeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp
+-libgeom2d_la_LIBADD =         $(top_builddir)/libsrc/meshing/libmesh.la
+ libgeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp
+ libgeom2dvis_la_LIBADD = libgeom2d.la
+diff -Naur netgen-5.3.1_orig/libsrc/interface/Makefile.am netgen-5.3.1_new/libsrc/interface/Makefile.am
+--- netgen-5.3.1_orig/libsrc/interface/Makefile.am     2014-08-29 13:54:02.000000000 +0400
++++ netgen-5.3.1_new/libsrc/interface/Makefile.am      2016-11-08 17:49:26.000000000 +0300
+@@ -2,14 +2,11 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface  $(MPI_INCLUDES) $(TCL_INCLUDES) -DOPENGL
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libinterface.la
++noinst_LTLIBRARIES = libinterface.la
+ libinterface_la_SOURCES = nginterface.cpp nginterface_v2.cpp \
+       read_fnf_mesh.cpp readtetmesh.cpp readuser.cpp writeabaqus.cpp writediffpack.cpp \
+       writedolfin.cpp writeelmer.cpp writefeap.cpp writefluent.cpp writegmsh.cpp writejcm.cpp \
+       writepermas.cpp writetecplot.cpp writetet.cpp writetochnog.cpp writeuser.cpp \
+       wuchemnitz.cpp writegmsh2.cpp writeOpenFOAM15x.cpp 
+-
+-libinterface_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la
+-
+ # libinterface_la_LDFLAGS = -rdynamic
+diff -Naur netgen-5.3.1_orig/libsrc/meshing/Makefile.am netgen-5.3.1_new/libsrc/meshing/Makefile.am
+--- netgen-5.3.1_orig/libsrc/meshing/Makefile.am       2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/Makefile.am        2016-11-08 17:48:44.000000000 +0300
+@@ -15,7 +15,7 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libmesh.la
++noinst_LTLIBRARIES = libmesh.la
+ libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
+       clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp            \
+@@ -30,8 +30,5 @@
+       topology.cpp triarls.cpp validate.cpp zrefine.cpp bcfunctions.cpp   \
+       parallelmesh.cpp  paralleltop.cpp  paralleltop.hpp basegeom.cpp 
+-libmesh_la_LIBADD =  $(top_builddir)/libsrc/linalg/libla.la \
+-      $(top_builddir)/libsrc/gprim/libgprim.la \
+-      $(top_builddir)/libsrc/general/libgen.la \
+-      -lz
++libmesh_la_LIBADD = -lz
+diff -Naur netgen-5.3.1_orig/libsrc/occ/Makefile.am netgen-5.3.1_new/libsrc/occ/Makefile.am
+--- netgen-5.3.1_orig/libsrc/occ/Makefile.am   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Makefile.am    2016-11-08 17:30:53.000000000 +0300
+@@ -14,10 +14,10 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libocc.la
++noinst_LTLIBRARIES = libocc.la
+ if NGGUI
+-lib_LTLIBRARIES += liboccvis.la 
++lib_LTLIBRARIES = liboccvis.la 
+ endif
+diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am netgen-5.3.1_new/libsrc/stlgeom/Makefile.am
+--- netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am       2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/stlgeom/Makefile.am        2016-11-08 18:28:09.000000000 +0300
+@@ -4,10 +4,10 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libstl.la 
++noinst_LTLIBRARIES = libstl.la 
+ if NGGUI
+-lib_LTLIBRARIES += libstlvis.la 
++lib_LTLIBRARIES = libstlvis.la 
+ endif
+ libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
+@@ -16,6 +16,5 @@
+ libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
+ libstlvis_la_LIBADD = libstl.la
+-libstl_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+ # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la 
+diff -Naur netgen-5.3.1_orig/nglib/Makefile.am netgen-5.3.1_new/nglib/Makefile.am
+--- netgen-5.3.1_orig/nglib/Makefile.am        2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_new/nglib/Makefile.am 2016-11-08 19:01:17.000000000 +0300
+@@ -14,6 +14,9 @@
+       $(top_builddir)/libsrc/stlgeom/libstl.la \
+       $(top_builddir)/libsrc/occ/libocc.la \
+       $(top_builddir)/libsrc/meshing/libmesh.la \
++      $(top_builddir)/libsrc/general/libgen.la \
++      $(top_builddir)/libsrc/gprim/libgprim.la \
++      $(top_builddir)/libsrc/linalg/libla.la
+       $(OCCLIBS) $(MPI_LIBS)
+ libnglib_la_LDFLAGS = -avoid-version
diff --git a/products/patches/netgen53ForSalomeOCCT730.patch b/products/patches/netgen53ForSalomeOCCT730.patch
new file mode 100644 (file)
index 0000000..1639721
--- /dev/null
@@ -0,0 +1,1530 @@
+diff -Naur netgen-5.3.1_SRC_orig/Makefile.am netgen-5.3.1_SRC_modif/Makefile.am
+--- netgen-5.3.1_SRC_orig/Makefile.am  2014-08-29 13:55:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/Makefile.am 2017-09-11 18:08:21.217313702 +0300
+@@ -2,7 +2,7 @@
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ # TESTS = ng/netgen -batchmode
+diff -Naur netgen-5.3.1_SRC_orig/Makefile.in netgen-5.3.1_SRC_modif/Makefile.in
+--- netgen-5.3.1_SRC_orig/Makefile.in  2014-10-06 15:04:37.000000000 +0400
++++ netgen-5.3.1_SRC_modif/Makefile.in 2017-09-11 18:08:21.225312838 +0300
+@@ -280,7 +280,7 @@
+ top_srcdir = @top_srcdir@
+ ACLOCAL_AMFLAGS = -I m4
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+diff -Naur netgen-5.3.1_SRC_orig/configure.ac netgen-5.3.1_SRC_modif/configure.ac
+--- netgen-5.3.1_SRC_orig/configure.ac 2014-10-06 15:00:17.000000000 +0400
++++ netgen-5.3.1_SRC_modif/configure.ac        2017-09-11 18:08:21.226312730 +0300
+@@ -20,7 +20,7 @@
+ CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+ # LDFLAGS="$LDFLAGS $OPENMP_CXXFLAGS"
+-AM_PROG_AR
++m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+ AC_PROG_LIBTOOL
+ LT_INIT
+@@ -42,8 +42,8 @@
+ if test a$occon = atrue ; then
+-      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc -I/usr/include/opencascade"])
+-      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
++      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/include/opencascade"])
++      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF"])
+ #  -lTKDCAF
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/csg/Makefile.am netgen-5.3.1_SRC_modif/libsrc/csg/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/csg/Makefile.am       2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/csg/Makefile.am      2017-09-11 18:08:21.234311865 +0300
+@@ -8,7 +8,7 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include  $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libcsg.la
++noinst_LTLIBRARIES = libcsg.la
+ libcsg_la_SOURCES = algprim.cpp brick.cpp   \
+@@ -17,12 +17,9 @@
+ manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
+ solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp
+-libcsg_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+-
+-
+ if NGGUI
+-lib_LTLIBRARIES += libcsgvis.la 
++lib_LTLIBRARIES = libcsgvis.la 
+ libcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp
+ libcsgvis_la_LIBADD = libcsg.la
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/geom2d/Makefile.am netgen-5.3.1_SRC_modif/libsrc/geom2d/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/geom2d/Makefile.am    2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/geom2d/Makefile.am   2017-09-11 18:08:21.234311865 +0300
+@@ -4,16 +4,15 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libgeom2d.la 
++noinst_LTLIBRARIES = libgeom2d.la 
+ if NGGUI
+-lib_LTLIBRARIES += libgeom2dvis.la 
++lib_LTLIBRARIES = libgeom2dvis.la 
+ endif
+ libgeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp
+-libgeom2d_la_LIBADD =         $(top_builddir)/libsrc/meshing/libmesh.la
+ libgeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp
+ libgeom2dvis_la_LIBADD = libgeom2d.la
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/interface/Makefile.am netgen-5.3.1_SRC_modif/libsrc/interface/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/interface/Makefile.am 2014-08-29 13:54:02.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/interface/Makefile.am        2017-09-11 18:08:21.234311865 +0300
+@@ -2,14 +2,11 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface  $(MPI_INCLUDES) $(TCL_INCLUDES) -DOPENGL
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libinterface.la
++noinst_LTLIBRARIES = libinterface.la
+ libinterface_la_SOURCES = nginterface.cpp nginterface_v2.cpp \
+       read_fnf_mesh.cpp readtetmesh.cpp readuser.cpp writeabaqus.cpp writediffpack.cpp \
+       writedolfin.cpp writeelmer.cpp writefeap.cpp writefluent.cpp writegmsh.cpp writejcm.cpp \
+       writepermas.cpp writetecplot.cpp writetet.cpp writetochnog.cpp writeuser.cpp \
+       wuchemnitz.cpp writegmsh2.cpp writeOpenFOAM15x.cpp 
+-
+-libinterface_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la
+-
+ # libinterface_la_LDFLAGS = -rdynamic
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/Makefile.am netgen-5.3.1_SRC_modif/libsrc/meshing/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/Makefile.am   2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/Makefile.am  2017-09-11 18:08:21.234311865 +0300
+@@ -15,7 +15,7 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libmesh.la
++noinst_LTLIBRARIES = libmesh.la
+ libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
+       clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp            \
+@@ -30,8 +30,5 @@
+       topology.cpp triarls.cpp validate.cpp zrefine.cpp bcfunctions.cpp   \
+       parallelmesh.cpp  paralleltop.cpp  paralleltop.hpp basegeom.cpp 
+-libmesh_la_LIBADD =  $(top_builddir)/libsrc/linalg/libla.la \
+-      $(top_builddir)/libsrc/gprim/libgprim.la \
+-      $(top_builddir)/libsrc/general/libgen.la \
+-      -lz
++libmesh_la_LIBADD = -lz
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/findip.hpp netgen-5.3.1_SRC_modif/libsrc/meshing/findip.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/findip.hpp    2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/findip.hpp   2017-09-11 18:08:21.226312730 +0300
+@@ -75,6 +75,9 @@
+   static int timer = NgProfiler::CreateTimer ("FindInnerPoint");
+   NgProfiler::RegionTimer reg (timer);
++  if ( points.Size() < 3 )
++    return 0;
++
+   Array<Vec3d> a;
+   Array<double> c;
+   Mat<3> m, inv;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/improve3.cpp netgen-5.3.1_SRC_modif/libsrc/meshing/improve3.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/improve3.cpp  2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/improve3.cpp 2017-09-11 18:08:21.227312622 +0300
+@@ -1219,6 +1219,7 @@
+             tetused = 0;
+             tetused[0] = 1;
++              int nbtetused = 0;
+             for (int l = 2; l < nsuround; l++)
+               {
+@@ -1239,10 +1240,12 @@
+                             
+                             tetused[k] = 1; 
+                             suroundpts[l] = newpi;
++                              ++nbtetused;
+                           }                   
+                     }
+               }
+-
++              if ( nbtetused < nsuround )
++                continue;
+             
+             bad1 = 0;
+             for (int k = 0; k < nsuround; k++)
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.cpp netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.cpp  2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.cpp 2017-09-11 18:08:21.227312622 +0300
+@@ -1,4 +1,5 @@
+ #include <mystdlib.h>
++#include <float.h> // to get DBL_MIN defined
+ #include "meshing.hpp"  
+@@ -666,7 +667,8 @@
+         double det = trans.Det();
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -722,7 +724,8 @@
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+-            if (det <= 0)
++            // if (det <= 0)
++            if (det <= DBL_MIN)  // avoid FPE
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -806,7 +809,8 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -856,7 +860,8 @@
+         frob /= 2;
+         double det = trans.Det();
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1864,7 +1869,8 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          //if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2030,7 +2036,8 @@
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2102,7 +2109,8 @@
+         ddet *= -1;
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -2184,7 +2192,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.hpp netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/meshing/meshtype.hpp  2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/meshing/meshtype.hpp 2017-09-11 18:08:21.228312514 +0300
+@@ -15,6 +15,7 @@
+     Classes for NETGEN
+   */
++class Mesh; // added due to compilation errors on some platforms
+   enum ELEMENT_TYPE { 
+@@ -360,7 +361,7 @@
+         {
+ #ifdef DEBUG
+           if (typ != QUAD && typ != QUAD6 && typ != QUAD8)
+-            PrintSysError ("element2d::GetNV not implemented for typ", typ)
++            PrintSysError ("element2d::GetNV not implemented for typ", typ);
+ #endif
+           return 4;
+         }
+@@ -618,7 +619,7 @@
+         return 8;
+       default:
+ #ifdef DEBUG
+-        PrintSysError ("Element3d::GetNV not implemented for typ ", typ)
++        PrintSysError ("Element3d::GetNV not implemented for typ ", typ);
+ #endif
+           ;
+       }
+@@ -682,7 +683,7 @@
+       case PRISM12: return 5;
+       default:
+ #ifdef DEBUG
+-        PrintSysError ("element3d::GetNFaces not implemented for typ", typ)
++        PrintSysError ("element3d::GetNFaces not implemented for typ", typ);
+ #endif
+           ;
+       }
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Makefile.am netgen-5.3.1_SRC_modif/libsrc/occ/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Makefile.am       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Makefile.am      2017-09-11 18:08:21.234311865 +0300
+@@ -14,10 +14,10 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libocc.la
++noinst_LTLIBRARIES = libocc.la
+ if NGGUI
+-lib_LTLIBRARIES += liboccvis.la 
++lib_LTLIBRARIES = liboccvis.la 
+ endif
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.cxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.cxx    2017-09-11 18:08:21.228312514 +0300
+@@ -47,9 +47,7 @@
+ #include <TopOpeBRep_EdgesIntersector.hxx>
+ #include <TopOpeBRep_Point2d.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+-#include <TopTools_MapOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Edge.hxx>
+ #include <TopoDS_Vertex.hxx>
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter2d.hxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter2d.hxx    2017-09-11 18:08:21.228312514 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter2d_HeaderFile
+ #define _Partition_Inter2d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
+ #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _Standard_Real_HeaderFile
+@@ -36,11 +38,13 @@
+ #ifndef _Standard_Boolean_HeaderFile
+ #include <Standard_Boolean.hxx>
+ #endif
++
++#include <TopTools_MapOfShape.hxx>
++#include <TopTools_ListOfShape.hxx>
++
+ class BRepAlgo_AsDes;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Vertex;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.cxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.cxx    2017-09-11 18:08:21.229312406 +0300
+@@ -48,7 +48,6 @@
+ #include <TopOpeBRepTool_BoxSort.hxx>
+ #include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Compound.hxx>
+ #include <TopoDS_Edge.hxx>
+@@ -206,7 +205,7 @@
+   Handle (Geom_Surface) S   = BRep_Tool::Surface(F,L);
+   if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) {
+-    S = (*(Handle_Geom_RectangularTrimmedSurface*)&S)->BasisSurface();
++    S = Handle(Geom_RectangularTrimmedSurface)::DownCast (S)->BasisSurface();
+   }
+   if (!S->IsUPeriodic() && !S->IsVPeriodic())
+     return;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Inter3d.hxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Inter3d.hxx    2017-09-11 18:08:21.229312406 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter3d_HeaderFile
+ #define _Partition_Inter3d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
+ #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile
+@@ -36,6 +38,9 @@
+ #ifndef _TopTools_MapOfShape_HeaderFile
+ #include <TopTools_MapOfShape.hxx>
+ #endif
++#ifndef _TopTools_ListOfShape_HeaderFile
++#include <TopTools_ListOfShape.hxx>
++#endif
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+@@ -43,10 +48,7 @@
+ #include <Standard_Boolean.hxx>
+ #endif
+ class BRepAlgo_AsDes;
+-class TopTools_ListOfShape;
+-class TopTools_DataMapOfShapeShape;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Shape;
+ class TopoDS_Vertex;
+ class TopoDS_Edge;
+@@ -83,13 +85,13 @@
+    void FacesPartition(const TopoDS_Face& F1,const TopoDS_Face& F2) ;
+    Standard_Boolean IsDone(const TopoDS_Face& F1,const TopoDS_Face& F2) const;
+    TopTools_MapOfShape& TouchedFaces() ;
+-   Handle_BRepAlgo_AsDes AsDes() const;
++   Handle(BRepAlgo_AsDes) AsDes() const;
+    TopTools_MapOfShape& NewEdges() ;
+    Standard_Boolean HasSameDomainF(const TopoDS_Shape& F) const;
+    Standard_Boolean IsSameDomainF(const TopoDS_Shape& F1,const TopoDS_Shape& F2) const;
+    const TopTools_ListOfShape& SameDomain(const TopoDS_Face& F) const;
+    TopoDS_Vertex ReplaceSameDomainV(const TopoDS_Vertex& V,const TopoDS_Edge& E) const;
+-   Handle_BRepAlgo_AsDes SectionEdgesAD() const;
++   Handle(BRepAlgo_AsDes) SectionEdgesAD() const;
+    Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const;
+    Standard_Boolean HasSectionEdge(const TopoDS_Face& F) const;
+    Standard_Boolean IsSplitOn(const TopoDS_Edge& NewE,const TopoDS_Edge& OldE,const TopoDS_Face& F) const;
+@@ -121,11 +123,11 @@
+    // Fields PRIVATE
+    //
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    TopTools_DataMapOfShapeListOfShape myDone;
+    TopTools_MapOfShape myTouched;
+    TopTools_MapOfShape myNewEdges;
+-   Handle_BRepAlgo_AsDes mySectionEdgesAD;
++   Handle(BRepAlgo_AsDes) mySectionEdgesAD;
+    TopTools_DataMapOfShapeListOfShape mySameDomainFM;
+    TopTools_DataMapOfShapeShape mySameDomainVM;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop.hxx        2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop.hxx       2017-09-11 18:08:21.229312406 +0300
+@@ -38,8 +38,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+-
+ #ifndef _Standard_HeaderFile
+ #include <Standard.hxx>
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.cxx      2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.cxx     2017-09-11 18:08:21.229312406 +0300
+@@ -210,7 +210,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -234,7 +234,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop2d.hxx      2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop2d.hxx     2017-09-11 18:08:21.230312298 +0300
+@@ -24,7 +24,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+ class BRepAlgo_Image;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop3d.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop3d.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Loop3d.hxx      2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Loop3d.hxx     2017-09-11 18:08:21.230312298 +0300
+@@ -13,6 +13,9 @@
+ #ifndef _TopTools_ListOfShape_HeaderFile
+ #include <TopTools_ListOfShape.hxx>
+ #endif
++#ifndef _TopTools_MapOfOrientedShape_HeaderFile
++#include <TopTools_MapOfOrientedShape.hxx>
++#endif
+ #ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #endif
+@@ -23,8 +26,6 @@
+ #include <Standard_Real.hxx>
+ #endif
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+-class TopTools_MapOfOrientedShape;
+ class TopoDS_Edge;
+ class TopoDS_Face;
+ class gp_Vec;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.cxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.cxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.cxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.cxx    2017-09-11 18:08:21.230312298 +0300
+@@ -48,7 +48,6 @@
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_IndexedMapOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+ #include <TopTools_SequenceOfShape.hxx>
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.hxx netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.hxx
+--- netgen-5.3.1_SRC_orig/libsrc/occ/Partition_Spliter.hxx     2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/Partition_Spliter.hxx    2017-09-11 18:08:21.231312190 +0300
+@@ -28,9 +28,6 @@
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
+-#include <Handle_BRepAlgo_AsDes.hxx>
+-#endif
+ #ifndef _BRepAlgo_Image_HeaderFile
+ #include <BRepAlgo_Image.hxx>
+ #endif
+@@ -45,7 +42,6 @@
+ #endif
+ class BRepAlgo_AsDes;
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+@@ -129,7 +125,7 @@
+    TopTools_DataMapOfShapeShape myFaceShapeMap;
+    TopTools_DataMapOfShapeShape myInternalFaces;
+    TopTools_DataMapOfShapeShape myIntNotClFaces;
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    BRepAlgo_Image myImagesFaces;
+    BRepAlgo_Image myImagesEdges;
+    BRepAlgo_Image myImageShape;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occconstruction.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occconstruction.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occconstruction.cpp       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occconstruction.cpp      2017-09-11 18:08:21.231312190 +0300
+@@ -28,7 +28,7 @@
+ #include <BRepAlgoAPI_Common.hxx>
+ #include <BRepAlgoAPI_Fuse.hxx>
+ #include <BRepAlgoAPI_Section.hxx>
+-#include <BRepOffsetAPI_Sewing.hxx>
++//#include <BRepOffsetAPI_Sewing.hxx>
+ //#include <BRepAlgo_Sewing.hxx>
+ #include <BRepOffsetAPI_MakeOffsetShape.hxx>
+ #include <ShapeFix_Shape.hxx>
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occgenmesh.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occgenmesh.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occgenmesh.cpp    2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occgenmesh.cpp   2017-09-11 18:08:21.231312190 +0300
+@@ -171,8 +171,8 @@
+          if(h < 1e-4*maxside)
+             return;
+-
+-         if (h > 30) return;
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
+       }
+       if (h < maxside && depth < 10)
+@@ -250,8 +250,8 @@
+       hvalue[0] = 0;
+       pnt = c->Value(s0);
+-      double olddist = 0;
+-      double dist = 0;
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
+       int tmpVal = (int)(DIVIDEEDGESECTIONS);
+@@ -259,15 +259,19 @@
+       {
+          oldpnt = pnt;
+          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
++         // -- no more than 1 segment per <edge length>/DIVIDEEDGESECTIONS
+          hvalue[i] = hvalue[i-1] +
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
+             1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
+-            pnt.Distance(oldpnt);
++                pnt.Distance(oldpnt));
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+          //      <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
+-         olddist = dist;
+-         dist = pnt.Distance(oldpnt);
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
+       }
+       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
+@@ -282,7 +286,10 @@
+       {
+          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
+          {
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+             pnt = c->Value(params[i]);
+             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
+             i++;
+@@ -326,6 +333,9 @@
+       (*testout) << "nedges = " << nedges << endl;
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
+       for (int i = 1; i <= nvertices; i++)
+       {
+@@ -335,7 +345,8 @@
+          bool exists = 0;
+          if (merge_solids)
+             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
+                {
+                   exists = 1;
+                   break;
+@@ -365,6 +376,7 @@
+          {
+             TopoDS_Face face = TopoDS::Face(exp1.Current());
+             int facenr = geom.fmap.FindIndex(face);
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
+             if (face2solid[0][facenr-1] == 0)
+                face2solid[0][facenr-1] = solidnr;
+@@ -384,6 +396,7 @@
+       int facenr = 0;
+       int edgenr = 0;
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
+       (*testout) << "faces = " << geom.fmap.Extent() << endl;
+       int curr = 0;
+@@ -445,6 +458,7 @@
+                   //(*testout) << "ignoring degenerated edge" << endl;
+                   continue;
+                }
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
+                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))
+@@ -477,20 +491,104 @@
+                if (!merge_solids)
+                {
+-                  pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
+-                  pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
+                }
+                else
+                {
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
++                     ip += first_vp - 1;
++                   }
++                 }
++               }
++               else
++               {
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
+                   pnums[0] = -1;
+                   pnums.Last() = -1;
+                   for (PointIndex pi = 1; pi < first_ep; pi++)
+                   {
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
+                   }
+                }
+@@ -500,17 +598,20 @@
+                   bool exists = 0;
+                   int j;
+                   for (j = first_ep; j <= mesh.GetNP(); j++)
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
+                      if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)
+                      {
+                         exists = 1;
+                         break;
+                      }
++                  }
+                      if (exists)
+                         pnums[i] = j;
+                      else
+                      {
+-                        mesh.AddPoint (mp[i-1]);
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+                         (*testout) << "add meshpoint " << mp[i-1] << endl;
+                         pnums[i] = mesh.GetNP();
+                      }
+@@ -594,6 +695,8 @@
+       //              (*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
+       //                              << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;
+       //      exit(10);
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
+       mesh.CalcSurfacesOfNode();
+       multithread.task = savetask;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.cpp       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.cpp      2017-09-11 18:08:32.836058020 +0300
+@@ -8,6 +8,8 @@
+ #include "ShapeAnalysis_CheckSmallFace.hxx"
+ #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
+ #include "ShapeAnalysis_Surface.hxx"
++#include <BRepTopAdaptor_FClass2d.hxx> // -- to optimize Project() and FastProject()
++#include <TopAbs_State.hxx>
+ #include "BRepAlgoAPI_Fuse.hxx"
+ #include "BRepCheck_Analyzer.hxx"
+ #include "BRepLib.hxx"
+@@ -16,9 +18,16 @@
+ #include "ShapeFix_FixSmallFace.hxx"
+ #include "Partition_Spliter.hxx"
+-
+ namespace netgen
+ {
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap<int,BRepTopAdaptor_FClass2d*>::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
+    void OCCGeometry :: PrintNrShapes ()
+    {
+       TopExp_Explorer e;
+@@ -112,13 +121,13 @@
+       double surfacecont = 0;
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
++               rebuild->Remove(edge);
+          }
+          shape = rebuild->Apply(shape);
+       }
+@@ -143,7 +152,7 @@
+          cout << endl << "- repairing faces" << endl;
+          Handle(ShapeFix_Face) sff;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+@@ -187,7 +196,7 @@
+                   cout << "(natural bounds added)" <<endl;
+                TopoDS_Face newface = sff->Face();
+-               rebuild->Replace(face, newface, Standard_False);
++               rebuild->Replace(face, newface);
+             }
+             // Set the original colour of the face to the newly created 
+@@ -200,13 +209,13 @@
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
++               rebuild->Remove(edge);
+          }
+          shape = rebuild->Apply(shape);
+       }
+@@ -217,7 +226,7 @@
+          cout << endl << "- fixing small edges" << endl;
+          Handle(ShapeFix_Wire) sfw;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+@@ -270,7 +279,7 @@
+                if(replace)
+                {
+                   TopoDS_Wire newwire = sfw->Wire();
+-                  rebuild->Replace(oldwire, newwire, Standard_False);
++                  rebuild->Replace(oldwire, newwire);
+                }
+                //delete sfw; sfw = NULL;
+@@ -284,7 +293,7 @@
+          {
+             BuildFMap();
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+@@ -300,7 +309,7 @@
+                      cout << "removing degenerated edge " << emap.FindIndex(edge)
+                         << " from vertex " << vmap.FindIndex(TopExp::FirstVertex (edge))
+                         << " to vertex " << vmap.FindIndex(TopExp::LastVertex (edge)) << endl;
+-                     rebuild->Remove(edge, false);
++                     rebuild->Remove(edge);
+                   }
+                }
+             }
+@@ -312,13 +321,13 @@
+          {
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+             {
+                TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+                if ( BRep_Tool::Degenerated(edge) )
+-                  rebuild->Remove(edge, false);
++                  rebuild->Remove(edge);
+             }
+             shape = rebuild->Apply(shape);
+          }
+@@ -438,13 +447,13 @@
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               rebuild->Remove(edge, false);
++               rebuild->Remove(edge);
+          }
+          shape = rebuild->Apply(shape);
+       }
+@@ -483,9 +492,9 @@
+                   TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+                   TopoDS_Solid newsolid = solid;
+                   BRepLib::OrientClosedSolid (newsolid);
+-                  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++                  Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+                   //            rebuild->Apply(shape);
+-                  rebuild->Replace(solid, newsolid, Standard_False);
++                  rebuild->Replace(solid, newsolid);
+                   TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);
+                   //            TopoDS_Shape newshape = rebuild->Apply(shape);
+                   shape = newshape;
+@@ -906,8 +915,8 @@
+             TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+             TopoDS_Solid newsolid = solid;
+             BRepLib::OrientClosedSolid (newsolid);
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
+-            rebuild->Replace(solid, newsolid, Standard_False);
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
++            rebuild->Replace(solid, newsolid);
+             TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);
+             shape = newshape;
+@@ -951,25 +960,58 @@
+    }
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
+-
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {
+       static int cnt = 0;
+       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
+       gp_Pnt pnt(p(0), p(1), p(2));
+-      double u,v;
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
+-      suval.Coord( u, v);
+-      pnt = thesurf->Value( u, v );
+-
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
+       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
++      return true;
+    }
+@@ -979,54 +1021,69 @@
+    {
+       gp_Pnt p(ap(0), ap(1), ap(2));
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-
+-      gp_Pnt x = surface->Value (u,v);
+-
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
+-
+-      gp_Vec du, dv;
+-
+-      surface->D1(u,v,x,du,dv);
+-
+-      int count = 0;
+-
+-      gp_Pnt xold;
+-      gp_Vec n;
+-      double det, lambda, mu;
+-
+-      do {
+-         count++;
+-
+-         n = du^dv;
+-
+-         det = Det3 (n.X(), du.X(), dv.X(),
+-            n.Y(), du.Y(), dv.Y(),
+-            n.Z(), du.Z(), dv.Z());
+-
+-         if (det < 1e-15) return false;
+-
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
+-            n.Y(), p.Y()-x.Y(), dv.Y(),
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;
+-
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
+-            n.Y(), du.Y(), p.Y()-x.Y(),
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;
+-
+-         u += lambda;
+-         v += mu;
+-
+-         xold = x;
+-         surface->D1(u,v,x,du,dv);
+-
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+-
+-      //    (*testout) << "FastProject count: " << count << endl;
+-
+-      if (count == 50) return false;
+-
+-      ap = Point<3> (x.X(), x.Y(), x.Z());
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //cout << "Projection fails" << endl;
++        return false;
++      }
++
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
+       return true;
+    }
+@@ -1038,9 +1095,9 @@
+    {
+       cout << "writing stl..."; cout.flush();
+       StlAPI_Writer writer;
+-      writer.RelativeMode() = Standard_False;
++      //writer.RelativeMode() = Standard_False;
+-      writer.SetDeflection(0.02);
++      //writer.SetDeflection(0.02);
+       writer.Write(shape,filename);
+       cout << "done" << endl;
+@@ -1059,10 +1116,10 @@
+       occgeo = new OCCGeometry;
+       // Initiate a dummy XCAF Application to handle the IGES XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+       // Create an XCAF Document to contain the IGES file itself
+-      Handle_TDocStd_Document iges_doc;
++      Handle(TDocStd_Document) iges_doc;
+       // Check if a IGES File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1089,8 +1146,8 @@
+       reader.Transfer(iges_doc);
+       // Read in the shape(s) and the colours present in the IGES File
+-      Handle_XCAFDoc_ShapeTool iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
+-      Handle_XCAFDoc_ColorTool iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
++      Handle(XCAFDoc_ShapeTool) iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
++      Handle(XCAFDoc_ColorTool) iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
+       TDF_LabelSequence iges_shapes;
+       iges_shape_contents->GetShapes(iges_shapes);
+@@ -1137,10 +1194,10 @@
+       occgeo = new OCCGeometry;
+       // Initiate a dummy XCAF Application to handle the STEP XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+       // Create an XCAF Document to contain the STEP file itself
+-      Handle_TDocStd_Document step_doc;
++      Handle(TDocStd_Document) step_doc;
+       // Check if a STEP File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1167,8 +1224,8 @@
+       reader.Transfer(step_doc);
+       // Read in the shape(s) and the colours present in the STEP File
+-      Handle_XCAFDoc_ShapeTool step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
+-      Handle_XCAFDoc_ColorTool step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
++      Handle(XCAFDoc_ShapeTool) step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
++      Handle(XCAFDoc_ColorTool) step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
+       TDF_LabelSequence step_shapes;
+       step_shape_contents->GetShapes(step_shapes);
+@@ -1221,7 +1278,7 @@
+       // Fixed a bug in the OpenCascade XDE Colour handling when 
+       // opening BREP Files, since BREP Files have no colour data.
+       // Hence, the face_colours Handle needs to be created as a NULL handle.
+-      occgeo->face_colours = Handle_XCAFDoc_ColorTool();
++      occgeo->face_colours = Handle(XCAFDoc_ColorTool)();
+       occgeo->face_colours.Nullify();
+       occgeo->changed = 1;
+       occgeo->BuildFMap();
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.hpp netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.hpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occgeom.hpp       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occgeom.hpp      2017-09-11 18:08:21.233311974 +0300
+@@ -15,8 +15,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "BRepTools.hxx"
+ #include "TopExp.hxx"
+ #include "BRepBuilderAPI_MakeVertex.hxx"
+@@ -42,8 +42,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "TopoDS_Wire.hxx"
+ #include "BRepTools_WireExplorer.hxx"
+ #include "BRepTools.hxx"
+@@ -68,18 +68,26 @@
+ #include "IGESToBRep_Reader.hxx"
+ #include "Interface_Static.hxx"
+ #include "GeomAPI_ExtremaCurveCurve.hxx"
+-#include "Standard_ErrorHandler.hxx"
++//#include "Standard_ErrorHandler.hxx"
+ #include "Standard_Failure.hxx"
+ #include "ShapeUpgrade_ShellSewing.hxx"
+ #include "ShapeFix_Shape.hxx"
+ #include "ShapeFix_Wireframe.hxx"
++#include <Standard_Version.hxx>
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
+ #include "BRepMesh.hxx"
++#endif
+ #include "BRepMesh_IncrementalMesh.hxx"
+ #include "BRepBndLib.hxx"
+ #include "Bnd_Box.hxx"
+ #include "ShapeAnalysis.hxx"
+ #include "ShapeBuild_ReShape.hxx"
++// -- Optimization: to use cached projector and classifier
++#include <NCollection_DataMap.hxx>
++class ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
+ // Philippose - 29/01/2009
+ // OpenCascade XDE Support
+@@ -192,6 +200,9 @@
+    class OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap<int,Handle(ShapeAnalysis_Surface)> fprjmap;
++      mutable NCollection_DataMap<int,BRepTopAdaptor_FClass2d*> fclsmap;
+    public:
+       TopoDS_Shape shape;
+@@ -203,7 +214,7 @@
+       // OpenCascade XDE Support
+       // XCAF Handle to make the face colours available to the rest of
+       // the system
+-      Handle_XCAFDoc_ColorTool face_colours;
++      Handle(XCAFDoc_ColorTool) face_colours;
+      mutable int changed;
+       Array<int> facemeshstatus;
+@@ -247,6 +258,8 @@
+      virtual void Save (string filename) const;
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
+       void BuildFMap();
+       Box<3> GetBoundingBox()
+@@ -266,9 +279,14 @@
+       Point<3> Center()
+       {  return center;}
+-      void Project (int surfi, Point<3> & p) const;
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
+       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
+       OCCSurface GetSurface (int surfi)
+       {
+          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occmeshsurf.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occmeshsurf.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occmeshsurf.cpp   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occmeshsurf.cpp  2017-09-11 18:08:21.233311974 +0300
+@@ -6,6 +6,7 @@
+ #include <meshing.hpp>
+ #include <GeomLProp_SLProps.hxx>
+ #include <ShapeAnalysis_Surface.hxx>
++#include <GeomAPI_ProjectPointOnCurve.hxx> // -- moved here from occgeom.hpp
+ namespace netgen
+@@ -96,13 +97,16 @@
+       n.Normalize();
+       }
+-    else
++    else if ( lprop.IsNormalDefined() )
+       {
+       n(0)=lprop.Normal().X();
+       n(1)=lprop.Normal().Y();
+       n(2)=lprop.Normal().Z();
+       }
+-
++    else
++      {
++        n = 0;
++      }
+     if(glob_testout)
+       {
+       (*testout) << "u " << geominfo.u << " v " << geominfo.v 
+@@ -434,23 +438,33 @@
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
+       p = hp;
+-      return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    return ok;
+   }
+@@ -680,7 +694,8 @@
+       if (!geometry.FastProject (surfi, hnewp, u, v))
+         {
+         //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-          geometry.Project (surfi, hnewp);
++          // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++          geometry.Project (surfi, hnewp, u, v);
+         }
+       newgi.trignum = 1;
+@@ -689,7 +704,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: 
+@@ -708,14 +723,18 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi) const
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      //geometry.Project (surfi, p);
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi) const
+   {
+@@ -723,9 +742,10 @@
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+       {
+         cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-        geometry.Project (surfi, p);
++          double u, v;
++        geometry.Project (surfi, p, u, v);
++      }
+       }
+-  };
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/occpkg.cpp netgen-5.3.1_SRC_modif/libsrc/occ/occpkg.cpp
+--- netgen-5.3.1_SRC_orig/libsrc/occ/occpkg.cpp        2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/occpkg.cpp       2017-09-11 18:08:32.837057913 +0300
+@@ -485,7 +485,7 @@
+                 if (strcmp (argv[2], "Wire") == 0) sh = occgeometry->wmap(nr);
+                 if (strcmp (argv[2], "Edge") == 0) sh = occgeometry->emap(nr);
+-                rebuild->Replace(sh, sh.Reversed(), Standard_False);
++                rebuild->Replace(sh, sh.Reversed());
+                 TopoDS_Shape newshape = rebuild->Apply(occgeometry->shape, TopAbs_SHELL, 1);
+                 occgeometry->shape = newshape;
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/occ/utilities.h netgen-5.3.1_SRC_modif/libsrc/occ/utilities.h
+--- netgen-5.3.1_SRC_orig/libsrc/occ/utilities.h       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/occ/utilities.h      2017-09-11 18:08:21.233311974 +0300
+@@ -33,6 +33,7 @@
+ #include <string>
+ #include <iostream>
++#include <iomanip>
+ #include <cstdlib>
+ // #include "SALOME_Log.hxx"
+diff -Naur netgen-5.3.1_SRC_orig/libsrc/stlgeom/Makefile.am netgen-5.3.1_SRC_modif/libsrc/stlgeom/Makefile.am
+--- netgen-5.3.1_SRC_orig/libsrc/stlgeom/Makefile.am   2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_SRC_modif/libsrc/stlgeom/Makefile.am  2017-09-11 18:08:21.235311757 +0300
+@@ -4,10 +4,10 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libstl.la 
++noinst_LTLIBRARIES = libstl.la 
+ if NGGUI
+-lib_LTLIBRARIES += libstlvis.la 
++lib_LTLIBRARIES = libstlvis.la 
+ endif
+ libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
+@@ -16,6 +16,5 @@
+ libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
+ libstlvis_la_LIBADD = libstl.la
+-libstl_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+ # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la 
+diff -Naur netgen-5.3.1_SRC_orig/nglib/Makefile.am netgen-5.3.1_SRC_modif/nglib/Makefile.am
+--- netgen-5.3.1_SRC_orig/nglib/Makefile.am    2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_SRC_modif/nglib/Makefile.am   2017-09-11 18:08:21.235311757 +0300
+@@ -14,6 +14,9 @@
+       $(top_builddir)/libsrc/stlgeom/libstl.la \
+       $(top_builddir)/libsrc/occ/libocc.la \
+       $(top_builddir)/libsrc/meshing/libmesh.la \
++      $(top_builddir)/libsrc/general/libgen.la \
++      $(top_builddir)/libsrc/gprim/libgprim.la \
++      $(top_builddir)/libsrc/linalg/libla.la
+       $(OCCLIBS) $(MPI_LIBS)
+ libnglib_la_LDFLAGS = -avoid-version
+diff -Naur netgen-5.3.1_SRC_orig/nglib/nglib.h netgen-5.3.1_SRC_modif/nglib/nglib.h
+--- netgen-5.3.1_SRC_orig/nglib/nglib.h        2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_SRC_modif/nglib/nglib.h       2017-09-11 18:08:21.233311974 +0300
+@@ -24,7 +24,7 @@
+ // Philippose - 14.02.2009
+ // Modifications for creating a DLL in Windows
+ #ifdef WIN32
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
+       #define DLL_HEADER   __declspec(dllexport)
+    #else
+       #define DLL_HEADER   __declspec(dllimport)
diff --git a/products/patches/netgen53ForSalomeVisualStudio2017.patch b/products/patches/netgen53ForSalomeVisualStudio2017.patch
new file mode 100644 (file)
index 0000000..2cbdb94
--- /dev/null
@@ -0,0 +1,1648 @@
+--- netgen_ref/libsrc/general/array.hpp
++++ netgen/libsrc/general/array.hpp
+@@ -50,7 +50,7 @@
+     {
+ #ifdef DEBUG
+       if (i-BASE < 0 || i-BASE >= size)
+-      cout << "array<" << typeid(T).name() << "> out of range, i = " << i << ", s = " << size << endl;
++      std::cout << "array<" << typeid(T).name() << "> out of range, i = " << i << ", s = " << size << std::endl;
+ #endif
+       return data[i-BASE]; 
+@@ -69,9 +69,9 @@
+     {
+ #ifdef DEBUG
+       if (i < 1 || i > size)
+-      cout << "Array<" << typeid(T).name() 
++      std::cout << "Array<" << typeid(T).name() 
+            << ">::Elem out of range, i = " << i
+-           << ", s = " << size << endl;
++           << ", s = " << size << std::endl;
+ #endif
+       return ((T*)data)[i-1]; 
+@@ -82,8 +82,8 @@
+     {
+ #ifdef DEBUG
+       if (i < 1 || i > size)
+-      cout << "Array<" << typeid(T).name() << ">::Get out of range, i = " << i
+-           << ", s = " << size << endl;
++      std::cout << "Array<" << typeid(T).name() << ">::Get out of range, i = " << i
++           << ", s = " << size << std::endl;
+ #endif
+       return ((const T*)data)[i-1]; 
+@@ -94,8 +94,8 @@
+     { 
+ #ifdef DEBUG
+       if (i < 1 || i > size)
+-      cout << "Array<" << typeid(T).name() << ">::Set out of range, i = " << i
+-           << ", s = " << size << endl;
++      std::cout << "Array<" << typeid(T).name() << ">::Set out of range, i = " << i
++           << ", s = " << size << std::endl;
+ #endif
+       ((T*)data)[i-1] = el; 
+@@ -151,7 +151,7 @@
+   inline ostream & operator<< (ostream & s, const FlatArray<T,BASE,TIND> & a)
+   {
+     for (TIND i = a.Begin(); i < a.End(); i++)
+-      s << i << ": " << a[i] << endl;
++      s << i << ": " << a[i] << std::endl;
+     return s;
+   }
+@@ -435,7 +435,7 @@
+   inline ostream & operator<< (ostream & s, const IndirectArray<T1,T2> & ia)
+   {
+     for (int i = ia.Begin(); i < ia.End(); i++)
+-      s << i << ": " << ia[i] << endl;
++      s << i << ": " << ia[i] << std::endl;
+     return s;
+   }
+   
+@@ -551,7 +551,7 @@
+     void PrintMemInfo (ostream & ost) const
+     {
+       ost << Size() << " elements of size " << sizeof(T) << " = " 
+-        << Size() * sizeof(T) << endl;
++        << Size() * sizeof(T) << std::endl;
+     }
+     MoveableArray & operator= (const T & el)
+@@ -593,7 +593,7 @@
+   inline ostream & operator<< (ostream & ost, MoveableArray<T> & a)
+   {
+     for (int i = 0; i < a.Size(); i++)
+-      ost << i << ": " << a[i] << endl;
++      ost << i << ": " << a[i] << std::endl;
+     return ost;
+   }
+   */
+--- netgen_ref/libsrc/gprim/spline.hpp
++++ netgen/libsrc/gprim/spline.hpp
+@@ -55,7 +55,7 @@
+     /// returns a (not necessarily unit-length) tangent vector for 0 <= t <= 1
+     virtual Vec<D> GetTangent (const double t) const
+     { 
+-      cerr << "GetTangent not implemented for spline base-class"  << endl; 
++      std::cerr << "GetTangent not implemented for spline base-class"  << std::endl; 
+       Vec<D> dummy; return dummy;
+     }
+@@ -100,10 +100,10 @@
+     virtual string GetType(void) const {return "splinebase";}
+     virtual void Project (const Point<D> point, Point<D> & point_on_curve, double & t) const
+-    { cerr << "Project not implemented for spline base-class" << endl;}
++    { std::cerr << "Project not implemented for spline base-class" << std::endl;}
+     virtual void GetRawData (Array<double> & data) const
+-    { cerr << "GetRawData not implemented for spline base-class" << endl;}
++    { std::cerr << "GetRawData not implemented for spline base-class" << std::endl;}
+   };
+@@ -308,7 +308,7 @@
+     for ( int i=0; i<6; i++)
+       ost << u[i] << "  ";
+-    ost << endl;
++    ost << std::endl;
+   }
+@@ -430,11 +430,11 @@
+     Vec<D> v2 = p3-p2;
+     double l1 = v1.Length();
+     double l2 = v2.Length();
+-    (*testout) << "v1 " << v1 << " v2 " << v2 << endl;
++    (*testout) << "v1 " << v1 << " v2 " << v2 << std::endl;
+     double cosalpha = v1*v2/(l1*l2);
+-    (*testout) << "cosalpha " << cosalpha << endl;
++    (*testout) << "cosalpha " << cosalpha << std::endl;
+     return sqrt(cosalpha + 1.)/(min2(l1,l2)*(1.-cosalpha));
+     }
+--- netgen_ref/libsrc/occ/occgenmesh.cpp
++++ netgen/libsrc/occ/occgenmesh.cpp
+@@ -122,7 +122,7 @@
+          prop->SetParameters (parmid.X(), parmid.Y());
+          if (!prop->IsCurvatureDefined())
+          {
+-            (*testout) << "curvature not defined!" << endl;
++            (*testout) << "curvature not defined!" << std::endl;
+             return;
+          }
+          curvature = max(fabs(prop->MinCurvature()),
+@@ -131,7 +131,7 @@
+          prop->SetParameters (par0.X(), par0.Y());
+          if (!prop->IsCurvatureDefined())
+          {
+-            (*testout) << "curvature not defined!" << endl;
++            (*testout) << "curvature not defined!" << std::endl;
+             return;
+          }
+          curvature = max(curvature,max(fabs(prop->MinCurvature()),
+@@ -140,7 +140,7 @@
+          prop->SetParameters (par1.X(), par1.Y());
+          if (!prop->IsCurvatureDefined())
+          {
+-            (*testout) << "curvature not defined!" << endl;
++            (*testout) << "curvature not defined!" << std::endl;
+             return;
+          }
+          curvature = max(curvature,max(fabs(prop->MinCurvature()),
+@@ -149,17 +149,17 @@
+          prop->SetParameters (par2.X(), par2.Y());
+          if (!prop->IsCurvatureDefined())
+          {
+-            (*testout) << "curvature not defined!" << endl;
++            (*testout) << "curvature not defined!" << std::endl;
+             return;
+          }
+          curvature = max(curvature,max(fabs(prop->MinCurvature()),
+             fabs(prop->MaxCurvature())));
+-         //(*testout) << "curvature " << curvature << endl;
++         //(*testout) << "curvature " << curvature << std::endl;
+          if (curvature < 1e-3)
+          {
+-            //(*testout) << "curvature too small (" << curvature << ")!" << endl;
++            //(*testout) << "curvature too small (" << curvature << ")!" << std::endl;
+             return;
+             // return war bis 10.2.05 auskommentiert
+          }
+@@ -177,13 +177,13 @@
+       if (h < maxside && depth < 10)
+       {
+-         //cout << "\r h " << h << flush;
++         //std::cout << "\r h " << h << flush;
+          gp_Pnt2d pm;
+-         //cout << "h " << h << " maxside " << maxside << " depth " << depth << endl;
+-         //cout << "par0 " << par0.X() << " " << par0.Y()
++         //std::cout << "h " << h << " maxside " << maxside << " depth " << depth << std::endl;
++         //std::cout << "par0 " << par0.X() << " " << par0.Y()
+          //<< " par1 " << par1.X() << " " << par1.Y()
+-         //   << " par2 " << par2.X() << " " << par2.Y()<< endl;
++         //   << " par2 " << par2.X() << " " << par2.Y()<< std::endl;
+          if(ls == 0)
+          {
+@@ -224,7 +224,7 @@
+          p3d = Point3d(pnt2.X(), pnt2.Y(), pnt2.Z());
+          mesh.RestrictLocalH (p3d, h);
+-         //(*testout) << "p = " << p3d << ", h = " << h << ", maxside = " << maxside << endl;
++         //(*testout) << "p = " << p3d << ", h = " << h << ", maxside = " << maxside << std::endl;
+       }
+    }
+@@ -268,7 +268,7 @@
+                 pnt.Distance(oldpnt));
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+-         //      <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
++         //      <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << std::endl;
+          //olddist = dist; -- useless variables
+          //dist = pnt.Distance(oldpnt);
+@@ -300,7 +300,7 @@
+             nsubedges = i;
+             ps.SetSize(nsubedges-1);
+             params.SetSize(nsubedges+1);
+-            cout << "divide edge: local h too small" << endl;
++            std::cout << "divide edge: local h too small" << std::endl;
+          }
+       } while (i < nsubedges);
+@@ -309,7 +309,7 @@
+       if (params[nsubedges] <= params[nsubedges-1])
+       {
+-         cout << "CORRECTED" << endl;
++         std::cout << "CORRECTED" << std::endl;
+          ps.SetSize (nsubedges-2);
+          params.SetSize (nsubedges);
+          params[nsubedges] = s1;
+@@ -324,13 +324,13 @@
+       const char * savetask = multithread.task;
+       multithread.task = "Edge meshing";
+-      (*testout) << "edge meshing" << endl;
++      (*testout) << "edge meshing" << std::endl;
+       int nvertices = geom.vmap.Extent();
+       int nedges = geom.emap.Extent();
+-      (*testout) << "nvertices = " << nvertices << endl;
+-      (*testout) << "nedges = " << nedges << endl;
++      (*testout) << "nvertices = " << nvertices << std::endl;
++      (*testout) << "nedges = " << nedges << std::endl;
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();
+       const double eps2 = eps * eps; // -- small optimization
+@@ -356,7 +356,7 @@
+                   mesh.AddPoint (mp);
+       }
+-      (*testout) << "different vertices = " << mesh.GetNP() << endl;
++      (*testout) << "different vertices = " << mesh.GetNP() << std::endl;
+       int first_ep = mesh.GetNP()+1;
+@@ -398,7 +398,7 @@
+       edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
+-      (*testout) << "faces = " << geom.fmap.Extent() << endl;
++      (*testout) << "faces = " << geom.fmap.Extent() << std::endl;
+       int curr = 0;
+       for (int i3 = 1; i3 <= geom.fmap.Extent(); i3++)
+@@ -447,7 +447,7 @@
+             for (TopExp_Explorer exp3 (wire, TopAbs_EDGE); exp3.More(); exp3.Next())
+             {
+                curr++;
+-               (*testout) << "edge nr " << curr << endl;
++               (*testout) << "edge nr " << curr << std::endl;
+                multithread.percent = 100 * curr / double (total);
+                if (multithread.terminate) return;
+@@ -455,7 +455,7 @@
+                TopoDS_Edge edge = TopoDS::Edge (exp3.Current());
+                if (BRep_Tool::Degenerated(edge))
+                {
+-                  //(*testout) << "ignoring degenerated edge" << endl;
++                  //(*testout) << "ignoring degenerated edge" << std::endl;
+                   continue;
+                }
+                if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
+@@ -468,8 +468,8 @@
+                   if (system.Mass() < eps)
+                   {
+-                     cout << "ignoring edge " << geom.emap.FindIndex (edge)
+-                        << ". closed edge with length < " << eps << endl;
++                     std::cout << "ignoring edge " << geom.emap.FindIndex (edge)
++                        << ". closed edge with length < " << eps << std::endl;
+                      continue;
+                   }
+                }
+@@ -612,13 +612,13 @@
+                      else
+                      {
+                         mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+-                        (*testout) << "add meshpoint " << mp[i-1] << endl;
++                        (*testout) << "add meshpoint " << mp[i-1] << std::endl;
+                         pnums[i] = mesh.GetNP();
+                      }
+                }
+-               (*testout) << "NP = " << mesh.GetNP() << endl;
++               (*testout) << "NP = " << mesh.GetNP() << std::endl;
+-               //(*testout) << pnums[pnums.Size()-1] << endl;
++               //(*testout) << pnums[pnums.Size()-1] << std::endl;
+                for (int i = 1; i <= mp.Size()+1; i++)
+                {
+@@ -647,7 +647,7 @@
+                   /*
+                   if (occface->IsUPeriodic())
+                   {
+-                  cout << "U Periodic" << endl;
++                  std::cout << "U Periodic" << std::endl;
+                   if (fabs(seg.epgeominfo[1].u-seg.epgeominfo[0].u) >
+                   fabs(seg.epgeominfo[1].u-
+                   (seg.epgeominfo[0].u-occface->UPeriod())))
+@@ -661,7 +661,7 @@
+                   if (occface->IsVPeriodic())
+                   {
+-                  cout << "V Periodic" << endl;
++                  std::cout << "V Periodic" << std::endl;
+                   if (fabs(seg.epgeominfo[1].v-seg.epgeominfo[0].v) >
+                   fabs(seg.epgeominfo[1].v-
+                   (seg.epgeominfo[0].v-occface->VPeriod())))
+@@ -693,7 +693,7 @@
+       //      for(i=1; i<=mesh.GetNSeg(); i++)
+       //              (*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
+-      //                              << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;
++      //                              << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << std::endl;
+       //      exit(10);
+       for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
+         mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
+@@ -733,12 +733,12 @@
+       {
+          if(1==0 && !geom.fvispar[k-1].IsDrawable())
+          {
+-            (*testout) << "ignoring face " << k << endl;
+-            cout << "ignoring face " << k << endl;
++            (*testout) << "ignoring face " << k << std::endl;
++            std::cout << "ignoring face " << k << std::endl;
+             continue;
+          }
+-         (*testout) << "mesh face " << k << endl;
++         (*testout) << "mesh face " << k << std::endl;
+          multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+          geom.facemeshstatus[k-1] = -1;
+@@ -746,7 +746,7 @@
+          /*
+          if (k != 42)
+          {
+-         cout << "skipped" << endl;
++         std::cout << "skipped" << std::endl;
+          continue;
+          }
+          */
+@@ -768,12 +768,12 @@
+             PrintMessage (2, "Face ", k, " / ", mesh.GetNFD(), " (parameter space projection)");
+          if (surfmesherror)
+-            cout << "Surface meshing error occured before (in " << surfmesherror << " faces)" << endl;
++            std::cout << "Surface meshing error occured before (in " << surfmesherror << " faces)" << std::endl;
+          //      Meshing2OCCSurfaces meshing(f2, bb);
+          meshing.SetStartTime (starttime);
+-         //(*testout) << "Face " << k << endl << endl;
++         //(*testout) << "Face " << k << std::endl << std::endl;
+          if (meshing.GetProjectionType() == PLANESPACE)
+@@ -811,8 +811,8 @@
+                   gi1.v = seg.epgeominfo[1].v;
+                   meshing.AddBoundaryElement (glob2loc.Get(seg[0]), glob2loc.Get(seg[1]), gi0, gi1);
+-                  //(*testout) << gi0.u << " " << gi0.v << endl;
+-                  //(*testout) << gi1.u << " " << gi1.v << endl;
++                  //(*testout) << gi0.u << " " << gi0.v << std::endl;
++                  //(*testout) << gi1.u << " " << gi1.v << std::endl;
+                }
+             }
+          }
+@@ -869,8 +869,8 @@
+                   }
+                   meshing.AddBoundaryElement (locpnum[0], locpnum[1], gi0, gi1);
+-                  //(*testout) << gi0.u << " " << gi0.v << endl;
+-                  //(*testout) << gi1.u << " " << gi1.v << endl;
++                  //(*testout) << gi0.u << " " << gi0.v << std::endl;
++                  //(*testout) << gi1.u << " " << gi1.v << std::endl;
+                }
+             }
+@@ -899,13 +899,13 @@
+          catch (SingularMatrixException)
+          {
+-            (*myerr) << "Singular Matrix" << endl;
++            (*myerr) << "Singular Matrix" << std::endl;
+             res = MESHING2_GIVEUP;
+          }
+          catch (UVBoundsException)
+          {
+-            (*myerr) << "UV bounds exceeded" << endl;
++            (*myerr) << "UV bounds exceeded" << std::endl;
+             res = MESHING2_GIVEUP;
+          }
+@@ -920,7 +920,7 @@
+                mesh.Compress();
+-               cout << "retry Surface " << k << endl;
++               std::cout << "retry Surface " << k << std::endl;
+                k--;
+                projecttype*=-1;
+@@ -949,18 +949,18 @@
+ //      ofstream problemfile("occmesh.rep");
+-//      problemfile << "SURFACEMESHING" << endl << endl;
++//      problemfile << "SURFACEMESHING" << std::endl << std::endl;
+       if (surfmesherror)
+       {
+-         cout << "WARNING! NOT ALL FACES HAVE BEEN MESHED" << endl;
+-         cout << "SURFACE MESHING ERROR OCCURED IN " << surfmesherror << " FACES:" << endl;
++         std::cout << "WARNING! NOT ALL FACES HAVE BEEN MESHED" << std::endl;
++         std::cout << "SURFACE MESHING ERROR OCCURED IN " << surfmesherror << " FACES:" << std::endl;
+          for (int i = 1; i <= geom.fmap.Extent(); i++)
+             if (geom.facemeshstatus[i-1] == -1)
+             {
+-               cout << "Face " << i << endl;
+-//               problemfile << "problem with face " << i << endl;
+-//               problemfile << "vertices: " << endl;
++               std::cout << "Face " << i << std::endl;
++//               problemfile << "problem with face " << i << std::endl;
++//               problemfile << "vertices: " << std::endl;
+                TopExp_Explorer exp0,exp1,exp2;
+                for ( exp0.Init(TopoDS::Face (geom.fmap(i)), TopAbs_WIRE); exp0.More(); exp0.Next() )
+                {
+@@ -972,21 +972,21 @@
+                      {
+                         TopoDS_Vertex vertex = TopoDS::Vertex(exp2.Current());
+                         gp_Pnt point = BRep_Tool::Pnt(vertex);
+-//                        problemfile << point.X() << " " << point.Y() << " " << point.Z() << endl;
++//                        problemfile << point.X() << " " << point.Y() << " " << point.Z() << std::endl;
+                      }
+                   }
+                }
+-//               problemfile << endl;
++//               problemfile << std::endl;
+             }
+-            cout << endl << endl;
+-            cout << "for more information open IGES/STEP Topology Explorer" << endl;
++            std::cout << std::endl << std::endl;
++            std::cout << "for more information open IGES/STEP Topology Explorer" << std::endl;
+ //            problemfile.close();
+             throw NgException ("Problem in Surface mesh generation");
+       }
+       else
+       {
+-//         problemfile << "OK" << endl << endl;
++//         problemfile << "OK" << std::endl << std::endl;
+ //         problemfile.close();
+       }
+@@ -1006,7 +1006,7 @@
+          //      if (k != 42) continue;
+          //      if (k != 36) continue;
+-         //      (*testout) << "optimize face " << k << endl;
++         //      (*testout) << "optimize face " << k << std::endl;
+          multithread.percent = 100 * k / (mesh.GetNFD() + VSMALL);
+          FaceDescriptor & fd = mesh.GetFaceDescriptor(k);
+@@ -1014,7 +1014,7 @@
+          PrintMessage (1, "Optimize Surface ", k);
+          for (i = 1; i <= mparam.optsteps2d; i++)
+          {
+-            //          (*testout) << "optstep " << i << endl;
++            //          (*testout) << "optstep " << i << std::endl;
+             if (multithread.terminate) return;
+             {
+@@ -1025,7 +1025,7 @@
+                //meshopt.SetMetricWeight (0.2);
+                meshopt.SetWriteStatus (0);
+-               //         (*testout) << "EdgeSwapping (mesh, (i > mparam.optsteps2d/2))" << endl;
++               //         (*testout) << "EdgeSwapping (mesh, (i > mparam.optsteps2d/2))" << std::endl;
+                meshopt.EdgeSwapping (mesh, (i > mparam.optsteps2d/2));
+             }
+@@ -1038,7 +1038,7 @@
+                meshopt.SetMetricWeight (mparam.elsizeweight);
+                meshopt.SetWriteStatus (0);
+-               //         (*testout) << "ImproveMesh (mesh)" << endl;
++               //         (*testout) << "ImproveMesh (mesh)" << std::endl;
+                meshopt.ImproveMesh (mesh, mparam);
+             }
+@@ -1050,7 +1050,7 @@
+                meshopt.SetMetricWeight (mparam.elsizeweight);
+                meshopt.SetWriteStatus (0);
+-               //         (*testout) << "CombineImprove (mesh)" << endl;
++               //         (*testout) << "CombineImprove (mesh)" << std::endl;
+                meshopt.CombineImprove (mesh);
+             }
+@@ -1063,7 +1063,7 @@
+                meshopt.SetMetricWeight (mparam.elsizeweight);
+                meshopt.SetWriteStatus (0);
+-               //         (*testout) << "ImproveMesh (mesh)" << endl;
++               //         (*testout) << "ImproveMesh (mesh)" << std::endl;
+                meshopt.ImproveMesh (mesh, mparam);
+             }
+          }
+@@ -1132,7 +1132,7 @@
+             if (len < mincurvelength)
+             {
+-               (*testout) << "ignored" << endl;
++               (*testout) << "ignored" << std::endl;
+                continue;
+             }
+@@ -1212,7 +1212,7 @@
+                mesh.RestrictLocalH (Point3d(pnt.X(), pnt.Y(), pnt.Z()), ComputeH (fabs(curvature)));
+             }
+-            // (*testout) << "edge " << i << " max. curvature: " << maxcur << endl;
++            // (*testout) << "edge " << i << " max. curvature: " << maxcur << std::endl;
+          }
+          multithread.task = "Setting local mesh size (face curvature)";
+@@ -1251,10 +1251,10 @@
+                //maxside = max (maxside, p[0].Distance(p[1]));
+                //maxside = max (maxside, p[0].Distance(p[2]));
+                //maxside = max (maxside, p[1].Distance(p[2]));
+-               //cout << "\rFace " << i << " pos11 ntriangles " << ntriangles << " maxside " << maxside << flush;
++               //std::cout << "\rFace " << i << " pos11 ntriangles " << ntriangles << " maxside " << maxside << flush;
+                RestrictHTriangle (par[0], par[1], par[2], &prop, mesh, 0);
+-               //cout << "\rFace " << i << " pos12 ntriangles " << ntriangles << flush;
++               //std::cout << "\rFace " << i << " pos12 ntriangles " << ntriangles << flush;
+             }
+          }
+@@ -1347,8 +1347,8 @@
+                if (mindist < 1e-3)
+                {
+                   (*testout) << "extremely small local h: " << mindist
+-                     << " --> setting to 1e-3" << endl;
+-                  (*testout) << "somewhere near " << line.p0 << " - " << line.p1 << endl;
++                     << " --> setting to 1e-3" << std::endl;
++                  (*testout) << "somewhere near " << line.p0 << " - " << line.p1 << std::endl;
+                   mindist = 1e-3;
+                }
+@@ -1398,7 +1398,7 @@
+          OCCFindEdges (geom, *mesh);
+          /*
+-         cout << "Removing redundant points" << endl;
++         std::cout << "Removing redundant points" << std::endl;
+          int i, j;
+          int np = mesh->GetNP();
+@@ -1419,7 +1419,7 @@
+          for (i = 1; i <= np; i++)
+          if (equalto[i-1])
+          {
+-         cout << "Point " << i << " is equal to Point " << equalto[i-1] << endl;
++         std::cout << "Point " << i << " is equal to Point " << equalto[i-1] << std::endl;
+          for (j = 1; j <= mesh->GetNSeg(); j++)
+          {
+          Segment & seg = mesh->LineSegment(j);
+@@ -1428,14 +1428,14 @@
+          }
+          }
+-         cout << "Removing degenerated segments" << endl;
++         std::cout << "Removing degenerated segments" << std::endl;
+          for (j = 1; j <= mesh->GetNSeg(); j++)
+          {
+          Segment & seg = mesh->LineSegment(j);
+          if (seg[0] == seg[1])
+          {
+          mesh->DeleteSegment(j);
+-         cout << "Deleting Segment " << j << endl;
++         std::cout << "Deleting Segment " << j << std::endl;
+          }
+          }
+@@ -1451,15 +1451,15 @@
+          {
+          Handle(Geom_Surface) hf2 =
+          BRep_Tool::Surface(TopoDS::Face(geom.fmap(j)));
+-         if (hf1 == hf2) cout << "face " << i << " and face " << j << " lie on same surface" << endl;
++         if (hf1 == hf2) std::cout << "face " << i << " and face " << j << " lie on same surface" << std::endl;
+          }
+          }
+          */
+ #ifdef LOG_STREAM
+-         (*logout) << "Edges meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
++         (*logout) << "Edges meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
+ #endif
+       }
+@@ -1472,15 +1472,15 @@
+          if (multithread.terminate) return TCL_OK;
+ #ifdef LOG_STREAM
+-         (*logout) << "Surfaces meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
++         (*logout) << "Surfaces meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
+ #endif
+ #ifdef STAT_STREAM
+          (*statout) << mesh->GetNSeg() << " & "
+             << mesh->GetNSE() << " & - &"
+-            << GetTime() << " & " << endl;
++            << GetTime() << " & " << std::endl;
+ #endif
+          //      MeshQuality2d (*mesh);
+@@ -1499,12 +1499,12 @@
+ /*
+          ofstream problemfile("occmesh.rep",ios_base::app);
+-         problemfile << "VOLUMEMESHING" << endl << endl;
++         problemfile << "VOLUMEMESHING" << std::endl << std::endl;
+          if(res != MESHING3_OK)
+-            problemfile << "ERROR" << endl << endl;
++            problemfile << "ERROR" << std::endl << std::endl;
+          else
+-            problemfile << "OK" << endl
+-            << mesh->GetNE() << " elements" << endl << endl;
++            problemfile << "OK" << std::endl
++            << mesh->GetNE() << " elements" << std::endl << std::endl;
+          problemfile.close();
+ */
+@@ -1523,9 +1523,9 @@
+ #endif
+ #ifdef LOG_STREAM
+-         (*logout) << "Volume meshed" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
++         (*logout) << "Volume meshed" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
+ #endif
+       }
+@@ -1542,26 +1542,26 @@
+ #ifdef STAT_STREAM
+          (*statout) << GetTime() << " & "
+             << mesh->GetNE() << " & "
+-            << mesh->GetNP() << " " << '\\' << '\\' << " \\" << "hline" << endl;
++            << mesh->GetNP() << " " << '\\' << '\\' << " \\" << "hline" << std::endl;
+ #endif
+ #ifdef LOG_STREAM
+-         (*logout) << "Volume optimized" << endl
+-            << "time = " << GetTime() << " sec" << endl
+-            << "points: " << mesh->GetNP() << endl;
++         (*logout) << "Volume optimized" << std::endl
++            << "time = " << GetTime() << " sec" << std::endl
++            << "points: " << mesh->GetNP() << std::endl;
+ #endif
+-         // cout << "Optimization complete" << endl;
++         // std::cout << "Optimization complete" << std::endl;
+       }
+-      (*testout) << "NP: " << mesh->GetNP() << endl;
++      (*testout) << "NP: " << mesh->GetNP() << std::endl;
+       for (int i = 1; i <= mesh->GetNP(); i++)
+-         (*testout) << mesh->Point(i) << endl;
++         (*testout) << mesh->Point(i) << std::endl;
+-      (*testout) << endl << "NSegments: " << mesh->GetNSeg() << endl;
++      (*testout) << std::endl << "NSegments: " << mesh->GetNSeg() << std::endl;
+       for (int i = 1; i <= mesh->GetNSeg(); i++)
+-         (*testout) << mesh->LineSegment(i) << endl;
++         (*testout) << mesh->LineSegment(i) << std::endl;
+       return TCL_OK;
+    }
+--- netgen_ref/libsrc/occ/occgeom.cpp
++++ netgen/libsrc/occ/occgeom.cpp
+@@ -33,13 +33,13 @@
+       TopExp_Explorer e;
+       int count = 0;
+       for (e.Init(shape, TopAbs_COMPSOLID); e.More(); e.Next()) count++;
+-      cout << "CompSolids: " << count << endl;
++      std::cout << "CompSolids: " << count << std::endl;
+-      cout << "Solids    : " << somap.Extent() << endl;
+-      cout << "Shells    : " << shmap.Extent() << endl;
+-      cout << "Faces     : " << fmap.Extent() << endl;
+-      cout << "Edges     : " << emap.Extent() << endl;
+-      cout << "Vertices  : " << vmap.Extent() << endl;
++      std::cout << "Solids    : " << somap.Extent() << std::endl;
++      std::cout << "Shells    : " << shmap.Extent() << std::endl;
++      std::cout << "Faces     : " << fmap.Extent() << std::endl;
++      std::cout << "Edges     : " << emap.Extent() << std::endl;
++      std::cout << "Vertices  : " << vmap.Extent() << std::endl;
+    }
+@@ -51,51 +51,51 @@
+       cont.Clear();
+       cont.Perform(geom->shape);
+-      (*testout) << "OCC CONTENTS" << endl;
+-      (*testout) << "============" << endl;
+-      (*testout) << "SOLIDS   : " << cont.NbSolids() << endl;
+-      (*testout) << "SHELLS   : " << cont.NbShells() << endl;
+-      (*testout) << "FACES    : " << cont.NbFaces() << endl;
+-      (*testout) << "WIRES    : " << cont.NbWires() << endl;
+-      (*testout) << "EDGES    : " << cont.NbEdges() << endl;
+-      (*testout) << "VERTICES : " << cont.NbVertices() << endl;
++      (*testout) << "OCC CONTENTS" << std::endl;
++      (*testout) << "============" << std::endl;
++      (*testout) << "SOLIDS   : " << cont.NbSolids() << std::endl;
++      (*testout) << "SHELLS   : " << cont.NbShells() << std::endl;
++      (*testout) << "FACES    : " << cont.NbFaces() << std::endl;
++      (*testout) << "WIRES    : " << cont.NbWires() << std::endl;
++      (*testout) << "EDGES    : " << cont.NbEdges() << std::endl;
++      (*testout) << "VERTICES : " << cont.NbVertices() << std::endl;
+       TopExp_Explorer e;
+       int count = 0;
+       for (e.Init(geom->shape, TopAbs_COMPOUND); e.More(); e.Next())
+          count++;
+-      (*testout) << "Compounds: " << count << endl;
++      (*testout) << "Compounds: " << count << std::endl;
+       count = 0;
+       for (e.Init(geom->shape, TopAbs_COMPSOLID); e.More(); e.Next())
+          count++;
+-      (*testout) << "CompSolids: " << count << endl;
++      (*testout) << "CompSolids: " << count << std::endl;
+-      (*testout) << endl;
++      (*testout) << std::endl;
+-      cout << "Highest entry in topology hierarchy: " << endl;
++      std::cout << "Highest entry in topology hierarchy: " << std::endl;
+       if (count)
+-         cout << count << " composite solid(s)" << endl;
++         std::cout << count << " composite solid(s)" << std::endl;
+       else
+          if (geom->somap.Extent())
+-            cout << geom->somap.Extent() << " solid(s)" << endl;
++            std::cout << geom->somap.Extent() << " solid(s)" << std::endl;
+          else
+             if (geom->shmap.Extent())
+-               cout << geom->shmap.Extent() << " shells(s)" << endl;
++               std::cout << geom->shmap.Extent() << " shells(s)" << std::endl;
+             else
+                if (geom->fmap.Extent())
+-                  cout << geom->fmap.Extent() << " face(s)" << endl;
++                  std::cout << geom->fmap.Extent() << " face(s)" << std::endl;
+                else
+                   if (geom->wmap.Extent())
+-                     cout << geom->wmap.Extent() << " wire(s)" << endl;
++                     std::cout << geom->wmap.Extent() << " wire(s)" << std::endl;
+                   else
+                      if (geom->emap.Extent())
+-                        cout << geom->emap.Extent() << " edge(s)" << endl;
++                        std::cout << geom->emap.Extent() << " edge(s)" << std::endl;
+                      else
+                         if (geom->vmap.Extent())
+-                           cout << geom->vmap.Extent() << " vertices(s)" << endl;
++                           std::cout << geom->vmap.Extent() << " vertices(s)" << std::endl;
+                         else
+-                           cout << "no entities" << endl;
++                           std::cout << "no entities" << std::endl;
+    }
+@@ -145,11 +145,11 @@
+       }
+-      cout << "Starting geometry healing procedure (tolerance: " << tolerance << ")" << endl
+-         << "-----------------------------------" << endl;
++      std::cout << "Starting geometry healing procedure (tolerance: " << tolerance << ")" << std::endl
++         << "-----------------------------------" << std::endl;
+       {
+-         cout << endl << "- repairing faces" << endl;
++         std::cout << std::endl << "- repairing faces" << std::endl;
+          Handle(ShapeFix_Face) sff;
+          Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+@@ -183,17 +183,17 @@
+                sff->Status(ShapeExtend_DONE4) ||
+                sff->Status(ShapeExtend_DONE5))
+             {
+-               cout << "repaired face " << fmap.FindIndex(face) << " ";
++               std::cout << "repaired face " << fmap.FindIndex(face) << " ";
+                if(sff->Status(ShapeExtend_DONE1))
+-                  cout << "(some wires are fixed)" <<endl;
++                  std::cout << "(some wires are fixed)" <<std::endl;
+                else if(sff->Status(ShapeExtend_DONE2))
+-                  cout << "(orientation of wires fixed)" <<endl;
++                  std::cout << "(orientation of wires fixed)" <<std::endl;
+                else if(sff->Status(ShapeExtend_DONE3))
+-                  cout << "(missing seam added)" <<endl;
++                  std::cout << "(missing seam added)" <<std::endl;
+                else if(sff->Status(ShapeExtend_DONE4))
+-                  cout << "(small area wire removed)" <<endl;
++                  std::cout << "(small area wire removed)" <<std::endl;
+                else if(sff->Status(ShapeExtend_DONE5))
+-                  cout << "(natural bounds added)" <<endl;
++                  std::cout << "(natural bounds added)" <<std::endl;
+                TopoDS_Face newface = sff->Face();
+                rebuild->Replace(face, newface);
+@@ -223,7 +223,7 @@
+       if (fixsmalledges)
+       {
+-         cout << endl << "- fixing small edges" << endl;
++         std::cout << std::endl << "- fixing small edges" << std::endl;
+          Handle(ShapeFix_Wire) sfw;
+          Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+@@ -254,19 +254,19 @@
+                   sfw->StatusSmall(ShapeExtend_FAIL2) ||
+                   sfw->StatusSmall(ShapeExtend_FAIL3)))
+                {
+-                  cout << "Fixed small edge in wire " << wmap.FindIndex (oldwire) << endl;
++                  std::cout << "Fixed small edge in wire " << wmap.FindIndex (oldwire) << std::endl;
+                   replace = true;
+                }
+                else if (sfw->StatusSmall(ShapeExtend_FAIL1))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", edge cannot be checked (no 3d curve and no pcurve)" << endl;
++                  std::cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", edge cannot be checked (no 3d curve and no pcurve)" << std::endl;
+                else if (sfw->StatusSmall(ShapeExtend_FAIL2))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", edge is null-length and has different vertives at begin and end, and lockvtx is True or ModifiyTopologyMode is False" << endl;
++                  std::cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", edge is null-length and has different vertives at begin and end, and lockvtx is True or ModifiyTopologyMode is False" << std::endl;
+                else if (sfw->StatusSmall(ShapeExtend_FAIL3))
+-                  cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
+-                  << ", CheckConnected has failed" << endl;
++                  std::cerr << "Failed to fix small edge in wire " << wmap.FindIndex (oldwire)
++                  << ", CheckConnected has failed" << std::endl;
+                replace = sfw->FixEdgeCurves() || replace;
+@@ -306,9 +306,9 @@
+                   BRepGProp::LinearProperties(edge, system);
+                   if (system.Mass() < tolerance)
+                   {
+-                     cout << "removing degenerated edge " << emap.FindIndex(edge)
++                     std::cout << "removing degenerated edge " << emap.FindIndex(edge)
+                         << " from vertex " << vmap.FindIndex(TopExp::FirstVertex (edge))
+-                        << " to vertex " << vmap.FindIndex(TopExp::LastVertex (edge)) << endl;
++                        << " to vertex " << vmap.FindIndex(TopExp::LastVertex (edge)) << std::endl;
+                      rebuild->Remove(edge);
+                   }
+                }
+@@ -344,12 +344,12 @@
+          if (sfwf->FixWireGaps())
+          {
+-            cout << endl << "- fixing wire gaps" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_OK)) cout << "no gaps found" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_DONE1)) cout << "some 2D gaps fixed" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_DONE2)) cout << "some 3D gaps fixed" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_FAIL1)) cout << "failed to fix some 2D gaps" << endl;
+-            if (sfwf->StatusWireGaps(ShapeExtend_FAIL2)) cout << "failed to fix some 3D gaps" << endl;
++            std::cout << std::endl << "- fixing wire gaps" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_OK)) std::cout << "no gaps found" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_DONE1)) std::cout << "some 2D gaps fixed" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_DONE2)) std::cout << "some 3D gaps fixed" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_FAIL1)) std::cout << "failed to fix some 2D gaps" << std::endl;
++            if (sfwf->StatusWireGaps(ShapeExtend_FAIL2)) std::cout << "failed to fix some 3D gaps" << std::endl;
+          }
+          sfwf->SetPrecision(tolerance);
+@@ -360,7 +360,7 @@
+             {
+                TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+                if ( BRep_Tool::Degenerated(edge) )
+-                  cout << "degenerated edge at position 4" << endl;
++                  std::cout << "degenerated edge at position 4" << std::endl;
+             }
+          }
+@@ -368,10 +368,10 @@
+          if (sfwf->FixSmallEdges())
+          {
+-            cout << endl << "- fixing wire frames" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_OK)) cout << "no small edges found" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_DONE1)) cout << "some small edges fixed" << endl;
+-            if (sfwf->StatusSmallEdges(ShapeExtend_FAIL1)) cout << "failed to fix some small edges" << endl;
++            std::cout << std::endl << "- fixing wire frames" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_OK)) std::cout << "no small edges found" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_DONE1)) std::cout << "some small edges fixed" << std::endl;
++            if (sfwf->StatusSmallEdges(ShapeExtend_FAIL1)) std::cout << "failed to fix some small edges" << std::endl;
+          }
+@@ -392,7 +392,7 @@
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 5" << endl;
++               std::cout << "degenerated edge at position 5" << std::endl;
+          }
+       }
+@@ -402,7 +402,7 @@
+       if (fixspotstripfaces)
+       {
+-         cout << endl << "- fixing spot and strip faces" << endl;
++         std::cout << std::endl << "- fixing spot and strip faces" << std::endl;
+          Handle(ShapeFix_FixSmallFace) sffsm = new ShapeFix_FixSmallFace();
+          sffsm -> Init (shape);
+          sffsm -> SetPrecision (tolerance);
+@@ -418,7 +418,7 @@
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 6" << endl;
++               std::cout << "degenerated edge at position 6" << std::endl;
+          }
+       }
+@@ -426,7 +426,7 @@
+       if (sewfaces)
+       {
+-         cout << endl << "- sewing faces" << endl;
++         std::cout << std::endl << "- sewing faces" << std::endl;
+          BRepOffsetAPI_Sewing sewedObj(tolerance);
+@@ -441,7 +441,7 @@
+          if (!sewedObj.SewedShape().IsNull())
+             shape = sewedObj.SewedShape();
+          else
+-            cout << " not possible";
++            std::cout << " not possible";
+       }
+@@ -461,7 +461,7 @@
+       if (makesolids)
+       {
+-         cout << endl << "- making solids" << endl;
++         std::cout << std::endl << "- making solids" << std::endl;
+          BRepBuilderAPI_MakeSolid ms;
+          int count = 0;
+@@ -473,7 +473,7 @@
+          if (!count)
+          {
+-            cout << " not possible (no shells)" << endl;
++            std::cout << " not possible (no shells)" << std::endl;
+          }
+          else
+          {
+@@ -503,7 +503,7 @@
+                //delete sfs; sfs = NULL;
+             }
+             else
+-               cout << " not possible" << endl;
++               std::cout << " not possible" << std::endl;
+          }
+       }
+@@ -511,7 +511,7 @@
+       if (splitpartitions)
+       {
+-         cout << "- running SALOME partition splitter" << endl;
++         std::cout << "- running SALOME partition splitter" << std::endl;
+          TopExp_Explorer e2;
+          Partition_Spliter ps;
+@@ -527,13 +527,13 @@
+          ps.Compute();
+          shape = ps.Shape();
+-         cout << " before: " << count << " solids" << endl;
++         std::cout << " before: " << count << " solids" << std::endl;
+          count = 0;
+          for (e2.Init (shape, TopAbs_SOLID);
+             e2.More(); e2.Next()) count++;
+-            cout << " after : " << count << " solids" << endl;
++            std::cout << " after : " << count << " solids" << std::endl;
+       }
+       BuildFMap();
+@@ -545,7 +545,7 @@
+          {
+             TopoDS_Edge edge = TopoDS::Edge(exp1.Current());
+             if ( BRep_Tool::Degenerated(edge) )
+-               cout << "degenerated edge at position 8" << endl;
++               std::cout << "degenerated edge at position 8" << std::endl;
+          }
+       }
+@@ -573,18 +573,18 @@
+       for (exp0.Init(shape, TopAbs_COMPOUND); exp0.More(); exp0.Next()) nnrc++;
+       for (exp0.Init(shape, TopAbs_COMPSOLID); exp0.More(); exp0.Next()) nnrcs++;
+-      cout << "-----------------------------------" << endl;
+-      cout << "Compounds       : " << nnrc << " (" << nrc << ")" << endl;
+-      cout << "Composite solids: " << nnrcs << " (" << nrcs << ")" << endl;
+-      cout << "Solids          : " << nnrso << " (" << nrso << ")" << endl;
+-      cout << "Shells          : " << nnrsh << " (" << nrsh << ")" << endl;
+-      cout << "Wires           : " << nnrw << " (" << nrw << ")" << endl;
+-      cout << "Faces           : " << nnrf << " (" << nrf << ")" << endl;
+-      cout << "Edges           : " << nnre << " (" << nre << ")" << endl;
+-      cout << "Vertices        : " << nnrv << " (" << nrv << ")" << endl;
+-      cout << endl;
+-      cout << "Totol surface area : " << newsurfacecont << " (" << surfacecont << ")" << endl;
+-      cout << endl;
++      std::cout << "-----------------------------------" << std::endl;
++      std::cout << "Compounds       : " << nnrc << " (" << nrc << ")" << std::endl;
++      std::cout << "Composite solids: " << nnrcs << " (" << nrcs << ")" << std::endl;
++      std::cout << "Solids          : " << nnrso << " (" << nrso << ")" << std::endl;
++      std::cout << "Shells          : " << nnrsh << " (" << nrsh << ")" << std::endl;
++      std::cout << "Wires           : " << nnrw << " (" << nrw << ")" << std::endl;
++      std::cout << "Faces           : " << nnrf << " (" << nrf << ")" << std::endl;
++      std::cout << "Edges           : " << nnre << " (" << nre << ")" << std::endl;
++      std::cout << "Vertices        : " << nnrv << " (" << nrv << ")" << std::endl;
++      std::cout << std::endl;
++      std::cout << "Totol surface area : " << newsurfacecont << " (" << surfacecont << ")" << std::endl;
++      std::cout << std::endl;
+    }
+@@ -605,12 +605,12 @@
+          exp0.More(); exp0.Next())
+       {
+          TopoDS_Compound compound = TopoDS::Compound (exp0.Current());
+-         (*testout) << "compound" << endl;
++         (*testout) << "compound" << std::endl;
+          int i = 0;
+          for (exp1.Init(compound, TopAbs_SHELL);
+             exp1.More(); exp1.Next())
+          {
+-            (*testout) << "shell " << ++i << endl;
++            (*testout) << "shell " << ++i << std::endl;
+          }
+       }
+@@ -640,7 +640,7 @@
+                         fmap.Add (face);
+                         (*testout) << "face " << fmap.FindIndex(face) << " ";
+                         (*testout) << ((face.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
+-                        (*testout) << ((exp2.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << endl;
++                        (*testout) << ((exp2.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << std::endl;
+                         for (exp3.Init(exp2.Current(), TopAbs_WIRE);
+                            exp3.More(); exp3.Next())
+                         {
+@@ -684,7 +684,7 @@
+             (*testout) << "shell " << shmap.FindIndex(shell) << " ";
+             (*testout) << ((shell.Orientation() == TopAbs_REVERSED) ? "-" : "+") << ", ";
+-            (*testout) << ((exp1.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << endl;
++            (*testout) << ((exp1.Current().Orientation() == TopAbs_REVERSED) ? "-" : "+") << std::endl;
+             for (exp2.Init(shell, TopAbs_FACE); exp2.More(); exp2.Next())
+             {
+@@ -850,8 +850,8 @@
+    void OCCGeometry :: SewFaces ()
+    {
+-      (*testout) << "Trying to sew faces ..." << endl;
+-      cout << "Trying to sew faces ..." << flush;
++      (*testout) << "Trying to sew faces ..." << std::endl;
++      std::cout << "Trying to sew faces ..." << flush;
+       BRepOffsetAPI_Sewing sewedObj(1);
+  
+@@ -866,10 +866,10 @@
+       if (!sewedObj.SewedShape().IsNull())
+       {
+          shape = sewedObj.SewedShape();
+-         cout << " done" << endl;
++         std::cout << " done" << std::endl;
+       }
+       else
+-         cout << " not possible";
++         std::cout << " not possible";
+    }
+@@ -880,8 +880,8 @@
+    {
+       TopExp_Explorer exp0;
+-      (*testout) << "Trying to build solids ..." << endl;
+-      cout << "Trying to build solids ..." << flush;
++      (*testout) << "Trying to build solids ..." << std::endl;
++      std::cout << "Trying to build solids ..." << flush;
+       BRepBuilderAPI_MakeSolid ms;
+       int count = 0;
+@@ -893,7 +893,7 @@
+       if (!count)
+       {
+-         cout << " not possible (no shells)" << endl;
++         std::cout << " not possible (no shells)" << std::endl;
+          return;
+       }
+@@ -922,10 +922,10 @@
+             shape = newshape;
+          }
+-         cout << " done" << endl;
++         std::cout << " done" << std::endl;
+       }
+       else
+-         cout << " not possible" << endl;
++         std::cout << " not possible" << std::endl;
+    }
+@@ -933,12 +933,12 @@
+    void OCCGeometry :: BuildVisualizationMesh (double deflection)
+    {
+-      cout << "Preparing visualization (deflection = " << deflection << ") ... " << flush;
++      std::cout << "Preparing visualization (deflection = " << deflection << ") ... " << flush;
+       BRepTools::Clean (shape);
+       // BRepMesh_IncrementalMesh::
+       BRepMesh_IncrementalMesh (shape, deflection, true);
+-      cout << "done" << endl;
++      std::cout << "done" << std::endl;
+    }
+@@ -954,7 +954,7 @@
+       Point<3> p1 = Point<3> (x1,y1,z1);
+       Point<3> p2 = Point<3> (x2,y2,z2);
+-      (*testout) << "Bounding Box = [" << p1 << " - " << p2 << "]" << endl;
++      (*testout) << "Bounding Box = [" << p1 << " - " << p2 << "]" << std::endl;
+       boundingbox = Box<3> (p1,p2);
+       SetCenter();
+    }
+@@ -985,7 +985,7 @@
+    bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {
+       static int cnt = 0;
+-      if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
++      if (++cnt % 1000 == 0) std::cout << "Project cnt = " << cnt << std::endl;
+       gp_Pnt pnt(p(0), p(1), p(2));
+@@ -1065,7 +1065,7 @@
+       // 
+       // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+       // 
+-      // //    (*testout) << "FastProject count: " << count << endl;
++      // //    (*testout) << "FastProject count: " << count << std::endl;
+       // 
+       // if (count == 50) return false;
+       // 
+@@ -1077,7 +1077,7 @@
+       gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
+       if (cls->Perform(p2d) == TopAbs_OUT)
+       {
+-        //cout << "Projection fails" << endl;
++        //std::cout << "Projection fails" << std::endl;
+         return false;
+       }
+@@ -1093,14 +1093,14 @@
+    void OCCGeometry :: WriteOCC_STL(char * filename)
+    {
+-      cout << "writing stl..."; cout.flush();
++      std::cout << "writing stl..."; std::cout.flush();
+       StlAPI_Writer writer;
+       //writer.RelativeMode() = Standard_False;
+       //writer.SetDeflection(0.02);
+       writer.Write(shape,filename);
+-      cout << "done" << endl;
++      std::cout << "done" << std::endl;
+    }
+@@ -1379,7 +1379,7 @@
+          case TopAbs_VERTEX:
+            count2 = vmap.FindIndex(TopoDS::Vertex(e.Current())); break;
+          default:
+-           cout << "RecursiveTopologyTree: Case " << e.Current().ShapeType() << " not handeled" << endl;
++           std::cout << "RecursiveTopologyTree: Case " << e.Current().ShapeType() << " not handeled" << std::endl;
+          }
+          int nrsubshapes = 0;
+@@ -1414,7 +1414,7 @@
+    void OCCGeometry :: GetTopologyTree (stringstream & str)
+    {
+-      cout << "Building topology tree ... " << flush;
++      std::cout << "Building topology tree ... " << flush;
+       RecursiveTopologyTree (shape, str, TopAbs_COMPSOLID, false, "CompSolids");
+       RecursiveTopologyTree (shape, str, TopAbs_SOLID, true, "FreeSolids");
+       RecursiveTopologyTree (shape, str, TopAbs_SHELL, true, "FreeShells");
+@@ -1423,7 +1423,7 @@
+       RecursiveTopologyTree (shape, str, TopAbs_EDGE, true, "FreeEdges");
+       RecursiveTopologyTree (shape, str, TopAbs_VERTEX, true, "FreeVertices");
+       str << flush;
+-      //  cout << "done" << endl;
++      //  std::cout << "done" << std::endl;
+    }
+@@ -1449,7 +1449,7 @@
+       int twistedfaces = 0;
+       // int edgessamebutnotidentified = 0;
+-      cout << "checking faces ... " << flush;
++      std::cout << "checking faces ... " << flush;
+       int i;
+       for (i = 1; i <= fmap.Extent(); i++)
+@@ -1462,7 +1462,7 @@
+             if (!spotfaces++)
+                str << "SpotFace {Spot face} ";
+-            (*testout) << "Face " << i << " is a spot face" << endl;
++            (*testout) << "Face " << i << " is a spot face" << std::endl;
+             str << "SpotFace/Face" << i << " ";
+             str << "{Face " << i << " } ";
+          }
+@@ -1472,7 +1472,7 @@
+             if (!stripsupportfaces++)
+                str << "StripSupportFace {Strip support face} ";
+-            (*testout) << "Face " << i << " has strip support" << endl;
++            (*testout) << "Face " << i << " has strip support" << std::endl;
+             str << "StripSupportFace/Face" << i << " ";
+             str << "{Face " << i << " } ";
+          }
+@@ -1483,7 +1483,7 @@
+                str << "SingleStripFace {Single strip face} ";
+             (*testout) << "Face " << i << " is a single strip (edge " << emap.FindIndex(e1)
+-               << " and edge " << emap.FindIndex(e2) << " are identical)" << endl;
++               << " and edge " << emap.FindIndex(e2) << " are identical)" << std::endl;
+             str << "SingleStripFace/Face" << i << " ";
+             str << "{Face " << i << " (edge " << emap.FindIndex(e1)
+                << " and edge " << emap.FindIndex(e2) << " are identical)} ";
+@@ -1496,7 +1496,7 @@
+             (*testout) << "Face " << i << " is a strip (edge " << emap.FindIndex(e1)
+                << " and edge " << emap.FindIndex(e2)
+-               << " are identical)" << endl;
++               << " are identical)" << std::endl;
+             str << "StripFace/Face" << i << " ";
+             str << "{Face " << i << " (edge " << emap.FindIndex(e1)
+                << " and edge " << emap.FindIndex(e2) << " are identical)} ";
+@@ -1508,7 +1508,7 @@
+                str << "FaceSplitByVertices {Face split by vertices} ";
+             (*testout) << "Face " << i << " is split by " << count
+-               << " vertex/vertices " << endl;
++               << " vertex/vertices " << std::endl;
+             str << "FaceSplitByVertices/Face" << i << " ";
+             str << "{Face " << i << " (split by " << count << "vertex/vertices)} ";
+          }
+@@ -1521,7 +1521,7 @@
+                if (!smoothpinfaces++)
+                   str << "SmoothPinFace {Smooth pin face} ";
+-               (*testout) << "Face " << i << " is a smooth pin" << endl;
++               (*testout) << "Face " << i << " is a smooth pin" << std::endl;
+                str << "SmoothPinFace/Face" << i << " ";
+                str << "{Face " << i << " } ";
+             }
+@@ -1530,7 +1530,7 @@
+                if (!stretchedpinfaces++)
+                   str << "StretchedPinFace {Stretched pin face} ";
+-               (*testout) << "Face " << i << " is a streched pin" << endl;
++               (*testout) << "Face " << i << " is a streched pin" << std::endl;
+                str << "StretchedPinFace/Face" << i << " ";
+                str << "{Face " << i << " } ";
+             }
+@@ -1542,14 +1542,14 @@
+             if (!twistedfaces++)
+                str << "TwistedFace {Twisted face} ";
+-            (*testout) << "Face " << i << " is twisted" << endl;
++            (*testout) << "Face " << i << " is twisted" << std::endl;
+             str << "TwistedFace/Face" << i << " ";
+             str << "{Face " << i << " } ";
+          }
+       }
+-      cout << "done" << endl;
+-      cout << "checking edges ... " << flush;
++      std::cout << "done" << std::endl;
++      std::cout << "checking edges ... " << flush;
+       // double dmax;
+       // int cnt = 0;
+@@ -1577,7 +1577,7 @@
+       str << flush;
+-      cout << "done" << endl;
++      std::cout << "done" << std::endl;
+    }
+@@ -1651,11 +1651,11 @@
+    void OCCParameters :: Print(ostream & ost) const
+    {
+-      ost << "OCC Parameters:" << endl
++      ost << "OCC Parameters:" << std::endl
+          << "close edges: " << resthcloseedgeenable
+-         << ", fac = " << resthcloseedgefac << endl
++         << ", fac = " << resthcloseedgefac << std::endl
+                << "minimum edge length: " << resthminedgelenenable
+-               << ", min len = " << resthminedgelen << endl;
++               << ", min len = " << resthminedgelen << std::endl;
+    }
+--- netgen_ref/libsrc/occ/occgeom.hpp
++++ netgen/libsrc/occ/occgeom.hpp
+@@ -291,7 +291,7 @@
+       OCCSurface GetSurface (int surfi)
+       {
+-         cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
++         std::cout << "OCCGeometry::GetSurface using PLANESPACE" << std::endl;
+          return OCCSurface (TopoDS::Face(fmap(surfi)), PLANESPACE);
+       }
+--- netgen_ref/libsrc/occ/occmeshsurf.cpp
++++ netgen/libsrc/occ/occmeshsurf.cpp
+@@ -111,13 +111,13 @@
+       {
+       (*testout) << "u " << geominfo.u << " v " << geominfo.v 
+                  << " du " << lprop.D1U().X() << " "<< lprop.D1U().Y() << " "<< lprop.D1U().Z()
+-                 << " dv " << lprop.D1V().X() << " "<< lprop.D1V().Y() << " "<< lprop.D1V().Z() << endl;
++                 << " dv " << lprop.D1V().X() << " "<< lprop.D1V().Y() << " "<< lprop.D1V().Z() << std::endl;
+       }
+     if (orient == TopAbs_REVERSED) n = -1*n;
+-    //  (*testout) << "GetNormalVector" << endl;
++    //  (*testout) << "GetNormalVector" << std::endl;
+   }
+@@ -130,8 +130,8 @@
+       {
+       p1 = ap1; p2 = ap2;
+-      //cout << "p1 = " << p1 << endl;
+-      //cout << "p2 = " << p2 << endl;
++      //std::cout << "p1 = " << p1 << std::endl;
++      //std::cout << "p2 = " << p2 << std::endl;
+       
+       GetNormalVector (p1, geominfo1, ez);
+       
+@@ -152,7 +152,7 @@
+       ez.Normalize();
+       ey = Cross (ez, ex);
+       nmid = ez;
+-      //cout << "ex " << ex << " ey " << ey << " ez " << ez << endl;
++      //std::cout << "ex " << ex << " ey " << ey << " ez " << ez << std::endl;
+       }
+     else
+       {
+@@ -182,9 +182,9 @@
+       D1(0,1) = dv.X(); D1(1,1) = dv.Y(); D1(2,1) = dv.Z();
+       /*
+-        (*testout) << "DefineTangentialPlane" << endl
+-        << "---------------------" << endl;
+-        (*testout) << "D1 = " << endl << D1 << endl;
++        (*testout) << "DefineTangentialPlane" << std::endl
++        << "---------------------" << std::endl;
++        (*testout) << "D1 = " << std::endl << D1 << std::endl;
+       */
+       Transpose (D1, D1T);
+@@ -274,7 +274,7 @@
+       /*
+         if(zone == -1)
+         {
+-        (*testout) << "zone = -1 for " << p3d << " 2D: " << pplane << " n " << n << " nmid " << nmid << endl;
++        (*testout) << "zone = -1 for " << p3d << " 2D: " << pplane << " n " << n << " nmid " << nmid << std::endl;
+         glob_testout = true;
+         GetNormalVector (p3d, geominfo, n);
+         glob_testout = false;
+@@ -284,7 +284,7 @@
+     else
+       {
+       pplane = Point<2>(geominfo.u, geominfo.v);
+-      //      (*testout) << "(u,v) = " << geominfo.u << ", " << geominfo.v << endl;
++      //      (*testout) << "(u,v) = " << geominfo.u << ", " << geominfo.v << std::endl;
+       pplane = Point<2> (1/h * (Amatinv * (pplane-psp1)));
+       //      pplane = Point<2> (h * (Amatinv * (pplane-psp1)));
+       //      pplane = Point<2> (1/h * ((pplane-psp1)));
+@@ -301,11 +301,11 @@
+   { 
+     if (projecttype == PLANESPACE)
+       {
+-      //      cout << "2d   : " << pplane << endl;
++      //      std::cout << "2d   : " << pplane << std::endl;
+       p3d = p1 + (h * pplane(0)) * ex + (h * pplane(1)) * ey;
+-      //      cout << "3d   : " << p3d << endl;
++      //      std::cout << "3d   : " << p3d << std::endl;
+       Project (p3d, gi);  
+-      //      cout << "proj : " << p3d << endl;
++      //      std::cout << "proj : " << p3d << std::endl;
+       }
+     else
+       {
+@@ -325,11 +325,11 @@
+   void OCCSurface :: Project (Point<3> & p, PointGeomInfo & gi)
+   {
+     //   static int cnt = 0;
+-    //  if (cnt++ % 1000 == 0) cout << "********************************************** OCCSurfce :: Project, cnt = " << cnt << endl;
++    //  if (cnt++ % 1000 == 0) std::cout << "********************************************** OCCSurfce :: Project, cnt = " << cnt << std::endl;
+   
+     gp_Pnt pnt(p(0), p(1), p(2));
+-    //(*testout) << "pnt = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << endl;
++    //(*testout) << "pnt = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << std::endl;
+     /*
+@@ -337,7 +337,7 @@
+     if (!proj.NbPoints())
+       {
+-      cout << "Project Point on Surface FAIL" << endl;
++      std::cout << "Project Point on Surface FAIL" << std::endl;
+       throw UVBoundsException();
+       }
+     */
+@@ -347,13 +347,13 @@
+     /*
+-      cout << "NP = " << proj.NbPoints() << endl;
++      std::cout << "NP = " << proj.NbPoints() << std::endl;
+       for (int i = 1; i <= proj.NbPoints(); i++)
+       {
+       gp_Pnt pnt2 = proj.Point(i);
+       Point<3> p2 = Point<3> (pnt2.X(), pnt2.Y(), pnt2.Z());
+-      cout << i << ". p = " << p2 << ", dist = " << (p2-p).Length() << endl;
++      std::cout << i << ". p = " << p2 << ", dist = " << (p2-p).Length() << std::endl;
+       }
+     */
+@@ -368,7 +368,7 @@
+     suval.Coord( u, v);
+     pnt = occface->Value( u, v );
+     
+-    //(*testout) << "pnt(proj) = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << endl;
++    //(*testout) << "pnt(proj) = " << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z() << std::endl;
+     gi.u = u;
+     gi.v = v;
+     
+@@ -520,7 +520,7 @@
+   GetNormalVector(INDEX surfind, const Point<3> & p, Vec<3> & n) const
+   {
+     //  static int cnt = 0;
+-    //  if (cnt++ % 1000 == 0) cout << "GetNV cnt = " << cnt << endl;
++    //  if (cnt++ % 1000 == 0) std::cout << "GetNV cnt = " << cnt << std::endl;
+     Standard_Real u,v;
+     gp_Pnt pnt(p(0), p(1), p(2));
+@@ -533,9 +533,9 @@
+     if (proj.NbPoints() < 1)
+       {
+-      cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
+-           << endl;
+-      cout << p << endl;
++      std::cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
++           << std::endl;
++      std::cout << p << std::endl;
+       return;
+       }
+  
+@@ -554,7 +554,7 @@
+     /*
+       if (!occface->IsCNu (1) || !occface->IsCNv (1))
+-      (*testout) << "SurfOpt: Differentiation FAIL" << endl;
++      (*testout) << "SurfOpt: Differentiation FAIL" << std::endl;
+     */
+     n = Cross (Vec3d(du.X(), du.Y(), du.Z()),
+@@ -580,9 +580,9 @@
+     if (proj.NbPoints() < 1)
+       {
+-      cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
+-           << endl;
+-      cout << p << endl;
++      std::cout << "ERROR: OCCSurface :: GetNormalVector: GeomAPI_ProjectPointOnSurf failed!"
++           << std::endl;
++      std::cout << p << std::endl;
+       return 0;
+       }
+  
+@@ -693,7 +693,7 @@
+  
+       if (!geometry.FastProject (surfi, hnewp, u, v))
+         {
+-        //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
++        //  std::cout << "Fast projection to surface fails! Using OCC projection" << std::endl;
+           // geometry.Project (surfi, hnewp); -- Project() changed for optimization
+           geometry.Project (surfi, hnewp, u, v);
+         }
+@@ -741,7 +741,7 @@
+     if (surfi > 0)
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+       {
+-        cout << "Fast projection to surface fails! Using OCC projection" << endl;
++        std::cout << "Fast projection to surface fails! Using OCC projection" << std::endl;
+           double u, v;
+         geometry.Project (surfi, p, u, v);
+       }
+--- netgen_ref/nglib/nglib.cpp
++++ netgen/nglib/nglib.cpp
+@@ -75,8 +75,8 @@
+    // initialize, deconstruct Netgen library:
+    DLL_HEADER void Ng_Init ()
+    {
+-      mycout = &cout;
+-      myerr = &cerr;
++      mycout = &std::cout;
++      myerr = &std::cerr;
+       // netgen::testout->SetOutStream (new ofstream ("test.out"));
+       testout = new ofstream ("test.out");
+    }
+@@ -515,7 +515,7 @@
+       Mesh * m;
+       MeshFromSpline2D (*(SplineGeometry2d*)geom, m, mparam);
+-      cout << m->GetNSE() << " elements, " << m->GetNP() << " points" << endl;
++      std::cout << m->GetNSE() << " elements, " << m->GetNP() << " points" << std::endl;
+       *mesh = (Ng_Mesh*)m;
+       return NG_OK;
+@@ -620,7 +620,7 @@
+          /*
+          for (int i = 1; i <= readedges.Size(); i+=2)
+          {
+-         cout << "e(" << readedges.Get(i) << "," << readedges.Get(i+1) << ")" << endl;
++         std::cout << "e(" << readedges.Get(i) << "," << readedges.Get(i+1) << ")" << std::endl;
+          }
+          */
+          geo->AddEdges(readedges);
+@@ -707,22 +707,22 @@
+       int retval = STLSurfaceMeshing (*stlgeometry, *me);
+       if (retval == MESHING3_OK)
+       {
+-         (*mycout) << "Success !!!!" << endl;
++         (*mycout) << "Success !!!!" << std::endl;
+          stlgeometry->surfacemeshed = 1;
+          stlgeometry->surfaceoptimized = 0;
+          stlgeometry->volumemeshed = 0;
+       } 
+       else if (retval == MESHING3_OUTERSTEPSEXCEEDED)
+       {
+-         (*mycout) << "ERROR: Give up because of too many trials. Meshing aborted!" << endl;
++         (*mycout) << "ERROR: Give up because of too many trials. Meshing aborted!" << std::endl;
+       }
+       else if (retval == MESHING3_TERMINATE)
+       {
+-         (*mycout) << "Meshing Stopped!" << endl;
++         (*mycout) << "Meshing Stopped!" << std::endl;
+       }
+       else
+       {
+-         (*mycout) << "ERROR: Surface meshing not successful. Meshing aborted!" << endl;
++         (*mycout) << "ERROR: Surface meshing not successful. Meshing aborted!" << std::endl;
+       }
+@@ -1179,7 +1179,7 @@
+    DLL_HEADER void MyError (const char * ch)
+    {
+-      cerr << ch;
++      std::cerr << ch;
+    }
diff --git a/products/patches/netgen53ForSalome_Windows.patch b/products/patches/netgen53ForSalome_Windows.patch
new file mode 100644 (file)
index 0000000..84ef164
--- /dev/null
@@ -0,0 +1,1455 @@
+diff -NaurwB netgen-5.3.1_orig/Makefile.am netgen-5.3.1_new/Makefile.am
+--- netgen-5.3.1_orig/Makefile.am      2016-10-21 17:32:01.000000000 +0300
++++ netgen-5.3.1_new/Makefile.am       2016-10-21 17:31:54.000000000 +0300
+@@ -2,7 +2,7 @@
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ # TESTS = ng/netgen -batchmode
+diff -NaurwB netgen-5.3.1_orig/Makefile.in netgen-5.3.1_new/Makefile.in
+--- netgen-5.3.1_orig/Makefile.in      2014-10-06 15:04:37.000000000 +0400
++++ netgen-5.3.1_new/Makefile.in       2016-10-03 16:17:10.164707368 +0300
+@@ -280,7 +280,7 @@
+ top_srcdir = @top_srcdir@
+ ACLOCAL_AMFLAGS = -I m4
+ METASOURCES = AUTO
+-SUBDIRS = libsrc ng tutorials doc windows nglib
++SUBDIRS = libsrc nglib #tutorials doc windows nglib
+ all: config.h
+       $(MAKE) $(AM_MAKEFLAGS) all-recursive
+diff -NaurwB netgen-5.3.1_orig/configure.ac netgen-5.3.1_new/configure.ac
+--- netgen-5.3.1_orig/configure.ac     2014-10-06 15:00:17.000000000 +0400
++++ netgen-5.3.1_new/configure.ac      2016-09-29 14:34:11.957389447 +0300
+@@ -20,7 +20,7 @@
+ CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"
+ # LDFLAGS="$LDFLAGS $OPENMP_CXXFLAGS"
+-AM_PROG_AR
++m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
+ AC_PROG_LIBTOOL
+ LT_INIT
+@@ -42,8 +42,8 @@
+ if test a$occon = atrue ; then
+-      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/inc -I/usr/include/opencascade"])
+-      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF -lFWOSPlugin"])
++      AC_SUBST([OCCFLAGS], ["-DOCCGEOMETRY -I$occdir/include/opencascade"])
++      AC_SUBST([OCCLIBS], ["-L$occdir/lib -lTKernel -lTKGeomBase -lTKMath -lTKG2d -lTKG3d -lTKXSBase -lTKOffset -lTKFillet -lTKShHealing -lTKMesh -lTKMeshVS -lTKTopAlgo -lTKGeomAlgo -lTKBool -lTKPrim -lTKBO -lTKIGES -lTKBRep -lTKSTEPBase -lTKSTEP -lTKSTL -lTKSTEPAttr -lTKSTEP209 -lTKXDESTEP -lTKXDEIGES -lTKXCAF -lTKLCAF"])
+ #  -lTKDCAF
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/findip.hpp netgen-5.3.1_new/libsrc/meshing/findip.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/findip.hpp        2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/findip.hpp 2016-09-30 20:38:56.662234111 +0300
+@@ -75,6 +75,9 @@
+   static int timer = NgProfiler::CreateTimer ("FindInnerPoint");
+   NgProfiler::RegionTimer reg (timer);
++  if ( points.Size() < 3 )
++    return 0;
++
+   Array<Vec3d> a;
+   Array<double> c;
+   Mat<3> m, inv;
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/improve3.cpp netgen-5.3.1_new/libsrc/meshing/improve3.cpp
+--- netgen-5.3.1_orig/libsrc/meshing/improve3.cpp      2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/improve3.cpp       2016-10-03 16:16:57.636639300 +0300
+@@ -1219,6 +1219,7 @@
+             tetused = 0;
+             tetused[0] = 1;
++              int nbtetused = 0;
+             for (int l = 2; l < nsuround; l++)
+               {
+@@ -1239,10 +1240,12 @@
+                             
+                             tetused[k] = 1; 
+                             suroundpts[l] = newpi;
++                              ++nbtetused;
+                           }                   
+                     }
+               }
+-
++              if ( nbtetused < nsuround )
++                continue;
+             
+             bad1 = 0;
+             for (int k = 0; k < nsuround; k++)
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/meshtype.cpp netgen-5.3.1_new/libsrc/meshing/meshtype.cpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshtype.cpp      2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/meshtype.cpp       2016-09-29 14:04:51.500148293 +0300
+@@ -1,4 +1,5 @@
+ #include <mystdlib.h>
++#include <float.h> // to get DBL_MIN defined
+ #include "meshing.hpp"  
+@@ -666,7 +667,8 @@
+         double det = trans.Det();
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -722,7 +724,8 @@
+             double det = trans(0,0)*trans(1,1)-trans(1,0)*trans(0,1);
+-            if (det <= 0)
++            // if (det <= 0)
++            if (det <= DBL_MIN)  // avoid FPE
+               {
+                 dd = 0;
+                 return 1e12;
+@@ -806,7 +809,8 @@
+           = dtrans(0,0) * trans(1,1) - trans(0,1) * dtrans(1,0)
+           + trans(0,0) * dtrans(1,1) - dtrans(0,1) * trans(1,0);
+-        if (det <= 0)
++        // if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -856,7 +860,8 @@
+         frob /= 2;
+         double det = trans.Det();
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob / det;
+@@ -1864,7 +1869,8 @@
+       case PYRAMID:
+         {
+           double noz = 1-p(2);
+-          if (noz == 0.0) noz = 1e-10;
++          //if (noz == 0.0) noz = 1e-10;
++          if (noz <= DBL_MIN) noz = 1e-10; // avoid FPE
+           double xi  = p(0) / noz;
+           double eta = p(1) / noz;
+@@ -2030,7 +2036,8 @@
+         double det = -trans.Det();
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           err += frob * frob * frob / det;
+@@ -2102,7 +2109,8 @@
+         ddet *= -1;
+       
+-        if (det <= 0)
++        //if (det <= 0)
++        if (det <= DBL_MIN) // avoid FPE
+           err += 1e12;
+         else
+           {
+@@ -2184,7 +2192,7 @@
+       
+         det *= -1;
+       
+-        if (det <= 0)
++        if (det <= DBL_MIN)
+           err += 1e12;
+         else
+           {
+diff -NaurwB netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp netgen-5.3.1_new/libsrc/meshing/meshtype.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp      2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/meshtype.hpp       2016-09-30 14:28:09.147575801 +0300
+@@ -15,6 +15,7 @@
+     Classes for NETGEN
+   */
++class Mesh; // added due to compilation errors on some platforms
+   enum ELEMENT_TYPE { 
+@@ -360,7 +361,7 @@
+         {
+ #ifdef DEBUG
+           if (typ != QUAD && typ != QUAD6 && typ != QUAD8)
+-            PrintSysError ("element2d::GetNV not implemented for typ", typ)
++            PrintSysError ("element2d::GetNV not implemented for typ", typ);
+ #endif
+           return 4;
+         }
+@@ -618,7 +619,7 @@
+         return 8;
+       default:
+ #ifdef DEBUG
+-        PrintSysError ("Element3d::GetNV not implemented for typ ", typ)
++        PrintSysError ("Element3d::GetNV not implemented for typ ", typ);
+ #endif
+           ;
+       }
+@@ -682,7 +683,7 @@
+       case PRISM12: return 5;
+       default:
+ #ifdef DEBUG
+-        PrintSysError ("element3d::GetNFaces not implemented for typ", typ)
++        PrintSysError ("element3d::GetNFaces not implemented for typ", typ);
+ #endif
+           ;
+       }
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.cxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.cxx  2016-09-29 14:44:01.996464598 +0300
+@@ -47,9 +47,7 @@
+ #include <TopOpeBRep_EdgesIntersector.hxx>
+ #include <TopOpeBRep_Point2d.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+-#include <TopTools_MapOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Edge.hxx>
+ #include <TopoDS_Vertex.hxx>
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter2d.hxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter2d.hxx  2016-09-29 14:44:01.996464598 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter2d_HeaderFile
+ #define _Partition_Inter2d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
+ #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _Standard_Real_HeaderFile
+@@ -36,11 +38,13 @@
+ #ifndef _Standard_Boolean_HeaderFile
+ #include <Standard_Boolean.hxx>
+ #endif
++
++#include <TopTools_MapOfShape.hxx>
++#include <TopTools_ListOfShape.hxx>
++
+ class BRepAlgo_AsDes;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Vertex;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.cxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.cxx  2016-09-29 14:44:02.000464619 +0300
+@@ -48,7 +48,6 @@
+ #include <TopOpeBRepTool_BoxSort.hxx>
+ #include <TopTools_DataMapIteratorOfDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopoDS.hxx>
+ #include <TopoDS_Compound.hxx>
+ #include <TopoDS_Edge.hxx>
+@@ -206,7 +205,7 @@
+   Handle (Geom_Surface) S   = BRep_Tool::Surface(F,L);
+   if (S->IsKind(STANDARD_TYPE(Geom_RectangularTrimmedSurface))) {
+-    S = (*(Handle_Geom_RectangularTrimmedSurface*)&S)->BasisSurface();
++    S = Handle(Geom_RectangularTrimmedSurface)::DownCast (S)->BasisSurface();
+   }
+   if (!S->IsUPeriodic() && !S->IsVPeriodic())
+     return;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Inter3d.hxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Inter3d.hxx  2016-09-29 14:44:02.000464619 +0300
+@@ -27,7 +27,9 @@
+ #ifndef _Partition_Inter3d_HeaderFile
+ #define _Partition_Inter3d_HeaderFile
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
++#include <Standard_Version.hxx>
++
++#if OCC_VERSION_MAJOR < 7
+ #include <Handle_BRepAlgo_AsDes.hxx>
+ #endif
+ #ifndef _TopTools_DataMapOfShapeListOfShape_HeaderFile
+@@ -36,6 +38,9 @@
+ #ifndef _TopTools_MapOfShape_HeaderFile
+ #include <TopTools_MapOfShape.hxx>
+ #endif
++#ifndef _TopTools_ListOfShape_HeaderFile
++#include <TopTools_ListOfShape.hxx>
++#endif
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+@@ -43,10 +48,7 @@
+ #include <Standard_Boolean.hxx>
+ #endif
+ class BRepAlgo_AsDes;
+-class TopTools_ListOfShape;
+-class TopTools_DataMapOfShapeShape;
+ class TopoDS_Face;
+-class TopTools_MapOfShape;
+ class TopoDS_Shape;
+ class TopoDS_Vertex;
+ class TopoDS_Edge;
+@@ -83,13 +85,13 @@
+    void FacesPartition(const TopoDS_Face& F1,const TopoDS_Face& F2) ;
+    Standard_Boolean IsDone(const TopoDS_Face& F1,const TopoDS_Face& F2) const;
+    TopTools_MapOfShape& TouchedFaces() ;
+-   Handle_BRepAlgo_AsDes AsDes() const;
++   Handle(BRepAlgo_AsDes) AsDes() const;
+    TopTools_MapOfShape& NewEdges() ;
+    Standard_Boolean HasSameDomainF(const TopoDS_Shape& F) const;
+    Standard_Boolean IsSameDomainF(const TopoDS_Shape& F1,const TopoDS_Shape& F2) const;
+    const TopTools_ListOfShape& SameDomain(const TopoDS_Face& F) const;
+    TopoDS_Vertex ReplaceSameDomainV(const TopoDS_Vertex& V,const TopoDS_Edge& E) const;
+-   Handle_BRepAlgo_AsDes SectionEdgesAD() const;
++   Handle(BRepAlgo_AsDes) SectionEdgesAD() const;
+    Standard_Boolean IsSectionEdge(const TopoDS_Edge& E) const;
+    Standard_Boolean HasSectionEdge(const TopoDS_Face& F) const;
+    Standard_Boolean IsSplitOn(const TopoDS_Edge& NewE,const TopoDS_Edge& OldE,const TopoDS_Face& F) const;
+@@ -121,11 +123,11 @@
+    // Fields PRIVATE
+    //
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    TopTools_DataMapOfShapeListOfShape myDone;
+    TopTools_MapOfShape myTouched;
+    TopTools_MapOfShape myNewEdges;
+-   Handle_BRepAlgo_AsDes mySectionEdgesAD;
++   Handle(BRepAlgo_AsDes) mySectionEdgesAD;
+    TopTools_DataMapOfShapeListOfShape mySameDomainFM;
+    TopTools_DataMapOfShapeShape mySameDomainVM;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop.hxx    2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop.hxx     2016-09-29 14:44:02.000464619 +0300
+@@ -38,8 +38,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+-
+ #ifndef _Standard_HeaderFile
+ #include <Standard.hxx>
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.cxx netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.cxx  2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.cxx   2016-09-29 14:04:51.504148314 +0300
+@@ -210,7 +210,7 @@
+     Cc->D1(uc, PC, CTg1);
+     if (!isForward) CTg1.Reverse();
+-    Standard_Real anglemin = 3 * PI, tolAng = 1.e-8;
++    Standard_Real anglemin = 3 * M_PI, tolAng = 1.e-8;
+     // select an edge whose first derivative is most left of CTg1
+     // ie an angle between Tg1 and CTg1 is least
+@@ -234,7 +234,7 @@
+       // -PI < angle < PI
+       Standard_Real angle = Tg1.Angle(CTg1);
+-      if (PI - Abs(angle) <= tolAng)
++      if (M_PI - Abs(angle) <= tolAng)
+       {
+         // an angle is too close to PI; assure that an angle sign really
+         // reflects an edge position: +PI - an edge is worst,
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop2d.hxx  2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop2d.hxx   2016-09-29 14:44:02.000464619 +0300
+@@ -24,7 +24,6 @@
+ #endif
+ class TopoDS_Face;
+ class TopoDS_Edge;
+-class TopTools_ListOfShape;
+ class BRepAlgo_Image;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Loop3d.hxx netgen-5.3.1_new/libsrc/occ/Partition_Loop3d.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Loop3d.hxx  2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Loop3d.hxx   2016-09-29 14:44:02.000464619 +0300
+@@ -13,6 +13,9 @@
+ #ifndef _TopTools_ListOfShape_HeaderFile
+ #include <TopTools_ListOfShape.hxx>
+ #endif
++#ifndef _TopTools_MapOfOrientedShape_HeaderFile
++#include <TopTools_MapOfOrientedShape.hxx>
++#endif
+ #ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #endif
+@@ -23,8 +26,6 @@
+ #include <Standard_Real.hxx>
+ #endif
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+-class TopTools_MapOfOrientedShape;
+ class TopoDS_Edge;
+ class TopoDS_Face;
+ class gp_Vec;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.cxx netgen-5.3.1_new/libsrc/occ/Partition_Spliter.cxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.cxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Spliter.cxx  2016-09-29 14:44:02.000464619 +0300
+@@ -48,7 +48,6 @@
+ #include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+ #include <TopTools_IndexedMapOfShape.hxx>
+ #include <TopTools_ListIteratorOfListOfShape.hxx>
+-#include <TopTools_ListOfShape.hxx>
+ #include <TopTools_MapIteratorOfMapOfShape.hxx>
+ #include <TopTools_SequenceOfShape.hxx>
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.hxx netgen-5.3.1_new/libsrc/occ/Partition_Spliter.hxx
+--- netgen-5.3.1_orig/libsrc/occ/Partition_Spliter.hxx 2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Partition_Spliter.hxx  2016-09-29 14:44:02.004464639 +0300
+@@ -28,9 +28,6 @@
+ #ifndef _TopTools_DataMapOfShapeShape_HeaderFile
+ #include <TopTools_DataMapOfShapeShape.hxx>
+ #endif
+-#ifndef _Handle_BRepAlgo_AsDes_HeaderFile
+-#include <Handle_BRepAlgo_AsDes.hxx>
+-#endif
+ #ifndef _BRepAlgo_Image_HeaderFile
+ #include <BRepAlgo_Image.hxx>
+ #endif
+@@ -45,7 +42,6 @@
+ #endif
+ class BRepAlgo_AsDes;
+ class TopoDS_Shape;
+-class TopTools_ListOfShape;
+ class TopoDS_Edge;
+@@ -129,7 +125,7 @@
+    TopTools_DataMapOfShapeShape myFaceShapeMap;
+    TopTools_DataMapOfShapeShape myInternalFaces;
+    TopTools_DataMapOfShapeShape myIntNotClFaces;
+-   Handle_BRepAlgo_AsDes myAsDes;
++   Handle(BRepAlgo_AsDes) myAsDes;
+    BRepAlgo_Image myImagesFaces;
+    BRepAlgo_Image myImagesEdges;
+    BRepAlgo_Image myImageShape;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occconstruction.cpp netgen-5.3.1_new/libsrc/occ/occconstruction.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occconstruction.cpp   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occconstruction.cpp    2016-09-29 14:04:51.500148293 +0300
+@@ -28,7 +28,7 @@
+ #include <BRepAlgoAPI_Common.hxx>
+ #include <BRepAlgoAPI_Fuse.hxx>
+ #include <BRepAlgoAPI_Section.hxx>
+-#include <BRepOffsetAPI_Sewing.hxx>
++//#include <BRepOffsetAPI_Sewing.hxx>
+ //#include <BRepAlgo_Sewing.hxx>
+ #include <BRepOffsetAPI_MakeOffsetShape.hxx>
+ #include <ShapeFix_Shape.hxx>
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp netgen-5.3.1_new/libsrc/occ/occgenmesh.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp        2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgenmesh.cpp 2016-09-29 14:04:51.500148293 +0300
+@@ -171,8 +171,8 @@
+          if(h < 1e-4*maxside)
+             return;
+-
+-         if (h > 30) return;
++         // commented to restrict H on a large sphere for example
++         //if (h > 30) return;
+       }
+       if (h < maxside && depth < 10)
+@@ -250,8 +250,8 @@
+       hvalue[0] = 0;
+       pnt = c->Value(s0);
+-      double olddist = 0;
+-      double dist = 0;
++      //double olddist = 0; -- useless variables
++      //double dist = 0;
+       int tmpVal = (int)(DIVIDEEDGESECTIONS);
+@@ -259,15 +259,19 @@
+       {
+          oldpnt = pnt;
+          pnt = c->Value(s0+(i/double(DIVIDEEDGESECTIONS))*(s1-s0));
++         // -- no more than 1 segment per <edge length>/DIVIDEEDGESECTIONS
+          hvalue[i] = hvalue[i-1] +
++         //   1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
++         //   pnt.Distance(oldpnt);
++           min( 1.0,
+             1.0/mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))*
+-            pnt.Distance(oldpnt);
++                pnt.Distance(oldpnt));
+          //(*testout) << "mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z())) " << mesh.GetH(Point3d(pnt.X(), pnt.Y(), pnt.Z()))
+          //      <<  " pnt.Distance(oldpnt) " << pnt.Distance(oldpnt) << endl;
+-         olddist = dist;
+-         dist = pnt.Distance(oldpnt);
++         //olddist = dist; -- useless variables
++         //dist = pnt.Distance(oldpnt);
+       }
+       //  nsubedges = int(ceil(hvalue[DIVIDEEDGESECTIONS]));
+@@ -282,7 +286,10 @@
+       {
+          if (hvalue[i1]/hvalue[DIVIDEEDGESECTIONS]*nsubedges >= i)
+          {
+-            params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            // -- for nsubedges comparable to DIVIDEEDGESECTIONS
++            //params[i] = s0+(i1/double(DIVIDEEDGESECTIONS))*(s1-s0);
++            double d1 = i1 - (hvalue[i1] - i*hvalue[DIVIDEEDGESECTIONS]/nsubedges)/(hvalue[i1]-hvalue[i1-1]);
++            params[i] = s0+(d1/double(DIVIDEEDGESECTIONS))*(s1-s0);
+             pnt = c->Value(params[i]);
+             ps[i-1] = MeshPoint (Point3d(pnt.X(), pnt.Y(), pnt.Z()));
+             i++;
+@@ -326,6 +333,9 @@
+       (*testout) << "nedges = " << nedges << endl;
+       double eps = 1e-6 * geom.GetBoundingBox().Diam();
++      const double eps2 = eps * eps; // -- small optimization
++
++      int first_vp = mesh.GetNP()+1; // -- to support SALOME sub-meshes
+       for (int i = 1; i <= nvertices; i++)
+       {
+@@ -335,7 +345,8 @@
+          bool exists = 0;
+          if (merge_solids)
+             for (PointIndex pi = 1; pi <= mesh.GetNP(); pi++)
+-               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)
++               //if ( Dist2 (mesh[pi], Point<3>(mp)) < eps*eps)              
++               if ( Dist2 (mesh[pi], Point<3>(mp)) < eps2 ) // -- small optimization
+                {
+                   exists = 1;
+                   break;
+@@ -365,6 +376,7 @@
+          {
+             TopoDS_Face face = TopoDS::Face(exp1.Current());
+             int facenr = geom.fmap.FindIndex(face);
++            if ( facenr < 1 ) continue; // -- to support SALOME sub-meshes
+             if (face2solid[0][facenr-1] == 0)
+                face2solid[0][facenr-1] = solidnr;
+@@ -384,6 +396,7 @@
+       int facenr = 0;
+       int edgenr = 0;
++      edgenr = mesh.GetNSeg(); // to support SALOME sub-meshes
+       (*testout) << "faces = " << geom.fmap.Extent() << endl;
+       int curr = 0;
+@@ -445,6 +458,7 @@
+                   //(*testout) << "ignoring degenerated edge" << endl;
+                   continue;
+                }
++               if ( geom.emap.FindIndex(edge) < 1 ) continue; // to support SALOME sub-meshes
+                if (geom.vmap.FindIndex(TopExp::FirstVertex (edge)) ==
+                   geom.vmap.FindIndex(TopExp::LastVertex (edge)))
+@@ -477,20 +491,104 @@
+                if (!merge_solids)
+                {
+-                  pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
+-                  pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 //pnums[0] = geom.vmap.FindIndex (TopExp::FirstVertex (edge));
++                 //pnums[pnums.Size()-1] = geom.vmap.FindIndex (TopExp::LastVertex (edge));
++                 MeshPoint dfltP ( Point<3> ( 0, 0, 0 ) );
++                 int *ipp[] = { &pnums[0], &pnums[pnums.Size()-1] };
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v[2];
++                 v[0] = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 v[1] = TopoDS::Vertex( vIt.Value() );
++                 if ( v[0].Orientation() == TopAbs_REVERSED )
++                   std::swap( v[0], v[1] );
++                 for ( int i = 0; i < 2; ++i)
++                 {
++                   int &ip = *ipp[i];
++                   ip = geom.vmap.FindIndex ( v[i] );
++                   if ( ip == 0 || ip > nvertices )
++                   {
++                     int iv = ip;
++                     if ( ip == 0 )
++                       ip = iv = geom.vmap.Add( v[i] );
++                     gp_Pnt pnt = BRep_Tool::Pnt( v[i] );
++                     MeshPoint mp( Point<3>(pnt.X(), pnt.Y(), pnt.Z()) );
++                     for (PointIndex pi = 1; pi < first_vp; pi++)
++                       if ( Dist2 (mesh.Point(pi), Point<3>(mp)) < 1e-100 )
++                       {
++                         ip = pi;
++                         if ( mesh.Point(ip).GetLayer() != dfltP.GetLayer() && mesh.Point(ip).GetLayer() != iv )
++                           continue;
++                         if ( mesh.Point(ip).GetLayer() == dfltP.GetLayer())
++                           mesh.Point(ip) = MeshPoint( mesh.Point(ip), iv );
++                         break;
++                       }
+                }
+                else
+                {
+-                  Point<3> fp = occ2ng (BRep_Tool::Pnt (TopExp::FirstVertex (edge)));
+-                  Point<3> lp = occ2ng (BRep_Tool::Pnt (TopExp::LastVertex (edge)));
++                     ip += first_vp - 1;
++                   }
++                 }
++               }
++               else
++               {
++                 TopoDS_Iterator vIt( edge, false );
++                 TopoDS_Vertex v1 = TopoDS::Vertex( vIt.Value() ); vIt.Next();
++                 TopoDS_Vertex v2 = TopoDS::Vertex( vIt.Value() );
++                 if ( v1.Orientation() == TopAbs_REVERSED )
++                   std::swap( v1, v2 );
++                 const bool isClosedEdge = v1.IsSame( v2 );
++                 
++                  Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
++                  Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
++                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  if ( isClosedEdge )
++                    tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
+                   pnums[0] = -1;
+                   pnums.Last() = -1;
+                   for (PointIndex pi = 1; pi < first_ep; pi++)
+                   {
+-                     if (Dist2 (mesh[pi], fp) < eps*eps) pnums[0] = pi;
+-                     if (Dist2 (mesh[pi], lp) < eps*eps) pnums.Last() = pi;
++                    if (Dist2 (mesh[pi], fp) < tol2) pnums[0] = pi;
++                    if (Dist2 (mesh[pi], lp) < tol2) pnums.Last() = pi;
++                  }
++                  if (( isClosedEdge && pnums[0] != pnums.Last() ) ||
++                      ( !isClosedEdge && pnums[0] == pnums.Last() ))
++                    pnums[0] = pnums.Last() = -1;
++                  if ( pnums[0] == -1 || pnums.Last() == -1 )
++                  {
++                    // take into account a possible large gap between a vertex and an edge curve
++                    // end and a large vertex tolerance covering the whole edge
++                    if ( pnums[0] == -1 )
++                    {
++                      double tol = BRep_Tool::Tolerance( v1 );
++                      for (PointIndex pi = 1; pi < first_ep; pi++)
++                        if (pi != pnums.Last() && Dist2 (mesh[pi], fp) < 2*tol*tol)
++                          pnums[0] = pi;
++
++                      if ( pnums[0] == -1 )
++                        pnums[0] = first_ep-1- nvertices + geom.vmap.FindIndex ( v1 );
++                    }
++                    if ( isClosedEdge )
++                    {
++                      pnums.Last() = pnums[0];
++                    }
++                    else
++                    {
++                      if ( pnums.Last() == -1 )
++                      {
++                        double tol = BRep_Tool::Tolerance( v2 );
++                        for (PointIndex pi = 1; pi < first_ep; pi++)
++                          if (pi != pnums[0] && Dist2 (mesh[pi], lp) < 2*tol*tol)
++                            pnums.Last() = pi;
++
++                        if ( pnums.Last() == -1 )
++                          pnums.Last() = first_ep-1-nvertices + geom.vmap.FindIndex ( v2 );
++                      }
++
++                      if ( Dist2( fp, mesh[PointIndex(pnums[0])]) >
++                           Dist2( lp, mesh[PointIndex(pnums.Last())]))
++                      std::swap( pnums[0], pnums.Last() );
++                    }
+                   }
+                }
+@@ -500,17 +598,20 @@
+                   bool exists = 0;
+                   int j;
+                   for (j = first_ep; j <= mesh.GetNP(); j++)
++                  {
++                     if (!merge_solids && mesh.Point(j).GetLayer() != geomedgenr ) continue; // to support SALOME fuse edges
+                      if ((mesh.Point(j)-Point<3>(mp[i-1])).Length() < eps)
+                      {
+                         exists = 1;
+                         break;
+                      }
++                  }
+                      if (exists)
+                         pnums[i] = j;
+                      else
+                      {
+-                        mesh.AddPoint (mp[i-1]);
++                        mesh.AddPoint (mp[i-1], geomedgenr); // to support SALOME fuse edges
+                         (*testout) << "add meshpoint " << mp[i-1] << endl;
+                         pnums[i] = mesh.GetNP();
+                      }
+@@ -594,6 +695,8 @@
+       //              (*testout) << "edge " << mesh.LineSegment(i).edgenr << " face " << mesh.LineSegment(i).si
+       //                              << " p1 " << mesh.LineSegment(i)[0] << " p2 " << mesh.LineSegment(i)[1] << endl;
+       //      exit(10);
++      for (int j = 1; j <= mesh.GetNP(); j++) // to support SALOME fuse edges: set level to zero
++        mesh.Point(j) = MeshPoint( (Point<3>&) mesh.Point(j) );
+       mesh.CalcSurfacesOfNode();
+       multithread.task = savetask;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgeom.cpp netgen-5.3.1_new/libsrc/occ/occgeom.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occgeom.cpp   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgeom.cpp    2016-09-29 16:22:31.636328123 +0300
+@@ -8,6 +8,8 @@
+ #include "ShapeAnalysis_CheckSmallFace.hxx"
+ #include "ShapeAnalysis_DataMapOfShapeListOfReal.hxx"
+ #include "ShapeAnalysis_Surface.hxx"
++#include <BRepTopAdaptor_FClass2d.hxx> // -- to optimize Project() and FastProject()
++#include <TopAbs_State.hxx>
+ #include "BRepAlgoAPI_Fuse.hxx"
+ #include "BRepCheck_Analyzer.hxx"
+ #include "BRepLib.hxx"
+@@ -16,9 +18,16 @@
+ #include "ShapeFix_FixSmallFace.hxx"
+ #include "Partition_Spliter.hxx"
+-
+ namespace netgen
+ {
++  // free data used to optimize Project() and FastProject()
++  OCCGeometry::~OCCGeometry()
++  {
++    NCollection_DataMap<int,BRepTopAdaptor_FClass2d*>::Iterator it(fclsmap);
++    for (; it.More(); it.Next())
++      delete it.Value();
++  }
++
+    void OCCGeometry :: PrintNrShapes ()
+    {
+       TopExp_Explorer e;
+@@ -112,7 +121,7 @@
+       double surfacecont = 0;
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -143,7 +152,7 @@
+          cout << endl << "- repairing faces" << endl;
+          Handle(ShapeFix_Face) sff;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+@@ -200,7 +209,7 @@
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -217,7 +226,7 @@
+          cout << endl << "- fixing small edges" << endl;
+          Handle(ShapeFix_Wire) sfw;
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+@@ -284,7 +293,7 @@
+          {
+             BuildFMap();
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+@@ -312,7 +321,7 @@
+          {
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Apply(shape);
+             for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+             {
+@@ -438,7 +447,7 @@
+       {
+-         Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++         Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+          rebuild->Apply(shape);
+          for (exp1.Init (shape, TopAbs_EDGE); exp1.More(); exp1.Next())
+          {
+@@ -483,7 +492,7 @@
+                   TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+                   TopoDS_Solid newsolid = solid;
+                   BRepLib::OrientClosedSolid (newsolid);
+-                  Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++                  Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+                   //            rebuild->Apply(shape);
+                   rebuild->Replace(solid, newsolid, Standard_False);
+                   TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_COMPSOLID);//, 1);
+@@ -906,7 +915,7 @@
+             TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
+             TopoDS_Solid newsolid = solid;
+             BRepLib::OrientClosedSolid (newsolid);
+-            Handle_ShapeBuild_ReShape rebuild = new ShapeBuild_ReShape;
++            Handle(ShapeBuild_ReShape) rebuild = new ShapeBuild_ReShape;
+             rebuild->Replace(solid, newsolid, Standard_False);
+             TopoDS_Shape newshape = rebuild->Apply(shape, TopAbs_SHAPE, 1);
+@@ -951,25 +960,58 @@
+    }
++   // returns a projector and a classifier for the given surface
++   void OCCGeometry::GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                                  BRepTopAdaptor_FClass2d*& cls) const
++   {
++     //MSV: organize caching projector in the map
++     if (fprjmap.IsBound(surfi))
++     {
++       proj = fprjmap.Find(surfi);
++       cls = fclsmap.Find(surfi);
++     }
++     else
++     {
++       const TopoDS_Face& aFace = TopoDS::Face(fmap(surfi));
++       Handle(Geom_Surface) aSurf = BRep_Tool::Surface(aFace);
++       proj = new ShapeAnalysis_Surface(aSurf);
++       fprjmap.Bind(surfi, proj);
++       cls = new BRepTopAdaptor_FClass2d(aFace,Precision::Confusion());
++       fclsmap.Bind(surfi, cls);
++     }
++   }
+-
+-   void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   // void OCCGeometry :: Project (int surfi, Point<3> & p) const
++   bool OCCGeometry :: Project (int surfi, Point<3> & p, double& u, double& v) const
+    {
+       static int cnt = 0;
+       if (++cnt % 1000 == 0) cout << "Project cnt = " << cnt << endl;
+       gp_Pnt pnt(p(0), p(1), p(2));
+-      double u,v;
+-      Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-      Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
+-      gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
+-      suval.Coord( u, v);
+-      pnt = thesurf->Value( u, v );
++      // -- Optimization: use cached projector and classifier
++      // double u,v;
++      // Handle( Geom_Surface ) thesurf = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // Handle( ShapeAnalysis_Surface ) su = new ShapeAnalysis_Surface( thesurf );
++      // gp_Pnt2d suval = su->ValueOfUV ( pnt, BRep_Tool::Tolerance( TopoDS::Face(fmap(surfi)) ) );
++      // suval.Coord( u, v);
++      // pnt = thesurf->Value( u, v );  
++
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
++      gp_Pnt2d p2d = proj->ValueOfUV(pnt, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        return false;
++      }
++      pnt = proj->Value(p2d);
++      p2d.Coord(u, v);
+       p = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
++      return true;
+    }
+@@ -979,54 +1021,69 @@
+    {
+       gp_Pnt p(ap(0), ap(1), ap(2));
+-      Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
+-
+-      gp_Pnt x = surface->Value (u,v);
+-
+-      if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
+-
+-      gp_Vec du, dv;
++      // -- Optimization: use cached projector and classifier
++      // Handle(Geom_Surface) surface = BRep_Tool::Surface(TopoDS::Face(fmap(surfi)));
++      // 
++      // gp_Pnt x = surface->Value (u,v);
++      // 
++      // if (p.SquareDistance(x) <= sqr(PROJECTION_TOLERANCE)) return true;
++      // 
++      // gp_Vec du, dv;
++      // 
++      // surface->D1(u,v,x,du,dv);
++      // 
++      // int count = 0;
++      // 
++      // gp_Pnt xold;
++      // gp_Vec n;
++      // double det, lambda, mu;
++      // 
++      // do {
++      //    count++;
++      // 
++      //    n = du^dv;
++      // 
++      //    det = Det3 (n.X(), du.X(), dv.X(),
++      //       n.Y(), du.Y(), dv.Y(),
++      //       n.Z(), du.Z(), dv.Z());
++      // 
++      //    if (det < 1e-15) return false;
++      // 
++      //    lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
++      //       n.Y(), p.Y()-x.Y(), dv.Y(),
++      //       n.Z(), p.Z()-x.Z(), dv.Z())/det;
++      // 
++      //    mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
++      //       n.Y(), du.Y(), p.Y()-x.Y(),
++      //       n.Z(), du.Z(), p.Z()-x.Z())/det;
++      // 
++      //    u += lambda;
++      //    v += mu;
++      // 
++      //    xold = x;
++      //    surface->D1(u,v,x,du,dv);
++      // 
++      // } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
++      // 
++      // //    (*testout) << "FastProject count: " << count << endl;
++      // 
++      // if (count == 50) return false;
++      // 
++      // ap = Point<3> (x.X(), x.Y(), x.Z());
++      Handle(ShapeAnalysis_Surface) proj;
++      BRepTopAdaptor_FClass2d *cls;
++      GetFaceTools(surfi, proj, cls);
+-      surface->D1(u,v,x,du,dv);
+-
+-      int count = 0;
+-
+-      gp_Pnt xold;
+-      gp_Vec n;
+-      double det, lambda, mu;
+-
+-      do {
+-         count++;
+-
+-         n = du^dv;
+-
+-         det = Det3 (n.X(), du.X(), dv.X(),
+-            n.Y(), du.Y(), dv.Y(),
+-            n.Z(), du.Z(), dv.Z());
+-
+-         if (det < 1e-15) return false;
+-
+-         lambda = Det3 (n.X(), p.X()-x.X(), dv.X(),
+-            n.Y(), p.Y()-x.Y(), dv.Y(),
+-            n.Z(), p.Z()-x.Z(), dv.Z())/det;
+-
+-         mu     = Det3 (n.X(), du.X(), p.X()-x.X(),
+-            n.Y(), du.Y(), p.Y()-x.Y(),
+-            n.Z(), du.Z(), p.Z()-x.Z())/det;
+-
+-         u += lambda;
+-         v += mu;
+-
+-         xold = x;
+-         surface->D1(u,v,x,du,dv);
+-
+-      } while (xold.SquareDistance(x) > sqr(PROJECTION_TOLERANCE) && count < 50);
+-
+-      //    (*testout) << "FastProject count: " << count << endl;
+-
+-      if (count == 50) return false;
++      gp_Pnt2d p2d = proj->NextValueOfUV(gp_Pnt2d(u,v), p, Precision::Confusion());
++      if (cls->Perform(p2d) == TopAbs_OUT)
++      {
++        //cout << "Projection fails" << endl;
++        return false;
++      }
+-      ap = Point<3> (x.X(), x.Y(), x.Z());
++      p = proj->Value(p2d);
++      p2d.Coord(u, v);
++      ap = Point<3> (p.X(), p.Y(), p.Z());
+       return true;
+    }
+@@ -1038,9 +1095,9 @@
+    {
+       cout << "writing stl..."; cout.flush();
+       StlAPI_Writer writer;
+-      writer.RelativeMode() = Standard_False;
++      //writer.RelativeMode() = Standard_False;
+-      writer.SetDeflection(0.02);
++      //writer.SetDeflection(0.02);
+       writer.Write(shape,filename);
+       cout << "done" << endl;
+@@ -1059,10 +1116,10 @@
+       occgeo = new OCCGeometry;
+       // Initiate a dummy XCAF Application to handle the IGES XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+       // Create an XCAF Document to contain the IGES file itself
+-      Handle_TDocStd_Document iges_doc;
++      Handle(TDocStd_Document) iges_doc;
+       // Check if a IGES File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1089,8 +1146,8 @@
+       reader.Transfer(iges_doc);
+       // Read in the shape(s) and the colours present in the IGES File
+-      Handle_XCAFDoc_ShapeTool iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
+-      Handle_XCAFDoc_ColorTool iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
++      Handle(XCAFDoc_ShapeTool) iges_shape_contents = XCAFDoc_DocumentTool::ShapeTool(iges_doc->Main());
++      Handle(XCAFDoc_ColorTool) iges_colour_contents = XCAFDoc_DocumentTool::ColorTool(iges_doc->Main());
+       TDF_LabelSequence iges_shapes;
+       iges_shape_contents->GetShapes(iges_shapes);
+@@ -1137,10 +1194,10 @@
+       occgeo = new OCCGeometry;
+       // Initiate a dummy XCAF Application to handle the STEP XCAF Document
+-      static Handle_XCAFApp_Application dummy_app = XCAFApp_Application::GetApplication();
++      static Handle(XCAFApp_Application) dummy_app = XCAFApp_Application::GetApplication();
+       // Create an XCAF Document to contain the STEP file itself
+-      Handle_TDocStd_Document step_doc;
++      Handle(TDocStd_Document) step_doc;
+       // Check if a STEP File is already open under this handle, if so, close it to prevent
+       // Segmentation Faults when trying to create a new document
+@@ -1167,8 +1224,8 @@
+       reader.Transfer(step_doc);
+       // Read in the shape(s) and the colours present in the STEP File
+-      Handle_XCAFDoc_ShapeTool step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
+-      Handle_XCAFDoc_ColorTool step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
++      Handle(XCAFDoc_ShapeTool) step_shape_contents = XCAFDoc_DocumentTool::ShapeTool(step_doc->Main());
++      Handle(XCAFDoc_ColorTool) step_colour_contents = XCAFDoc_DocumentTool::ColorTool(step_doc->Main());
+       TDF_LabelSequence step_shapes;
+       step_shape_contents->GetShapes(step_shapes);
+@@ -1221,7 +1278,7 @@
+       // Fixed a bug in the OpenCascade XDE Colour handling when 
+       // opening BREP Files, since BREP Files have no colour data.
+       // Hence, the face_colours Handle needs to be created as a NULL handle.
+-      occgeo->face_colours = Handle_XCAFDoc_ColorTool();
++      occgeo->face_colours = Handle(XCAFDoc_ColorTool)();
+       occgeo->face_colours.Nullify();
+       occgeo->changed = 1;
+       occgeo->BuildFMap();
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occgeom.hpp netgen-5.3.1_new/libsrc/occ/occgeom.hpp
+--- netgen-5.3.1_orig/libsrc/occ/occgeom.hpp   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occgeom.hpp    2016-09-29 14:44:01.996464598 +0300
+@@ -15,8 +15,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "BRepTools.hxx"
+ #include "TopExp.hxx"
+ #include "BRepBuilderAPI_MakeVertex.hxx"
+@@ -42,8 +42,8 @@
+ #include "Geom_Curve.hxx"
+ #include "Geom2d_Curve.hxx"
+ #include "Geom_Surface.hxx"
+-#include "GeomAPI_ProjectPointOnSurf.hxx"
+-#include "GeomAPI_ProjectPointOnCurve.hxx"
++// #include "GeomAPI_ProjectPointOnSurf.hxx"
++// #include "GeomAPI_ProjectPointOnCurve.hxx"
+ #include "TopoDS_Wire.hxx"
+ #include "BRepTools_WireExplorer.hxx"
+ #include "BRepTools.hxx"
+@@ -68,18 +68,26 @@
+ #include "IGESToBRep_Reader.hxx"
+ #include "Interface_Static.hxx"
+ #include "GeomAPI_ExtremaCurveCurve.hxx"
+-#include "Standard_ErrorHandler.hxx"
++//#include "Standard_ErrorHandler.hxx"
+ #include "Standard_Failure.hxx"
+ #include "ShapeUpgrade_ShellSewing.hxx"
+ #include "ShapeFix_Shape.hxx"
+ #include "ShapeFix_Wireframe.hxx"
++#include <Standard_Version.hxx>
++#if (OCC_VERSION_MAJOR << 16 | OCC_VERSION_MINOR << 8 | OCC_VERSION_MAINTENANCE) <= 0x060702
++// porting to OCCT6.7.3
+ #include "BRepMesh.hxx"
++#endif
+ #include "BRepMesh_IncrementalMesh.hxx"
+ #include "BRepBndLib.hxx"
+ #include "Bnd_Box.hxx"
+ #include "ShapeAnalysis.hxx"
+ #include "ShapeBuild_ReShape.hxx"
++// -- Optimization: to use cached projector and classifier
++#include <NCollection_DataMap.hxx>
++class ShapeAnalysis_Surface;
++class BRepTopAdaptor_FClass2d;
+ // Philippose - 29/01/2009
+ // OpenCascade XDE Support
+@@ -192,6 +200,9 @@
+    class OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
++      // -- Optimization: to use cached projector and classifier
++      mutable NCollection_DataMap<int,Handle(ShapeAnalysis_Surface)> fprjmap;
++      mutable NCollection_DataMap<int,BRepTopAdaptor_FClass2d*> fclsmap;
+    public:
+       TopoDS_Shape shape;
+@@ -203,7 +214,7 @@
+       // OpenCascade XDE Support
+       // XCAF Handle to make the face colours available to the rest of
+       // the system
+-      Handle_XCAFDoc_ColorTool face_colours;
++      Handle(XCAFDoc_ColorTool) face_colours;
+      mutable int changed;
+       Array<int> facemeshstatus;
+@@ -247,6 +258,8 @@
+      virtual void Save (string filename) const;
++      ~OCCGeometry();      // -- to free cached projector and classifier
++
+       void BuildFMap();
+       Box<3> GetBoundingBox()
+@@ -266,9 +279,14 @@
+       Point<3> Center()
+       {  return center;}
+-      void Project (int surfi, Point<3> & p) const;
++      // void Project (int surfi, Point<3> & p) const; -- optimization
++      bool Project (int surfi, Point<3> & p, double& u, double& v) const;
+       bool FastProject (int surfi, Point<3> & ap, double& u, double& v) const;
++      // -- Optimization: to use cached projector and classifier
++      void GetFaceTools(int surfi, Handle(ShapeAnalysis_Surface)& proj,
++                        BRepTopAdaptor_FClass2d*& cls) const;
++
+       OCCSurface GetSurface (int surfi)
+       {
+          cout << "OCCGeometry::GetSurface using PLANESPACE" << endl;
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/occmeshsurf.cpp netgen-5.3.1_new/libsrc/occ/occmeshsurf.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occmeshsurf.cpp       2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/occmeshsurf.cpp        2016-09-29 14:08:00.045144560 +0300
+@@ -6,6 +6,7 @@
+ #include <meshing.hpp>
+ #include <GeomLProp_SLProps.hxx>
+ #include <ShapeAnalysis_Surface.hxx>
++#include <GeomAPI_ProjectPointOnCurve.hxx> // -- moved here from occgeom.hpp
+ namespace netgen
+@@ -96,13 +97,16 @@
+       n.Normalize();
+       }
+-    else
++    else if ( lprop.IsNormalDefined() )
+       {
+       n(0)=lprop.Normal().X();
+       n(1)=lprop.Normal().Y();
+       n(2)=lprop.Normal().Z();
+       }
+-
++    else
++      {
++        n = 0;
++      }
+     if(glob_testout)
+       {
+       (*testout) << "u " << geominfo.u << " v " << geominfo.v 
+@@ -434,23 +435,33 @@
+   void MeshOptimize2dOCCSurfaces :: ProjectPoint (INDEX surfind, Point<3> & p) const
+   {
+-    geometry.Project (surfind, p);
++    // geometry.Project (surfind, p); -- signature of Project() changed for optimization
++    double u, v;
++    geometry.Project (surfind, p, u, v);
+   }
+   int MeshOptimize2dOCCSurfaces :: ProjectPointGI (INDEX surfind, Point<3> & p, PointGeomInfo & gi) const
+   {
+-    double u = gi.u;
+-    double v = gi.v;
++    //double u = gi.u;
++    //double v = gi.v;
+     Point<3> hp = p;
+-    if (geometry.FastProject (surfind, hp, u, v))
+-      {
++    // -- u and v are computed by FastProject() and Project(), no need to call CalcPointGeomInfo()
++    // if (geometry.FastProject (surfind, hp, u, v))
++    //   {
++    //    p = hp;
++    //    return 1;
++    //   }
++    // ProjectPoint (surfind, p); 
++    // return CalcPointGeomInfo (surfind, gi, p); 
++    bool ok;
++    if (gi.trignum > 0)
++      ok = geometry.FastProject (surfind, hp, gi.u, gi.v);
++    else
++      ok = geometry.Project (surfind, hp, gi.u, gi.v);
+       p = hp;
+-      return 1;
+-      }
+-    ProjectPoint (surfind, p); 
+-    return CalcPointGeomInfo (surfind, gi, p); 
++    return ok;
+   }
+@@ -680,7 +691,8 @@
+       if (!geometry.FastProject (surfi, hnewp, u, v))
+         {
+         //  cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-          geometry.Project (surfi, hnewp);
++          // geometry.Project (surfi, hnewp); -- Project() changed for optimization
++          geometry.Project (surfi, hnewp, u, v);
+         }
+       newgi.trignum = 1;
+@@ -689,7 +701,7 @@
+       }
+   
+     newp = hnewp;
+-  }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: 
+@@ -708,14 +720,18 @@
+     hnewp = Point<3> (pnt.X(), pnt.Y(), pnt.Z());
+     newp = hnewp;
+     newgi = ap1;
+-  };
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi) const
+   {
+     if (surfi > 0)
+-      geometry.Project (surfi, p);
+-  };
++      //geometry.Project (surfi, p);
++    {
++      double u, v;
++      geometry.Project (surfi, p, u, v);
++    }
++  }//; -- to compile with -Wall -pedantic
+   void OCCRefinementSurfaces :: ProjectToSurface (Point<3> & p, int surfi, PointGeomInfo & gi) const
+   {
+@@ -723,9 +739,10 @@
+       if (!geometry.FastProject (surfi, p, gi.u, gi.v))
+       {
+         cout << "Fast projection to surface fails! Using OCC projection" << endl;
+-        geometry.Project (surfi, p);
++          double u, v;
++        geometry.Project (surfi, p, u, v);
++      }
+       }
+-  };
+diff -NaurwB netgen-5.3.1_orig/libsrc/occ/utilities.h netgen-5.3.1_new/libsrc/occ/utilities.h
+--- netgen-5.3.1_orig/libsrc/occ/utilities.h   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/utilities.h    2016-09-29 14:04:51.504148314 +0300
+@@ -33,6 +33,7 @@
+ #include <string>
+ #include <iostream>
++#include <iomanip>
+ #include <cstdlib>
+ // #include "SALOME_Log.hxx"
+diff -NaurwB netgen-5.3.1_orig/nglib/nglib.h netgen-5.3.1_new/nglib/nglib.h
+--- netgen-5.3.1_orig/nglib/nglib.h    2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_new/nglib/nglib.h     2016-09-29 14:04:51.504148314 +0300
+@@ -24,7 +24,7 @@
+ // Philippose - 14.02.2009
+ // Modifications for creating a DLL in Windows
+ #ifdef WIN32
+-   #ifdef NGLIB_EXPORTS || nglib_EXPORTS
++   #if defined NGLIB_EXPORTS || defined nglib_EXPORTS
+       #define DLL_HEADER   __declspec(dllexport)
+    #else
+       #define DLL_HEADER   __declspec(dllimport)
+diff -Naur netgen-5.3.1_orig/libsrc/csg/Makefile.am netgen-5.3.1_new/libsrc/csg/Makefile.am
+--- netgen-5.3.1_orig/libsrc/csg/Makefile.am   2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_new/libsrc/csg/Makefile.am    2016-11-08 17:48:02.000000000 +0300
+@@ -8,7 +8,7 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include  $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libcsg.la
++noinst_LTLIBRARIES = libcsg.la
+ libcsg_la_SOURCES = algprim.cpp brick.cpp   \
+@@ -17,12 +17,9 @@
+ manifold.cpp meshsurf.cpp polyhedra.cpp revolution.cpp singularref.cpp \
+ solid.cpp specpoin.cpp spline3d.cpp surface.cpp triapprox.cpp
+-libcsg_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+-
+-
+ if NGGUI
+-lib_LTLIBRARIES += libcsgvis.la 
++lib_LTLIBRARIES = libcsgvis.la 
+ libcsgvis_la_SOURCES = vscsg.cpp csgpkg.cpp
+ libcsgvis_la_LIBADD = libcsg.la
+diff -Naur netgen-5.3.1_orig/libsrc/geom2d/Makefile.am netgen-5.3.1_new/libsrc/geom2d/Makefile.am
+--- netgen-5.3.1_orig/libsrc/geom2d/Makefile.am        2014-08-29 13:54:06.000000000 +0400
++++ netgen-5.3.1_new/libsrc/geom2d/Makefile.am 2016-11-08 17:49:13.000000000 +0300
+@@ -4,16 +4,15 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libgeom2d.la 
++noinst_LTLIBRARIES = libgeom2d.la 
+ if NGGUI
+-lib_LTLIBRARIES += libgeom2dvis.la 
++lib_LTLIBRARIES = libgeom2dvis.la 
+ endif
+ libgeom2d_la_SOURCES = genmesh2d.cpp geom2dmesh.cpp geometry2d.cpp
+-libgeom2d_la_LIBADD =         $(top_builddir)/libsrc/meshing/libmesh.la
+ libgeom2dvis_la_SOURCES = geom2dpkg.cpp vsgeom2d.cpp
+ libgeom2dvis_la_LIBADD = libgeom2d.la
+diff -Naur netgen-5.3.1_orig/libsrc/interface/Makefile.am netgen-5.3.1_new/libsrc/interface/Makefile.am
+--- netgen-5.3.1_orig/libsrc/interface/Makefile.am     2014-08-29 13:54:02.000000000 +0400
++++ netgen-5.3.1_new/libsrc/interface/Makefile.am      2016-11-08 17:49:26.000000000 +0300
+@@ -2,14 +2,11 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include -I$(top_srcdir)/libsrc/interface  $(MPI_INCLUDES) $(TCL_INCLUDES) -DOPENGL
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libinterface.la
++noinst_LTLIBRARIES = libinterface.la
+ libinterface_la_SOURCES = nginterface.cpp nginterface_v2.cpp \
+       read_fnf_mesh.cpp readtetmesh.cpp readuser.cpp writeabaqus.cpp writediffpack.cpp \
+       writedolfin.cpp writeelmer.cpp writefeap.cpp writefluent.cpp writegmsh.cpp writejcm.cpp \
+       writepermas.cpp writetecplot.cpp writetet.cpp writetochnog.cpp writeuser.cpp \
+       wuchemnitz.cpp writegmsh2.cpp writeOpenFOAM15x.cpp 
+-
+-libinterface_la_LIBADD = $(top_builddir)/libsrc/meshing/libmesh.la
+-
+ # libinterface_la_LDFLAGS = -rdynamic
+diff -Naur netgen-5.3.1_orig/libsrc/meshing/Makefile.am netgen-5.3.1_new/libsrc/meshing/Makefile.am
+--- netgen-5.3.1_orig/libsrc/meshing/Makefile.am       2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/meshing/Makefile.am        2016-11-08 17:48:44.000000000 +0300
+@@ -15,7 +15,7 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libmesh.la
++noinst_LTLIBRARIES = libmesh.la
+ libmesh_la_SOURCES = adfront2.cpp adfront3.cpp bisect.cpp boundarylayer.cpp \
+       clusters.cpp curvedelems.cpp delaunay.cpp delaunay2d.cpp            \
+@@ -30,8 +30,5 @@
+       topology.cpp triarls.cpp validate.cpp zrefine.cpp bcfunctions.cpp   \
+       parallelmesh.cpp  paralleltop.cpp  paralleltop.hpp basegeom.cpp 
+-libmesh_la_LIBADD =  $(top_builddir)/libsrc/linalg/libla.la \
+-      $(top_builddir)/libsrc/gprim/libgprim.la \
+-      $(top_builddir)/libsrc/general/libgen.la \
+-      -lz
++libmesh_la_LIBADD = -lz
+diff -Naur netgen-5.3.1_orig/libsrc/occ/Makefile.am netgen-5.3.1_new/libsrc/occ/Makefile.am
+--- netgen-5.3.1_orig/libsrc/occ/Makefile.am   2014-08-29 13:54:03.000000000 +0400
++++ netgen-5.3.1_new/libsrc/occ/Makefile.am    2016-11-08 17:30:53.000000000 +0300
+@@ -14,10 +14,10 @@
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libocc.la
++noinst_LTLIBRARIES = libocc.la
+ if NGGUI
+-lib_LTLIBRARIES += liboccvis.la 
++lib_LTLIBRARIES = liboccvis.la 
+ endif
+diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am netgen-5.3.1_new/libsrc/stlgeom/Makefile.am
+--- netgen-5.3.1_orig/libsrc/stlgeom/Makefile.am       2014-08-29 13:54:05.000000000 +0400
++++ netgen-5.3.1_new/libsrc/stlgeom/Makefile.am        2016-11-08 18:28:09.000000000 +0300
+@@ -4,10 +4,10 @@
+ AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(TCL_INCLUDES)
+ METASOURCES = AUTO
+-lib_LTLIBRARIES = libstl.la 
++noinst_LTLIBRARIES = libstl.la 
+ if NGGUI
+-lib_LTLIBRARIES += libstlvis.la 
++lib_LTLIBRARIES = libstlvis.la 
+ endif
+ libstl_la_SOURCES = meshstlsurface.cpp stlgeom.cpp stlgeomchart.cpp \
+@@ -16,6 +16,5 @@
+ libstlvis_la_SOURCES = stlpkg.cpp vsstl.cpp
+ libstlvis_la_LIBADD = libstl.la
+-libstl_la_LIBADD =  $(top_builddir)/libsrc/meshing/libmesh.la
+ # libstlvis_la_LIBADD = libstl.la $(top_builddir)/libsrc/linalg/libla.la 
+diff -Naur netgen-5.3.1_orig/nglib/Makefile.am netgen-5.3.1_new/nglib/Makefile.am
+--- netgen-5.3.1_orig/nglib/Makefile.am        2014-08-29 13:54:00.000000000 +0400
++++ netgen-5.3.1_new/nglib/Makefile.am 2016-11-08 19:01:17.000000000 +0300
+@@ -14,6 +14,9 @@
+       $(top_builddir)/libsrc/stlgeom/libstl.la \
+       $(top_builddir)/libsrc/occ/libocc.la \
+       $(top_builddir)/libsrc/meshing/libmesh.la \
++      $(top_builddir)/libsrc/general/libgen.la \
++      $(top_builddir)/libsrc/gprim/libgprim.la \
++      $(top_builddir)/libsrc/linalg/libla.la
+       $(OCCLIBS) $(MPI_LIBS)
+ libnglib_la_LDFLAGS = -avoid-version
diff --git a/products/patches/netgen53ForWindows.patch b/products/patches/netgen53ForWindows.patch
new file mode 100644 (file)
index 0000000..5321974
--- /dev/null
@@ -0,0 +1,1228 @@
+diff -Naur netgen-5.3.1_orig/CMakeLists.txt netgen-5.3.1_modif/CMakeLists.txt
+--- netgen-5.3.1_orig/CMakeLists.txt   1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/CMakeLists.txt  2019-01-22 12:34:45.926401100 +0300
+@@ -0,0 +1,75 @@
++# Copyright (C) 2016 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
++#
++CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR)
++INCLUDE(CMakeDependentOption)
++
++PROJECT(netgen C CXX)
++
++# Ensure a proper linker behavior:
++CMAKE_POLICY(SET CMP0003 NEW)
++
++# Versioning
++# ===========
++# Project name, upper case
++STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
++
++SET(${PROJECT_NAME_UC}_MAJOR_VERSION 5)
++SET(${PROJECT_NAME_UC}_MINOR_VERSION 3)
++SET(${PROJECT_NAME_UC}_PATCH_VERSION 1)
++SET(${PROJECT_NAME_UC}_VERSION
++  ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
++
++# Common CMake macros
++# ===================
++LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
++# Detect platform
++INCLUDE(FindPLATFORM) 
++# Detect OCCT
++INCLUDE(FindCAS)
++
++# Detect ZLIB on Windows
++IF(WIN32)
++  SET(ZLIB_ROOT_DIR $ENV{ZLIB_ROOT_DIR})
++  IF(EXISTS ${ZLIB_ROOT_DIR})
++    SET(ZLIB_ROOT ${ZLIB_ROOT_DIR})
++    INCLUDE(FindZLIB)
++    IF (NOT ${ZLIB_FOUND})
++      MESSAGE(FATAL_ERROR "We absolutely need the zlib library, please check zlib installation !")
++    ENDIF()
++  ELSE()
++    MESSAGE(FATAL_ERROR "We absolutely need the zlib library, please define ZLIB_ROOT_DIR !")
++  ENDIF()
++ENDIF()
++
++
++# Common definitions
++# ==================
++ADD_DEFINITIONS(-DNO_PARALLEL_THREADS)
++ADD_DEFINITIONS(-DOCCGEOMETRY)
++
++# Target directories
++SET(NETGEN_INSTALL_BINS "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Install path: netgen binaries")
++SET(NETGEN_INSTALL_LIBS "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Install path: netgen libs")
++SET(NETGEN_INSTALL_HEADERS "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Install path: netgen headers")
++SET(NETGEN_INSTALL_CMAKE "${CMAKE_INSTALL_PREFIX}/cmake" CACHE PATH "Install path: netgen cmake files")
++
++# Sub-directories
++ADD_SUBDIRECTORY(nglib)
++ADD_SUBDIRECTORY(cmake)
++
+diff -Naur netgen-5.3.1_orig/cmake/CMakeLists.txt netgen-5.3.1_modif/cmake/CMakeLists.txt
+--- netgen-5.3.1_orig/cmake/CMakeLists.txt     1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/cmake/CMakeLists.txt    2019-01-22 12:34:45.946401400 +0300
+@@ -0,0 +1,22 @@
++# Copyright (C) 2016 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
++#
++
++IF(WIN32)
++ INSTALL(FILES FindZLIB.cmake DESTINATION ${NETGEN_INSTALL_CMAKE})
++ENDIF()
+\ No newline at end of file
+diff -Naur netgen-5.3.1_orig/cmake/FindCAS.cmake netgen-5.3.1_modif/cmake/FindCAS.cmake
+--- netgen-5.3.1_orig/cmake/FindCAS.cmake      1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/cmake/FindCAS.cmake     2019-01-22 12:34:45.955403500 +0300
+@@ -0,0 +1,152 @@
++#  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.
++#
++#  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
++#
++
++SET(CASROOT $ENV{CASROOT})
++ADD_DEFINITIONS(-DLIN -DLINTEL -DCSFDB)
++ADD_DEFINITIONS(-DNo_exception)
++ADD_DEFINITIONS(-DHAVE_LIMITS_H)
++
++IF(CMAKE_SIZEOF_VOID_P STREQUAL 8)
++  ADD_DEFINITIONS(-D_OCC64)
++ENDIF(CMAKE_SIZEOF_VOID_P STREQUAL 8)
++
++IF(NOT WINDOWS)
++  FIND_LIBRARY(Xmu Xmu)
++  IF(Xmu)
++    SET(CAS_LDPATH ${Xmu})
++  ENDIF(Xmu)
++ENDIF(NOT WINDOWS)
++
++IF(WINDOWS)
++  IF(CMAKE_BUILD_TYPE STREQUAL Debug)
++    SET(CASROOT_LIBDIR ${CASROOT}/win32/libd ${CASROOT}/win64/vc10/lib ${CASROOT}/win64/vc14/libd)
++  ELSE(CMAKE_BUILD_TYPE STREQUAL Release)
++    SET(CASROOT_LIBDIR ${CASROOT}/win32/lib ${CASROOT}/win64/vc10/lib ${CASROOT}/win64/vc14/lib)
++  ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
++ELSE(WINDOWS)
++  SET(CASROOT_LIBDIR ${CASROOT}/lib)
++ENDIF(WINDOWS)
++
++SET(_CAS_VERSION_FILE_NAME Standard_Version.hxx)
++
++# Include directories:
++FIND_PATH(CAS_INCLUDE_DIRS ${_CAS_VERSION_FILE_NAME} PATHS ${CASROOT} PATH_SUFFIXES include/opencascade)
++IF(CAS_INCLUDE_DIRS)
++ELSE()
++  FIND_PATH(CAS_INCLUDE_DIRS ${_CAS_VERSION_FILE_NAME} PATHS ${CASROOT} PATH_SUFFIXES include inc)
++ENDIF()
++
++
++FIND_LIBRARY(BinLPlugin BinLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinPlugin BinPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinTObjPlugin BinTObjPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(BinXCAFPlugin BinXCAFPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(FWOSPlugin FWOSPlugin PATHS ${CASROOT_LIBDIR})
++
++FIND_LIBRARY(PTKernel PTKernel PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(StdLPlugin StdLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(StdPlugin StdPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKAdvTools TKAdvTools PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBin TKBin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinL TKBinL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinTObj TKBinTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBinXCAF TKBinXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBO TKBO PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBool TKBool PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKBRep TKBRep PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKCAF TKCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKCDF TKCDF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKernel TKernel PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKFeat TKFeat PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKFillet TKFillet PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKG2d TKG2d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKG3d TKG3d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKGeomAlgo TKGeomAlgo PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKGeomBase TKGeomBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKHLR TKHLR PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKIGES TKIGES PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKLCAF TKLCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMath TKMath PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMesh TKMesh PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKMeshVS TKMeshVS PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKNIS TKNIS PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKOffset TKOffset PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKOpenGl TKOpenGl PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPCAF TKPCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPLCAF TKPLCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPrim TKPrim PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKPShape TKPShape PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKService TKService PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKShapeSchema TKShapeSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKShHealing TKShHealing PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKStdLSchema TKStdLSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKStdSchema TKStdSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEP TKSTEP PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEP209 TKSTEP209 PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEPAttr TKSTEPAttr PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTEPBase TKSTEPBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKSTL TKSTL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKTObj TKTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKTopAlgo TKTopAlgo PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKV2d TKV2d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKV3d TKV3d PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKVRML TKVRML PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXCAF TKXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXCAFSchema TKXCAFSchema PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXDEIGES TKXDEIGES PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXDESTEP TKXDESTEP PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXMesh TKXMesh PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXml TKXml PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlL TKXmlL PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlTObj TKXmlTObj PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXmlXCAF TKXmlXCAF PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(TKXSBase TKXSBase PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XCAFPlugin XCAFPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlLPlugin XmlLPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlPlugin XmlPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlTObjPlugin XmlTObjPlugin PATHS ${CASROOT_LIBDIR})
++FIND_LIBRARY(XmlXCAFPlugin XmlXCAFPlugin PATHS ${CASROOT_LIBDIR})
++
++SET(CAS_KERNEL ${TKernel} ${TKMath})
++SET(CAS_OCAF ${TKernel} ${TKMath} ${TKCDF} ${TKLCAF})
++SET(CAS_VIEWER ${TKService} ${TKV3d} ${TKG3d} ${TKGeomBase} ${TKBRep})
++SET(CAS_OCAFVIS ${TKCAF} ${TKBRep} ${TKG2d})
++SET(CAS_MODELER ${TKG3d} ${TKGeomBase} ${TKGeomAlgo} ${TKBRep} ${TKTopAlgo} ${TKG2d})
++
++SET(TKV3d_EA ${TKernel} ${TKMath} ${TKV3d})
++SET(TKBool_EA ${TKernel} ${TKMath} ${TKBRep} ${TKG2d} ${TKG3d} ${TKGeomBase} ${TKGeomAlgo} ${TKTopAlgo} ${TKBool})
++SET(TKBRep_EA ${TKernel} ${TKMath} ${TKBRep})
++SET(TKIGES_EA ${TKernel} ${TKMath} ${TKXSBase} ${TKBRep} ${TKIGES})
++SET(TKSTEP_EA ${TKernel} ${TKMath} ${TKXSBase} ${TKBRep} ${TKSTEP})
++SET(TKSTL_EA ${TKernel} ${TKMath} ${TKSTL})
++SET(TKCAF_EA ${TKPrim} ${TKCAF})
++
++SET(TKV3d ${TKV3d_EA})
++SET(TKBool ${TKBool_EA})
++SET(TKBRep ${TKBRep_EA})
++SET(TKIGES ${TKIGES_EA})
++SET(TKSTEP ${TKSTEP_EA})
++SET(TKSTL ${TKSTL_EA})
++SET(TKCAF ${TKCAF_EA})
++
++#LIBRARIES
++SET(OCCLIBS ${CAS_LDPATH})
++SET(OCCLIBS ${OCCLIBS} ${TKernel} ${TKGeomBase} ${TKMath} ${TKG2d} ${TKG3d} ${TKXSBase} ${TKOffset} ${TKFillet} ${TKShHealing})
++SET(OCCLIBS ${OCCLIBS} ${TKMesh} ${TKMeshVS} ${TKTopAlgo} ${TKGeomAlgo} ${TKBool} ${TKPrim} ${TKBO} ${TKIGES} ${TKBRep})
++SET(OCCLIBS ${OCCLIBS} ${TKSTEPBase} ${TKSTEP} ${TKSTL} ${TKSTEPAttr} ${TKSTEP209} ${TKXDESTEP} ${TKXDEIGES} ${TKXCAF} ${TKLCAF})
+\ No newline at end of file
+diff -Naur netgen-5.3.1_orig/cmake/FindPLATFORM.cmake netgen-5.3.1_modif/cmake/FindPLATFORM.cmake
+--- netgen-5.3.1_orig/cmake/FindPLATFORM.cmake 1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/cmake/FindPLATFORM.cmake        2019-01-22 12:34:45.962402900 +0300
+@@ -0,0 +1,96 @@
++#  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.
++#
++#  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
++#
++
++MARK_AS_ADVANCED(ISSUE)
++FIND_FILE(ISSUE issue /etc)
++IF(ISSUE)
++  SET(WINDOWS 0)
++ELSE()
++  SET(WINDOWS 1)
++ENDIF(ISSUE)
++
++IF(WINDOWS)
++  SET(MACHINE WINDOWS)
++ELSE(WINDOWS)
++  SET(MACHINE PCLINUX)
++ENDIF(WINDOWS)
++
++SET(CMAKE_INSTALL_PREFIX_ENV $ENV{CMAKE_INSTALL_PREFIX})
++IF(CMAKE_INSTALL_PREFIX_ENV)
++  SET(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX_ENV} CACHE PATH "installation prefix" FORCE)
++ENDIF(CMAKE_INSTALL_PREFIX_ENV)
++
++IF(NOT CMAKE_BUILD_TYPE)
++  SET(CMAKE_BUILD_TYPE $ENV{CMAKE_BUILD_TYPE})
++ENDIF(NOT CMAKE_BUILD_TYPE)
++
++IF(NOT CMAKE_BUILD_TYPE)
++  SET(CMAKE_BUILD_TYPE Release)
++ENDIF(NOT CMAKE_BUILD_TYPE)
++
++IF(WINDOWS)
++ELSE(WINDOWS)
++  SET(ADD_WERROR ON)
++  SET(NAMES ACCEPT_SALOME_WARNINGS ACCEPT_${MODULE}_WARNINGS I_AM_A_TROLL_I_DO_NOT_FIX_${MODULE}_WARNINGS)
++  FOREACH(name ${NAMES})
++    SET(VAL $ENV{${name}})
++    IF(X${VAL} STREQUAL X0)
++      SET(ADD_WERROR ON)
++    ENDIF(X${VAL} STREQUAL X0)
++    IF(X${VAL} STREQUAL X1)
++      SET(ADD_WERROR OFF)
++    ENDIF(X${VAL} STREQUAL X1)
++  ENDFOREACH(name ${NAMES})
++  IF(ADD_WERROR)
++    SET(CMAKE_C_FLAGS "-Werror")
++    SET(CMAKE_CXX_FLAGS "-Werror")
++  ENDIF(ADD_WERROR)
++ENDIF(WINDOWS)
++
++IF(CMAKE_BUILD_TYPE)
++  IF(WINDOWS)
++    MARK_AS_ADVANCED(CLEAR CMAKE_CONFIGURATION_TYPES)
++    SET(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE} CACHE STRING "compilation types" FORCE)
++  ELSE(WINDOWS)
++    IF(CMAKE_BUILD_TYPE STREQUAL Debug)
++      SET(CMAKE_C_FLAGS_DEBUG "-g")
++      SET(CMAKE_CXX_FLAGS_DEBUG "-g")
++    ENDIF(CMAKE_BUILD_TYPE STREQUAL Debug)
++    IF(CMAKE_BUILD_TYPE STREQUAL Release)
++      SET(CMAKE_C_FLAGS_RELEASE "-O1 -DNDEBUG")
++      SET(CMAKE_CXX_FLAGS_RELEASE "-O1 -DNDEBUG")
++    ENDIF(CMAKE_BUILD_TYPE STREQUAL Release)
++  ENDIF(WINDOWS)
++ENDIF(CMAKE_BUILD_TYPE)
++
++SET(PLATFORM_CPPFLAGS)
++SET(PLATFORM_LDFLAGS)
++SET(PLATFORM_LIBADD)
++IF(WINDOWS)
++  ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)  # To disable windows warnings for strcpy, fopen, ...
++  ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS)  # To disable windows warnings std::copy, std::transform, ...
++  ADD_DEFINITIONS(-DWNT)
++  ADD_DEFINITIONS(-DPPRO_NT) # For medfile
++  ADD_DEFINITIONS(-D_USE_MATH_DEFINES) # At least for MEDMEM
++  ADD_DEFINITIONS(-D_WIN32_WINNT=0x0501) # Windows 2000 or later API is required
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Ws2_32.lib)
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} Userenv.lib) # At least for GEOM suit
++ELSE(WINDOWS)
++  SET(PLATFORM_LIBADD ${PLATFORM_LIBADD} -ldl)
++ENDIF(WINDOWS) 
+\ No newline at end of file
+diff -Naur netgen-5.3.1_orig/cmake/FindZLIB.cmake netgen-5.3.1_modif/cmake/FindZLIB.cmake
+--- netgen-5.3.1_orig/cmake/FindZLIB.cmake     1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/cmake/FindZLIB.cmake    2019-01-22 12:34:45.972400600 +0300
+@@ -0,0 +1,45 @@
++#  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.
++#
++#  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
++#
++
++SET(_ZLIB_SDIRS)
++
++# Search in ZLIB_ROOT_DIR first
++IF(ZLIB_ROOT_DIR)
++  SET(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT_DIR} NO_DEFAULT_PATH)
++  list(APPEND _ZLIB_SDIRS _ZLIB_SEARCH_ROOT)
++ENDIF()
++
++SET(ZLIB_NAMES z zlib zdll zlib1 zlibd zlibd1 zlib1d)
++
++# Try each search configuration.
++FOREACH(search ${_ZLIB_SDIRS})
++  FIND_PATH(ZLIB_INCLUDE_DIR NAMES zlib.h        ${${search}} PATH_SUFFIXES include)
++  FIND_LIBRARY(ZLIB_LIBRARY  NAMES ${ZLIB_NAMES} ${search} PATH_SUFFIXES lib)
++ENDFOREACH()
++
++MARK_AS_ADVANCED(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
++
++
++INCLUDE(FindPackageHandleStandardArgs)
++FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
++
++IF(ZLIB_FOUND)
++    SET(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
++    SET(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
++ENDIF()
+diff -Naur netgen-5.3.1_orig/libsrc/csg/specpoin.hpp netgen-5.3.1_modif/libsrc/csg/specpoin.hpp
+--- netgen-5.3.1_orig/libsrc/csg/specpoin.hpp  2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/csg/specpoin.hpp 2019-01-22 12:34:45.978401300 +0300
+@@ -8,10 +8,12 @@
+ /* Date:   01. Okt. 95                                                    */
+ /**************************************************************************/
++#include <myadt.hpp>
++
+ namespace netgen
+ {
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+   /*
+diff -Naur netgen-5.3.1_orig/libsrc/general/template.hpp netgen-5.3.1_modif/libsrc/general/template.hpp
+--- netgen-5.3.1_orig/libsrc/general/template.hpp      2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/general/template.hpp     2019-01-22 12:34:46.006400400 +0300
+@@ -26,10 +26,10 @@
+ DLL_HEADER extern ostream * testout;
+ /** use instead of cout */
+-extern ostream * mycout;
++DLL_HEADER extern ostream * mycout;
+ /** error output stream */
+-extern ostream * myerr;
++DLL_HEADER extern ostream * myerr;
+ /** Error messages display.
+   Error messages are displayed by this function */
+diff -Naur netgen-5.3.1_orig/libsrc/include/mystdlib.h netgen-5.3.1_modif/libsrc/include/mystdlib.h
+--- netgen-5.3.1_orig/libsrc/include/mystdlib.h        2014-08-29 12:54:04.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/include/mystdlib.h       2019-01-22 12:34:46.018400100 +0300
+@@ -66,6 +66,7 @@
+ #  ifdef MSVC_EXPRESS
+ #   include <pthread.h>
+ #  else
++    #define _AFXDLL
+ #   include <afxwin.h>
+ #   include <afxmt.h>
+ #  endif // MSVC_EXPRESS
+diff -Naur netgen-5.3.1_orig/libsrc/interface/nginterface.cpp netgen-5.3.1_modif/libsrc/interface/nginterface.cpp
+--- netgen-5.3.1_orig/libsrc/interface/nginterface.cpp 2014-08-29 12:54:02.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/interface/nginterface.cpp        2019-01-22 12:34:46.030400300 +0300
+@@ -1,3 +1,16 @@
++#ifdef _MSC_VER
++#ifndef MSVC_EXPRESS
++
++#define _AFXDLL
++
++#include <Afxwin.h>
++#include <winsock2.h>
++#include <winsock.h>
++#include <windows.h>
++
++#endif
++#endif
++
+ #include <mystdlib.h>
+ #include <meshing.hpp>
+@@ -11,7 +24,6 @@
+ #include "nginterface.h"
+ #include "../visualization/soldata.hpp"
+-
+ #ifdef _MSC_VER
+ // Philippose - 30/01/2009
+ // MSVC Express Edition Support
+diff -Naur netgen-5.3.1_orig/libsrc/meshing/global.hpp netgen-5.3.1_modif/libsrc/meshing/global.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/global.hpp        2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/meshing/global.hpp       2019-01-22 12:34:46.042401800 +0300
+@@ -8,6 +8,8 @@
+ /* Date:   01. Okt. 95                                                    */
+ /**************************************************************************/
++#include <myadt.hpp>
++
+ /*
+   global functions and variables
+ */
+@@ -29,7 +31,7 @@
+   extern Array<int> tets_in_qualclass;
+-  class multithreadt
++  class DLL_HEADER multithreadt
+   {
+   public:
+     int pause;
+@@ -44,7 +46,7 @@
+     multithreadt();
+   };
+-  extern volatile multithreadt multithread;
++  DLL_HEADER extern volatile multithreadt multithread;
+   DLL_HEADER extern string ngdir;
+   extern DebugParameters debugparam;
+diff -Naur netgen-5.3.1_orig/libsrc/meshing/meshclass.hpp netgen-5.3.1_modif/libsrc/meshing/meshclass.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshclass.hpp     2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/meshing/meshclass.hpp    2019-01-22 12:34:46.064400700 +0300
+@@ -311,7 +311,7 @@
+     { return lockedpoints; }
+     /// Returns number of domains
+-    int GetNDomains() const;
++    DLL_HEADER int GetNDomains() const;
+     ///
+     int GetDimension() const 
+@@ -320,7 +320,7 @@
+     { dimension = dim; }
+     /// sets internal tables
+-    void CalcSurfacesOfNode ();
++    void DLL_HEADER CalcSurfacesOfNode ();
+     /// additional (temporarily) fix points 
+     void FixPoints (const BitArray & fixpoints);
+@@ -390,13 +390,13 @@
+     ///
+     DLL_HEADER void SetGlobalH (double h);
+     ///
+-    void SetMinimalH (double h);
++    void DLL_HEADER SetMinimalH (double h);
+     ///
+     double MaxHDomain (int dom) const;
+     ///
+     void SetMaxHDomain (const Array<double> & mhd);
+     ///
+-    double GetH (const Point3d & p) const;
++    double DLL_HEADER GetH (const Point3d & p) const;
+     ///
+     double GetMinH (const Point3d & pmin, const Point3d & pmax);
+     ///
+diff -Naur netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp netgen-5.3.1_modif/libsrc/meshing/meshtype.hpp
+--- netgen-5.3.1_orig/libsrc/meshing/meshtype.hpp      2019-01-22 13:07:09.630603600 +0300
++++ netgen-5.3.1_modif/libsrc/meshing/meshtype.hpp     2019-01-22 12:34:46.078402400 +0300
+@@ -324,19 +324,19 @@
+   public:
+     ///
+-    Element2d ();
++    DLL_HEADER Element2d ();
+     ///
+-    Element2d (int anp);
++    DLL_HEADER Element2d (int anp);
+     ///
+     DLL_HEADER Element2d (ELEMENT_TYPE type);
+     ///
+-    Element2d (int pi1, int pi2, int pi3);
++    DLL_HEADER Element2d (int pi1, int pi2, int pi3);
+     ///
+-    Element2d (int pi1, int pi2, int pi3, int pi4);
++    DLL_HEADER Element2d (int pi1, int pi2, int pi3, int pi4);
+     ///
+-    ELEMENT_TYPE GetType () const { return typ; }
++    DLL_HEADER ELEMENT_TYPE GetType () const { return typ; }
+     /// 
+-    void SetType (ELEMENT_TYPE atyp)
++    DLL_HEADER  void SetType (ELEMENT_TYPE atyp)
+     {
+       typ = atyp;
+       switch (typ)
+@@ -351,9 +351,9 @@
+       }
+     }
+     ///
+-    int GetNP() const { return np; }
++    DLL_HEADER int GetNP() const { return np; }
+     ///
+-    int GetNV() const
++    DLL_HEADER int GetNV() const
+     {
+       if (typ == TRIG || typ == TRIG6)
+         return 3;
+@@ -385,95 +385,95 @@
+     }
+     ///
+-    PointIndex & operator[] (int i) { return pnum[i]; }
++    DLL_HEADER  PointIndex & operator[] (int i) { return pnum[i]; }
+     ///
+-    const PointIndex & operator[] (int i) const { return pnum[i]; }
++    DLL_HEADER const PointIndex & operator[] (int i) const { return pnum[i]; }
+-    FlatArray<const PointIndex> PNums () const 
++    DLL_HEADER  FlatArray<const PointIndex> PNums () const 
+     { return FlatArray<const PointIndex> (np, &pnum[0]); }
+     
+     ///
+-    PointIndex & PNum (int i) { return pnum[i-1]; }
++    DLL_HEADER PointIndex & PNum (int i) { return pnum[i-1]; }
+     ///
+-    const PointIndex & PNum (int i) const { return pnum[i-1]; }
++    DLL_HEADER const PointIndex & PNum (int i) const { return pnum[i-1]; }
+     ///
+-    PointIndex & PNumMod (int i) { return pnum[(i-1) % np]; }
++    DLL_HEADER PointIndex & PNumMod (int i) { return pnum[(i-1) % np]; }
+     ///
+-    const PointIndex & PNumMod (int i) const { return pnum[(i-1) % np]; }
++    DLL_HEADER const PointIndex & PNumMod (int i) const { return pnum[(i-1) % np]; }
+     ///
+     ///
+-    PointGeomInfo & GeomInfoPi (int i) { return geominfo[i-1]; }
++    DLL_HEADER PointGeomInfo & GeomInfoPi (int i) { return geominfo[i-1]; }
+     ///
+-    const PointGeomInfo & GeomInfoPi (int i) const { return geominfo[i-1]; }
++    DLL_HEADER const PointGeomInfo & GeomInfoPi (int i) const { return geominfo[i-1]; }
+     ///
+-    PointGeomInfo & GeomInfoPiMod (int i) { return geominfo[(i-1) % np]; }
++    DLL_HEADER PointGeomInfo & GeomInfoPiMod (int i) { return geominfo[(i-1) % np]; }
+     ///
+-    const PointGeomInfo & GeomInfoPiMod (int i) const { return geominfo[(i-1) % np]; }
++    DLL_HEADER const PointGeomInfo & GeomInfoPiMod (int i) const { return geominfo[(i-1) % np]; }
+-    void SetIndex (int si) { index = si; }
++    DLL_HEADER void SetIndex (int si) { index = si; }
+     ///
+-    int GetIndex () const { return index; }
++    DLL_HEADER int GetIndex () const { return index; }
+-    int GetOrder () const { return orderx; }
+-    void SetOrder (int aorder) { orderx = ordery = aorder; }
++    DLL_HEADER int GetOrder () const { return orderx; }
++    DLL_HEADER void SetOrder (int aorder) { orderx = ordery = aorder; }
+-    void GetOrder (int & ox, int & oy) const { ox = orderx, oy =ordery;};
+-    void GetOrder (int & ox, int & oy, int & oz) const { ox = orderx; oy = ordery; oz=0; }
+-    void SetOrder (int ox, int oy, int  /* oz */) { orderx = ox; ordery = oy;}
+-    void SetOrder (int ox, int oy) { orderx = ox; ordery = oy;}
++    DLL_HEADER void GetOrder (int & ox, int & oy) const { ox = orderx, oy =ordery;};
++    DLL_HEADER void GetOrder (int & ox, int & oy, int & oz) const { ox = orderx; oy = ordery; oz=0; }
++    DLL_HEADER void SetOrder (int ox, int oy, int  /* oz */) { orderx = ox; ordery = oy;}
++    DLL_HEADER void SetOrder (int ox, int oy) { orderx = ox; ordery = oy;}
+     ///
+-    void GetBox (const T_POINTS & points, Box3d & box) const;
++    DLL_HEADER void GetBox (const T_POINTS & points, Box3d & box) const;
+     /// invert orientation
+-    inline void Invert ();
++    DLL_HEADER inline void Invert ();
+     ///
+-    void Invert2 ();
++    DLL_HEADER void Invert2 ();
+     /// first point number is smallest
+-    inline void NormalizeNumbering ();
++    DLL_HEADER inline void NormalizeNumbering ();
+     ///
+-    void NormalizeNumbering2 ();
++    DLL_HEADER void NormalizeNumbering2 ();
+-    bool BadElement() const { return badel; }
++    DLL_HEADER bool BadElement() const { return badel; }
+     // friend ostream & operator<<(ostream  & s, const Element2d & el);
+     friend class Mesh;
+     /// get number of 'integration points'
+-    int GetNIP () const;
+-    void GetIntegrationPoint (int ip, Point2d & p, double & weight) const;
++    DLL_HEADER int GetNIP () const;
++    DLL_HEADER void GetIntegrationPoint (int ip, Point2d & p, double & weight) const;
+-    void GetTransformation (int ip, const Array<Point2d> & points,
++    DLL_HEADER void GetTransformation (int ip, const Array<Point2d> & points,
+                           class DenseMatrix & trans) const;
+-    void GetTransformation (int ip, class DenseMatrix & pmat,
++    DLL_HEADER void GetTransformation (int ip, class DenseMatrix & pmat,
+                           class DenseMatrix & trans) const;
+-    void GetShape (const Point2d & p, class Vector & shape) const;
+-    void GetShapeNew (const Point<2> & p, class FlatVector & shape) const;
++    DLL_HEADER void GetShape (const Point2d & p, class Vector & shape) const;
++    DLL_HEADER void GetShapeNew (const Point<2> & p, class FlatVector & shape) const;
+     /// matrix 2 * np
+-    void GetDShape (const Point2d & p, class DenseMatrix & dshape) const;
+-    void GetDShapeNew (const Point<2> & p, class MatrixFixWidth<2> & dshape) const;
++    DLL_HEADER void GetDShape (const Point2d & p, class DenseMatrix & dshape) const;
++    DLL_HEADER void GetDShapeNew (const Point<2> & p, class MatrixFixWidth<2> & dshape) const;
+     /// matrix 2 * np
+-    void GetPointMatrix (const Array<Point2d> & points,
++    DLL_HEADER void GetPointMatrix (const Array<Point2d> & points,
+                        class DenseMatrix & pmat) const; 
+-    void ComputeIntegrationPointData () const;
++    DLL_HEADER void ComputeIntegrationPointData () const;
+   
+-    double CalcJacobianBadness (const Array<Point2d> & points) const;
+-    double CalcJacobianBadness (const T_POINTS & points, 
++    DLL_HEADER double CalcJacobianBadness (const Array<Point2d> & points) const;
++    DLL_HEADER double CalcJacobianBadness (const T_POINTS & points, 
+                               const Vec<3> & n) const;
+-    double CalcJacobianBadnessDirDeriv (const Array<Point2d> & points,
++    DLL_HEADER double CalcJacobianBadnessDirDeriv (const Array<Point2d> & points,
+                                       int pi, Vec2d & dir, double & dd) const;
+-    void Delete () { deleted = 1; pnum[0] = pnum[1] = pnum[2] = pnum[3] = PointIndex::BASE-1; }
+-    bool IsDeleted () const 
++    DLL_HEADER void Delete () { deleted = 1; pnum[0] = pnum[1] = pnum[2] = pnum[3] = PointIndex::BASE-1; }
++    DLL_HEADER bool IsDeleted () const 
+     {
+ #ifdef DEBUG
+       if (pnum[0] < PointIndex::BASE && !deleted)
+@@ -484,27 +484,27 @@
+     // Philippose - 08 August 2010
+     // Access functions for the new property: visible
+-    void Visible(bool vis = 1) 
++    DLL_HEADER void Visible(bool vis = 1) 
+     { visible = vis; }
+-    bool IsVisible () const 
++    DLL_HEADER bool IsVisible () const 
+     { return visible; }
+    
+-    void SetRefinementFlag (bool rflag = 1) 
++    DLL_HEADER void SetRefinementFlag (bool rflag = 1) 
+     { refflag = rflag; }
+-    bool TestRefinementFlag () const
++    DLL_HEADER bool TestRefinementFlag () const
+     { return refflag; }
+-    void SetStrongRefinementFlag (bool rflag = 1) 
++    DLL_HEADER void SetStrongRefinementFlag (bool rflag = 1) 
+     { strongrefflag = rflag; }
+-    bool TestStrongRefinementFlag () const
++    DLL_HEADER bool TestStrongRefinementFlag () const
+     { return strongrefflag; }
+   
+-    SurfaceElementIndex NextElement() { return next; }
++    DLL_HEADER SurfaceElementIndex NextElement() { return next; }
+-    bool operator==(const Element2d & el2) const;
++    DLL_HEADER bool operator==(const Element2d & el2) const;
+-    int HasFace(const Element2d& el) const;
++    DLL_HEADER int HasFace(const Element2d& el) const;
+     ///
+     int meshdocval;
+     ///
+@@ -517,7 +517,7 @@
+   };
+-  ostream & operator<<(ostream  & s, const Element2d & el);
++  DLL_HEADER ostream & operator<<(ostream  & s, const Element2d & el);
+diff -Naur netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp netgen-5.3.1_modif/libsrc/occ/occgenmesh.cpp
+--- netgen-5.3.1_orig/libsrc/occ/occgenmesh.cpp        2019-01-22 13:07:09.801603600 +0300
++++ netgen-5.3.1_modif/libsrc/occ/occgenmesh.cpp       2019-01-22 12:34:46.090399900 +0300
+@@ -18,7 +18,7 @@
+ #define VSMALL 1e-10
+-   bool merge_solids = 1;
++   DLL_HEADER bool merge_solids = 1;
+   // can you please explain what you intend to compute here (JS) !!!
+@@ -540,7 +540,7 @@
+                  
+                   Point<3> fp = occ2ng (BRep_Tool::Pnt (v1));
+                   Point<3> lp = occ2ng (BRep_Tool::Pnt (v2));
+-                  double tol2 = std::min( eps*eps, 1e-6 * Dist2( fp, lp ));
++                  double tol2 = min( eps*eps, 1e-6 * Dist2( fp, lp ));
+                   if ( isClosedEdge )
+                     tol2 = BRep_Tool::Tolerance( v1 ) * BRep_Tool::Tolerance( v1 );
+diff -Naur netgen-5.3.1_orig/libsrc/occ/occgeom.hpp netgen-5.3.1_modif/libsrc/occ/occgeom.hpp
+--- netgen-5.3.1_orig/libsrc/occ/occgeom.hpp   2019-01-22 13:07:09.828603500 +0300
++++ netgen-5.3.1_modif/libsrc/occ/occgeom.hpp  2019-01-22 12:34:46.100401600 +0300
+@@ -9,6 +9,8 @@
+ #ifdef OCCGEOMETRY
++#include <myadt.hpp>
++
+ #include <meshing.hpp>
+ #include "BRep_Tool.hxx"
+@@ -122,7 +124,7 @@
+ {
+ #include "occmeshsurf.hpp"
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+ #define PROJECTION_TOLERANCE 1e-10
+@@ -197,7 +199,7 @@
+-   class OCCGeometry : public NetgenGeometry
++   class DLL_HEADER OCCGeometry : public NetgenGeometry
+    {
+       Point<3> center;
+       // -- Optimization: to use cached projector and classifier
+@@ -413,7 +415,7 @@
+-   class OCCParameters
++   class DLL_HEADER OCCParameters
+    {
+    public:
+@@ -453,21 +455,21 @@
+    OCCGeometry * LoadOCC_STEP (const char * filename);
+    OCCGeometry * LoadOCC_BREP (const char * filename);
+-   extern OCCParameters occparam;
++   extern DLL_HEADER OCCParameters occparam;
+    // Philippose - 31.09.2009
+    // External access to the mesh generation functions within the OCC
+    // subsystem (Not sure if this is the best way to implement this....!!)
+-   extern int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
++   extern DLL_HEADER int OCCGenerateMesh (OCCGeometry & occgeometry, Mesh*& mesh,
+                              MeshingParameters & mparam,
+                              int perfstepsstart, int perfstepsend);
+-  extern void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
++  extern DLL_HEADER void OCCSetLocalMeshSize(OCCGeometry & geom, Mesh & mesh);
+-   extern void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
++   extern DLL_HEADER void OCCMeshSurface (OCCGeometry & geom, Mesh & mesh, int perfstepsend);
+-   extern void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
++   extern DLL_HEADER void OCCFindEdges (OCCGeometry & geom, Mesh & mesh);
+ }
+ #endif
+diff -Naur netgen-5.3.1_orig/libsrc/occ/occmeshsurf.hpp netgen-5.3.1_modif/libsrc/occ/occmeshsurf.hpp
+--- netgen-5.3.1_orig/libsrc/occ/occmeshsurf.hpp       2019-01-22 13:07:01.521952200 +0300
++++ netgen-5.3.1_modif/libsrc/occ/occmeshsurf.hpp      2019-01-22 12:34:46.109400000 +0300
+@@ -169,7 +169,7 @@
+ class OCCGeometry;
+-class OCCRefinementSurfaces : public Refinement
++class DLL_HEADER OCCRefinementSurfaces : public Refinement
+ {
+   const OCCGeometry & geometry;
+diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/stlgeom.hpp netgen-5.3.1_modif/libsrc/stlgeom/stlgeom.hpp
+--- netgen-5.3.1_orig/libsrc/stlgeom/stlgeom.hpp       2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/stlgeom/stlgeom.hpp      2019-01-22 12:41:58.899495900 +0300
+@@ -38,7 +38,7 @@
+     return true;
+   }
+   
+-  extern DLL_HEADER MeshingParameters mparam;
++  DLL_HEADER extern MeshingParameters mparam;
+   
+@@ -98,7 +98,7 @@
+-  class STLGeometry : public STLTopology, public NetgenGeometry
++  class DLL_HEADER STLGeometry : public STLTopology, public NetgenGeometry
+   {
+     // edges to be meshed:
+     Array<STLEdge> edges;
+diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/stltool.hpp netgen-5.3.1_modif/libsrc/stlgeom/stltool.hpp
+--- netgen-5.3.1_orig/libsrc/stlgeom/stltool.hpp       2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/stlgeom/stltool.hpp      2019-01-22 12:31:33.216947700 +0300
+@@ -183,7 +183,7 @@
+ };
+-class STLDoctorParams
++class DLL_HEADER STLDoctorParams
+ {
+ public:
+   int drawmeshededges;
+@@ -218,11 +218,11 @@
+   void Print (ostream & ost) const;
+ };
+-extern STLDoctorParams stldoctor;
++extern DLL_HEADER STLDoctorParams stldoctor;
+-class STLParameters
++class DLL_HEADER STLParameters
+ {
+ public:
+   /// angle for edge detection
+@@ -267,7 +267,7 @@
+   void Print (ostream & ost) const;
+ };
+-extern STLParameters stlparam;
++extern DLL_HEADER STLParameters stlparam;
+ void STLMeshing (STLGeometry & geom,
+diff -Naur netgen-5.3.1_orig/libsrc/stlgeom/stltopology.hpp netgen-5.3.1_modif/libsrc/stlgeom/stltopology.hpp
+--- netgen-5.3.1_orig/libsrc/stlgeom/stltopology.hpp   2014-08-29 12:54:06.000000000 +0300
++++ netgen-5.3.1_modif/libsrc/stlgeom/stltopology.hpp  2019-01-22 12:43:39.341330600 +0300
+@@ -236,7 +236,7 @@
+-class STLTopology
++class DLL_HEADER STLTopology
+ {
+ protected:
+   Array<STLTriangle> trias;
+diff -Naur netgen-5.3.1_orig/nglib/CMakeLists.txt netgen-5.3.1_modif/nglib/CMakeLists.txt
+--- netgen-5.3.1_orig/nglib/CMakeLists.txt     1970-01-01 03:00:00.000000000 +0300
++++ netgen-5.3.1_modif/nglib/CMakeLists.txt    2019-01-22 12:34:46.146402900 +0300
+@@ -0,0 +1,260 @@
++# Copyright (C) 2016 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
++#
++INCLUDE_DIRECTORIES(
++    ${CMAKE_CURRENT_SOURCE_DIR}
++    ${PROJECT_SOURCE_DIR}/libsrc/include
++    ${ZLIB_INCLUDE_DIRS}
++    ${CAS_INCLUDE_DIRS}
++)
++
++
++# CGS
++SET(CGS_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/algprim.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/brick.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/bspline2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/csgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/csgparser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/curve2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/edgeflw.cpp      
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/explicitcurve2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/extrusion.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/gencyl.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/genmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/identify.cpp  
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/manifold.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/meshsurf.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/polyhedra.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/revolution.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/singularref.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/solid.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/specpoin.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/spline3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/surface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/csg/triapprox.cpp)
++
++# GENERAL
++SET(GENERAL_SOURCES 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/array.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/bitarray.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/dynamicmem.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/flags.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/hashtabl.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/mystring.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/ngexception.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/optmem.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/parthreads.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/profiler.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/seti.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/sort.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/spbita2d.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/symbolta.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/table.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/mpi_interface.cpp 
++   ${PROJECT_SOURCE_DIR}/libsrc/general/gzstream.cpp)
++
++FILE(GLOB GENERAL_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/general/*.hpp")
++LIST(APPEND GENERAL_INCLUDES ${PROJECT_SOURCE_DIR}/libsrc/general/gzstream.h)
++
++# GEOM2D
++SET (GEOM2D_SOURCES 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/genmesh2d.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/geom2dmesh.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/geom2d/geometry2d.cpp)
++
++# GPRIM
++SET(GPRIM_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/adtree.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geom2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geom3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geomfuncs.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/geomtest3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/transform3d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/spline.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/gprim/splinegeometry.cpp)
++
++FILE(GLOB GPRIM_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/gprim/*.hpp")
++
++# INCLUDE
++SET(INCLUDE_INCLUDES 
++    ${PROJECT_SOURCE_DIR}/libsrc/include/nginterface.h
++    ${PROJECT_SOURCE_DIR}/libsrc/include/nginterface_v2.hpp
++    ${PROJECT_SOURCE_DIR}/libsrc/include/mystdlib.h
++    ${PROJECT_SOURCE_DIR}/libsrc/include/mydefs.hpp)
++
++# INTERFACE
++SET(INTERFACE_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/nginterface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/nginterface_v2.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/read_fnf_mesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/readtetmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/readuser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeabaqus.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writediffpack.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writedolfin.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeelmer.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writefeap.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writefluent.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writegmsh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writejcm.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writepermas.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetecplot.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetet.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writetochnog.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeuser.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/wuchemnitz.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writegmsh2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/interface/writeOpenFOAM15x.cpp)
++
++# LINALG
++SET (LINALG_SOURCES 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/densemat.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/polynomial.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/bfgs.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/linopt.cpp 
++     ${PROJECT_SOURCE_DIR}/libsrc/linalg/linsearch.cpp)
++
++FILE(GLOB LINALG_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/linalg/*.hpp")
++
++# MESHING
++SET(MESHING_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/adfront2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/adfront3.cpp
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/bisect.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/boundarylayer.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/clusters.cpp      
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/curvedelems.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/delaunay.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/delaunay2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/geomsearch.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/global.cpp     
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/hprefinement.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve2gen.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/improve3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/localh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshclass.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshfunc.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshfunc2d.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshing2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshing3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshtool.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/meshtype.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/msghandler.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/netrule2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/netrule3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parser2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parser3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/prism2rls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/pyramid2rls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/pyramidrls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/quadrls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/refine.cpp   
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/ruler2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/ruler3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/secondorder.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing2.5.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing2.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/smoothing3.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/specials.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/tetrarls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/topology.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/triarls.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/validate.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/zrefine.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/bcfunctions.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/parallelmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/paralleltop.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/paralleltop.hpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/meshing/basegeom.cpp)
++
++FILE(GLOB MESHING_INCLUDES "${PROJECT_SOURCE_DIR}/libsrc/meshing/*.hpp")
++
++# OCC
++SET(OCC_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Inter2d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Inter3d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop2d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Loop3d.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/Partition_Spliter.cxx 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occconstruction.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occgenmesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/occ/occmeshsurf.cpp)
++
++SET(OCC_INCLUDES ${PROJECT_SOURCE_DIR}/libsrc/occ/occgeom.hpp ${PROJECT_SOURCE_DIR}/libsrc/occ/occmeshsurf.hpp)
++
++# STLGEOM
++SET(STLGEOM_SOURCES 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/meshstlsurface.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeom.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeomchart.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeommesh.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlline.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltool.cpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltopology.cpp)
++
++SET(STLGEOM_INCLUDES
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/meshstlsurface.hpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlgeom.hpp
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stlline.hpp
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltool.hpp 
++    ${PROJECT_SOURCE_DIR}/libsrc/stlgeom/stltopology.hpp)
++
++# NGLIB
++SET(NGLIB_SOURCES nglib.cpp)
++ADD_LIBRARY(nglib SHARED 
++            ${NGLIB_SOURCES}
++            ${CGS_SOURCES} 
++            ${GENERAL_SOURCES}
++            ${GPRIM_SOURCES}
++            ${GEOM2D_SOURCES}
++            ${INTERFACE_SOURCES} 
++            ${LINALG_SOURCES} 
++            ${MESHING_SOURCES} 
++            ${OCC_SOURCES}
++            ${STLGEOM_SOURCES})
++
++TARGET_LINK_LIBRARIES(nglib ${OCCLIBS} ${PLATFORM_LIBADD} ${ZLIB_LIBRARIES})
++INSTALL(TARGETS nglib DESTINATION ${NETGEN_INSTALL_LIBS}) 
++
++# Install headers
++INSTALL(FILES ${GENERAL_INCLUDES} 
++              ${INCLUDE_INCLUDES}
++              ${GPRIM_INCLUDES} 
++              ${LINALG_INCLUDES} 
++              ${MESHING_INCLUDES} 
++              ${STLGEOM_INCLUDES}
++              ${OCC_INCLUDES} 
++              nglib.h 
++              DESTINATION ${NETGEN_INSTALL_HEADERS})
++
++
++# NG_VOL
++SET(NG_VOL_SOURCES ng_vol.cpp)
++ADD_EXECUTABLE(ng_vol ${NG_VOL_SOURCES})
++TARGET_LINK_LIBRARIES(ng_vol nglib)
++INSTALL(TARGETS ng_vol  DESTINATION ${NETGEN_INSTALL_BINS})
++
++# NG_STL
++SET(NG_STL_SOURCES ng_stl.cpp)
++ADD_EXECUTABLE(ng_stl ${NG_STL_SOURCES})
++TARGET_LINK_LIBRARIES(ng_stl nglib)
++INSTALL(TARGETS ng_stl  DESTINATION ${NETGEN_INSTALL_BINS})
+diff -Naur netgen-5.3.1_orig/nglib/nglib.cpp netgen-5.3.1_modif/nglib/nglib.cpp
+--- netgen-5.3.1_orig/nglib/nglib.cpp  2019-01-22 13:07:06.386379800 +0300
++++ netgen-5.3.1_modif/nglib/nglib.cpp 2019-01-22 12:34:46.150402500 +0300
+@@ -87,7 +87,8 @@
+    // Clean-up functions before ending usage of nglib
+    DLL_HEADER void Ng_Exit ()
+    {
+-      ;
++       delete testout;
++       testout = 0;
+    }
+@@ -546,7 +547,7 @@
+    Array<STLReadTriangle> readtrias; //only before initstlgeometry
+-   Array<Point<3> > readedges; //only before init stlgeometry
++   DLL_HEADER Array<Point<3> > readedges; //only before init stlgeometry
+    // loads geometry from STL file
+    DLL_HEADER Ng_STL_Geometry * Ng_STL_LoadGeometry (const char * filename, int binary)
diff --git a/products/patches/omniNotify-2.1-lib64.patch b/products/patches/omniNotify-2.1-lib64.patch
new file mode 100755 (executable)
index 0000000..ed9997a
--- /dev/null
@@ -0,0 +1,94 @@
+diff -Naur omniNotify-orig/include/RDIstrstream.h omniNotify/include/RDIstrstream.h
+--- omniNotify/include/RDIstrstream.h  2003-10-12 22:51:15.000000000 +0400
++++ omniNotify/include/RDIstrstream.h  2006-09-28 17:44:20.000000000 +0400
+@@ -57,8 +57,10 @@
+   RDIstrstream& operator<<(const void *p);
+   RDIstrstream& operator<<(int n);
+   RDIstrstream& operator<<(unsigned int n);
++#ifndef HAS_LongLong
+   RDIstrstream& operator<<(long n);
+   RDIstrstream& operator<<(unsigned long n);
++#endif
+   RDIstrstream& operator<<(short n) {return operator<<((int)n);}
+   RDIstrstream& operator<<(unsigned short n) {return operator<<((unsigned int)n);}
+ #ifdef HAS_LongLong
+diff -Naur omniNotify-orig/include/RDITimeWrappers.h omniNotify/include/RDITimeWrappers.h
+--- omniNotify/include/RDITimeWrappers.h       2003-10-23 17:28:18.000000000 +0400
++++ omniNotify/include/RDITimeWrappers.h       2006-09-28 18:10:41.000000000 +0400
+@@ -236,8 +236,11 @@
+   // pretty-printing of absolute local time -- no newline
+   void out_local(RDIstrstream& str) {
+     CORBA::ULong ts, tn;
+-    get_posixbase_secs_nanosecs(ts, tn);
+-    RDI_posixbase_out_time(str, ts, tn);
++    unsigned long ts3, tn3;   
++    get_posixbase_secs_nanosecs(ts3, tn3);
++    RDI_posixbase_out_time(str, ts3, tn3);
++    ts = (CORBA::ULong)ts3;
++    tn = (CORBA::ULong)tn3;
+     str << " (local time)";
+   }
+@@ -396,8 +399,11 @@
+   // pretty-printing of absolute univ time -- no newline
+   void out_gmt(RDIstrstream& str) {
+     CORBA::ULong ts, tn;
+-    get_gmt_posixbase_secs_nanosecs(ts, tn);
+-    RDI_posixbase_out_time(str, ts, tn);
++    unsigned long ts4, tn4;
++    get_gmt_posixbase_secs_nanosecs(ts4, tn4);
++    RDI_posixbase_out_time(str, ts4, tn4);
++    ts = (CORBA::ULong)ts4;
++    tn = (CORBA::ULong)tn4;
+     str << " (greenwich mean time)";
+   }
+   // static helpers for producing TimeBase::UtcT min and max
+diff -Naur omniNotify-orig/lib/RDIstrstream.cc omniNotify/lib/RDIstrstream.cc
+--- omniNotify/lib/RDIstrstream.cc     2003-10-23 08:39:12.000000000 +0400
++++ omniNotify/lib/RDIstrstream.cc     2006-09-28 16:56:03.000000000 +0400
+@@ -175,6 +175,7 @@
+   return *this;
+ }
++#ifndef HAS_LongLong
+ RDIstrstream&
+ RDIstrstream::operator<<(long n)
+ {
+@@ -194,6 +195,7 @@
+   width_fill();
+   return *this;
+ }
++#endif
+ #ifdef HAS_LongLong
+ RDIstrstream&
+diff -Naur omniNotify-orig/lib/RDITimeWrappers.cc omniNotify/lib/RDITimeWrappers.cc
+--- omniNotify/lib/RDITimeWrappers.cc  2003-10-23 08:39:12.000000000 +0400
++++ omniNotify/lib/RDITimeWrappers.cc  2006-09-28 16:56:09.000000000 +0400
+@@ -147,7 +147,10 @@
+ #define WHATFN "RDI_TimeT::fmt_local"
+ const char *RDI_TimeT::fmt_local() {
+   CORBA::ULong ts, tm;
+-  get_posixbase_secs_msecs(ts, tm);
++  unsigned long ts2, tm2;
++  get_posixbase_secs_msecs(ts2, tm2);
++  ts = (CORBA::ULong)ts2;
++  tm = (CORBA::ULong)tm2;
+   time_t secs_as_time_t = ts;
+   TW_SCOPE_LOCK(otime_lock, RDI_out_time_lock, "RDI_out_time", WHATFN);
+   RDI_TimeT_fmt_local_buf_idx = (RDI_TimeT_fmt_local_buf_idx + 1) % 10;
+diff -Naur omniNotify/mk/beforeauto.mk.in omniNotify/mk/beforeauto.mk.in
+--- omniNotify/mk/beforeauto.mk.in     2003-10-29 22:18:36.000000000 +0300
++++ omniNotify/mk/beforeauto.mk.in     2006-10-13 16:58:26.000000000 +0400
+@@ -95,9 +95,9 @@
+ CPPFLAGS = $(DIR_CPPFLAGS) $(IMPORT_CPPFLAGS)
+-CFLAGS = $(CDEBUGFLAGS) $(COPTIONS) $(CPPFLAGS)
++CFLAGS = -m64 $(CDEBUGFLAGS) $(COPTIONS) $(CPPFLAGS)
+-CXXFLAGS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(CPPFLAGS)
++CXXFLAGS = -m64 $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(CPPFLAGS)
+ #############################################################################
diff --git a/products/patches/omniNotify-2.1.patch b/products/patches/omniNotify-2.1.patch
new file mode 100755 (executable)
index 0000000..6ee139f
--- /dev/null
@@ -0,0 +1,4584 @@
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/all_cosnotify_clients.cc omniNotify-2.1.new/examples/all_cosnotify_clients.cc
+--- omniNotify-2.1.orig/examples/all_cosnotify_clients.cc      2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/all_cosnotify_clients.cc       2009-06-28 17:19:34.000000000 +0400
+@@ -41,7 +41,7 @@
+     num_con_events = 6 * num_events;
+     // (2) Obtain reference to notification channel
+-    if (verbose) cout << "Obtaining reference to notification channel" << endl;
++    if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl;
+     CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getchan_from_iorfile(orb, ior_file, verbose);
+@@ -51,7 +51,7 @@
+     }
+     // (3) Create all 12 CosNotify-style clients
+-    if (verbose) cout << "Creating 12 clients" << endl;
++    if (verbose) std::cout << "Creating 12 clients" << std::endl;
+     // (3.1) any_push_consumer
+     PushConsumer_i* a_push_c =
+@@ -59,7 +59,7 @@
+                            "", "", sample_consume_any_fn, sample_offer_change_fn,
+                            &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! a_push_c) {
+-      cerr << "Constructing any_push_consumer failed" << endl;
++      std::cerr << "Constructing any_push_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::PushConsumer_var my_a_push_c = a_push_c->_this();
+@@ -71,7 +71,7 @@
+                                      "", "", sample_consume_structured_fn, sample_offer_change_fn,
+                                      &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! s_push_c) {
+-      cerr << "Constructing struct_push_consumer failed" << endl;
++      std::cerr << "Constructing struct_push_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::StructuredPushConsumer_var my_s_push_c = s_push_c->_this();
+@@ -83,7 +83,7 @@
+                                    "", "", sample_consume_batch_fn, sample_offer_change_fn,
+                                    &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! b_push_c) {
+-      cerr << "Constructing batch_push_consumer failed" << endl;
++      std::cerr << "Constructing batch_push_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::SequencePushConsumer_var my_b_push_c = b_push_c->_this();
+@@ -95,7 +95,7 @@
+                            "", "", sample_consume_any_fn, sample_offer_change_fn,
+                            &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! a_pull_c) {
+-      cerr << "Constructing any_pull_consumer failed" << endl;
++      std::cerr << "Constructing any_pull_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::PullConsumer_var my_a_pull_c = a_pull_c->_this();
+@@ -107,7 +107,7 @@
+                                      "", "", sample_consume_structured_fn, sample_offer_change_fn,
+                                      &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! s_pull_c) {
+-      cerr << "Constructing struct_pull_consumer failed" << endl;
++      std::cerr << "Constructing struct_pull_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::StructuredPullConsumer_var my_s_pull_c = s_pull_c->_this();
+@@ -119,7 +119,7 @@
+                                    "", "", sample_consume_batch_fn, sample_offer_change_fn,
+                                    &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! b_pull_c) {
+-      cerr << "Constructing batch_pull_consumer failed" << endl;
++      std::cerr << "Constructing batch_pull_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::SequencePullConsumer_var my_b_pull_c = b_pull_c->_this();
+@@ -131,7 +131,7 @@
+                            "", "", sample_supply_any_fn, sample_subscription_change_fn,
+                            &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! a_push_s) {
+-      cerr << "Constructing any_push_supplier failed" << endl;
++      std::cerr << "Constructing any_push_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::PushSupplier_var my_a_push_s = a_push_s->_this();
+@@ -143,7 +143,7 @@
+                                      "", "", sample_supply_structured_fn, sample_subscription_change_fn,
+                                      &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! s_push_s) {
+-      cerr << "Constructing struct_push_supplier failed" << endl;
++      std::cerr << "Constructing struct_push_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::StructuredPushSupplier_var my_s_push_s = s_push_s->_this();
+@@ -155,7 +155,7 @@
+                                    "", "", sample_supply_batch_fn, sample_subscription_change_fn,
+                                    &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! b_push_s) {
+-      cerr << "Constructing batch_push_supplier failed" << endl;
++      std::cerr << "Constructing batch_push_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::SequencePushSupplier_var my_b_push_s = b_push_s->_this();
+@@ -167,7 +167,7 @@
+                            "", "", sample_supply_any_fn, sample_subscription_change_fn,
+                            &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! a_pull_s) {
+-      cerr << "Constructing any_pull_supplier failed" << endl;
++      std::cerr << "Constructing any_pull_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::PullSupplier_var my_a_pull_s = a_pull_s->_this();
+@@ -179,7 +179,7 @@
+                                      "", "", sample_supply_structured_fn, sample_subscription_change_fn,
+                                      &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! s_pull_s) {
+-      cerr << "Constructing struct_pull_supplier failed" << endl;
++      std::cerr << "Constructing struct_pull_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::StructuredPullSupplier_var my_s_pull_s = s_pull_s->_this();
+@@ -191,75 +191,75 @@
+                                    "", "", sample_supply_batch_fn, sample_subscription_change_fn,
+                                    &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+     if (! b_pull_s) {
+-      cerr << "Constructing batch_pull_supplier failed" << endl;
++      std::cerr << "Constructing batch_pull_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+     }
+     CosNotifyComm::SequencePullSupplier_var my_b_pull_s = b_pull_s->_this();
+     b_pull_s->_remove_ref(); // enables POA cleanup of servant
+     // (4) Tell POA we are ready to go
+-    if (verbose) cout << "Activating POA manager" << endl;
++    if (verbose) std::cout << "Activating POA manager" << std::endl;
+     PortableServer::POAManager_var pman = poa->the_POAManager();
+     pman->activate();
+     // (5) Connect clients to their proxies -- consumers first
+-    if (verbose) cout << "Connecting consumer clients to proxies" << endl;
++    if (verbose) std::cout << "Connecting consumer clients to proxies" << std::endl;
+     if (a_push_c->connect()) {
+-      cerr << "Connecting any_push_consumer failed" << endl;
++      std::cerr << "Connecting any_push_consumer failed" << std::endl;
+       goto error_return;
+     }
+     if (s_push_c->connect()) {
+-      cerr << "Connecting struct_push_consumer failed" << endl;
++      std::cerr << "Connecting struct_push_consumer failed" << std::endl;
+       goto error_return;
+     }
+     if (b_push_c->connect()) {
+-      cerr << "Connecting batch_push_consumer failed" << endl;
++      std::cerr << "Connecting batch_push_consumer failed" << std::endl;
+       goto error_return;
+     }
+     if (a_pull_c->connect()) {
+-      cerr << "Connecting any_pull_consumer failed" << endl;
++      std::cerr << "Connecting any_pull_consumer failed" << std::endl;
+       goto error_return;
+     }
+     if (s_pull_c->connect()) {
+-      cerr << "Connecting struct_pull_consumer failed" << endl;
++      std::cerr << "Connecting struct_pull_consumer failed" << std::endl;
+       goto error_return;
+     }
+     if (b_pull_c->connect()) {
+-      cerr << "Connecting batch_pull_consumer failed" << endl;
++      std::cerr << "Connecting batch_pull_consumer failed" << std::endl;
+       goto error_return;
+     }
+-    if (verbose) cout << "Connecting supplier clients to proxies" << endl;
++    if (verbose) std::cout << "Connecting supplier clients to proxies" << std::endl;
+     if (a_push_s->connect()) {
+-      cerr << "Connecting any_push_supplier failed" << endl;
++      std::cerr << "Connecting any_push_supplier failed" << std::endl;
+       goto error_return;
+     }
+     if (s_push_s->connect()) {
+-      cerr << "Connecting struct_push_supplier failed" << endl;
++      std::cerr << "Connecting struct_push_supplier failed" << std::endl;
+       goto error_return;
+     }
+     if (b_push_s->connect()) {
+-      cerr << "Connecting batch_push_supplier failed" << endl;
++      std::cerr << "Connecting batch_push_supplier failed" << std::endl;
+       goto error_return;
+     }
+     if (a_pull_s->connect()) {
+-      cerr << "Connecting any_pull_supplier failed" << endl;
++      std::cerr << "Connecting any_pull_supplier failed" << std::endl;
+       goto error_return;
+     }
+     if (s_pull_s->connect()) {
+-      cerr << "Connecting struct_pull_supplier failed" << endl;
++      std::cerr << "Connecting struct_pull_supplier failed" << std::endl;
+       goto error_return;
+     }
+     if (b_pull_s->connect()) {
+-      cerr << "Connecting batch_pull_supplier failed" << endl;
++      std::cerr << "Connecting batch_pull_supplier failed" << std::endl;
+       goto error_return;
+     }
+-    if (verbose) cout << "Waiting for all 12 clients to finish" << endl;
++    if (verbose) std::cout << "Waiting for all 12 clients to finish" << std::endl;
+     CORBA::Boolean a_push_c_err = a_push_c->wait_done();
+     CORBA::Boolean s_push_c_err = s_push_c->wait_done();
+     CORBA::Boolean b_push_c_err = b_push_c->wait_done();
+@@ -291,10 +291,10 @@
+       b_pull_s_err;
+     if (com_err && (num_events > 0)) {
+-      if (verbose) cout << "Communication error -- probably did not process desired # of events" << endl;
++      if (verbose) std::cout << "Communication error -- probably did not process desired # of events" << std::endl;
+     }
+-    if (verbose) cout << "Cleaning up" << endl;
++    if (verbose) std::cout << "Cleaning up" << std::endl;
+     if (!a_push_c_err) { a_push_c->cleanup(); }
+     if (!s_push_c_err) { s_push_c->cleanup(); }
+@@ -315,25 +315,25 @@
+     goto normal_return;
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "main caught CORBA::SystemException." << endl;  
++    std::cerr << "main caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "main caught CORBA::Exception." << endl;        
++    std::cerr << "main caught CORBA::Exception." << std::endl;        
+   }                                                    
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "main caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "main caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+ #endif
+   catch(...) {                                         
+     // nameclt comment says it is a bad idea to report an error here 
+   }
+-  cerr << "main caught an exception." << endl;       
++  std::cerr << "main caught an exception." << std::endl;       
+  error_return:
+-  cerr << "QUITTING due to error" << endl;
++  std::cerr << "QUITTING due to error" << std::endl;
+   // orb->destroy();
+   return -1;
+  normal_return:
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/demo_add_filter.cc omniNotify-2.1.new/examples/demo_add_filter.cc
+--- omniNotify-2.1.orig/examples/demo_add_filter.cc    2003-10-12 22:51:18.000000000 +0400
++++ omniNotify-2.1.new/examples/demo_add_filter.cc     2009-06-28 17:20:35.000000000 +0400
+@@ -1,5 +1,5 @@
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include "CosNotifyShorthands.h"
+@@ -25,14 +25,14 @@
+                                CORBA::Boolean verbose);
+ void usage(char* pname) {
+-  cerr << "Usage: " << pname << " [-n name] [-f file] -p file" << endl << endl;
+-  cout << "  -n name  : channel name" << endl;
+-  cout << "               => use event service to lookup this name" << endl;
+-  cout << "  -f file  : file containing channel IOR" << endl;
+-  cout << "               => use string_to_object on the IOR" << endl;
+-  cout << "  -p file  : file with stringified IOR of proxy to be" << endl;
+-  cout << "               sent add_filter messages (REQUIRED)" << endl;
+-  cout << "(The channel is needed to obtain its default filter factory)" << endl;
++  std::cerr << "Usage: " << pname << " [-n name] [-f file] -p file" << std::endl << std::endl;
++  std::cout << "  -n name  : channel name" << std::endl;
++  std::cout << "               => use event service to lookup this name" << std::endl;
++  std::cout << "  -f file  : file containing channel IOR" << std::endl;
++  std::cout << "               => use string_to_object on the IOR" << std::endl;
++  std::cout << "  -p file  : file with stringified IOR of proxy to be" << std::endl;
++  std::cout << "               sent add_filter messages (REQUIRED)" << std::endl;
++  std::cout << "(The channel is needed to obtain its default filter factory)" << std::endl;
+ }
+@@ -84,11 +84,11 @@
+     char buf[8096];
+     FILE* ifile;
+     if (! (ifile = fopen(proxy_ior_file, "r")) ) {
+-      cerr << "Failed to open file " << proxy_ior_file << " for reading" << endl;
++      std::cerr << "Failed to open file " << proxy_ior_file << " for reading" << std::endl;
+       goto cleanup;
+     }
+     if (fscanf(ifile, "%s", buf) != 1) {
+-      cerr << "Failed to get an IOR from file " << proxy_ior_file << endl;
++      std::cerr << "Failed to get an IOR from file " << proxy_ior_file << std::endl;
+       fclose(ifile);
+       goto cleanup;
+     }
+@@ -97,32 +97,32 @@
+     try {
+       CORBA::Object_var proxy_ref = orb->string_to_object(buf);
+       if ( CORBA::is_nil(proxy_ref) ) {
+-      cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << endl;
++      std::cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << std::endl;
+       goto cleanup;
+       }
+       proxy = CosNF::FilterAdmin::_narrow(proxy_ref);
+       if ( CORBA::is_nil(proxy) ) {
+-      cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << endl;
++      std::cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << std::endl;
+       goto cleanup;
+       }
+     } catch (...) {
+-      cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << endl;
++      std::cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << std::endl;
+       goto cleanup;
+     }
+     CosNF::Filter_ptr filter = CosNF::Filter::_nil();
+     while (1) {
+-      cout << endl << "Enter a constraint ('exit' to quit, 'remove' to remove all filters): " << endl <<  flush;
++      std::cout << std::endl << "Enter a constraint ('exit' to quit, 'remove' to remove all filters): " << std::endl <<  std::flush;
+       if (!(fgets(buf, 8090, stdin))) break;
+       if (strlen(buf) < 2) continue; // skip empty lines
+       buf[strlen(buf)-1] = '\0'; // strip newline from end
+       if (strcmp(buf, "exit") == 0) {
+       break;
+       }
+-      cout << "Calling remove_all_filters on the proxy" << endl;
++      std::cout << "Calling remove_all_filters on the proxy" << std::endl;
+       proxy->remove_all_filters();
+       if (!CORBA::is_nil(filter)) {
+-      cout << "Destroying the previous filter, which is no longer in use" << endl;
++      std::cout << "Destroying the previous filter, which is no longer in use" << std::endl;
+       filter->destroy();
+       filter = CosNF::Filter::_nil();
+       }
+@@ -134,27 +134,27 @@
+       evs.length(0);
+       sample_add_filter(channel, proxy, evs, buf, "demo_add_filter", filter, 1);
+       }
+-      cout << endl << "---------------------------------------------------------" << endl;
++      std::cout << std::endl << "---------------------------------------------------------" << std::endl;
+     }
+     orb->destroy();
+     return 0; // success
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "Caught CORBA::SystemException." << endl;  
++    std::cerr << "Caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "Caught CORBA::Exception." << endl;        
++    std::cerr << "Caught CORBA::Exception." << std::endl;        
+   }                                                    
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "Caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "Caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+ #endif
+   catch(...) {                                         
+-    cerr << "Caught unknown exception." << endl;       
++    std::cerr << "Caught unknown exception." << std::endl;       
+   }
+  cleanup:
+   orb->destroy();
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/demo_offer_change.cc omniNotify-2.1.new/examples/demo_offer_change.cc
+--- omniNotify-2.1.orig/examples/demo_offer_change.cc  2003-10-12 22:51:18.000000000 +0400
++++ omniNotify-2.1.new/examples/demo_offer_change.cc   2009-06-28 17:21:48.000000000 +0400
+@@ -1,5 +1,5 @@
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include "CosNotifyShorthands.h"
+@@ -58,9 +58,9 @@
+ }
+ void usage(char* pname) {
+-  cerr << "Usage: " << pname << " -p file" << endl << endl;
+-  cout << "  -p file  : file with stringified IOR of proxy to be" << endl;
+-  cout << "               sent offer_change messages (REQUIRED)" << endl;
++  std::cerr << "Usage: " << pname << " -p file" << std::endl << std::endl;
++  std::cout << "  -p file  : file with stringified IOR of proxy to be" << std::endl;
++  std::cout << "               sent offer_change messages (REQUIRED)" << std::endl;
+ }
+ int main(int argc, char** argv)
+@@ -96,11 +96,11 @@
+     char buf2[8096];
+     FILE* ifile;
+     if (! (ifile = fopen(proxy_ior_file, "r")) ) {
+-      cerr << "Failed to open file " << proxy_ior_file << " for reading" << endl;
++      std::cerr << "Failed to open file " << proxy_ior_file << " for reading" << std::endl;
+       goto cleanup;
+     }
+     if (fscanf(ifile, "%s", buf) != 1) {
+-      cerr << "Failed to get an IOR from file " << proxy_ior_file << endl;
++      std::cerr << "Failed to get an IOR from file " << proxy_ior_file << std::endl;
+       fclose(ifile);
+       goto cleanup;
+     }
+@@ -109,69 +109,69 @@
+     try {
+       CORBA::Object_var proxy_ref = orb->string_to_object(buf);
+       if ( CORBA::is_nil(proxy_ref) ) {
+-      cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << endl;
++      std::cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << std::endl;
+       goto cleanup;
+       }
+       proxy = CosNC::NotifyPublish::_narrow(proxy_ref);
+       if ( CORBA::is_nil(proxy) ) {
+-      cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << endl;
++      std::cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << std::endl;
+       goto cleanup;
+       }
+     } catch (...) {
+-      cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << endl;
++      std::cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << std::endl;
+       goto cleanup;
+     }
+     while (1) {
+       added.length(0);
+       deled.length(0);
+-      cout << endl << "Enter list of removals (or empty for none): " << endl <<  flush;
++      std::cout << std::endl << "Enter list of removals (or empty for none): " << std::endl <<  std::flush;
+       if (!(fgets(buf, 8090, stdin))) break;
+       if (strlen(buf) < 1) break;
+       buf[strlen(buf)-1] = '\0'; // strip newline from end
+       if (strcmp(buf, "exit") == 0) break;
+       if (strlen(buf)) {
+       if (parse_etype_list(buf, deled)) {
+-        cerr << "Failed to parse the input as an event type list" << endl;
++        std::cerr << "Failed to parse the input as an event type list" << std::endl;
+         continue;
+       }
+       }
+-      cout << endl << "Enter list of additions (or empty for none): " << endl <<  flush;
++      std::cout << std::endl << "Enter list of additions (or empty for none): " << std::endl <<  std::flush;
+       if (!(fgets(buf2, 8090, stdin))) break;
+       if (strlen(buf2) < 1) break;
+       buf2[strlen(buf2)-1] = '\0'; // strip newline from end
+       if (strcmp(buf2, "exit") == 0) break;
+       if (strlen(buf2)) {
+       if (parse_etype_list(buf2, added)) {
+-        cerr << "Failed to parse the input as an event type list" << endl;
++        std::cerr << "Failed to parse the input as an event type list" << std::endl;
+         continue;
+       }
+       }
+-      cout << "Calling offer_change on the proxy" << endl;
++      std::cout << "Calling offer_change on the proxy" << std::endl;
+       proxy->offer_change(added, deled);
+-      cout << endl << "---------------------------------------------------------" << endl;
++      std::cout << std::endl << "---------------------------------------------------------" << std::endl;
+     }
+     orb->destroy();
+     return 0; // success
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "Caught CORBA::SystemException." << endl;  
++    std::cerr << "Caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "Caught CORBA::Exception." << endl;        
++    std::cerr << "Caught CORBA::Exception." << std::endl;        
+   }                                                    
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "Caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "Caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+ #endif
+   catch(...) {                                         
+-    cerr << "Caught unknown exception." << endl;       
++    std::cerr << "Caught unknown exception." << std::endl;       
+   }
+  cleanup:
+   orb->destroy();
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/demo_subscription_change.cc omniNotify-2.1.new/examples/demo_subscription_change.cc
+--- omniNotify-2.1.orig/examples/demo_subscription_change.cc   2003-10-12 22:51:18.000000000 +0400
++++ omniNotify-2.1.new/examples/demo_subscription_change.cc    2009-06-28 17:23:49.000000000 +0400
+@@ -1,5 +1,5 @@
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ #include <stdio.h>
+ #include "CosNotifyShorthands.h"
+@@ -58,9 +58,9 @@
+ }
+ void usage(char* pname) {
+-  cerr << "Usage: " << pname << " -p file" << endl << endl;
+-  cout << "  -p file  : file with stringified IOR of proxy to be" << endl;
+-  cout << "               sent subscription_change messages (REQUIRED)" << endl;
++  std::cerr << "Usage: " << pname << " -p file" << std::endl << std::endl;
++  std::cout << "  -p file  : file with stringified IOR of proxy to be" << std::endl;
++  std::cout << "               sent subscription_change messages (REQUIRED)" << std::endl;
+ }
+ int main(int argc, char** argv)
+@@ -96,11 +96,11 @@
+     char buf2[8096];
+     FILE* ifile;
+     if (! (ifile = fopen(proxy_ior_file, "r")) ) {
+-      cerr << "Failed to open file " << proxy_ior_file << " for reading" << endl;
++      std::cerr << "Failed to open file " << proxy_ior_file << " for reading" << std::endl;
+       goto cleanup;
+     }
+     if (fscanf(ifile, "%s", buf) != 1) {
+-      cerr << "Failed to get an IOR from file " << proxy_ior_file << endl;
++      std::cerr << "Failed to get an IOR from file " << proxy_ior_file << std::endl;
+       fclose(ifile);
+       goto cleanup;
+     }
+@@ -109,69 +109,69 @@
+     try {
+       CORBA::Object_var proxy_ref = orb->string_to_object(buf);
+       if ( CORBA::is_nil(proxy_ref) ) {
+-      cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << endl;
++      std::cerr << "Failed to turn IOR in file " << proxy_ior_file << " into object" << std::endl;
+       goto cleanup;
+       }
+       proxy = CosNC::NotifySubscribe::_narrow(proxy_ref);
+       if ( CORBA::is_nil(proxy) ) {
+-      cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << endl;
++      std::cerr << "Failed to narrow object from IOR in file " << proxy_ior_file << std::endl;
+       goto cleanup;
+       }
+     } catch (...) {
+-      cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << endl;
++      std::cerr << "Failed to convert to object from IOR in file " << proxy_ior_file << std::endl;
+       goto cleanup;
+     }
+     while (1) {
+       added.length(0);
+       deled.length(0);
+-      cout << endl << "Enter list of removals (or empty for none): " << endl <<  flush;
++      std::cout << std::endl << "Enter list of removals (or empty for none): " << std::endl <<  std::flush;
+       if (!(fgets(buf, 8090, stdin))) break;
+       if (strlen(buf) < 1) break;
+       buf[strlen(buf)-1] = '\0'; // strip newline from end
+       if (strcmp(buf, "exit") == 0) break;
+       if (strlen(buf)) {
+       if (parse_etype_list(buf, deled)) {
+-        cerr << "Failed to parse the input as an event type list" << endl;
++        std::cerr << "Failed to parse the input as an event type list" << std::endl;
+         continue;
+       }
+       }
+-      cout << endl << "Enter list of additions (or empty for none): " << endl <<  flush;
++      std::cout << std::endl << "Enter list of additions (or empty for none): " << std::endl <<  std::flush;
+       if (!(fgets(buf2, 8090, stdin))) break;
+       if (strlen(buf2) < 1) break;
+       buf2[strlen(buf2)-1] = '\0'; // strip newline from end
+       if (strcmp(buf2, "exit") == 0) break;
+       if (strlen(buf2)) {
+       if (parse_etype_list(buf2, added)) {
+-        cerr << "Failed to parse the input as an event type list" << endl;
++        std::cerr << "Failed to parse the input as an event type list" << std::endl;
+         continue;
+       }
+       }
+-      cout << "Calling subscription_change on the proxy" << endl;
++      std::cout << "Calling subscription_change on the proxy" << std::endl;
+       proxy->subscription_change(added, deled);
+-      cout << endl << "---------------------------------------------------------" << endl;
++      std::cout << std::endl << "---------------------------------------------------------" << std::endl;
+     }
+     orb->destroy();
+     return 0; // success
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "Caught CORBA::SystemException." << endl;  
++    std::cerr << "Caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "Caught CORBA::Exception." << endl;        
++    std::cerr << "Caught CORBA::Exception." << std::endl;        
+   }                                                    
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "Caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "Caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+ #endif
+   catch(...) {                                         
+-    cerr << "Caught unknown exception." << endl;       
++    std::cerr << "Caught unknown exception." << std::endl;       
+   }
+  cleanup:
+   orb->destroy();
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/get_channel.h omniNotify-2.1.new/examples/get_channel.h
+--- omniNotify-2.1.orig/examples/get_channel.h 2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/get_channel.h  2009-06-28 17:10:29.000000000 +0400
+@@ -19,11 +19,11 @@
+   CosNA::EventChannel_ptr channel = CosNA::EventChannel::_nil();
+   if (!ior_file || strlen(ior_file) == 0) return channel; // empty string -- ignore
+   if (! (ifile = fopen(ior_file, "r")) ) {
+-    cerr << "Failed to open file " << ior_file << " for reading" << endl;
++    std::cerr << "Failed to open file " << ior_file << " for reading" << std::endl;
+     return channel; // failure
+   }
+   if (fscanf(ifile, "%s", buf) != 1) {
+-    cerr << "Failed to get an IOR from file " << ior_file << endl;
++    std::cerr << "Failed to get an IOR from file " << ior_file << std::endl;
+     fclose(ifile);
+     return channel; // failure
+   }
+@@ -31,21 +31,21 @@
+   try {
+     CORBA::Object_var channel_ref = orb->string_to_object(buf);
+     if ( CORBA::is_nil(channel_ref) ) {
+-      cerr << "Failed to turn IOR in file " << ior_file << " into object" << endl;
++      std::cerr << "Failed to turn IOR in file " << ior_file << " into object" << std::endl;
+       return channel; // failure
+     }
+     channel = CosNA::EventChannel::_narrow(channel_ref);
+     if ( CORBA::is_nil(channel) ) {
+-      cerr << "Failed to narrow object from IOR in file " << ior_file <<
+-      " to type CosNotifyChannelAdmin::EventChannel" << endl;
++      std::cerr << "Failed to narrow object from IOR in file " << ior_file <<
++      " to type CosNotifyChannelAdmin::EventChannel" << std::endl;
+       return channel; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to convert IOR in file " << ior_file << " to object" << endl;
++    std::cerr << "Failed to convert IOR in file " << ior_file << " to object" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Found valid channel reference" << endl;
++    std::cout << "Found valid channel reference" << std::endl;
+   return channel; // success
+ }
+@@ -59,29 +59,29 @@
+   if (!channel_name || strlen(channel_name) == 0) return channel; // empty string -- ignore
+   if (verbose)
+-    cout << "Obtaining naming service reference" << endl;
++    std::cout << "Obtaining naming service reference" << std::endl;
+   try {
+     CORBA::Object_var name_service;
+     name_service = orb->resolve_initial_references("NameService"); 
+     name_context = CosNaming::NamingContext::_narrow(name_service);
+     if ( CORBA::is_nil(name_context) ) {
+-      cerr << "Failed to obtain context for NameService" << endl;
++      std::cerr << "Failed to obtain context for NameService" << std::endl;
+       return channel; // failure
+     } 
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Service required is invalid [does not exist]" << endl;
++    std::cerr << "Service required is invalid [does not exist]" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving the naming service" << endl;
++    std::cerr << "Caught exception while resolving the naming service" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Looking up channel name " << channel_name << " . " << channel_name << endl;
++    std::cout << "Looking up channel name " << channel_name << " . " << channel_name << std::endl;
+   name.length(1);
+   name[0].id   = CORBA::string_dup((const char*)channel_name);
+@@ -91,23 +91,23 @@
+     CORBA::Object_var channel_ref = name_context->resolve(name);
+     channel = CosNA::EventChannel::_narrow(channel_ref);
+     if ( CORBA::is_nil(channel) ) {
+-      cerr << "Failed to narrow object found in naming service " <<
+-      " to type CosNotifyChannelAdmin::EventChannel" << endl;
++      std::cerr << "Failed to narrow object found in naming service " <<
++      " to type CosNotifyChannelAdmin::EventChannel" << std::endl;
+       return channel; // failure
+     }
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Invalid name" << endl;
++    std::cerr << "Invalid name" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while resolving event channel name" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while resolving event channel name" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving event channel name" << endl;
++    std::cerr << "Caught exception while resolving event channel name" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Found valid channel reference" << endl;
++    std::cout << "Found valid channel reference" << std::endl;
+   return channel; // success
+ }
+@@ -121,30 +121,30 @@
+   CosNaming::Name name;
+   if (verbose)
+-    cout << "Obtaining naming service reference" << endl;
++    std::cout << "Obtaining naming service reference" << std::endl;
+   if (!factory_name || strlen(factory_name) == 0) return channel; // empty string -- ignore
+   try {
+     CORBA::Object_var name_service;
+     name_service = orb->resolve_initial_references("NameService"); 
+     name_context = CosNaming::NamingContext::_narrow(name_service);
+     if ( CORBA::is_nil(name_context) ) {
+-      cerr << "Failed to obtain context for NameService" << endl;
++      std::cerr << "Failed to obtain context for NameService" << std::endl;
+       return channel; // failure
+     } 
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Service required is invalid [does not exist]" << endl;
++    std::cerr << "Service required is invalid [does not exist]" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving the naming service" << endl;
++    std::cerr << "Caught exception while resolving the naming service" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Looking up channel factory name " << factory_name << " . " << factory_name << endl;
++    std::cout << "Looking up channel factory name " << factory_name << " . " << factory_name << std::endl;
+   name.length(1);
+   name[0].id   = CORBA::string_dup((const char*)factory_name);
+@@ -154,41 +154,41 @@
+     CORBA::Object_var factory_ref = name_context->resolve(name);
+     factory = CosNA::EventChannelFactory::_narrow(factory_ref);
+     if ( CORBA::is_nil(factory) ) {
+-      cerr << "Failed to narrow object found in naming service " <<
+-      " to type CosNotifyChannelAdmin::EventChannelFactory" << endl;
++      std::cerr << "Failed to narrow object found in naming service " <<
++      " to type CosNotifyChannelAdmin::EventChannelFactory" << std::endl;
+       return channel; // failure
+     }
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Invalid name" << endl;
++    std::cerr << "Invalid name" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving event channel factory name" << endl;
++    std::cerr << "Caught exception while resolving event channel factory name" << std::endl;
+     return channel; // failure
+   }
+   if (verbose) {
+-    cout << "Found valid channel factory reference" << endl;
+-    cout << "Looking up channel id " << chan_id << endl;
++    std::cout << "Found valid channel factory reference" << std::endl;
++    std::cout << "Looking up channel id " << chan_id << std::endl;
+   }
+   try {
+     channel = factory->get_event_channel( chan_id );
+     if ( CORBA::is_nil(channel) ) {
+-      cerr << "Failed to find channel id " << chan_id << endl;
++      std::cerr << "Failed to find channel id " << chan_id << std::endl;
+       return channel; // failure
+     }
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while invoking get_event_channel" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while invoking get_event_channel" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while invoking get_event_channel" << endl;
++    std::cerr << "Caught exception while invoking get_event_channel" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Found valid channel reference" << endl;
++    std::cout << "Found valid channel reference" << std::endl;
+   return channel; // success
+ }
+@@ -201,30 +201,30 @@
+   CosNaming::Name name;
+   if (verbose)
+-    cout << "Obtaining naming service reference" << endl;
++    std::cout << "Obtaining naming service reference" << std::endl;
+   if (!factory_name || strlen(factory_name) == 0) return channel; // empty string -- ignore
+   try {
+     CORBA::Object_var name_service;
+     name_service = orb->resolve_initial_references("NameService"); 
+     name_context = CosNaming::NamingContext::_narrow(name_service);
+     if ( CORBA::is_nil(name_context) ) {
+-      cerr << "Failed to obtain context for NameService" << endl;
++      std::cerr << "Failed to obtain context for NameService" << std::endl;
+       return channel; // failure
+     } 
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Service required is invalid [does not exist]" << endl;
++    std::cerr << "Service required is invalid [does not exist]" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving the naming service" << endl;
++    std::cerr << "Caught exception while resolving the naming service" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Looking up channel factory name " << factory_name << " . " << factory_name << endl;
++    std::cout << "Looking up channel factory name " << factory_name << " . " << factory_name << std::endl;
+   name.length(1);
+   name[0].id   = CORBA::string_dup((const char*)factory_name);
+@@ -234,24 +234,24 @@
+     CORBA::Object_var factory_ref = name_context->resolve(name);
+     factory = CosNA::EventChannelFactory::_narrow(factory_ref);
+     if ( CORBA::is_nil(factory) ) {
+-      cerr << "Failed to narrow object found in naming service " <<
+-      " to type CosNotifyChannelAdmin::EventChannelFactory" << endl;
++      std::cerr << "Failed to narrow object found in naming service " <<
++      " to type CosNotifyChannelAdmin::EventChannelFactory" << std::endl;
+       return channel; // failure
+     }
+   }
+   catch(CORBA::ORB::InvalidName& ex) {
+-    cerr << "Invalid name" << endl;
++    std::cerr << "Invalid name" << std::endl;
+     return channel; // failure
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while resolving event channel factory name" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while resolving event channel factory name" << endl;
++    std::cerr << "Caught exception while resolving event channel factory name" << std::endl;
+     return channel; // failure
+   }
+   if (verbose) {
+-    cout << "Found valid channel factory reference" << endl;
+-    cout << "Creating new channel" << endl;
++    std::cout << "Found valid channel factory reference" << std::endl;
++    std::cout << "Creating new channel" << std::endl;
+   }
+   CosNA::ChannelID         chan_id;
+@@ -264,18 +264,18 @@
+     channel = factory->create_channel(qosP, admP, chan_id);
+     if ( CORBA::is_nil(channel) ) {
+-      cerr << "Failed to create new channel" << endl;
++      std::cerr << "Failed to create new channel" << std::endl;
+       return channel; // failure
+     }
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while invoking create_channel" << endl;
++    std::cerr << "Caught exception while invoking create_channel" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Created a new channel with channel ID " << chan_id << endl;
++    std::cout << "Created a new channel with channel ID " << chan_id << std::endl;
+   return channel; // success
+ }
+@@ -289,11 +289,11 @@
+   if (!ior_file || strlen(ior_file) == 0) return channel; // empty string -- ignore
+   if (! (ifile = fopen(ior_file, "r")) ) {
+-    cerr << "Failed to open file " << ior_file << " for reading" << endl;
++    std::cerr << "Failed to open file " << ior_file << " for reading" << std::endl;
+     return channel; // failure
+   }
+   if (fscanf(ifile, "%s", buf) != 1) {
+-    cerr << "Failed to get an IOR from file " << ior_file << endl;
++    std::cerr << "Failed to get an IOR from file " << ior_file << std::endl;
+     fclose(ifile);
+     return channel; // failure
+   }
+@@ -301,22 +301,22 @@
+   try {
+     CORBA::Object_var fact_ref = orb->string_to_object(buf);
+     if ( CORBA::is_nil(fact_ref) ) {
+-      cerr << "Failed to turn IOR in file " << ior_file << " into object" << endl;
++      std::cerr << "Failed to turn IOR in file " << ior_file << " into object" << std::endl;
+       return channel; // failure
+     }
+     factory = CosNA::EventChannelFactory::_narrow(fact_ref);
+     if ( CORBA::is_nil(factory) ) {
+-      cerr << "Failed to narrow object from IOR in file " << ior_file <<
+-      " to type CosNotifyChannelAdmin::EventChannelFactory" << endl;
++      std::cerr << "Failed to narrow object from IOR in file " << ior_file <<
++      " to type CosNotifyChannelAdmin::EventChannelFactory" << std::endl;
+       return channel; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to convert IOR in file " << ior_file << " to object" << endl;
++    std::cerr << "Failed to convert IOR in file " << ior_file << " to object" << std::endl;
+     return channel; // failure
+   }
+   if (verbose) {
+-    cout << "Found valid channel factory reference" << endl;
+-    cout << "Creating new channel" << endl;
++    std::cout << "Found valid channel factory reference" << std::endl;
++    std::cout << "Creating new channel" << std::endl;
+   }
+   CosNA::ChannelID         chan_id;
+@@ -329,18 +329,18 @@
+     channel = factory->create_channel(qosP, admP, chan_id);
+     if ( CORBA::is_nil(channel) ) {
+-      cerr << "Failed to create new channel" << endl;
++      std::cerr << "Failed to create new channel" << std::endl;
+       return channel; // failure
+     }
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << endl;
++    std::cerr << "Caught system exception COMM_FAILURE while invoking create_channel" << std::endl;
+     return channel; // failure
+   } catch (...) {
+-    cerr << "Caught exception while invoking create_channel" << endl;
++    std::cerr << "Caught exception while invoking create_channel" << std::endl;
+     return channel; // failure
+   }
+   if (verbose)
+-    cout << "Created a new channel with channel ID " << chan_id << endl;
++    std::cout << "Created a new channel with channel ID " << chan_id << std::endl;
+   return channel; // success
+ }
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/legacy_clients.cc omniNotify-2.1.new/examples/legacy_clients.cc
+--- omniNotify-2.1.orig/examples/legacy_clients.cc     2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/legacy_clients.cc      2009-06-28 17:19:01.000000000 +0400
+@@ -4,8 +4,8 @@
+ // See legacy_clients.h
+ // -------------------------------------------------------------- //
+-#include <iostream.h>
+-#include <iomanip.h>
++#include <iostream>
++#include <iomanip>
+ #include "thread_wrappers.h"
+ #include "CosNotifyShorthands.h"
+@@ -40,22 +40,22 @@
+   try {
+     admin = channel->for_consumers();
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return 0; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return 0;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+   try {
+     proxy = admin->obtain_push_supplier();
+   } catch (...) {  }
+   if ( CORBA::is_nil(proxy) ) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     return 0;
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+     // Construct a client
+   LegacyPushConsumer_i* client =
+@@ -70,16 +70,16 @@
+   try {
+     _my_proxy->connect_push_consumer(_this());
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs) 
+     _worker = new GenericBoundWorkerThread(this);
+@@ -91,7 +91,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPushConsumer", "LegacyPushConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -113,7 +113,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPushConsumer", "LegacyPushConsumer_i::start_working");
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     // invariant: _oplock held at top of loop
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+@@ -138,7 +138,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using connect_push_consumer" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using connect_push_consumer" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -158,16 +158,16 @@
+   _num_events++;
+   if (_consume_fn)
+     (*_consume_fn)(data, _obj_name, _num_events, _verbose);
+-  else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++  else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -180,7 +180,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "LegacyPushConsumer", "LegacyPushConsumer_i::diconnect_push_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -231,22 +231,22 @@
+   try {
+     admin = channel->for_consumers();
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return 0; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return 0;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+   try {
+     proxy = admin->obtain_pull_supplier();
+   } catch (...) {  }
+   if ( CORBA::is_nil(proxy) ) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     return 0;
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+     // Construct a client
+   LegacyPullConsumer_i* client =
+@@ -261,17 +261,17 @@
+   try {
+     _my_proxy->connect_pull_consumer(_this());
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pulling
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -281,7 +281,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPullConsumer", "LegacyPullConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -309,7 +309,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPullConsumer", "LegacyPullConsumer_i::start_working");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       { // introduce temporary lock release scope; do not hold oplock across pull
+@@ -322,7 +322,7 @@
+       } // end temporary lock release scope
+       if (_done) break; // must have disconnected during pull
+       if (!data) {
+-      if (_verbose) cout << _obj_name << ": strange failure: pull() returned nil" << endl;
++      if (_verbose) std::cout << _obj_name << ": strange failure: pull() returned nil" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+       }
+@@ -330,11 +330,11 @@
+       _num_events++;
+       if (_consume_fn)
+       (*_consume_fn)(*data, _obj_name, _num_events, _verbose);
+-      else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++      else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+       delete data;
+       data = 0;
+       if (_max_events && (_num_events >= _max_events)) {
+-      if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++      if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+       break; // done 
+       }
+       if (_millisecs) { // sleep for specified interval
+@@ -349,7 +349,7 @@
+       continue; // continue pulling
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while calling pull()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling pull()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -370,7 +370,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "LegacyPullConsumer", "LegacyPullConsumer_i::disconnect_pull_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -422,22 +422,22 @@
+   try {
+     admin = channel->for_suppliers();
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return 0; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return 0;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+   try {
+     proxy = admin->obtain_push_consumer();
+   } catch (...) {  }
+   if ( CORBA::is_nil(proxy) ) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     return 0; // failure
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+     // Construct a client
+   LegacyPushSupplier_i* client =
+@@ -452,17 +452,17 @@
+   try {
+     _my_proxy->connect_push_supplier(_this());
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pushing
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -472,7 +472,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPushSupplier", "LegacyPushSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -500,7 +500,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPushSupplier", "LegacyPushSupplier_i::start_working");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+@@ -515,9 +515,9 @@
+       if (_done) break; // must have disconnected during push
+       _num_events++;
+       // [rather than doing the following we let supply_fn report if it wants to]
+-      // if (_verbose) cout << _obj_name << ": Pushed an event, event count = " << _num_events << endl;
++      // if (_verbose) std::cout << _obj_name << ": Pushed an event, event count = " << _num_events << std::endl;
+       if (_max_events && (_num_events >= _max_events)) {
+-        if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++        if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+         break; // done
+       }
+       }
+@@ -534,7 +534,7 @@
+       continue; // continue pushing
+     com_fail:
+       if (_done) break; // must have disconnected during push
+-      if (_verbose) cout << _obj_name << ": communication error while calling push()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling push()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -554,7 +554,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "LegacyPushSupplier", "LegacyPushSupplier_i::disconnect_push_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -606,22 +606,22 @@
+   try {
+     admin = channel->for_suppliers();
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return 0; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return 0;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+   try {
+     proxy = admin->obtain_pull_consumer();
+   } catch (...) {  }
+   if ( CORBA::is_nil(proxy) ) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     return 0; // failure
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+     // Construct a client
+   LegacyPullSupplier_i* client =
+@@ -636,16 +636,16 @@
+   try {
+     _my_proxy->connect_pull_supplier(_this());
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs)
+     _worker = new GenericBoundWorkerThread(this);
+@@ -657,7 +657,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -678,7 +678,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::start_working");
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     // invariant: _oplock held at top of loop
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+@@ -703,7 +703,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using connect_pull_supplier" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using connect_pull_supplier" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -722,7 +722,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::try_pull");
+   if (_done) return data;
+-  if (_verbose) cout << _obj_name << ": Channel called try_pull" << endl;
++  if (_verbose) std::cout << _obj_name << ": Channel called try_pull" << std::endl;
+   // If we reached done point during last try_pull, it is broadcast now
+   // and we return from this try_pull call without an event.
+@@ -730,10 +730,10 @@
+   // processed the previous try_pull (the final supplied event) before
+   // we disconnect this supplier.
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+     return data;
+   }
+@@ -741,14 +741,14 @@
+     has_event = 1;
+     _num_events++;
+     // [rather than doing the following we let supply_fn report if it wants to]
+-    // if (_verbose) cout << _obj_name << ": Returning an event, event count = " << _num_events << endl;
++    // if (_verbose) std::cout << _obj_name << ": Returning an event, event count = " << _num_events << std::endl;
+   } else {
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -771,7 +771,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::pull");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull" << std::endl;
+     // invariants: _oplock is held entering top of loop and 
+     // also whenever we break out of loop
+     while ( 1 ) {
+@@ -779,9 +779,9 @@
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+       _num_events++;
+       // [rather than doing the following we let supply_fn report if it wants to]
+-      // if (_verbose) cout << _obj_name << ": Returning an event, event count = " << _num_events << endl;
++      // if (_verbose) std::cout << _obj_name << ": Returning an event, event count = " << _num_events << std::endl;
+       if (_max_events && (_num_events >= _max_events)) {
+-        if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++        if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+         _done = 1;
+         _finish.broadcast();
+       }
+@@ -801,7 +801,7 @@
+     if (!_done && _delay_millisecs) {
+       unsigned long d_secs     =  _delay_millisecs / 1000;
+       unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-      if (_verbose) cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << endl;
++      if (_verbose) std::cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << std::endl;
+       unsigned long t_secs, t_nanosecs;
+       TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+       _finish.timedwait(t_secs, t_nanosecs);
+@@ -816,7 +816,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "LegacyPullSupplier", "LegacyPullSupplier_i::discconnect_pull_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/main_program.h omniNotify-2.1.new/examples/main_program.h
+--- omniNotify-2.1.orig/examples/main_program.h        2004-03-19 00:39:20.000000000 +0300
++++ omniNotify-2.1.new/examples/main_program.h 2009-06-28 17:24:41.000000000 +0400
+@@ -58,7 +58,7 @@
+ #ifndef CREATE_CHANNEL
+     // (2) Obtain reference to notification channel
+-    if (verbose) cout << "Obtaining reference to notification channel" << endl;
++    if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl;
+     CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getchan_from_iorfile(orb, ior_file, verbose);
+@@ -68,7 +68,7 @@
+     }
+ #else
+     // (2) Create a new notification channel
+-    if (verbose) cout << "Creating a new notification channel" << endl;
++    if (verbose) std::cout << "Creating a new notification channel" << std::endl;
+     CosNA::EventChannel_ptr channel = getnewchan_use_ns(orb, cfact_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getnewchan_use_iorfile(orb, cfact_ior_file, verbose);
+@@ -79,7 +79,7 @@
+ #endif
+     // (3) Create a client
+-    if (verbose) cout << "Creating client" << endl;
++    if (verbose) std::cout << "Creating client" << std::endl;
+ #ifndef LEGACY_CLIENT
+     CLIENT_IMPL_CLASS* client =
+       CLIENT_IMPL_CLASS::create(orb, channel, num_events, batch_size, CLIENT_NAME, proxy_ior_file, admin_ior_file,
+@@ -94,55 +94,55 @@
+       goto error_return; // failed to create client
+     }
+     // Obtain reference to the external client object
+-    if (verbose) cout << "Obtaining CORBA object ref to client" << endl;
++    if (verbose) std::cout << "Obtaining CORBA object ref to client" << std::endl;
+     CLIENT_CLASS_VAR myref = client->_this(); // implicit activation
+     client->_remove_ref(); // enables POA cleanup of servant
+     // (4) Tell POA we are ready to go
+-    if (verbose) cout << "Activating POA manager" << endl;
++    if (verbose) std::cout << "Activating POA manager" << std::endl;
+     PortableServer::POAManager_var pman = poa->the_POAManager();
+     pman->activate();
+     // (5) Connect client to its proxy, wait for desired # of events
+-    if (verbose) cout << "Connecting client to its proxy" << endl;
++    if (verbose) std::cout << "Connecting client to its proxy" << std::endl;
+     if (client->connect()) {
+       // an immediate error occurred
+     } else {
+-      if (verbose) cout << "Waiting for desired # of events" << endl;
++      if (verbose) std::cout << "Waiting for desired # of events" << std::endl;
+       // Wait until num_events has been reached
+       CORBA::Boolean communication_error = client->wait_done();
+       if (communication_error && (num_events > 0)) {
+-      if (verbose) cout << "Communication error -- probably did not process desired # of events" << endl;
++      if (verbose) std::cout << "Communication error -- probably did not process desired # of events" << std::endl;
+       }
+-      if (verbose) cout << "Cleaning up" << endl;
++      if (verbose) std::cout << "Cleaning up" << std::endl;
+       client->cleanup();
+     }
+     goto normal_return;
+   }
+   catch(CORBA::SystemException&) {
+-    cerr << "main caught CORBA::SystemException." << endl;
++    std::cerr << "main caught CORBA::SystemException." << std::endl;
+   }
+   catch(CORBA::Exception&) {
+-    cerr << "main caught CORBA::Exception." << endl;
++    std::cerr << "main caught CORBA::Exception." << std::endl;
+   }
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {
+-    cerr << "main caught omniORB::fatalException:" << endl;
+-    cerr << "  file: " << fe.file() << endl;
+-    cerr << "  line: " << fe.line() << endl;
+-    cerr << "  mesg: " << fe.errmsg() << endl;
++    std::cerr << "main caught omniORB::fatalException:" << std::endl;
++    std::cerr << "  file: " << fe.file() << std::endl;
++    std::cerr << "  line: " << fe.line() << std::endl;
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;
+   }
+ #endif
+   catch(...) {
+     // nameclt comment says it is a bad idea to report an error here 
+   }
+-  cerr << "main caught an exception." << endl;
++  std::cerr << "main caught an exception." << std::endl;
+  error_return:
+ #ifdef CREATE_CHANNEL
+ #ifdef DESTROY_CHANNEL
+   try {
+     if (!CORBA::is_nil(channel)) {
+-      if (verbose) cout << "Destroying the channel we created" << endl;
++      if (verbose) std::cout << "Destroying the channel we created" << std::endl;
+       channel->destroy();
+     }
+   } catch(...) { }
+@@ -155,7 +155,7 @@
+ #ifdef DESTROY_CHANNEL
+   try {
+     if (!CORBA::is_nil(channel)) {
+-      if (verbose) cout << "Destroying the channel we created" << endl;
++      if (verbose) std::cout << "Destroying the channel we created" << std::endl;
+       channel->destroy();
+     }
+   } catch(...) { }
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/ndadmin.cc omniNotify-2.1.new/examples/ndadmin.cc
+--- omniNotify-2.1.orig/examples/ndadmin.cc    2003-10-12 22:51:18.000000000 +0400
++++ omniNotify-2.1.new/examples/ndadmin.cc     2009-06-28 17:09:16.000000000 +0400
+@@ -6,7 +6,7 @@
+ #error COS_USES_BOA should not be set for this example
+ #endif
+-#include <iostream.h>
++#include <iostream>
+ #include "orb_init_name.h"
+ #include "get_channel.h"
+@@ -23,15 +23,15 @@
+ static void usage(const char* pname)
+ {
+-  cout << "Usage: " << pname << " [-n name] [-f file] [-v]" << endl;
+-  cout << "  -n name  : channel name" << endl;
+-  cout << "               => use event service to lookup this name" << endl;
+-  cout << "  -f file  : file containing channel IOR" << endl;
+-  cout << "               => use string_to_object on the IOR" << endl;
+-  cout << "  -v       : verbose output" << endl;
+-  cout << "NOTE: The server has a default channel; " << pname << " finds this channel" << endl;
+-  cout << "      and then goes 'UP' to find the notifd server" << endl;
+-  cout << endl;
++  std::cout << "Usage: " << pname << " [-n name] [-f file] [-v]" << std::endl;
++  std::cout << "  -n name  : channel name" << std::endl;
++  std::cout << "               => use event service to lookup this name" << std::endl;
++  std::cout << "  -f file  : file containing channel IOR" << std::endl;
++  std::cout << "               => use string_to_object on the IOR" << std::endl;
++  std::cout << "  -v       : verbose output" << std::endl;
++  std::cout << "NOTE: The server has a default channel; " << pname << " finds this channel" << std::endl;
++  std::cout << "      and then goes 'UP' to find the notifd server" << std::endl;
++  std::cout << std::endl;
+ }
+ int main(int argc, char** argv) {
+@@ -78,12 +78,12 @@
+     }
+     // (2) Obtain reference to notification channel
+-    if (verbose) cout << "Obtaining reference to notification channel" << endl;
++    if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl;
+     channel = getchan_from_ns(orb, channel_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getchan_from_iorfile(orb, ior_file, verbose);
+       if (CORBA::is_nil(channel)) {
+-      if (verbose) cout << "Could not find server's default channel" << endl;
++      if (verbose) std::cout << "Could not find server's default channel" << std::endl;
+       goto err_return; // both methods failed
+       }
+     }
+@@ -97,7 +97,7 @@
+     catch ( CORBA::OBJECT_NOT_EXIST& e ) { docmd_problem = 1; } \
+     catch ( CORBA::COMM_FAILURE& e ) { docmd_problem = 1; }
+     if (!success || !target_changed || docmd_problem) {
+-      if (verbose) cout << "Could not find server's default channel" << endl;
++      if (verbose) std::cout << "Could not find server's default channel" << std::endl;
+       goto err_return;
+     }
+     target = next_target;
+@@ -108,7 +108,7 @@
+     catch ( CORBA::OBJECT_NOT_EXIST& e ) { docmd_problem = 1; } \
+     catch ( CORBA::COMM_FAILURE& e ) { docmd_problem = 1; }
+     if (!success || !target_changed || docmd_problem) {
+-      if (verbose) cout << "Could not find server's default channel" << endl;
++      if (verbose) std::cout << "Could not find server's default channel" << std::endl;
+       goto err_return;
+     }
+     target = AttN::Interactive::_duplicate(next_target);
+@@ -119,23 +119,23 @@
+     goto norm_return;
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << pname << " main caught CORBA::SystemException." << endl;  
++    std::cerr << pname << " main caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << pname << " main caught CORBA::Exception." << endl;        
++    std::cerr << pname << " main caught CORBA::Exception." << std::endl;        
+   }                                                    
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "main caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "main caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+   catch(...) {                                         
+     // nameclt comment says it is a bad idea to report an error here 
+   }
+-  cerr << "main caught an exception." << endl;
++  std::cerr << "main caught an exception." << std::endl;
+  err_return:
+-  cerr << "QUITTING due to error" << endl;
++  std::cerr << "QUITTING due to error" << std::endl;
+   return -1;
+  norm_return:
+   return 0;
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/parse_cmd_line.h omniNotify-2.1.new/examples/parse_cmd_line.h
+--- omniNotify-2.1.orig/examples/parse_cmd_line.h      2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/parse_cmd_line.h       2009-06-28 17:13:49.000000000 +0400
+@@ -4,7 +4,7 @@
+ #define _PARSE_CMD_LINE_H
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ #include "CosNotifyShorthands.h"
+@@ -18,47 +18,47 @@
+ static void usage(const char* pname, CORBA::Boolean supports_filters)
+ {
+-  cout << "Usage: " << pname << " [-d #] [-b #] [-m #] [-M #] [-n name] [-f file] [-N name] [-F file] [-p file] [-a file] [-v]";
++  std::cout << "Usage: " << pname << " [-d #] [-b #] [-m #] [-M #] [-n name] [-f file] [-N name] [-F file] [-p file] [-a file] [-v]";
+   if (supports_filters) {
+-    cout << " [-t types] [-e expr]" << endl;
++    std::cout << " [-t types] [-e expr]" << std::endl;
+   } else {
+-    cout << endl;
++    std::cout << std::endl;
+   }
+-  cout << "  -d #     : disconnect after # events [default 0 means never disconnect]" << endl;
+-  cout << "  -b #     : batch size (only relevant for batch supplier programs) [default 5]" << endl;
+-  cout << "               => must be >= 1" << endl;
+-  cout << "  -m #     : # of milliseconds to pause between each push/pull [default 0]" << endl;
+-  cout << "  -M #     : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << endl;
+-  cout << "             (-M only applies to push consumers and pull suppliers)" << endl;
+-  cout << "  -n name  : channel name" << endl;
+-  cout << "               => use event service to lookup this name" << endl;
+-  cout << "  -f file  : file containing channel IOR" << endl;
+-  cout << "               => use string_to_object on the IOR" << endl;
+-  cout << "  -N name  : factory name" << endl;
+-  cout << "               => use event service to lookup this name" << endl;
+-  cout << "  -F file  : file containing channel factory IOR" << endl;
+-  cout << "               => use string_to_object on the IOR" << endl;
+-  cout << "  -p file  : file to store IOR of the proxy used by this client" << endl;
+-  cout << "                (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << endl;
+-  cout << "  -a file  : file to store IOR of the admin used by this client" << endl;
+-  cout << "                (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << endl;
+-  cout << "  -v       : verbose output" << endl;
+-  cout << endl;
++  std::cout << "  -d #     : disconnect after # events [default 0 means never disconnect]" << std::endl;
++  std::cout << "  -b #     : batch size (only relevant for batch supplier programs) [default 5]" << std::endl;
++  std::cout << "               => must be >= 1" << std::endl;
++  std::cout << "  -m #     : # of milliseconds to pause between each push/pull [default 0]" << std::endl;
++  std::cout << "  -M #     : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << std::endl;
++  std::cout << "             (-M only applies to push consumers and pull suppliers)" << std::endl;
++  std::cout << "  -n name  : channel name" << std::endl;
++  std::cout << "               => use event service to lookup this name" << std::endl;
++  std::cout << "  -f file  : file containing channel IOR" << std::endl;
++  std::cout << "               => use string_to_object on the IOR" << std::endl;
++  std::cout << "  -N name  : factory name" << std::endl;
++  std::cout << "               => use event service to lookup this name" << std::endl;
++  std::cout << "  -F file  : file containing channel factory IOR" << std::endl;
++  std::cout << "               => use string_to_object on the IOR" << std::endl;
++  std::cout << "  -p file  : file to store IOR of the proxy used by this client" << std::endl;
++  std::cout << "                (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << std::endl;
++  std::cout << "  -a file  : file to store IOR of the admin used by this client" << std::endl;
++  std::cout << "                (used by demo_add_filter, demo_offer_change, or demo_subscription_chang)" << std::endl;
++  std::cout << "  -v       : verbose output" << std::endl;
++  std::cout << std::endl;
+   if (supports_filters) {
+-    cout << "Options for adding a filter:" << endl;
+-    cout << "  -t types : add a filter for the specified types, which should be a" << endl;
+-    cout << "               comma-separated list of types of the form D::T" << endl;
+-    cout << "  -e expr  : add a filter with the specified boolean expression" << endl;
+-    cout << endl;
+-    cout << "If only -t specified, the expression \"true\" is used for the filter" << endl;
+-    cout << "If only -e specified, the event type \"*::*\" is used for the filter" << endl;
+-    cout << endl;
+-  }
+-  cout << "If both -n and -f are specified, the -n option is tried first" << endl;
+-  cout << endl;
+-  cout << "If neither -n or -f is specified, program first tries name service" << endl;
+-  cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << endl;
+-  cout << endl;
++    std::cout << "Options for adding a filter:" << std::endl;
++    std::cout << "  -t types : add a filter for the specified types, which should be a" << std::endl;
++    std::cout << "               comma-separated list of types of the form D::T" << std::endl;
++    std::cout << "  -e expr  : add a filter with the specified boolean expression" << std::endl;
++    std::cout << std::endl;
++    std::cout << "If only -t specified, the expression \"true\" is used for the filter" << std::endl;
++    std::cout << "If only -e specified, the event type \"*::*\" is used for the filter" << std::endl;
++    std::cout << std::endl;
++  }
++  std::cout << "If both -n and -f are specified, the -n option is tried first" << std::endl;
++  std::cout << std::endl;
++  std::cout << "If neither -n or -f is specified, program first tries name service" << std::endl;
++  std::cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << std::endl;
++  std::cout << std::endl;
+ }
+ // return 0 if etype_list is a valid comma-separated event type list
+@@ -201,12 +201,12 @@
+     cfact_ior_file = (char*)"/tmp/rdifact.ior";
+   }
+   if ( (!supports_filters) && ( strlen(etype_list) || strlen(constraint_expr) ) ) {
+-    cout << "Filter options not supported for this client" << endl;
++    std::cout << "Filter options not supported for this client" << std::endl;
+     usage(pname, supports_filters);
+     return 1; // error
+   }
+   if (strlen(etype_list) && parse_etype_list(etype_list, evs)) {
+-    cout << "Event type list for -t option must be comma-separated list of D::T" << endl << endl; 
++    std::cout << "Event type list for -t option must be comma-separated list of D::T" << std::endl << std::endl; 
+     usage(pname, supports_filters);
+     return 1;
+   }
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/sample_clients.cc omniNotify-2.1.new/examples/sample_clients.cc
+--- omniNotify-2.1.orig/examples/sample_clients.cc     2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/sample_clients.cc      2009-06-28 17:17:16.000000000 +0400
+@@ -7,9 +7,9 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <fstream.h>
+-#include <iostream.h>
+-#include <iomanip.h>
++#include <fstream>
++#include <iostream>
++#include <iomanip>
+ #ifdef HAVE_UNISTD_H
+ #  include <unistd.h>
+@@ -70,7 +70,7 @@
+ // This helper routine informs channel that type ANY will be supplied
+ void offer_any(CosNC::NotifyPublish_ptr proxy, const char* objnm, CORBA::Boolean verbose) {
+-  if (verbose) cout << objnm << ": offering type %ANY" << endl;
++  if (verbose) std::cout << objnm << ": offering type %ANY" << std::endl;
+   CosN::EventTypeSeq added, deled;
+   added.length(1);
+   added[0].domain_name = CORBA::string_dup("");
+@@ -79,13 +79,13 @@
+   try {
+     proxy->offer_change(added, deled);
+   } catch (...) {
+-    if (verbose) cout << "** registration failed **" << endl;
++    if (verbose) std::cout << "** registration failed **" << std::endl;
+   }
+ }
+ // This helper routine informs channel that types Stock::Ticker and Bond::Ticker will be supplied
+ void offer_ticker(CosNC::NotifyPublish_ptr proxy, const char* objnm, CORBA::Boolean verbose) {
+-  if (verbose) cout << objnm << ": offering types Stock::Ticker and Bond::Ticker" << endl;
++  if (verbose) std::cout << objnm << ": offering types Stock::Ticker and Bond::Ticker" << std::endl;
+   CosN::EventTypeSeq added, deled;
+   added.length(2);
+   added[0].domain_name = CORBA::string_dup("Stock");
+@@ -96,7 +96,7 @@
+   try {
+     proxy->offer_change(added, deled);
+   } catch (...) {
+-    if (verbose) cout << "** registration failed **" << endl;
++    if (verbose) std::cout << "** registration failed **" << std::endl;
+   }
+ }
+@@ -104,19 +104,19 @@
+ void write_ior_to_file(CORBA::ORB_ptr orb, CORBA::Object_ptr o,
+                      const char* filenm, CORBA::Boolean verbose) {
+   if (strlen(filenm) == 0) {
+-    if (verbose) cout << "ior filename empty -- skipping" << endl;
++    if (verbose) std::cout << "ior filename empty -- skipping" << std::endl;
+     return;
+   }
+-  ofstream file(filenm, ios::out);
++  std::ofstream file(filenm, std::ios::out);
+   if ( ! file ) {
+-    if (verbose) cerr << "Failed to open IOR file: " << filenm << endl;
++    if (verbose) std::cerr << "Failed to open IOR file: " << filenm << std::endl;
+     return;
+   }
+   char* ior_name = orb->object_to_string(o);
+   file << ior_name;
+   file.close();
+   delete [] ior_name;
+-  if (verbose) cout << "wrote IOR to file: " << filenm << endl;
++  if (verbose) std::cout << "wrote IOR to file: " << filenm << std::endl;
+ }
+ // These 2 helper routines are used to obtain one of the
+@@ -138,14 +138,14 @@
+   try {
+     admin = channel->new_for_suppliers(ifoper, admID);
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return generic_proxy; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return generic_proxy;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+   CosNA::ProxyID prxID;
+   try {
+@@ -156,14 +156,14 @@
+     }
+   } catch (...) {  }
+   if (CORBA::is_nil(generic_proxy)) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     try {
+       admin->destroy();
+     } catch (...) { }
+     admin = CosNA::SupplierAdmin::_nil();
+     return generic_proxy;
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+   write_ior_to_file(orb, admin, admin_ior_file, verbose);
+   return generic_proxy; // success if generic_proxy is non-nil, otherwise failure
+ }
+@@ -183,14 +183,14 @@
+   try {
+     admin = channel->new_for_consumers(ifoper, admID);
+     if ( CORBA::is_nil(admin) ) {
+-      cerr << "Failed to obtain admin" << endl;
++      std::cerr << "Failed to obtain admin" << std::endl;
+       return generic_proxy; // failure
+     }
+   } catch (...) {
+-    cerr << "Failed to obtain admin" << endl;
++    std::cerr << "Failed to obtain admin" << std::endl;
+     return generic_proxy;  // failure
+   }
+-  if (verbose) cout << "Obtained admin from the channel" << endl;
++  if (verbose) std::cout << "Obtained admin from the channel" << std::endl;
+   CosNA::ProxyID prxID;
+   try {
+@@ -201,14 +201,14 @@
+     }
+   } catch (...) {  }
+   if (CORBA::is_nil(generic_proxy)) {
+-    cerr << "Failed to obtain proxy" << endl;
++    std::cerr << "Failed to obtain proxy" << std::endl;
+     try {
+       admin->destroy();
+     } catch (...) { }
+     admin = CosNA::ConsumerAdmin::_nil();
+     return generic_proxy;
+   }
+-  if (verbose) cout << "Obtained proxy from admin" << endl;
++  if (verbose) std::cout << "Obtained proxy from admin" << std::endl;
+   write_ior_to_file(orb, admin, admin_ior_file, verbose);
+   return generic_proxy; // success if generic_proxy is non-nil, otherwise failure
+ }
+@@ -226,24 +226,24 @@
+                 CORBA::Boolean verbose) {
+   // if evs and constraint expr are empty, we ignore them + do not add a filter
+   if ( (evs.length() == 0) && (strlen(constraint_expr) == 0) ) {
+-    if (verbose) cout << obj_name << ": (no filter used)" << endl;
++    if (verbose) std::cout << obj_name << ": (no filter used)" << std::endl;
+     return 0; // OK
+   }
+   // Obtain a reference to the default filter factory; create a filter object 
+   CosNF::FilterFactory_ptr ffp;
+   filter = CosNF::Filter::_nil();
+   try {
+-    if (verbose) cout << obj_name << ": Obtaining default filter factory" << endl;
++    if (verbose) std::cout << obj_name << ": Obtaining default filter factory" << std::endl;
+     ffp    = channel->default_filter_factory();  
+     filter = ffp->create_filter("EXTENDED_TCL");
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << endl;
++    std::cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << obj_name << ": Caught exception obtaining filter object" << endl;
++    std::cerr << obj_name << ": Caught exception obtaining filter object" << std::endl;
+     return 1; // error
+   }
+-  if (verbose) cout << obj_name << ": Obtained filter from default filter factory" << endl;
++  if (verbose) std::cout << obj_name << ": Obtained filter from default filter factory" << std::endl;
+   // Construct a simple constraint expression; add it to fadmin
+   CosNF::ConstraintExpSeq   exp;
+@@ -252,32 +252,32 @@
+   exp[0].constraint_expr = CORBA::string_dup(constraint_expr);
+   CORBA::Boolean res = 0; // OK
+   try {
+-    if (verbose) cout << obj_name << ": Adding constraints to filter" << endl;
++    if (verbose) std::cout << obj_name << ": Adding constraints to filter" << std::endl;
+     filter->add_constraints(exp);
+-    if (verbose) cout << obj_name << ": Adding filter to target" << endl;
++    if (verbose) std::cout << obj_name << ": Adding filter to target" << std::endl;
+     fadmin->add_filter(filter);
+     if (verbose) {
+       if (evs.length()) {
+-      cout << obj_name << ": Added filter for types ";
++      std::cout << obj_name << ": Added filter for types ";
+       for (unsigned int j = 0; j < evs.length(); j++) { 
+-        cout << (const char*)evs[j].domain_name << "::" << (const char*)evs[j].type_name;
++        std::cout << (const char*)evs[j].domain_name << "::" << (const char*)evs[j].type_name;
+         if ((j+1) < evs.length())
+-          cout << ", ";
++          std::cout << ", ";
+       }
+       } else {
+-      cout << obj_name << ": Added filter for type *::* ";
++      std::cout << obj_name << ": Added filter for type *::* ";
+       }
+-      cout << " and constraint expression \"" << constraint_expr << "\" " << endl;
++      std::cout << " and constraint expression \"" << constraint_expr << "\" " << std::endl;
+     }
+   }
+   catch(CosNF::InvalidConstraint& _exobj1) {
+-    cerr << obj_name << ": Exception thrown : Invalid constraint given "
+-       << (const char *)constraint_expr << endl;
++    std::cerr << obj_name << ": Exception thrown : Invalid constraint given "
++       << (const char *)constraint_expr << std::endl;
+     res = 1; // error
+   }
+   catch (...) {
+-    cerr << obj_name << ": Exception thrown while adding constraint " 
+-       << (const char *)constraint_expr << endl; 
++    std::cerr << obj_name << ": Exception thrown while adding constraint " 
++       << (const char *)constraint_expr << std::endl; 
+     res = 1; // error
+   }
+   if (res == 1) { // error so destroy filter
+@@ -306,17 +306,17 @@
+   CosNF::FilterFactory_ptr ffp;
+   filter = CosNF::Filter::_nil();
+   try {
+-    if (verbose) cout << obj_name << ": Obtaining default filter factory" << endl;
++    if (verbose) std::cout << obj_name << ": Obtaining default filter factory" << std::endl;
+     ffp    = channel->default_filter_factory();  
+     filter = ffp->create_filter("EXTENDED_TCL");
+   } catch (CORBA::COMM_FAILURE& ex) {
+-    cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << endl;
++    std::cerr << obj_name << ": Caught COMM_FAILURE obtaining filter object" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << obj_name << ": Caught exception obtaining filter object" << endl;
++    std::cerr << obj_name << ": Caught exception obtaining filter object" << std::endl;
+     return 1; // error
+   }
+-  if (verbose) cout << obj_name << ": Obtained filter from default filter factory" << endl;
++  if (verbose) std::cout << obj_name << ": Obtained filter from default filter factory" << std::endl;
+   // Construct a simple constraint expression; add it to fadmin
+   CosNF::ConstraintExpSeq   exp;
+@@ -327,29 +327,29 @@
+   exp[0].constraint_expr = CORBA::string_dup("true");
+   CORBA::Boolean res = 0; // OK
+   try {
+-    if (verbose) cout << obj_name << ": Adding initial dummy constraint to filter" << endl;
++    if (verbose) std::cout << obj_name << ": Adding initial dummy constraint to filter" << std::endl;
+     if (verbose) {
+-      cout << obj_name << ": Adding constraint with dummy type Type_XXX and constraint \"true\" to filter" << endl;
++      std::cout << obj_name << ": Adding constraint with dummy type Type_XXX and constraint \"true\" to filter" << std::endl;
+     }
+     filter->add_constraints(exp);
+-    if (verbose) cout << obj_name << ": Adding filter to target" << endl;
++    if (verbose) std::cout << obj_name << ": Adding filter to target" << std::endl;
+     fadmin->add_filter(filter);
+     for (int i = 0; i < 512; i++) {
+       char buf[1024];
+       sprintf(buf, "Type_%03d", i);
+       exp[0].event_types[0].type_name = CORBA::string_dup(buf);
+       if (verbose) {
+-      cout << obj_name << ": Adding constraint with type " << buf << " and constraint \"true\" to filter" << endl;
++      std::cout << obj_name << ": Adding constraint with type " << buf << " and constraint \"true\" to filter" << std::endl;
+       }
+       filter->add_constraints(exp);
+     }
+   }
+   catch(CosNF::InvalidConstraint& _exobj1) {
+-    cerr << obj_name << ": Exception thrown : Invalid constraint given" << endl;
++    std::cerr << obj_name << ": Exception thrown : Invalid constraint given" << std::endl;
+     res = 1; // error
+   }
+   catch (...) {
+-    cerr << obj_name << ": Exception thrown while adding constraint/filter" << endl; 
++    std::cerr << obj_name << ": Exception thrown while adding constraint/filter" << std::endl; 
+     res = 1; // error
+   }
+@@ -445,16 +445,16 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl;
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl;
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs)
+     _worker = new GenericBoundWorkerThread(this);
+@@ -466,11 +466,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PushConsumer", "PushConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy
+@@ -496,7 +496,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PushConsumer", "PushConsumer_i::start_working");
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+       unsigned long t_secs = 0, t_nanosecs = 0;
+@@ -518,7 +518,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -538,16 +538,16 @@
+   _num_events++;
+   if (_consume_fn)
+     (*_consume_fn)(data, _obj_name, _num_events, _verbose);
+-  else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++  else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying push response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -560,7 +560,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "PushConsumer", "PushConsumer_i::disconnect_push_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -590,11 +590,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -678,16 +678,16 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs) 
+     _worker = new GenericBoundWorkerThread(this);
+@@ -699,11 +699,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPushConsumer", "StructuredPushConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -730,7 +730,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPushConsumer", "StructuredPushConsumer_i::start_working");
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+       unsigned long t_secs = 0, t_nanosecs = 0;
+@@ -752,7 +752,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -771,16 +771,16 @@
+   _num_events++;
+   if (_consume_fn)
+     (*_consume_fn)(data, _obj_name, _num_events, _verbose);
+-  else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++  else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -793,7 +793,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "StructuredPushConsumer", "StructuredPushConsumer_i::disconnect_structured_push_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -823,11 +823,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -922,16 +922,16 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs) 
+     _worker = new GenericBoundWorkerThread(this);
+@@ -943,11 +943,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "Structured512PushConsumer", "Structured512PushConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -974,7 +974,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "Structured512PushConsumer", "Structured512PushConsumer_i::start_working");
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     // invariant: _oplock held at top of loop
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+@@ -997,7 +997,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -1016,16 +1016,16 @@
+   _num_events++;
+   if (_consume_fn)
+     (*_consume_fn)(data, _obj_name, _num_events, _verbose);
+-  else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++  else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying push_structured_event response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1038,7 +1038,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "Structured512PushConsumer", "Structured512PushConsumer_i::disconnect_structured_push_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -1068,11 +1068,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1155,16 +1155,16 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   // if _millisecs is set, spawn a thread to ping the proxy
+   if (_millisecs)
+     _worker = new GenericBoundWorkerThread(this);
+@@ -1176,11 +1176,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePushConsumer", "SequencePushConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -1207,7 +1207,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePushConsumer", "SequencePushConsumer_i::start_working");
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     // invariant: _oplock held at top of loop
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+@@ -1230,7 +1230,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -1250,16 +1250,16 @@
+   _num_events += data.length();
+   if (_consume_fn)
+     (*_consume_fn)(data, _obj_name, _num_events, _num_batches, _verbose);
+-  else if (_verbose) cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << endl;
++  else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << std::endl;
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying push_structured_events response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying push_structured_events response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1272,7 +1272,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "SequencePushConsumer", "SequencePushConsumer_i::disconnect_sequence_push_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -1302,11 +1302,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1393,17 +1393,17 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pulling
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -1413,11 +1413,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PullConsumer", "PullConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -1450,7 +1450,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PullConsumer", "PullConsumer_i::start_working");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       { // introduce temporary lock release scope; do not hold oplock across pull
+@@ -1463,7 +1463,7 @@
+       } // end temporary lock release scope
+       if (_done) break; // must have disconnected during pull
+       if (!data) {
+-      if (_verbose) cout << _obj_name << ": strange failure: pull() returned nil" << endl;
++      if (_verbose) std::cout << _obj_name << ": strange failure: pull() returned nil" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+       }
+@@ -1471,11 +1471,11 @@
+       _num_events++;
+       if (_consume_fn)
+       (*_consume_fn)(*data, _obj_name, _num_events, _verbose);
+-      else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++      else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+       delete data;
+       data = 0;
+       if (_max_events && (_num_events >= _max_events)) {
+-      if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++      if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+       break; // done 
+       }
+       if (_millisecs) { // sleep for specified interval
+@@ -1490,7 +1490,7 @@
+       continue; // continue pulling
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while calling pull()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling pull()" << std::endl;
+       _com_err = 1;
+       break;
+     } // end while loop
+@@ -1510,7 +1510,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "PullConsumer", "PullConsumer_i::disconnect_pull_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -1540,11 +1540,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1629,17 +1629,17 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pulling
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -1649,11 +1649,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPullConsumer", "StructuredPullConsumer_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -1686,7 +1686,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPullConsumer", "StructuredPullConsumer_i::start_working");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       { // introduce temporary lock release scope; do not hold oplock across pull
+@@ -1699,7 +1699,7 @@
+       } // end temporary lock release scope
+       if (_done) break; // must have disconnected during pull
+       if (!data) {
+-      if (_verbose) cout << _obj_name << ": strange failure: pull_structured_event() returned nil" << endl;
++      if (_verbose) std::cout << _obj_name << ": strange failure: pull_structured_event() returned nil" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+       }
+@@ -1707,11 +1707,11 @@
+       _num_events++;
+       if (_consume_fn)
+       (*_consume_fn)(*data, _obj_name, _num_events, _verbose);
+-      else if (_verbose) cout << _obj_name << ": event count = " << _num_events << endl;
++      else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << std::endl;
+       delete data;
+       data = 0;
+       if (_max_events && (_num_events >= _max_events)) {
+-      if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++      if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+       break; // done
+       }
+       if (_millisecs) { // sleep for specified interval
+@@ -1726,7 +1726,7 @@
+       continue; // continue pulling
+     com_fail:
+       if (_done) break; // must have disconnected during pull
+-      if (_verbose) cout << _obj_name << ": communication error while calling pull_structured_event()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling pull_structured_event()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -1747,7 +1747,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "StructuredPullConsumer", "StructuredPullConsumer_i::disconnect_structured_pull_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -1777,11 +1777,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -1865,17 +1865,17 @@
+       _my_proxy->obtain_offered_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pulling
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to consume events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to consume events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -1885,11 +1885,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePullConsumer", "SequencePullConsumer_i::connect");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -1922,7 +1922,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePullConsumer", "SequencePullConsumer_i::start_working");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main pull loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main pull loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       { // introduce temporary lock release scope; do not hold oplock across pull
+@@ -1935,7 +1935,7 @@
+       } // end temporary lock release scope
+       if (_done) break; // must have disconnected during pull
+       if (!data) {
+-      if (_verbose) cout << _obj_name << ": strange failure: pull_structured_events() returned nil" << endl;
++      if (_verbose) std::cout << _obj_name << ": strange failure: pull_structured_events() returned nil" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+       }
+@@ -1944,11 +1944,11 @@
+       _num_events += data->length();
+       if (_consume_fn)
+       (*_consume_fn)(*data, _obj_name, _num_events, _num_batches, _verbose);
+-      else if (_verbose) cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << endl;
++      else if (_verbose) std::cout << _obj_name << ": event count = " << _num_events << " batch count = " << _num_batches << std::endl;
+       delete data;
+       data = 0;
+       if (_max_events && (_num_events >= _max_events)) {
+-      if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++      if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+       break; // done
+       }
+       if (_millisecs) { // sleep for specified interval
+@@ -1963,7 +1963,7 @@
+       continue; // continue pulling
+     com_fail:
+       if (_done) break; // must have disconnected during pull
+-      if (_verbose) cout << _obj_name << ": communication error while calling pull_structured_events()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling pull_structured_events()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -1983,7 +1983,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "SequencePullConsumer", "SequencePullConsumer_i::disconnect_sequence_pull_consumer");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -2013,11 +2013,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": offer_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying offer_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -2115,19 +2115,19 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // register the types to be supplied
+   offer_any(_my_proxy, _obj_name, _verbose);
+   // spawn a thread to do pushing
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -2137,11 +2137,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PushSupplier", "PushSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -2174,7 +2174,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PushSupplier", "PushSupplier_i::start_working");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+@@ -2189,7 +2189,7 @@
+       if (_done) break; // must have disconnected during push
+       _num_events++;
+       if (_max_events && (_num_events >= _max_events)) {
+-        if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++        if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+         break; // done
+       }
+       }
+@@ -2206,7 +2206,7 @@
+       continue; // continue pushing
+     com_fail:
+       if (_done) break; // must have disconnected during push
+-      if (_verbose) cout << _obj_name << ": communication error while calling push()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling push()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -2226,7 +2226,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "PushSupplier", "PushSupplier_i::disconnect_push_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -2256,11 +2256,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -2345,19 +2345,19 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // register the types to be supplied
+   offer_ticker(_my_proxy, _obj_name, _verbose);
+   // spawn a thread to do pushing
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -2367,11 +2367,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPushSupplier", "StructuredPushSupplier_i::connect");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -2404,7 +2404,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPushSupplier", "StructuredPushSupplier_i::start_working");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+@@ -2419,7 +2419,7 @@
+       if (_done) break; // must have disconnected during push
+       _num_events++;
+       if (_max_events && (_num_events >= _max_events)) {
+-        if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++        if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+         break; // done
+       }
+       }
+@@ -2436,7 +2436,7 @@
+       continue; // continue pushing
+     com_fail:
+       if (_done) break; // must have disconnected during push
+-      if (_verbose) cout << _obj_name << ": communication error while calling push_structured_event()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling push_structured_event()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -2456,7 +2456,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "StructuredPushSupplier", "StructuredPushSupplier_i::disconnect_structured_push_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -2486,11 +2486,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -2575,17 +2575,17 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // spawn a thread to do pushing
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -2595,11 +2595,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "Structured512PushSupplier", "Structured512PushSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -2631,7 +2631,7 @@
+   CosN::StructuredEvent* data = new CosN::StructuredEvent;
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "Structured512PushSupplier", "Structured512PushSupplier_i::start_working");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+@@ -2646,7 +2646,7 @@
+       if (_done) break; // must have disconnected during push
+       _num_events++;
+       if (_max_events && (_num_events >= _max_events)) {
+-        if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++        if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+         break; // done
+       }
+       }
+@@ -2663,7 +2663,7 @@
+       continue; // continue pushing
+     com_fail:
+       if (_done) break; // must have disconnected during push
+-      if (_verbose) cout << _obj_name << ": communication error while calling push_structured_event()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling push_structured_event()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } //end while loop
+@@ -2683,7 +2683,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "Structured512PushSupplier", "Structured512PushSupplier_i::disconnect_structured_push_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -2713,11 +2713,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -2807,19 +2807,19 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+   // register the types to be supplied
+   offer_ticker(_my_proxy, _obj_name, _verbose);
+   // spawn a thread to do pushing
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   _worker = new GenericBoundWorkerThread(this);
+   return 0; // OK
+ }
+@@ -2829,11 +2829,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePushSupplier", "SequencePushSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -2867,7 +2867,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePushSupplier", "SequencePushSupplier_i::start_working");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Spawned thread entering main push loop" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Spawned thread entering main push loop" << std::endl;
+     while ( 1 ) {
+       if (_done) break; // must have disconnected
+       data->length(0);
+@@ -2884,7 +2884,7 @@
+       _num_batches++;
+       _num_events += data->length();
+       if (_max_events && (_num_events >= _max_events)) {
+-        if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++        if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+         break; // done
+       }
+       }
+@@ -2901,7 +2901,7 @@
+       continue; // continue pushing
+     com_fail:
+       if (_done) break; // must have disconnected during push
+-      if (_verbose) cout << _obj_name << ": communication error while calling push_structured_events()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while calling push_structured_events()" << std::endl;
+       _com_err = 1;
+       break; // break from while loop -- done
+     } // end while loop
+@@ -2921,7 +2921,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "SequencePushSupplier", "SequencePushSupplier_i::disconnect_sequence_push_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -2951,11 +2951,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3053,16 +3053,16 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   // register the types to be supplied
+   offer_any(_my_proxy, _obj_name, _verbose);
+   // if _millisecs is set, spawn a thread to ping the proxy
+@@ -3076,11 +3076,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -3107,7 +3107,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::start_working");
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+       unsigned long t_secs = 0, t_nanosecs = 0;
+@@ -3129,7 +3129,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -3148,7 +3148,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::try_pull");
+   if (_done) return data;
+-  if (_verbose) cout << _obj_name << ": Channel called try_pull" << endl;
++  if (_verbose) std::cout << _obj_name << ": Channel called try_pull" << std::endl;
+   // If we reached done point during last try_pull, it is broadcast now
+   // and we return from this try_pull call without an event.
+@@ -3156,10 +3156,10 @@
+   // processed the previous try_pull (the final supplied event) before
+   // we disconnect this supplier.
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+     return data;
+   }
+@@ -3167,12 +3167,12 @@
+     has_event = 1;
+     _num_events++;
+   } else {
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying try_pull response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3194,7 +3194,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::pull");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull" << std::endl;
+     // invariants: _oplock is held entering top of loop and 
+     // also whenever we break out of loop
+     // (it is *not* held during yield() and timedwait() calls)
+@@ -3206,7 +3206,7 @@
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+       _num_events++;
+       if (_max_events && (_num_events >= _max_events)) {
+-        if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++        if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+         _done = 1;
+         _finish.broadcast();
+       }
+@@ -3227,7 +3227,7 @@
+     if (!_done && _delay_millisecs) {
+       unsigned long d_secs     =  _delay_millisecs / 1000;
+       unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-      if (_verbose) cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << endl;
++      if (_verbose) std::cout << _obj_name << ": delaying pull response for " << _delay_millisecs << " millisecs" << std::endl;
+       unsigned long t_secs, t_nanosecs;
+       TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+       _finish.timedwait(t_secs, t_nanosecs);
+@@ -3242,7 +3242,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "PullSupplier", "PullSupplier_i::disconnect_pull_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -3272,11 +3272,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3361,16 +3361,16 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   // register the types to be supplied
+   offer_ticker(_my_proxy, _obj_name, _verbose);
+   // if _millisecs is set, spawn a thread to ping the proxy
+@@ -3384,11 +3384,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -3416,7 +3416,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::start_working");
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+       unsigned long t_secs = 0, t_nanosecs = 0;
+@@ -3438,7 +3438,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -3457,7 +3457,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::try_pull_structured_event");
+   if (_done) return data;
+-  if (_verbose) cout << _obj_name << ": Channel called try_pull_structured_event" << endl;
++  if (_verbose) std::cout << _obj_name << ": Channel called try_pull_structured_event" << std::endl;
+   // If we reached done point during last try_pull, it is broadcast now
+   // and we return from this try_pull call without an event.
+@@ -3465,10 +3465,10 @@
+   // processed the previous try_pull (the final supplied event) before
+   // we disconnect this supplier.
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+     return data;
+   }
+@@ -3476,12 +3476,12 @@
+     has_event = 1;
+     _num_events++;
+   } else {
+-    if (_verbose) cout << _obj_name << ": NOT returning an event" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning an event" << std::endl;
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying try_pull_structured_event response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying try_pull_structured_event response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3503,7 +3503,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::pull_structured_event");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull_structured_event" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull_structured_event" << std::endl;
+     // invariants: _oplock is held entering top of loop and 
+     // also whenever we break out of loop
+     // (it is *not* held during yield() and timedwait() calls)
+@@ -3515,7 +3515,7 @@
+       if ((*_supply_fn)(*data, _obj_name, _num_events+1, _verbose)) {
+       _num_events++;
+       if (_max_events && (_num_events >= _max_events)) {
+-        if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++        if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+         _done = 1;
+         _finish.broadcast();
+       }
+@@ -3536,7 +3536,7 @@
+     if (!_done && _delay_millisecs) {
+       unsigned long d_secs     =  _delay_millisecs / 1000;
+       unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-      if (_verbose) cout << _obj_name << ": delaying pull_structured_event response for " << _delay_millisecs << " millisecs" << endl;
++      if (_verbose) std::cout << _obj_name << ": delaying pull_structured_event response for " << _delay_millisecs << " millisecs" << std::endl;
+       unsigned long t_secs, t_nanosecs;
+       TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+       _finish.timedwait(t_secs, t_nanosecs);
+@@ -3551,7 +3551,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "StructuredPullSupplier", "StructuredPullSupplier_i::disconnect_structured_pull_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -3581,11 +3581,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3675,16 +3675,16 @@
+       _my_proxy->obtain_subscription_types(CosNA::NONE_NOW_UPDATES_OFF);
+     }
+   } catch (CORBA::BAD_PARAM& ex) {
+-    cerr << _obj_name << ": BAD_PARAM Exception while connecting" << endl;
++    std::cerr << _obj_name << ": BAD_PARAM Exception while connecting" << std::endl;
+     return 1; // error
+   } catch (CosEvCA::AlreadyConnected& ex) {
+-    cerr << _obj_name << ": Already connected" << endl;
++    std::cerr << _obj_name << ": Already connected" << std::endl;
+     return 1; // error
+   } catch (...) {
+-    cerr << _obj_name << ": Failed to connect" << endl;
++    std::cerr << _obj_name << ": Failed to connect" << std::endl;
+     return 1; // error
+   }
+-  if (_verbose) cout << _obj_name << ": Connected to proxy, ready to supply events" << endl; 
++  if (_verbose) std::cout << _obj_name << ": Connected to proxy, ready to supply events" << std::endl; 
+   // register the types to be supplied
+   offer_ticker(_my_proxy, _obj_name, _verbose);
+   // if _millisecs is set, spawn a thread to ping the proxy
+@@ -3698,11 +3698,11 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::cleanup");
+     if (_worker || (!_done)) {
+-      cerr << "Coding error: only call c->cleanup() after c->wait_done()" << endl;
++      std::cerr << "Coding error: only call c->cleanup() after c->wait_done()" << std::endl;
+       return;
+     }
+     if (CORBA::is_nil(_my_proxy)) {
+-      cerr << "Coding error: cleanup already called?" << endl;
++      std::cerr << "Coding error: cleanup already called?" << std::endl;
+       return;
+     }
+     // this method takes sole ownership of _my_proxy ref
+@@ -3729,7 +3729,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::start_working");
+-    if (_verbose && (!_done) && _millisecs) cout << _obj_name << ": Spawned thread entering ping loop" << endl;
++    if (_verbose && (!_done) && _millisecs) std::cout << _obj_name << ": Spawned thread entering ping loop" << std::endl;
+     while ( 1 ) {
+       if (_done || (_millisecs == 0)) break;
+       unsigned long t_secs = 0, t_nanosecs = 0;
+@@ -3751,7 +3751,7 @@
+       continue; // continue ping loop
+     com_fail:
+       if (_done) break;
+-      if (_verbose) cout << _obj_name << ": communication error while pinging proxy using MyType()" << endl;
++      if (_verbose) std::cout << _obj_name << ": communication error while pinging proxy using MyType()" << std::endl;
+       _done = 1;
+       _finish.broadcast();
+       _com_err = 1;
+@@ -3772,7 +3772,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::try_pull_structured_events");
+   if (_done) return data;
+-  if (_verbose) cout << _obj_name << ": Channel called try_pull_structured_events" << endl;
++  if (_verbose) std::cout << _obj_name << ": Channel called try_pull_structured_events" << std::endl;
+   // If we reached done point during last try_pull, it is broadcast now
+   // and we return from this try_pull call without an event batch.
+@@ -3780,10 +3780,10 @@
+   // processed the previous try_pull (the final supplied event batch) before
+   // we disconnect this supplier.
+   if (_max_events && (_num_events >= _max_events)) {
+-    if (_verbose) cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << endl;
++    if (_verbose) std::cout << _obj_name << ": DONE [max_events reached; we waited for 1 extra try_pull]" << std::endl;
+     _done = 1;
+     _finish.broadcast();
+-    if (_verbose) cout << _obj_name << ": NOT returning a batch" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning a batch" << std::endl;
+     return data;
+   }
+@@ -3792,12 +3792,12 @@
+     _num_batches++;
+     _num_events += data->length();
+   } else {
+-    if (_verbose) cout << _obj_name << ": NOT returning a batch" << endl;
++    if (_verbose) std::cout << _obj_name << ": NOT returning a batch" << std::endl;
+   }
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying try_pull_structured_events response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying try_pull_structured_events response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+@@ -3820,7 +3820,7 @@
+   { // introduce lock scope
+     TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::pull_structured_events");
+-    if (_verbose && (!_done)) cout << _obj_name << ": Channel called pull_structured_events" << endl;
++    if (_verbose && (!_done)) std::cout << _obj_name << ": Channel called pull_structured_events" << std::endl;
+     // invariants: _oplock is held entering top of loop and 
+     // also whenever we break out of loop
+     // (it is *not* held during yield() and timedwait() calls)
+@@ -3834,7 +3834,7 @@
+       _num_batches++;
+       _num_events += data->length();
+       if (_max_events && (_num_events >= _max_events)) {
+-        if (_verbose) cout << _obj_name << ": DONE [max_events reached]" << endl;
++        if (_verbose) std::cout << _obj_name << ": DONE [max_events reached]" << std::endl;
+         _done = 1;
+         _finish.broadcast();
+       }
+@@ -3855,7 +3855,7 @@
+     if (!_done && _delay_millisecs) {
+       unsigned long d_secs     =  _delay_millisecs / 1000;
+       unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-      if (_verbose) cout << _obj_name << ": delaying pull_structured_events response for " << _delay_millisecs << " millisecs" << endl;
++      if (_verbose) std::cout << _obj_name << ": delaying pull_structured_events response for " << _delay_millisecs << " millisecs" << std::endl;
+       unsigned long t_secs, t_nanosecs;
+       TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+       _finish.timedwait(t_secs, t_nanosecs);
+@@ -3870,7 +3870,7 @@
+   TW_SCOPE_LOCK(lock, _oplock, "SequencePullSupplier", "SequencePullSupplier_i::disconnect_sequence_pull_supplier");
+   if (_done) return;
+-  if (_verbose) cout << _obj_name << ": disconnected" << endl;
++  if (_verbose) std::cout << _obj_name << ": disconnected" << std::endl;
+   _done = 1;
+   _finish.broadcast();
+ }
+@@ -3900,11 +3900,11 @@
+   if (_done) return;
+   _num_changes++;
+   if (_change_fn) (*_change_fn)(added, deled, _obj_name, _num_changes, _verbose);
+-  else if (_verbose) cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << endl;
++  else if (_verbose) std::cout << _obj_name << ": subscription_change received [# " << _num_changes << "]" << std::endl;
+   if (!_done && _delay_millisecs) {
+     unsigned long d_secs     =  _delay_millisecs / 1000;
+     unsigned long d_nanosecs = (_delay_millisecs % 1000) * 1000000;
+-    if (_verbose) cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << endl;
++    if (_verbose) std::cout << _obj_name << ": delaying subscription_change response for " << _delay_millisecs << " millisecs" << std::endl;
+     unsigned long t_secs, t_nanosecs;
+     TW_GET_TIME(&t_secs, &t_nanosecs, d_secs, d_nanosecs);
+     _finish.timedwait(t_secs, t_nanosecs);
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/sample_functions.cc omniNotify-2.1.new/examples/sample_functions.cc
+--- omniNotify-2.1.orig/examples/sample_functions.cc   2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/sample_functions.cc    2009-06-28 17:12:44.000000000 +0400
+@@ -2,8 +2,8 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <iostream.h>
+-#include <iomanip.h>
++#include <iostream>
++#include <iomanip>
+ #include "sample_functions.h"
+ ///////////////////////////////////////////////////////////////////
+@@ -20,7 +20,7 @@
+                     )
+ {
+   event <<= event_num;
+-  if (verbose) cout << "Supplied event # " << event_num << endl;
++  if (verbose) std::cout << "Supplied event # " << event_num << std::endl;
+   return 1; // OK
+ }
+@@ -33,9 +33,9 @@
+ {
+   CORBA::ULong ul;
+   if (event >>= ul) {
+-    if (verbose) cout << obj_name << ": event data = " << ul << ", event count = " << event_num << endl;
++    if (verbose) std::cout << obj_name << ": event data = " << ul << ", event count = " << event_num << std::endl;
+   } else {
+-    if (verbose) cout << obj_name << ": event data not known (not a ULong), event count = " << event_num << endl;
++    if (verbose) std::cout << obj_name << ": event data not known (not a ULong), event count = " << event_num << std::endl;
+   }
+ }
+@@ -59,9 +59,9 @@
+                             )
+ {
+   if (verbose) {
+-    cout << setw(10) << obj_name << " : " <<
+-      setw(4) << event_num << " : " <<
+-      setw(5) << event.header.fixed_header.event_type.domain_name << "::" <<
++    std::cout << std::setw(10) << obj_name << " : " <<
++      std::setw(4) << event_num << " : " <<
++      std::setw(5) << event.header.fixed_header.event_type.domain_name << "::" <<
+       event.header.fixed_header.event_type.type_name << " -- ";
+     const char* stock_or_bond_name = "";
+     CORBA::ULong value = 0;
+@@ -71,15 +71,15 @@
+       (event.filterable_data.length() > 1) &&
+       (event.filterable_data[0].value >>= stock_or_bond_name) &&
+       (event.filterable_data[1].value >>= value)) {
+-      cout << "Name: " << stock_or_bond_name << " Value: " << setw(4) << value << " Quote# "; 
++      std::cout << "Name: " << stock_or_bond_name << " Value: " << std::setw(4) << value << " Quote# "; 
+       CORBA::ULong l = 0;
+       if (event.remainder_of_body >>= l) {
+-      cout << setw(4) << l << endl;
++      std::cout << std::setw(4) << l << std::endl;
+       } else {
+-      cout << "????" << endl;
++      std::cout << "????" << std::endl;
+       }
+     } else {
+-      cout << "(not a Stock or Bond quote -- ignoring)" << endl;
++      std::cout << "(not a Stock or Bond quote -- ignoring)" << std::endl;
+     }
+   }
+ }
+@@ -121,7 +121,7 @@
+   event.filterable_data[1].name = (const char*) "Value";
+   event.filterable_data[1].value <<= (CORBA::ULong) sample_stockbond_val[i];
+   event.remainder_of_body <<= (CORBA::ULong) event_num;
+-  if (verbose) cout << "Supplied event # " << event_num << endl;
++  if (verbose) std::cout << "Supplied event # " << event_num << std::endl;
+   return 1;
+ }
+@@ -141,8 +141,8 @@
+ {
+   CORBA::ULong evnum = event_num;
+   // We re-use the singleton example function
+-  if (verbose) cout << "--------- " << obj_name << " Supplying Event Batch " <<
+-               batch_num << " -------------" << endl;
++  if (verbose) std::cout << "--------- " << obj_name << " Supplying Event Batch " <<
++               batch_num << " -------------" << std::endl;
+   events.length(batch_size);
+   for (unsigned int i = 0; i < batch_size; i++) {
+     sample_supply_structured_fn(events[i], obj_name, evnum++, verbose);
+@@ -160,8 +160,8 @@
+ {
+   // We re-use the singleton example function
+   CORBA::ULong evnum = (event_num - events.length()) + 1;
+-  if (verbose) cout << "--------- " << obj_name << " Got Event Batch " <<
+-               batch_num << " -------------" << endl;
++  if (verbose) std::cout << "--------- " << obj_name << " Got Event Batch " <<
++               batch_num << " -------------" << std::endl;
+   for (unsigned int i = 0; i < events.length(); i++) {
+     sample_consume_structured_fn(events[i], "", evnum++, verbose);
+   }
+@@ -177,15 +177,15 @@
+                         )
+ {
+   if (verbose) {
+-    cout << setw(10) << obj_name << " : " <<
+-      setw(4) << event_num << " : " <<
+-      setw(5) << event.header.fixed_header.event_type.domain_name << "::" <<
++    std::cout << std::setw(10) << obj_name << " : " <<
++      std::setw(4) << event_num << " : " <<
++      std::setw(5) << event.header.fixed_header.event_type.domain_name << "::" <<
+       event.header.fixed_header.event_type.type_name << " -- ";
+     CORBA::ULong l = 0;
+     if (event.remainder_of_body >>= l) {
+-      cout << setw(4) << l << endl;
++      std::cout << std::setw(4) << l << std::endl;
+     } else {
+-      cout << "????" << endl;
++      std::cout << "????" << std::endl;
+     }
+   }
+ }
+@@ -209,13 +209,13 @@
+   event.filterable_data[0].name = (const char*) "TypeNum";
+   event.filterable_data[0].value <<= (CORBA::ULong) i;
+   event.remainder_of_body <<= (CORBA::ULong) event_num;
+-  if (verbose) cout << "Supplied event # " << event_num << endl;
++  if (verbose) std::cout << "Supplied event # " << event_num << std::endl;
+   return 1;
+ }
+ // Helper functions
+-ostream& operator<< (ostream& out, const CosN::EventType & t) {
++std::ostream& operator<< (std::ostream& out, const CosN::EventType & t) {
+   const char* dname = (t.domain_name ? (const char*)t.domain_name : "*");
+   const char* tname = (t.type_name ? (const char*)t.type_name : "*");
+   return out << dname << "::" << tname;
+@@ -228,10 +228,10 @@
+   CORBA::ULong indx;
+   CosN::EventType type;
+   for (indx = 0; indx < added.length(); indx++) {
+-    cout << "\t+ " << added[indx] << endl;
++    std::cout << "\t+ " << added[indx] << std::endl;
+   }
+   for (indx = 0; indx < deled.length(); indx++) {
+-    cout << "\t- " << deled[indx] << endl;
++    std::cout << "\t- " << deled[indx] << std::endl;
+   }
+ }
+@@ -247,8 +247,8 @@
+                      )
+ {
+   if (verbose) {
+-    cout << "Object " << obj_name <<
+-      " received offer_change msg [# " << num_changes << "]:" << endl;
++    std::cout << "Object " << obj_name <<
++      " received offer_change msg [# " << num_changes << "]:" << std::endl;
+     sample_describe_change_fn(added, deled);
+   }
+ }
+@@ -262,8 +262,8 @@
+                      )
+ {
+   if (verbose) {
+-    cout << "Object " << obj_name << 
+-      " received subscription_change msg [# " << num_changes << "]:" << endl;
++    std::cout << "Object " << obj_name << 
++      " received subscription_change msg [# " << num_changes << "]:" << std::endl;
+     sample_describe_change_fn(added, deled);
+   }
+ }
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/some_notify_clients.cc omniNotify-2.1.new/examples/some_notify_clients.cc
+--- omniNotify-2.1.orig/examples/some_notify_clients.cc        2003-10-12 22:51:18.000000000 +0400
++++ omniNotify-2.1.new/examples/some_notify_clients.cc 2009-06-28 17:18:19.000000000 +0400
+@@ -4,7 +4,7 @@
+ #endif
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ #include "orb_init_name.h"
+ #include "get_channel.h"
+@@ -23,58 +23,58 @@
+ static void usage(const char* pname)
+ {
+-  cout << "Usage: " << pname << " -u client_type [-u client_type ...] [-c #] [-s #] [-b #] [-m #] [-M #] [-n name] [-f file] [-v] [-t types] [-e expr]" << endl;
+-  cout << "  -u type  : use the specified client type (one client of that type is used)." << endl;
+-  cout << "             Specify as many as you like, one -u option for each.  Types:" << endl;
+-  cout << "                lpushc : legacy push consumer" << endl;   
+-  cout << "                apushc : any push consumer" << endl; 
+-  cout << "                spushc : structured push consumer" << endl; 
+-  cout << "                bpushc : batch push consumer" << endl; 
+-  cout << endl;
+-  cout << "                lpullc : legacy pull consumer" << endl;   
+-  cout << "                apullc : any pull consumer" << endl; 
+-  cout << "                spullc : structured pull consumer" << endl; 
+-  cout << "                bpullc : batch pull consumer" << endl; 
+-  cout << endl;
+-  cout << "                lpushs : legacy push supplier" << endl;   
+-  cout << "                apushs : any push supplier" << endl; 
+-  cout << "                spushs : structured push supplier" << endl; 
+-  cout << "                bpushs : batch push supplier" << endl; 
+-  cout << endl;
+-  cout << "                lpulls : legacy pull supplier" << endl;   
+-  cout << "                apulls : any pull supplier" << endl; 
+-  cout << "                spulls : structured pull supplier" << endl; 
+-  cout << "                bpulls : batch pull supplier" << endl; 
+-  cout << endl;
+-  cout << "  -s #     : for suppliers: disconnect after # events supplied [default 0 means never disconnect]" << endl;
+-  cout << "  -c #     : for consumers: disconnect after # events consumed [default 0 means never disconnect]" << endl;
+-  cout << "             **  N.B. You should take # of suppliers into account:" << endl;
+-  cout << "                 if 3 suppliers supply 30 events, each consumer should consume 90 events" << endl; 
+-  cout << "  -b #     : batch size (only relevant for batch supplier programs) [default 5]" << endl;
+-  cout << "               => must be >= 1" << endl;
+-  cout << "  -m #     : # of milliseconds to pause between each push/pull [default 0]" << endl;
+-  cout << "  -M #     : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << endl;
+-  cout << "             (-M only applies to push consumers and pull suppliers)" << endl;
+-  cout << "  -n name  : channel name" << endl;
+-  cout << "               => use event service to lookup this name" << endl;
+-  cout << "  -f file  : file containing channel IOR" << endl;
+-  cout << "               => use string_to_object on the IOR" << endl;
+-  cout << "  -v       : verbose output" << endl;
+-  cout << endl;
+-  cout << "Options for adding a filter **:" << endl;
+-  cout << "  -t types : add a filter for the specified types, which should be a" << endl;
+-  cout << "               comma-separated list of types of the form D::T" << endl;
+-  cout << "  -e expr  : add a filter with the specified boolean expression" << endl;
+-  cout << "** N.B. Only add filters that always evaluate to TRUE to get proper program termination" << endl;
+-  cout << endl;
+-  cout << "If only -t specified, the expression \"true\" is used for the filter" << endl;
+-  cout << "If only -e specified, the event type \"*::*\" is used for the filter" << endl;
+-  cout << endl;
+-  cout << "If both -n and -f are specified, the -n option is tried first" << endl;
+-  cout << endl;
+-  cout << "If neither -n or -f is specified, program first tries name service" << endl;
+-  cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << endl;
+-  cout << endl;
++  std::cout << "Usage: " << pname << " -u client_type [-u client_type ...] [-c #] [-s #] [-b #] [-m #] [-M #] [-n name] [-f file] [-v] [-t types] [-e expr]" << std::endl;
++  std::cout << "  -u type  : use the specified client type (one client of that type is used)." << std::endl;
++  std::cout << "             Specify as many as you like, one -u option for each.  Types:" << std::endl;
++  std::cout << "                lpushc : legacy push consumer" << std::endl;   
++  std::cout << "                apushc : any push consumer" << std::endl; 
++  std::cout << "                spushc : structured push consumer" << std::endl; 
++  std::cout << "                bpushc : batch push consumer" << std::endl; 
++  std::cout << std::endl;
++  std::cout << "                lpullc : legacy pull consumer" << std::endl;   
++  std::cout << "                apullc : any pull consumer" << std::endl; 
++  std::cout << "                spullc : structured pull consumer" << std::endl; 
++  std::cout << "                bpullc : batch pull consumer" << std::endl; 
++  std::cout << std::endl;
++  std::cout << "                lpushs : legacy push supplier" << std::endl;   
++  std::cout << "                apushs : any push supplier" << std::endl; 
++  std::cout << "                spushs : structured push supplier" << std::endl; 
++  std::cout << "                bpushs : batch push supplier" << std::endl; 
++  std::cout << std::endl;
++  std::cout << "                lpulls : legacy pull supplier" << std::endl;   
++  std::cout << "                apulls : any pull supplier" << std::endl; 
++  std::cout << "                spulls : structured pull supplier" << std::endl; 
++  std::cout << "                bpulls : batch pull supplier" << std::endl; 
++  std::cout << std::endl;
++  std::cout << "  -s #     : for suppliers: disconnect after # events supplied [default 0 means never disconnect]" << std::endl;
++  std::cout << "  -c #     : for consumers: disconnect after # events consumed [default 0 means never disconnect]" << std::endl;
++  std::cout << "             **  N.B. You should take # of suppliers into account:" << std::endl;
++  std::cout << "                 if 3 suppliers supply 30 events, each consumer should consume 90 events" << std::endl; 
++  std::cout << "  -b #     : batch size (only relevant for batch supplier programs) [default 5]" << std::endl;
++  std::cout << "               => must be >= 1" << std::endl;
++  std::cout << "  -m #     : # of milliseconds to pause between each push/pull [default 0]" << std::endl;
++  std::cout << "  -M #     : # of milliseconds to pause during incoming push, pull, try_pull [default 0]" << std::endl;
++  std::cout << "             (-M only applies to push consumers and pull suppliers)" << std::endl;
++  std::cout << "  -n name  : channel name" << std::endl;
++  std::cout << "               => use event service to lookup this name" << std::endl;
++  std::cout << "  -f file  : file containing channel IOR" << std::endl;
++  std::cout << "               => use string_to_object on the IOR" << std::endl;
++  std::cout << "  -v       : verbose output" << std::endl;
++  std::cout << std::endl;
++  std::cout << "Options for adding a filter **:" << std::endl;
++  std::cout << "  -t types : add a filter for the specified types, which should be a" << std::endl;
++  std::cout << "               comma-separated list of types of the form D::T" << std::endl;
++  std::cout << "  -e expr  : add a filter with the specified boolean expression" << std::endl;
++  std::cout << "** N.B. Only add filters that always evaluate to TRUE to get proper program termination" << std::endl;
++  std::cout << std::endl;
++  std::cout << "If only -t specified, the expression \"true\" is used for the filter" << std::endl;
++  std::cout << "If only -e specified, the event type \"*::*\" is used for the filter" << std::endl;
++  std::cout << std::endl;
++  std::cout << "If both -n and -f are specified, the -n option is tried first" << std::endl;
++  std::cout << std::endl;
++  std::cout << "If neither -n or -f is specified, program first tries name service" << std::endl;
++  std::cout << "using name \"EventChannel\", then default IOR file /tmp/rdichan.ior" << std::endl;
++  std::cout << std::endl;
+ }
+ // return 0 if etype_list is a valid comma-separated event type list
+@@ -195,7 +195,7 @@
+       } else if (strcmp(optarg, "bpulls") == 0) {
+         USE_B_PULL_S = 1; num_sup++;
+       } else {
+-        cout << endl << "Bad client type (" << optarg << ") for -u option" << endl;
++        std::cout << std::endl << "Bad client type (" << optarg << ") for -u option" << std::endl;
+         usage(pname);
+         goto error_return;
+       }
+@@ -250,7 +250,7 @@
+       ior_file = (char*)"/tmp/rdichan.ior";
+     }
+     if (strlen(etype_list) && parse_etype_list(etype_list, evs)) {
+-      cout << "Event type list for -t option must be comma-separated list of D::T" << endl << endl; 
++      std::cout << "Event type list for -t option must be comma-separated list of D::T" << std::endl << std::endl; 
+       usage(pname);
+       goto error_return;
+     }
+@@ -258,19 +258,19 @@
+       constraint_expr = (char*)"true";
+     }
+     if (num_con + num_sup == 0) {
+-      cout << endl << "** You must use at least one -u option to specify a client **" << endl;
++      std::cout << std::endl << "** You must use at least one -u option to specify a client **" << std::endl;
+       usage(pname);
+       goto error_return;
+     }
+     if (num_con && num_sup && num_con_events && num_sup_events && (num_con_events != (num_sup * num_sup_events))) {
+-      cout << endl << "** WARNING: Unless filtering or external clients change the count, your math is wrong" << endl;
+-      cout << "    num_con_events != num_sup * num_sup_events" << endl;
+-      cout << "    ( " << num_con_events << " != " << num_sup << " * " << num_sup_events << " )" << endl;
+-      cout << "Proceeding anyway" << endl;
++      std::cout << std::endl << "** WARNING: Unless filtering or external clients change the count, your math is wrong" << std::endl;
++      std::cout << "    num_con_events != num_sup * num_sup_events" << std::endl;
++      std::cout << "    ( " << num_con_events << " != " << num_sup << " * " << num_sup_events << " )" << std::endl;
++      std::cout << "Proceeding anyway" << std::endl;
+     }
+     // (2) Obtain reference to notification channel
+-    if (verbose) cout << "Obtaining reference to notification channel" << endl;
++    if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl;
+     CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getchan_from_iorfile(orb, ior_file, verbose);
+@@ -323,12 +323,12 @@
+     // (3.1) legacy_push_consumer
+     if (USE_L_PUSH_C) {
+-      cout << "Constructing legacy_push_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing legacy_push_consumer, num_con_events = " << num_con_events << std::endl;
+       l_push_c =
+       LegacyPushConsumer_i::create(channel, num_con_events, "legacy_push_consumer",
+                                    sample_consume_any_fn, millisecs, delay_millisecs, verbose);
+       if (! l_push_c) {
+-      cerr << "Constructing legacy_push_consumer failed" << endl;
++      std::cerr << "Constructing legacy_push_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_l_push_c = l_push_c->_this();
+@@ -337,12 +337,12 @@
+       // (3.2) legacy_pull_consumer
+     if (USE_L_PULL_C) {
+-      cout << "Constructing legacy_pull_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing legacy_pull_consumer, num_con_events = " << num_con_events << std::endl;
+       l_pull_c =
+       LegacyPullConsumer_i::create(channel, num_con_events, "legacy_pull_consumer",
+                                    sample_consume_any_fn, millisecs, delay_millisecs, verbose);
+       if (! l_pull_c) {
+-      cerr << "Constructing legacy_pull_consumer failed" << endl;
++      std::cerr << "Constructing legacy_pull_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_l_pull_c = l_pull_c->_this();
+@@ -351,13 +351,13 @@
+     // (3.3) any_push_consumer
+     if (USE_A_PUSH_C) {
+-      cout << "Constructing any_push_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing any_push_consumer, num_con_events = " << num_con_events << std::endl;
+       a_push_c =
+       PushConsumer_i::create(orb, channel, num_con_events, batch_size, "any_push_consumer",
+                              "", "", sample_consume_any_fn, sample_offer_change_fn,
+                              &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! a_push_c) {
+-      cerr << "Constructing any_push_consumer failed" << endl;
++      std::cerr << "Constructing any_push_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_a_push_c = a_push_c->_this();
+@@ -366,13 +366,13 @@
+     // (3.4) struct_push_consumer
+     if (USE_S_PUSH_C) {
+-      cout << "Constructing struct_push_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing struct_push_consumer, num_con_events = " << num_con_events << std::endl;
+       s_push_c =
+       StructuredPushConsumer_i::create(orb, channel, num_con_events, batch_size, "struct_push_consumer",
+                                        "", "", sample_consume_structured_fn, sample_offer_change_fn,
+                                        &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! s_push_c) {
+-      cerr << "Constructing struct_push_consumer failed" << endl;
++      std::cerr << "Constructing struct_push_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_s_push_c = s_push_c->_this();
+@@ -381,13 +381,13 @@
+     // (3.5) batch_push_consumer
+     if (USE_B_PUSH_C) {
+-      cout << "Constructing batch_push_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing batch_push_consumer, num_con_events = " << num_con_events << std::endl;
+       b_push_c =
+       SequencePushConsumer_i::create(orb, channel, num_con_events, batch_size, "batch_push_consumer",
+                                      "", "", sample_consume_batch_fn, sample_offer_change_fn,
+                                      &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! b_push_c) {
+-      cerr << "Constructing batch_push_consumer failed" << endl;
++      std::cerr << "Constructing batch_push_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_b_push_c = b_push_c->_this();
+@@ -396,13 +396,13 @@
+     // (3.6) any_pull_consumer
+     if (USE_A_PULL_C) {
+-      cout << "Constructing any_pull_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing any_pull_consumer, num_con_events = " << num_con_events << std::endl;
+       a_pull_c =
+       PullConsumer_i::create(orb, channel, num_con_events, batch_size, "any_pull_consumer",
+                              "", "", sample_consume_any_fn, sample_offer_change_fn,
+                              &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! a_pull_c) {
+-      cerr << "Constructing any_pull_consumer failed" << endl;
++      std::cerr << "Constructing any_pull_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_a_pull_c = a_pull_c->_this();
+@@ -411,13 +411,13 @@
+     // (3.7) struct_pull_consumer
+     if (USE_S_PULL_C) {
+-      cout << "Constructing struct_pull_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing struct_pull_consumer, num_con_events = " << num_con_events << std::endl;
+       s_pull_c =
+       StructuredPullConsumer_i::create(orb, channel, num_con_events, batch_size, "struct_pull_consumer",
+                                        "", "", sample_consume_structured_fn, sample_offer_change_fn,
+                                        &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! s_pull_c) {
+-      cerr << "Constructing struct_pull_consumer failed" << endl;
++      std::cerr << "Constructing struct_pull_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_s_pull_c = s_pull_c->_this();
+@@ -426,13 +426,13 @@
+     // (3.8) batch_pull_consumer
+     if (USE_B_PULL_C) {
+-      cout << "Constructing batch_pull_consumer, num_con_events = " << num_con_events << endl;
++      std::cout << "Constructing batch_pull_consumer, num_con_events = " << num_con_events << std::endl;
+       b_pull_c =
+       SequencePullConsumer_i::create(orb, channel, num_con_events, batch_size, "batch_pull_consumer",
+                                      "", "", sample_consume_batch_fn, sample_offer_change_fn,
+                                      &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! b_pull_c) {
+-      cerr << "Constructing batch_pull_consumer failed" << endl;
++      std::cerr << "Constructing batch_pull_consumer failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_b_pull_c = b_pull_c->_this();
+@@ -441,12 +441,12 @@
+     // (3.9) legacy_push_supplier
+     if (USE_L_PUSH_S) {
+-      cout << "Constructing legacy_push_supplier, num_sup_events = " << num_sup_events << endl;
++      std::cout << "Constructing legacy_push_supplier, num_sup_events = " << num_sup_events << std::endl;
+       l_push_s =
+       LegacyPushSupplier_i::create(channel, num_sup_events, "legacy_push_supplier",
+                                    sample_supply_any_fn, millisecs, delay_millisecs, verbose);
+       if (! l_push_s) {
+-      cerr << "Constructing legacy_push_supplier failed" << endl;
++      std::cerr << "Constructing legacy_push_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_l_push_s = l_push_s->_this();
+@@ -455,12 +455,12 @@
+     // (3.10) legacy_pull_supplier
+     if (USE_L_PULL_S) {
+-      cout << "Constructing legacy_pull_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing legacy_pull_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       l_pull_s =
+       LegacyPullSupplier_i::create(channel, num_sup_events, "legacy_pull_supplier",
+                                    sample_supply_any_fn, millisecs, delay_millisecs, verbose);
+       if (! l_pull_s) {
+-      cerr << "Constructing legacy_pull_supplier failed" << endl;
++      std::cerr << "Constructing legacy_pull_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_l_pull_s = l_pull_s->_this();
+@@ -469,13 +469,13 @@
+     // (3.11) any_push_supplier
+     if (USE_A_PUSH_S) {
+-      cout << "Constructing any_push_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing any_push_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       a_push_s =
+       PushSupplier_i::create(orb, channel, num_sup_events, batch_size, "any_push_supplier",
+                              "", "", sample_supply_any_fn, sample_subscription_change_fn,
+                              &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! a_push_s) {
+-      cerr << "Constructing any_push_supplier failed" << endl;
++      std::cerr << "Constructing any_push_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_a_push_s = a_push_s->_this();
+@@ -484,13 +484,13 @@
+     // (3.12) struct_push_supplier
+     if (USE_S_PUSH_S) {
+-      cout << "Constructing struct_push_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing struct_push_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       s_push_s =
+       StructuredPushSupplier_i::create(orb, channel, num_sup_events, batch_size, "struct_push_supplier",
+                                        "", "", sample_supply_structured_fn, sample_subscription_change_fn,
+                                        &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! s_push_s) {
+-      cerr << "Constructing struct_push_supplier failed" << endl;
++      std::cerr << "Constructing struct_push_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_s_push_s = s_push_s->_this();
+@@ -499,13 +499,13 @@
+     // (3.13) batch_push_supplier
+     if (USE_B_PUSH_S) {
+-      cout << "Constructing batch_push_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing batch_push_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       b_push_s =
+       SequencePushSupplier_i::create(orb, channel, num_sup_events, batch_size, "batch_push_supplier",
+                                      "", "", sample_supply_batch_fn, sample_subscription_change_fn,
+                                      &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! b_push_s) {
+-      cerr << "Constructing batch_push_supplier failed" << endl;
++      std::cerr << "Constructing batch_push_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_b_push_s = b_push_s->_this();
+@@ -514,13 +514,13 @@
+     // (3.14) any_pull_supplier
+     if (USE_A_PULL_S) {
+-      cout << "Constructing any_pull_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing any_pull_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       a_pull_s =
+       PullSupplier_i::create(orb, channel, num_sup_events, batch_size, "any_pull_supplier",
+                              "", "", sample_supply_any_fn, sample_subscription_change_fn,
+                              &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! a_pull_s) {
+-      cerr << "Constructing any_pull_supplier failed" << endl;
++      std::cerr << "Constructing any_pull_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_a_pull_s = a_pull_s->_this();
+@@ -529,13 +529,13 @@
+     // (3.15) struct_pull_supplier
+     if (USE_S_PULL_S) {
+-      cout << "Constructing struct_pull_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing struct_pull_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       s_pull_s =
+       StructuredPullSupplier_i::create(orb, channel, num_sup_events, batch_size, "struct_pull_supplier",
+                                        "", "", sample_supply_structured_fn, sample_subscription_change_fn,
+                                        &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! s_pull_s) {
+-      cerr << "Constructing struct_pull_supplier failed" << endl;
++      std::cerr << "Constructing struct_pull_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_s_pull_s = s_pull_s->_this();
+@@ -544,13 +544,13 @@
+     // (3.16) batch_pull_supplier
+     if (USE_B_PULL_S) {
+-      cout << "Constructing batch_pull_supplier, num_sup_events = " << num_sup_events <<  endl;
++      std::cout << "Constructing batch_pull_supplier, num_sup_events = " << num_sup_events <<  std::endl;
+       b_pull_s =
+       SequencePullSupplier_i::create(orb, channel, num_sup_events, batch_size, "batch_pull_supplier",
+                                      "", "", sample_supply_batch_fn, sample_subscription_change_fn,
+                                      &evs, constraint_expr, millisecs, delay_millisecs, verbose);
+       if (! b_pull_s) {
+-      cerr << "Constructing batch_pull_supplier failed" << endl;
++      std::cerr << "Constructing batch_pull_supplier failed" << std::endl;
+       goto error_return; // failed to create a client
+       }
+       my_b_pull_s = b_pull_s->_this();
+@@ -558,116 +558,116 @@
+     }
+     // (4) Tell POA we are ready to go
+-    if (verbose) cout << "Activating POA manager" << endl;
++    if (verbose) std::cout << "Activating POA manager" << std::endl;
+     PortableServer::POAManager_var pman = poa->the_POAManager();
+     pman->activate();
+     // (5) Connect clients to their proxies -- consumers first
+-    if (verbose) cout << "Connecting consumer clients to proxies" << endl;
++    if (verbose) std::cout << "Connecting consumer clients to proxies" << std::endl;
+     if (USE_L_PUSH_C) {
+       if (l_push_c->connect()) {
+-      cerr << "Connecting legacy_push_consumer failed" << endl;
++      std::cerr << "Connecting legacy_push_consumer failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_A_PUSH_C) {
+       if (a_push_c->connect()) {
+-      cerr << "Connecting any_push_consumer failed" << endl;
++      std::cerr << "Connecting any_push_consumer failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_S_PUSH_C) {
+       if (s_push_c->connect()) {
+-      cerr << "Connecting struct_push_consumer failed" << endl;
++      std::cerr << "Connecting struct_push_consumer failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_B_PUSH_C) {
+       if (b_push_c->connect()) {
+-      cerr << "Connecting batch_push_consumer failed" << endl;
++      std::cerr << "Connecting batch_push_consumer failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_L_PULL_C) {
+       if (l_pull_c->connect()) {
+-      cerr << "Connecting legacy_pull_consumer failed" << endl;
++      std::cerr << "Connecting legacy_pull_consumer failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_A_PULL_C) {
+       if (a_pull_c->connect()) {
+-      cerr << "Connecting any_pull_consumer failed" << endl;
++      std::cerr << "Connecting any_pull_consumer failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_S_PULL_C) {
+       if (s_pull_c->connect()) {
+-      cerr << "Connecting struct_pull_consumer failed" << endl;
++      std::cerr << "Connecting struct_pull_consumer failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_B_PULL_C) {
+       if (b_pull_c->connect()) {
+-      cerr << "Connecting batch_pull_consumer failed" << endl;
++      std::cerr << "Connecting batch_pull_consumer failed" << std::endl;
+       goto error_return;
+       }
+     }
+-    if (verbose) cout << "Connecting supplier clients to proxies" << endl;
++    if (verbose) std::cout << "Connecting supplier clients to proxies" << std::endl;
+     if (USE_L_PUSH_S) {
+       if (l_push_s->connect()) {
+-      cerr << "Connecting legacy_push_supplier failed" << endl;
++      std::cerr << "Connecting legacy_push_supplier failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_A_PUSH_S) {
+       if (a_push_s->connect()) {
+-      cerr << "Connecting any_push_supplier failed" << endl;
++      std::cerr << "Connecting any_push_supplier failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_S_PUSH_S) {
+       if (s_push_s->connect()) {
+-      cerr << "Connecting struct_push_supplier failed" << endl;
++      std::cerr << "Connecting struct_push_supplier failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_B_PUSH_S) {
+       if (b_push_s->connect()) {
+-      cerr << "Connecting batch_push_supplier failed" << endl;
++      std::cerr << "Connecting batch_push_supplier failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_L_PULL_S) {
+       if (l_pull_s->connect()) {
+-      cerr << "Connecting legacy_pull_supplier failed" << endl;
++      std::cerr << "Connecting legacy_pull_supplier failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_A_PULL_S) {
+       if (a_pull_s->connect()) {
+-      cerr << "Connecting any_pull_supplier failed" << endl;
++      std::cerr << "Connecting any_pull_supplier failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_S_PULL_S) {
+       if (s_pull_s->connect()) {
+-      cerr << "Connecting struct_pull_supplier failed" << endl;
++      std::cerr << "Connecting struct_pull_supplier failed" << std::endl;
+       goto error_return;
+       }
+     }
+     if (USE_B_PULL_S) {
+       if (b_pull_s->connect()) {
+-      cerr << "Connecting batch_pull_supplier failed" << endl;
++      std::cerr << "Connecting batch_pull_supplier failed" << std::endl;
+       goto error_return;
+       }
+     }
+-    if (verbose) cout << "Waiting for all 16 clients to finish" << endl;
++    if (verbose) std::cout << "Waiting for all 16 clients to finish" << std::endl;
+     CORBA::Boolean l_push_c_err = 0, l_pull_c_err = 0, l_push_s_err = 0, l_pull_s_err = 0;
+     CORBA::Boolean a_push_c_err = 0, a_pull_c_err = 0, a_push_s_err = 0, a_pull_s_err = 0;
+@@ -745,13 +745,13 @@
+       s_pull_s_err ||
+       b_pull_s_err;
+     if (sup_com_err && (num_sup_events > 0)) {
+-      if (verbose) cout << "Supplier communication error -- probably did not supply desired # of events" << endl;
++      if (verbose) std::cout << "Supplier communication error -- probably did not supply desired # of events" << std::endl;
+     }
+     if (con_com_err && (num_con_events > 0)) {
+-      if (verbose) cout << "Consumer communication error -- probably did not consume desired # of events" << endl;
++      if (verbose) std::cout << "Consumer communication error -- probably did not consume desired # of events" << std::endl;
+     }
+-    if (verbose) cout << "Cleaning up" << endl;
++    if (verbose) std::cout << "Cleaning up" << std::endl;
+     if (USE_L_PUSH_C) {
+       if (!l_push_c_err) { l_push_c->cleanup(); }
+@@ -808,23 +808,23 @@
+     goto normal_return;
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "main caught CORBA::SystemException." << endl;  
++    std::cerr << "main caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "main caught CORBA::Exception." << endl;        
++    std::cerr << "main caught CORBA::Exception." << std::endl;        
+   }                                                    
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "main caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "main caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+   catch(...) {                                         
+     // nameclt comment says it is a bad idea to report an error here 
+   }
+-  cerr << "main caught an exception." << endl;       
++  std::cerr << "main caught an exception." << std::endl;       
+  error_return:
+-  cerr << "QUITTING due to error" << endl;
++  std::cerr << "QUITTING due to error" << std::endl;
+   // orb->destroy();
+   return -1;
+  normal_return:
+diff -Naur --exclude=CVS omniNotify-2.1.orig/examples/ten_any_pull_consumers.cc omniNotify-2.1.new/examples/ten_any_pull_consumers.cc
+--- omniNotify-2.1.orig/examples/ten_any_pull_consumers.cc     2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/examples/ten_any_pull_consumers.cc      2009-06-28 17:14:26.000000000 +0400
+@@ -32,7 +32,7 @@
+     PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
+     // (1) Tell POA we are ready to go
+-    if (verbose) cout << "Activating POA manager" << endl;
++    if (verbose) std::cout << "Activating POA manager" << std::endl;
+     PortableServer::POAManager_var pman = poa->the_POAManager();
+     pman->activate();
+@@ -46,7 +46,7 @@
+     num_con_events = num_events;
+     // (3) Obtain reference to notification channel
+-    if (verbose) cout << "Obtaining reference to notification channel" << endl;
++    if (verbose) std::cout << "Obtaining reference to notification channel" << std::endl;
+     CosNA::EventChannel_ptr channel = getchan_from_ns(orb, channel_name, verbose);
+     if (CORBA::is_nil(channel)) { // name service lookup failed
+       channel = getchan_from_iorfile(orb, ior_file, verbose);
+@@ -56,14 +56,14 @@
+     }
+     // (4) Create all 12 CosNotify-style clients
+-    if (verbose) cout << "Creating 10 any_pull_consumer clients" << endl;
++    if (verbose) std::cout << "Creating 10 any_pull_consumer clients" << std::endl;
+     PullConsumer_i* a_pull_c[10];
+     CosNotifyComm::PullConsumer_var my_a_pull_c[10];
+     char buf[100];
+     for (i = 0; i < 10; i++) {
+       sprintf(buf, "any_pull_consumer%d", i);
+-      if (verbose) cout << "Creating " << buf << endl;
++      if (verbose) std::cout << "Creating " << buf << std::endl;
+       a_pull_c[i] =
+       PullConsumer_i::create(orb, channel, num_con_events, batch_size, CORBA::string_dup(buf),
+                              "", "", sample_consume_any_fn, sample_offer_change_fn,
+@@ -76,14 +76,14 @@
+     }
+     // (5) Connect clients to their proxies -- consumers first
+-    if (verbose) cout << "Connecting consumer clients to proxies" << endl;
++    if (verbose) std::cout << "Connecting consumer clients to proxies" << std::endl;
+     for (i = 0; i < 10; i++) {
+-      if (verbose) cout << "Connecting Client # " << i+1 << endl;
++      if (verbose) std::cout << "Connecting Client # " << i+1 << std::endl;
+       if (a_pull_c[i]->connect()) { goto error_return; }
+     }
+-    if (verbose) cout << "Waiting for all 10 clients to finish" << endl;
++    if (verbose) std::cout << "Waiting for all 10 clients to finish" << std::endl;
+     CORBA::Boolean a_com_err[10];
+     CORBA::Boolean com_err = 0;
+@@ -95,10 +95,10 @@
+     }
+     if (com_err && (num_events > 0)) {
+-      if (verbose) cout << "Communication error -- probably did not process desired # of events" << endl;
++      if (verbose) std::cout << "Communication error -- probably did not process desired # of events" << std::endl;
+     }
+-    if (verbose) cout << "Cleaning up" << endl;
++    if (verbose) std::cout << "Cleaning up" << std::endl;
+     for (i = 0; i < 10; i++) {
+       if (!a_com_err[i]) { a_pull_c[i]->cleanup(); }
+@@ -107,23 +107,23 @@
+     goto normal_return;
+   }
+   catch(CORBA::SystemException&) {                     
+-    cerr << "main caught CORBA::SystemException." << endl;  
++    std::cerr << "main caught CORBA::SystemException." << std::endl;  
+   }                                                    
+   catch(CORBA::Exception&) {                           
+-    cerr << "main caught CORBA::Exception." << endl;        
++    std::cerr << "main caught CORBA::Exception." << std::endl;        
+   }                                                    
+ #if defined(__OMNIORB3__) || defined(__OMNIORB4__)
+   catch(omniORB::fatalException& fe) {                 
+-    cerr << "main caught omniORB::fatalException:" << endl; 
+-    cerr << "  file: " << fe.file() << endl;           
+-    cerr << "  line: " << fe.line() << endl;           
+-    cerr << "  mesg: " << fe.errmsg() << endl;         
++    std::cerr << "main caught omniORB::fatalException:" << std::endl; 
++    std::cerr << "  file: " << fe.file() << std::endl;           
++    std::cerr << "  line: " << fe.line() << std::endl;           
++    std::cerr << "  mesg: " << fe.errmsg() << std::endl;         
+   }                                                    
+ #endif
+   catch(...) {                                         
+     // nameclt comment says it is a bad idea to report an error here 
+   }
+-  cerr << "main caught an exception." << endl;       
++  std::cerr << "main caught an exception." << std::endl;       
+  error_return:
+   // orb->destroy();
+   return -1;
+diff -Naur --exclude=CVS omniNotify-2.1.orig/include/ModFlexLexer.h omniNotify-2.1.new/include/ModFlexLexer.h
+--- omniNotify-2.1.orig/include/ModFlexLexer.h 2003-10-23 08:39:11.000000000 +0400
++++ omniNotify-2.1.new/include/ModFlexLexer.h  2009-06-28 17:03:57.000000000 +0400
+@@ -31,10 +31,10 @@
+  
+ // XXX ModFlexLexer overrides the 2 yylex decls, from
+ // XXX        int yylex()
+-// XXX        int yylex( istream* new_in, ostream* new_out = 0 )
++// XXX        int yylex( std::istream* new_in, std::ostream* new_out = 0 )
+ // XXX to
+ // XXX        int yylex(YYSTYPE* lvalp, RDI_PCState* ps)
+-// XXX        int yylex(YYSTYPE* lvalp, RDI_PCState* ps, istream* new_in, ostream* new_out = 0 )
++// XXX        int yylex(YYSTYPE* lvalp, RDI_PCState* ps, std::istream* new_in, std::ostream* new_out = 0 )
+ // XXX 
+ // XXX It therefore requires these 2 lines:
+ #include "RDIConstraint.h"
+@@ -88,7 +88,8 @@
+ // Never included before - need to define base class.
+ #define __FLEX_LEXER_H
+-#include <iostream.h>
++#include <iostream>
++
+ extern "C++" {
+@@ -105,16 +106,16 @@
+       virtual void
+               yy_switch_to_buffer( struct yy_buffer_state* new_buffer ) = 0;
+       virtual struct yy_buffer_state*
+-              yy_create_buffer( istream* s, int size ) = 0;
++              yy_create_buffer( std::istream* s, int size ) = 0;
+       virtual void yy_delete_buffer( struct yy_buffer_state* b ) = 0;
+-      virtual void yyrestart( istream* s ) = 0;
++      virtual void yyrestart( std::istream* s ) = 0;
+       virtual int yylex(YYSTYPE* lvalp, RDI_PCState* ps) = 0;
+       //      virtual int yylex() = 0;
+       // Call yylex with new input/output sources.
+-      int yylex(YYSTYPE* lvalp, RDI_PCState* ps, istream* new_in, ostream* new_out = 0 )
+-      // int yylex( istream* new_in, ostream* new_out = 0 )
++      int yylex(YYSTYPE* lvalp, RDI_PCState* ps, std::istream* new_in, std::ostream* new_out = 0 )
++      // int yylex( std::istream* new_in, std::ostream* new_out = 0 )
+               {
+               switch_streams( new_in, new_out );
+               return yylex(lvalp, ps);
+@@ -122,8 +123,8 @@
+       // Switch to new input/output streams.  A nil stream pointer
+       // indicates "keep the current one".
+-      virtual void switch_streams( istream* new_in = 0,
+-                                      ostream* new_out = 0 ) = 0;
++      virtual void switch_streams( std::istream* new_in = 0,
++                                      std::ostream* new_out = 0 ) = 0;
+       int lineno() const              { return yylineno; }
+@@ -150,17 +151,17 @@
+ public:
+       // arg_yyin and arg_yyout default to the cin and cout, but we
+       // only make that assignment when initializing in yylex().
+-      yyFlexLexer( istream* arg_yyin = 0, ostream* arg_yyout = 0 );
++      yyFlexLexer( std::istream* arg_yyin = 0, std::ostream* arg_yyout = 0 );
+       virtual ~yyFlexLexer();
+       void yy_switch_to_buffer( struct yy_buffer_state* new_buffer );
+-      struct yy_buffer_state* yy_create_buffer( istream* s, int size );
++      struct yy_buffer_state* yy_create_buffer( std::istream* s, int size );
+       void yy_delete_buffer( struct yy_buffer_state* b );
+-      void yyrestart( istream* s );
++      void yyrestart( std::istream* s );
+       virtual int yylex(YYSTYPE* lvalp, RDI_PCState* ps);
+-      virtual void switch_streams( istream* new_in, ostream* new_out );
++      virtual void switch_streams( std::istream* new_in, std::ostream* new_out );
+ protected:
+       virtual int LexerInput( char* buf, int max_size );
+@@ -171,7 +172,7 @@
+       int yyinput();
+       void yy_load_buffer_state();
+-      void yy_init_buffer( struct yy_buffer_state* b, istream* s );
++      void yy_init_buffer( struct yy_buffer_state* b, std::istream* s );
+       void yy_flush_buffer( struct yy_buffer_state* b );
+       int yy_start_stack_ptr;
+@@ -186,8 +187,8 @@
+       yy_state_type yy_try_NUL_trans( yy_state_type current_state );
+       int yy_get_next_buffer();
+-      istream* yyin;  // input source for default LexerInput
+-      ostream* yyout; // output sink for default LexerOutput
++      std::istream* yyin;     // input source for default LexerInput
++      std::ostream* yyout;    // output sink for default LexerOutput
+       struct yy_buffer_state* yy_current_buffer;
+diff -Naur --exclude=CVS omniNotify-2.1.orig/lib/RDIParser_l.cc omniNotify-2.1.new/lib/RDIParser_l.cc
+--- omniNotify-2.1.orig/lib/RDIParser_l.cc     2003-10-23 08:39:12.000000000 +0400
++++ omniNotify-2.1.new/lib/RDIParser_l.cc      2009-06-28 17:06:28.000000000 +0400
+@@ -53,7 +53,7 @@
+ #ifdef __cplusplus
+ #include <stdlib.h>
+-#include <iostream.h>
++#include <iostream>
+ /* Use prototypes in function declarations. */
+ #define YY_USE_PROTOS
+@@ -172,7 +172,7 @@
+ struct yy_buffer_state
+       {
+-      istream* yy_input_file;
++      std::istream* yy_input_file;
+       char *yy_ch_buf;                /* input buffer */
+       char *yy_buf_pos;               /* current position in input buffer */
+@@ -1764,10 +1764,10 @@
+                       yy_start = 1;   /* first start state */
+               if ( ! yyin )
+-                      yyin = &cin;
++                      yyin = &std::cin;
+               if ( ! yyout )
+-                      yyout = &cout;
++                      yyout = &std::cout;
+               if ( ! yy_current_buffer )
+                       yy_current_buffer =
+@@ -2123,7 +2123,7 @@
+               } /* end of scanning one token */
+       } /* end of yylex */
+-yyFlexLexer::yyFlexLexer( istream* arg_yyin, ostream* arg_yyout )
++yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout )
+       {
+       yyin = arg_yyin;
+       yyout = arg_yyout;
+@@ -2157,7 +2157,7 @@
+       yy_delete_buffer( yy_current_buffer );
+       }
+-void yyFlexLexer::switch_streams( istream* new_in, ostream* new_out )
++void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out )
+       {
+       if ( new_in )
+               {
+@@ -2497,7 +2497,7 @@
+       }
+-void yyFlexLexer::yyrestart( istream* input_file )
++void yyFlexLexer::yyrestart( std::istream* input_file )
+       {
+       if ( ! yy_current_buffer )
+               yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
+@@ -2541,7 +2541,7 @@
+       }
+-YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( istream* file, int size )
++YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size )
+       {
+       YY_BUFFER_STATE b;
+@@ -2582,7 +2582,7 @@
+ extern "C" int isatty YY_PROTO(( int ));
+-void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, istream* file )
++void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file )
+       {
+       yy_flush_buffer( b );
+@@ -2681,7 +2681,7 @@
+ void yyFlexLexer::LexerError( yyconst char msg[] )
+       {
+-      cerr << msg << '\n';
++      std::cerr << msg << '\n';
+       exit( YY_EXIT_FAILURE );
+       }
diff --git a/products/patches/opencv-2.4.6.1-gcc6.patch b/products/patches/opencv-2.4.6.1-gcc6.patch
new file mode 100644 (file)
index 0000000..79c8045
--- /dev/null
@@ -0,0 +1,131 @@
+diff -Naur opencv-2.4.6.1_SRC_orig/cmake/OpenCVPCHSupport.cmake opencv-2.4.6.1_SRC_modif/cmake/OpenCVPCHSupport.cmake
+--- opencv-2.4.6.1_SRC_orig/cmake/OpenCVPCHSupport.cmake       2013-07-10 15:49:00.000000000 +0400
++++ opencv-2.4.6.1_SRC_modif/cmake/OpenCVPCHSupport.cmake      2016-10-17 17:34:32.000000000 +0300
+@@ -19,7 +19,7 @@
+         ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
+         OUTPUT_VARIABLE gcc_compiler_version)
+     #MESSAGE("GCC Version: ${gcc_compiler_version}")
+-    IF(gcc_compiler_version VERSION_GREATER "4.2.-1")
++    IF(gcc_compiler_version VERSION_GREATER "4.2.-1" AND gcc_compiler_version VERSION_LESS "6.0.0")
+         SET(PCHSupport_FOUND TRUE)
+     ENDIF()
+diff -Naur opencv-2.4.6.1_SRC_orig/modules/contrib/src/chamfermatching.cpp opencv-2.4.6.1_SRC_modif/modules/contrib/src/chamfermatching.cpp
+--- opencv-2.4.6.1_SRC_orig/modules/contrib/src/chamfermatching.cpp    2013-07-10 15:49:00.000000000 +0400
++++ opencv-2.4.6.1_SRC_modif/modules/contrib/src/chamfermatching.cpp   2016-10-17 18:11:47.000000000 +0300
+@@ -959,10 +959,8 @@
+     for (int y=0;y<h;++y) {
+         for (int x=0;x<w;++x) {
+             // initialize
+-            if (&annotate_img!=NULL) {
+-                annotate_img.at<Vec2i>(y,x)[0]=x;
+-                annotate_img.at<Vec2i>(y,x)[1]=y;
+-            }
++          annotate_img.at<Vec2i>(y,x)[0]=x;
++            annotate_img.at<Vec2i>(y,x)[1]=y;
+             uchar edge_val = edges_img.at<uchar>(y,x);
+             if( (edge_val!=0) ) {
+@@ -1005,11 +1003,9 @@
+             if (dt==-1 || dt>dist) {
+                 dist_img.at<float>(ny,nx) = dist;
+                 q.push(std::make_pair(nx,ny));
+-
+-                if (&annotate_img!=NULL) {
+-                    annotate_img.at<Vec2i>(ny,nx)[0]=annotate_img.at<Vec2i>(y,x)[0];
+-                    annotate_img.at<Vec2i>(ny,nx)[1]=annotate_img.at<Vec2i>(y,x)[1];
+-                }
++              
++              annotate_img.at<Vec2i>(ny,nx)[0]=annotate_img.at<Vec2i>(y,x)[0];
++              annotate_img.at<Vec2i>(ny,nx)[1]=annotate_img.at<Vec2i>(y,x)[1];
+             }
+         }
+     }
+@@ -1101,26 +1097,24 @@
+     float cost = (sum_distance/truncate_)/addr.size();
+-    if (&orientation_img!=NULL) {
+-        float* optr = orientation_img.ptr<float>(y)+x;
+-        float sum_orientation = 0;
+-        int cnt_orientation = 0;
+-
+-        for (size_t i=0;i<addr.size();++i) {
+-
+-            if(addr[i] < (orientation_img.cols*orientation_img.rows) - (offset.y*orientation_img.cols + offset.x)){
+-                                if (tpl->orientations[i]>=-CV_PI && (*(optr+addr[i]))>=-CV_PI) {
+-                    sum_orientation += orientation_diff(tpl->orientations[i], (*(optr+addr[i])));
+-                    cnt_orientation++;
+-                }
+-            }
+-        }
+-        if (cnt_orientation>0) {
+-                        cost = (float)(beta*cost+alpha*(sum_orientation/(2*CV_PI))/cnt_orientation);
+-        }
+-
+-    }
++    float* optr = orientation_img.ptr<float>(y)+x;
++    float sum_orientation = 0;
++    int cnt_orientation = 0;
++    
++    for (size_t i=0;i<addr.size();++i) {
++      
++      if(addr[i] < (orientation_img.cols*orientation_img.rows) - (offset.y*orientation_img.cols + offset.x)){
++      if (tpl->orientations[i]>=-CV_PI && (*(optr+addr[i]))>=-CV_PI) {
++        sum_orientation += orientation_diff(tpl->orientations[i], (*(optr+addr[i])));
++        cnt_orientation++;
++      }
++      }
++    }
++    
++    if (cnt_orientation>0) {
++      cost = (float)(beta*cost+alpha*(sum_orientation/(2*CV_PI))/cnt_orientation);
++    }    
+     if(cost > 0){
+         ChamferMatcher::Match* istance = new ChamferMatcher::Match();
+diff -Naur opencv-2.4.6.1_SRC_orig/modules/legacy/src/dpstereo.cpp opencv-2.4.6.1_SRC_modif/modules/legacy/src/dpstereo.cpp
+--- opencv-2.4.6.1_SRC_orig/modules/legacy/src/dpstereo.cpp    2013-07-10 15:49:00.000000000 +0400
++++ opencv-2.4.6.1_SRC_modif/modules/legacy/src/dpstereo.cpp   2016-10-18 10:22:03.257968598 +0300
+@@ -76,8 +76,8 @@
+     uchar min_val, max_val;
+ } _CvRightImData;
+-#define CV_IMAX3(a,b,c) ((temp3 = (a) >= (b) ? (a) : (b)),(temp3 >= (c) ? temp3 : (c)))
+-#define CV_IMIN3(a,b,c) ((temp3 = (a) <= (b) ? (a) : (b)),(temp3 <= (c) ? temp3 : (c)))
++#define CV_IMAX3(a,b,c) (std::max(std::max((a), (b)), (c)))
++#define CV_IMIN3(a,b,c) (std::min(std::min((a), (b)), (c)))
+ static void icvFindStereoCorrespondenceByBirchfieldDP( uchar* src1, uchar* src2,
+                                                 uchar* disparities,
+@@ -87,7 +87,7 @@
+                                                 float  _param3, float _param4,
+                                                 float  _param5 )
+ {
+-    int     x, y, i, j, temp3;
++    int     x, y, i, j;
+     int     d, s;
+     int     dispH =  maxDisparity + 3;
+     uchar  *dispdata;
+diff -Naur opencv-2.4.6.1_SRC_orig/modules/ts/include/opencv2/ts/ts_perf.hpp opencv-2.4.6.1_SRC_modif/modules/ts/include/opencv2/ts/ts_perf.hpp
+--- opencv-2.4.6.1_SRC_orig/modules/ts/include/opencv2/ts/ts_perf.hpp  2013-07-10 15:49:00.000000000 +0400
++++ opencv-2.4.6.1_SRC_modif/modules/ts/include/opencv2/ts/ts_perf.hpp 2016-10-17 17:52:29.000000000 +0300
+@@ -475,9 +475,16 @@
+     INSTANTIATE_TEST_CASE_P(/*none*/, fixture##_##name, params);\
+     void fixture##_##name::PerfTestBody()
++   #if defined(_MSC_VER) && (_MSC_VER <= 1400)
++    #define CV_PERF_TEST_MAIN_INTERNALS_ARGS(...)     \
++      while (++argc >= (--argc,-1)) {__VA_ARGS__; break;} /*this ugly construction is needed for VS 2005*/
++    #else
++    #define CV_PERF_TEST_MAIN_INTERNALS_ARGS(...) \
++      __VA_ARGS__;
++    #endif
+ #define CV_PERF_TEST_MAIN_INTERNALS(modulename, impls, ...) \
+-    while (++argc >= (--argc,-1)) {__VA_ARGS__; break;} /*this ugly construction is needed for VS 2005*/\
++    CV_PERF_TEST_MAIN_INTERNALS_ARGS(__VA_ARGS__) \
+     ::perf::Regression::Init(#modulename);\
+     ::perf::TestBase::Init(std::vector<std::string>(impls, impls + sizeof impls / sizeof *impls),\
+                            argc, argv);\
diff --git a/products/patches/opencv-3.2.0-ccache.patch b/products/patches/opencv-3.2.0-ccache.patch
new file mode 100644 (file)
index 0000000..dbae6cd
--- /dev/null
@@ -0,0 +1,32 @@
+--- opencv_ref/cmake/OpenCVCompilerOptions.cmake       2019-07-16 15:47:28.000000000 +0200
++++ opencv/cmake/OpenCVCompilerOptions.cmake   2019-07-18 11:27:06.006424613 +0200
+@@ -6,7 +6,7 @@ if(ENABLE_CCACHE AND NOT CMAKE_COMPILER_
+     get_property(__OLD_RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
+     if(__OLD_RULE_LAUNCH_COMPILE)
+       message(STATUS "Can't replace CMake compiler launcher")
+-    else()
++    else(__OLD_RULE_LAUNCH_COMPILE)
+       set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
+       # NOTE: Actually this check doesn't work as expected.
+       # "RULE_LAUNCH_COMPILE" is ignored by CMake during try_compile() step.
+@@ -14,14 +14,14 @@ if(ENABLE_CCACHE AND NOT CMAKE_COMPILER_
+       set(IS_CCACHE_WORKS 1)
+       if(IS_CCACHE_WORKS)
+         set(CMAKE_COMPILER_IS_CCACHE 1)
+-      else()
++      else(IS_CCACHE_WORKS)
+         message(STATUS "Unable to compile program with enabled ccache, reverting...")
+         set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${__OLD_RULE_LAUNCH_COMPILE}")
+-      endif()
+-    else()
+-      message(STATUS "Looking for ccache - not found")
+-    endif()
+-  endif()
++      endif(IS_CCACHE_WORKS)
++    endif(__OLD_RULE_LAUNCH_COMPILE)
++  else(CCACHE_PROGRAM)
++    message(STATUS "Looking for ccache - not found")
++  endif(CCACHE_PROGRAM)
+ endif()
+ if((CMAKE_COMPILER_IS_CLANGCXX OR CMAKE_COMPILER_IS_CLANGCC OR CMAKE_COMPILER_IS_CCACHE) AND NOT CMAKE_GENERATOR MATCHES "Xcode")
diff --git a/products/patches/opencv-3.2.0_windows.patch b/products/patches/opencv-3.2.0_windows.patch
new file mode 100644 (file)
index 0000000..273408e
--- /dev/null
@@ -0,0 +1,22 @@
+--- opencv_ref/cmake/OpenCVDetectCXXCompiler.cmake
++++ opencv/cmake/OpenCVDetectCXXCompiler.cmake
+@@ -162,6 +162,8 @@
+     set(OpenCV_RUNTIME vc14)
+   elseif(MSVC_VERSION EQUAL 1910)
+     set(OpenCV_RUNTIME vc15)
++  elseif(MSVC_VERSION EQUAL 1916)
++    set(OpenCV_RUNTIME vc15)
+   endif()
+ elseif(MINGW)
+   set(OpenCV_RUNTIME mingw)
+--- opencv_ref/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
++++ opencv/cmake/templates/OpenCVConfig.root-WIN32.cmake.in
+@@ -80,6 +80,8 @@
+     set(OpenCV_RUNTIME vc14)
+   elseif(MSVC_VERSION EQUAL 1910)
+     set(OpenCV_RUNTIME vc15)
++  elseif(MSVC_VERSION EQUAL 1916)
++    set(OpenCV_RUNTIME vc15)
+   endif()
+ elseif(MINGW)
+   set(OpenCV_RUNTIME mingw)
diff --git a/products/patches/opencv-with-ffmpeg.patch b/products/patches/opencv-with-ffmpeg.patch
new file mode 100644 (file)
index 0000000..69c1057
--- /dev/null
@@ -0,0 +1,13 @@
+--- opencv_ref/modules/videoio/src/cap_ffmpeg_api.hpp  2020-02-26 05:17:34.533150892 -0500
++++ opencv/modules/videoio/src/cap_ffmpeg_api.hpp      2020-02-26 05:17:19.668586898 -0500
+@@ -14,6 +14,10 @@
+ #   define OPENCV_FFMPEG_API
+ #endif
++#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
++#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
++#define AVFMT_RAWPICTURE 0x0020
++
+ enum
+ {
+     CV_FFMPEG_CAP_PROP_POS_MSEC=0,
diff --git a/products/patches/paraview.0003-ParaViewClient.patch b/products/patches/paraview.0003-ParaViewClient.patch
new file mode 100644 (file)
index 0000000..5245133
--- /dev/null
@@ -0,0 +1,10 @@
+--- ParaView-5.8.0-RC2.orig/CMake/ParaViewClient.cmake 2020-03-02 15:38:53.791382799 +0300
++++ ParaView-5.8.0-RC2.new/CMake/ParaViewClient.cmake  2020-03-02 18:31:04.304698442 +0300
+@@ -516,6 +516,7 @@
+     NAMES xmlpatterns-qt5 xmlpatterns
+     HINTS "${Qt5_DIR}/../../../bin"
+           "${Qt5_DIR}/../../../libexec/qt5/bin"
++    NO_CMAKE_PATH
+     DOC   "Path to xmlpatterns")
+   mark_as_advanced(qt_xmlpatterns_executable)
diff --git a/products/patches/paraview.0004-ParaView_hdf5.patch b/products/patches/paraview.0004-ParaView_hdf5.patch
new file mode 100644 (file)
index 0000000..699226f
--- /dev/null
@@ -0,0 +1,14 @@
+diff -Naur ParaView-5.8.0_SRC_orig/VTK/ThirdParty/hdf5/CMakeLists.txt ParaView-5.8.0_SRC_modif/VTK/ThirdParty/hdf5/CMakeLists.txt
+--- ParaView-5.8.0_SRC_orig/VTK/ThirdParty/hdf5/CMakeLists.txt 2020-03-31 15:23:53.279485815 +0300
++++ ParaView-5.8.0_SRC_modif/VTK/ThirdParty/hdf5/CMakeLists.txt        2020-03-31 13:59:17.768118278 +0300
+@@ -10,8 +10,8 @@
+   EXTERNAL
+     PACKAGE       HDF5
+     COMPONENTS    C HL
+-    TARGETS       hdf5::hdf5
+-                  hdf5::hdf5_hl
++    TARGETS       hdf5::hdf5-shared
++                  hdf5::hdf5_hl-shared
+     USE_VARIABLES HDF5_IS_PARALLEL
+     STANDARD_INCLUDE_DIRS)
diff --git a/products/patches/paraview.0005-ParaView_find_cgns.patch b/products/patches/paraview.0005-ParaView_find_cgns.patch
new file mode 100644 (file)
index 0000000..d636c32
--- /dev/null
@@ -0,0 +1,15 @@
+diff -Naur ParaView-5.8.0_SRC_orig/CMake/FindCGNS.cmake ParaView-5.8.0_SRC_modif/CMake/FindCGNS.cmake
+--- ParaView-5.8.0_SRC_orig/CMake/FindCGNS.cmake       2020-03-23 13:27:34.000000000 +0300
++++ ParaView-5.8.0_SRC_modif/CMake/FindCGNS.cmake      2020-04-09 16:21:57.263362265 +0300
+@@ -5,6 +5,11 @@
+ # CGNS_LIBRARIES   - List of fully qualified libraries to link against when using CGNS.
+ # CGNS_FOUND       - Do not attempt to use CGNS if "no" or undefined.
++SET(CGNS_ROOT_DIR $ENV{CGNS_ROOT_DIR} CACHE PATH "Path to the CGNS.")
++IF(CGNS_ROOT_DIR)
++  LIST(APPEND CMAKE_PREFIX_PATH "${CGNS_ROOT_DIR}")
++ENDIF(CGNS_ROOT_DIR)
++
+ find_path(CGNS_INCLUDE_DIR
+   NAMES
+     cgnslib.h
diff --git a/products/patches/paraview.0006-ParaView_find_libxml2.patch b/products/patches/paraview.0006-ParaView_find_libxml2.patch
new file mode 100644 (file)
index 0000000..a741d50
--- /dev/null
@@ -0,0 +1,14 @@
+--- ParaView-5.8.0_SRC_orig/VTK/CMake/FindLibXml2.cmake        2020-03-23 22:17:27.000000000 +0100
++++ ParaView-5.8.0_SRC_modif/VTK/CMake/FindLibXml2.cmake       2020-04-10 09:56:00.627562062 +0200
+@@ -53,6 +53,11 @@
+ PKG_CHECK_MODULES(PC_LIBXML QUIET libxml-2.0)
+ set(LIBXML2_DEFINITIONS ${PC_LIBXML_CFLAGS_OTHER})
++SET(LIBXML2_ROOT_DIR $ENV{LIBXML2_ROOT_DIR} CACHE PATH "Path to the LIBXML2.")
++IF(LIBXML2_ROOT_DIR)
++ LIST(APPEND CMAKE_PREFIX_PATH "${LIBXML2_ROOT_DIR}")
++ENDIF(LIBXML2_ROOT_DIR)
++
+ find_path(LIBXML2_INCLUDE_DIR NAMES libxml/xpath.h
+    HINTS
+    ${PC_LIBXML_INCLUDEDIR}
diff --git a/products/patches/paraview.0007-ParaView_find_freetype.patch b/products/patches/paraview.0007-ParaView_find_freetype.patch
new file mode 100644 (file)
index 0000000..04e86fa
--- /dev/null
@@ -0,0 +1,15 @@
+diff -Naur ParaView-5.8.0_SRC_orig/VTK/CMake/FindFreetype.cmake ParaView-5.8.0_SRC_modif/VTK/CMake/FindFreetype.cmake
+--- ParaView-5.8.0_SRC_orig/VTK/CMake/FindFreetype.cmake       2020-03-23 13:31:26.000000000 +0300
++++ ParaView-5.8.0_SRC_modif/VTK/CMake/FindFreetype.cmake      2020-04-10 22:27:24.194525121 +0300
+@@ -63,6 +63,11 @@
+ # I'm going to attempt to cut out the middleman and hope
+ # everything still works.
++SET(FREETYPE_ROOT_DIR $ENV{FREETYPE_ROOT_DIR} CACHE PATH "Path to the FreeType.")
++IF(FREETYPE_ROOT_DIR)
++  LIST(APPEND CMAKE_PREFIX_PATH "${FREETYPE_ROOT_DIR}")
++ENDIF(FREETYPE_ROOT_DIR)
++
+ set(FREETYPE_FIND_ARGS
+   HINTS
+     ENV FREETYPE_DIR
diff --git a/products/patches/paraview.0008-ParaView_find_zlib.patch b/products/patches/paraview.0008-ParaView_find_zlib.patch
new file mode 100644 (file)
index 0000000..980dc1c
--- /dev/null
@@ -0,0 +1,15 @@
+diff -Naur ParaView-5.8.0_SRC_orig/VTK/CMake/patches/3.13/FindZLIB.cmake ParaView-5.8.0_SRC_modif/VTK/CMake/patches/3.13/FindZLIB.cmake
+--- ParaView-5.8.0_SRC_orig/VTK/CMake/patches/3.13/FindZLIB.cmake      2020-03-23 13:31:26.000000000 +0300
++++ ParaView-5.8.0_SRC_modif/VTK/CMake/patches/3.13/FindZLIB.cmake     2020-04-13 14:13:11.214692753 +0300
+@@ -52,6 +52,11 @@
+ set(_ZLIB_SEARCHES)
++SET(ZLIB_ROOT_DIR $ENV{ZLIB_ROOT_DIR} CACHE PATH "PATH TO zlib.")
++IF(ZLIB_ROOT_DIR)
++  LIST(APPEND CMAKE_PREFIX_PATH "${ZLIB_ROOT_DIR}")
++ENDIF(ZLIB_ROOT_DIR)
++
+ # Search ZLIB_ROOT first if it is set.
+ if(ZLIB_ROOT)
+   set(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH)
diff --git a/products/patches/paraview.0009-ParaView_volume_mapper.patch b/products/patches/paraview.0009-ParaView_volume_mapper.patch
new file mode 100644 (file)
index 0000000..2b424ee
--- /dev/null
@@ -0,0 +1,11 @@
+--- ParaView_origin/VTK/Rendering/VolumeOpenGL2/vtkOpenGLGPUVolumeRayCastMapper.cxx    2020-06-18 14:59:43.630941741 +0200
++++ ParaView/VTK/Rendering/VolumeOpenGL2/vtkOpenGLGPUVolumeRayCastMapper.cxx   2020-06-18 15:00:57.582622827 +0200
+@@ -2822,7 +2822,7 @@
+     this->VolumePropertyChanged |= property->GetMTime() > this->ShaderBuildTime.GetMTime();
+     auto it = this->Parent->AssembledInputs.find(port);
+-    if (it == this->Parent->AssembledInputs.cend())
++    if (it == this->Parent->AssembledInputs.cend() || it->second.Volume != vol)
+     {
+       // Create new input structure
+       auto texture = vtkSmartPointer<vtkVolumeTexture>::New();
diff --git a/products/patches/paraview.0010-ParaViewClient.patch b/products/patches/paraview.0010-ParaViewClient.patch
new file mode 100644 (file)
index 0000000..eebeef7
--- /dev/null
@@ -0,0 +1,17 @@
+diff -pruN ParaView_ref/CMake/ParaViewClient.cmake ParaView/CMake/ParaViewClient.cmake
+--- ParaView_ref/CMake/ParaViewClient.cmake    2020-03-23 22:06:19.000000000 +0100
++++ ParaView/CMake/ParaViewClient.cmake        2020-09-23 09:21:09.084725466 +0200
+@@ -513,10 +513,12 @@ function (paraview_client_documentation)
+   include("${_ParaViewClient_cmake_dir}/paraview-find-package-helpers.cmake" OPTIONAL)
+   find_program(qt_xmlpatterns_executable
+-    NAMES xmlpatterns-qt5 xmlpatterns
++    NAMES xmlpatterns
+     HINTS "${Qt5_DIR}/../../../bin"
+           "${Qt5_DIR}/../../../libexec/qt5/bin"
++    NO_CMAKE_PATH
+     DOC   "Path to xmlpatterns")
++        
+   mark_as_advanced(qt_xmlpatterns_executable)
+   if (NOT qt_xmlpatterns_executable)
diff --git a/products/patches/paraview.0010-VTKM_MPI.patch b/products/patches/paraview.0010-VTKM_MPI.patch
new file mode 100644 (file)
index 0000000..15e1590
--- /dev/null
@@ -0,0 +1,11 @@
+--- ParaView_ref/./VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/CMake/VTKmDeviceAdapters.cmake    2020-07-20 14:51:20.129903776 +0200
++++ ParaView_new/./VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/CMake/VTKmDeviceAdapters.cmake    2020-07-20 14:57:01.681171900 +0200
+@@ -87,7 +87,7 @@ endif()
+ if(VTKm_ENABLE_OPENMP AND NOT TARGET vtkm::openmp)
+   cmake_minimum_required(VERSION 3.12...3.15 FATAL_ERROR)
+-  find_package(OpenMP 4.0 REQUIRED COMPONENTS CXX QUIET)
++  find_package(OpenMP 3.1 REQUIRED COMPONENTS CXX QUIET)
+   add_library(vtkm::openmp INTERFACE IMPORTED GLOBAL)
+   if(OpenMP_CXX_FLAGS)
diff --git a/products/patches/paravis_8_3_mpi_medinclude.patch b/products/patches/paravis_8_3_mpi_medinclude.patch
new file mode 100644 (file)
index 0000000..0822f02
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git a/src/Insitu/VisualizationLibrary/CMakeLists.txt b/src/Insitu/VisualizationLibrary/CMakeLists.txt
+index 880976c..ad793c8 100644
+--- a/src/Insitu/VisualizationLibrary/CMakeLists.txt
++++ b/src/Insitu/VisualizationLibrary/CMakeLists.txt
+@@ -7,7 +7,7 @@ INCLUDE_DIRECTORIES(
+   ${MEDCOUPLING_INCLUDE_DIRS}
+   ${MPI_INCLUDE_PATH}
+   ${PARAVIS_INCLUDE_DIRS}
+-  ${MEDCOUPLING_INCLUDE_DIRS}
++  ${MEDFILE_INCLUDE_DIRS}
+   ${CMAKE_CURRENT_SOURCE_DIR}/../../Plugins/MEDReader/IO/
+ )
diff --git a/products/patches/patchPyQt496noPhonon.patch b/products/patches/patchPyQt496noPhonon.patch
new file mode 100755 (executable)
index 0000000..425e4ea
--- /dev/null
@@ -0,0 +1,14 @@
+diff -pruN PyQt-4.9.6/configure.py PyQt-4.9.6_new/configure.py
+--- PyQt-4.9.6/configure.py    2012-12-08 10:51:13.000000000 +0100
++++ PyQt-4.9.6_new/configure.py        2013-03-12 10:04:55.000000000 +0100
+@@ -390,8 +390,8 @@ class ConfigurePyQt4:
+         if qt_version < 0x050000:
+             check_module("QtXmlPatterns", "qxmlname.h", "new QXmlName()")
+-        if qt_version < 0x050000: check_module("phonon", "phonon/videowidget.h",
+-                "new Phonon::VideoWidget()")
++        #if qt_version < 0x050000: check_module("phonon", "phonon/videowidget.h",
++        #        "new Phonon::VideoWidget()")
+         check_module("QtAssistant", "qassistantclient.h",
+                 "new QAssistantClient(\"foo\")", extra_lib_dirs=ass_lib_dirs,
+                 extra_libs=ass_libs)
diff --git a/products/patches/patch_shaper_cursor_cross.diff b/products/patches/patch_shaper_cursor_cross.diff
new file mode 100644 (file)
index 0000000..721992f
--- /dev/null
@@ -0,0 +1,14 @@
+diff --git a/src/SHAPERGUI/resources/LightApp.xml.in b/src/SHAPERGUI/resources/LightApp.xml.in
+index 081f2b03e..c86d74b96 100644
+--- a/src/SHAPERGUI/resources/LightApp.xml.in
++++ b/src/SHAPERGUI/resources/LightApp.xml.in
+@@ -22,6 +22,9 @@
+     <parameter name="PartSet" value="%SHAPER_ROOT_DIR%/share/salome/resources/shaper"/>
+     <parameter name="XGUI" value="%SHAPER_ROOT_DIR%/share/salome/resources/shaper"/>
+   </section>
++  <section name="Sketch">
++    <parameter name="operation_cursor" value="1"/>
++  </section>
+   <section name="Viewer" >
+     <!-- Viewer preferences -->
+     <parameter name="face-selection" value="true" />
diff --git a/products/patches/pthreads-2.9.1_windows.patch b/products/patches/pthreads-2.9.1_windows.patch
new file mode 100644 (file)
index 0000000..8c549dc
--- /dev/null
@@ -0,0 +1,23 @@
+--- pthreads_ref/pthread.h
++++ pthreads/pthread.h
+@@ -204,6 +204,10 @@
+  */
+ typedef unsigned long DWORD_PTR;
+ typedef unsigned long ULONG_PTR;
++
++#endif
++#if defined(_MSC_VER) && _MSC_VER >= 1900 && !defined(_CRT_NO_TIME_T)
++#define _TIMESPEC_DEFINED
+ #endif
+ /*
+--- pthreads_ref/pthread.vcxproj
++++ pthreads/pthread.vcxproj
+@@ -22,6 +22,7 @@
+     <SccProjectName />
+     <SccLocalPath />
+     <ProjectGuid>{12B9B46C-5D0F-4D41-9BCD-BFF77C6EC953}</ProjectGuid>
++    <WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
+   </PropertyGroup>
+   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
diff --git a/products/patches/pv_coincident.patch b/products/patches/pv_coincident.patch
new file mode 100644 (file)
index 0000000..2c38df6
--- /dev/null
@@ -0,0 +1,161 @@
+diff -Naur ParaView-5.8.0_SRC_orig/Remoting/Views/Resources/utilities_remotingviews.xml ParaView-5.8.0_SRC_modif/Remoting/Views/Resources/utilities_remotingviews.xml
+--- ParaView-5.8.0_SRC_orig/Remoting/Views/Resources/utilities_remotingviews.xml       2020-03-23 13:30:04.000000000 +0300
++++ ParaView-5.8.0_SRC_modif/Remoting/Views/Resources/utilities_remotingviews.xml      2020-04-27 19:07:56.559333300 +0300
+@@ -31,7 +31,7 @@
+       <DoubleVectorProperty name="PolygonOffsetParameters"
+         command="SetPolygonOffsetParameters"
+         number_of_elements="2"
+-        default_values="0.0 0.0"
++        default_values="2.0 2.0"
+         panel_visibility="advanced">
+         <DoubleRangeDomain name="range" />
+         <Documentation>
+@@ -51,7 +51,7 @@
+       <DoubleVectorProperty name="LineOffsetParameters"
+         command="SetLineOffsetParameters"
+         number_of_elements="2"
+-        default_values="0.0 -4"
++        default_values="1.0 1.0"
+         panel_visibility="advanced">
+         <DoubleRangeDomain name="range" />
+         <Documentation>
+@@ -66,7 +66,7 @@
+       <DoubleVectorProperty name="PointOffsetParameter"
+         command="SetPointOffsetParameter"
+         number_of_elements="1"
+-        default_values="-8"
++        default_values="0"
+         panel_visibility="advanced">
+         <DoubleRangeDomain name="range" />
+         <Documentation>
+diff -Naur ParaView-5.8.0_SRC_orig/VTK/Rendering/Core/vtkMapper.cxx ParaView-5.8.0_SRC_modif/VTK/Rendering/Core/vtkMapper.cxx
+--- ParaView-5.8.0_SRC_orig/VTK/Rendering/Core/vtkMapper.cxx   2020-03-23 13:31:28.000000000 +0300
++++ ParaView-5.8.0_SRC_modif/VTK/Rendering/Core/vtkMapper.cxx  2020-04-27 18:07:54.639203400 +0300
+@@ -35,11 +35,11 @@
+ static double vtkMapperGlobalResolveCoincidentTopologyZShift = 0.01;
+ static int vtkMapperGlobalResolveCoincidentTopologyPolygonOffsetFaces = 1;
+-static double vtkMapperGlobalResolveCoincidentTopologyPolygonOffsetFactor = 0.0;
+-static double vtkMapperGlobalResolveCoincidentTopologyPolygonOffsetUnits = 0.0;
+-static double vtkMapperGlobalResolveCoincidentTopologyLineOffsetFactor = 0.0;
+-static double vtkMapperGlobalResolveCoincidentTopologyLineOffsetUnits = -4.0;
+-static double vtkMapperGlobalResolveCoincidentTopologyPointOffsetUnits = -8.0;
++static double vtkMapperGlobalResolveCoincidentTopologyPolygonOffsetFactor = 2.0;
++static double vtkMapperGlobalResolveCoincidentTopologyPolygonOffsetUnits = 2.0;
++static double vtkMapperGlobalResolveCoincidentTopologyLineOffsetFactor = 1.0;
++static double vtkMapperGlobalResolveCoincidentTopologyLineOffsetUnits = 1.0;
++static double vtkMapperGlobalResolveCoincidentTopologyPointOffsetUnits = 0.0;
+ // Construct with initial range (0,1).
+ vtkMapper::vtkMapper()
+diff -Naur ParaView-5.8.0_SRC_orig/VTK/Rendering/OpenGL2/vtkOpenGLPolyDataMapper.cxx ParaView-5.8.0_SRC_modif/VTK/Rendering/OpenGL2/vtkOpenGLPolyDataMapper.cxx
+--- ParaView-5.8.0_SRC_orig/VTK/Rendering/OpenGL2/vtkOpenGLPolyDataMapper.cxx  2020-03-23 13:31:28.000000000 +0300
++++ ParaView-5.8.0_SRC_modif/VTK/Rendering/OpenGL2/vtkOpenGLPolyDataMapper.cxx 2020-04-27 18:12:49.486483700 +0300
+@@ -1963,7 +1963,6 @@
+   float factor = 0.0;
+   float offset = 0.0;
+   this->GetCoincidentParameters(ren, actor, factor, offset);
+-  vtkOpenGLCamera* cam = (vtkOpenGLCamera*)(ren->GetActiveCamera());
+   // if we need an offset handle it here
+   // The value of .000016 is suitable for depth buffers
+@@ -1974,23 +1973,26 @@
+   {
+     std::string FSSource = shaders[vtkShader::Fragment]->GetSource();
+-    if (cam->GetParallelProjection())
++    if (factor != 0.0)
+     {
+-      vtkShaderProgram::Substitute(FSSource, "//VTK::Coincident::Dec", "uniform float cCValue;");
++      vtkShaderProgram::Substitute(FSSource, "//VTK::Coincident::Dec", 
++        "uniform float cfactor;\n"
++        "uniform float coffset;");
+       vtkShaderProgram::Substitute(
+-        FSSource, "//VTK::Depth::Impl", "gl_FragDepth = gl_FragCoord.z + cCValue;\n");
++        FSSource, 
++        "//VTK::UniformFlow::Impl",
++        "float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));\n"
++        "  //VTK::UniformFlow::Impl\n" // for other replacements
++        );
++        vtkShaderProgram::Substitute(FSSource, "//VTK::Depth::Impl",
++        "gl_FragDepth = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;\n");
+     }
+     else
+     {
+       vtkShaderProgram::Substitute(FSSource, "//VTK::Coincident::Dec",
+-        "uniform float cCValue;\n"
+-        "uniform float cSValue;\n"
+-        "uniform float cDValue;");
+-      vtkShaderProgram::Substitute(FSSource, "//VTK::Depth::Impl",
+-        "float Zdc = gl_FragCoord.z*2.0 - 1.0;\n"
+-        "  float Z2 = -1.0*cDValue/(Zdc + cCValue) + cSValue;\n"
+-        "  float Zdc2 = -1.0*cCValue - cDValue/Z2;\n"
+-        "  gl_FragDepth = Zdc2*0.5 + 0.5;\n");
++        "uniform float coffset;");
++      vtkShaderProgram::Substitute(
++        FSSource, "//VTK::Depth::Impl", "gl_FragDepth = gl_FragCoord.z + 0.000016*coffset;\n");
+     }
+     shaders[vtkShader::Fragment]->SetSource(FSSource);
+   }
+@@ -2110,14 +2112,12 @@
+   // Have the renderpasses changed?
+   vtkMTimeType renderPassMTime = this->GetRenderPassStageMTime(actor);
+-  vtkOpenGLCamera* cam = (vtkOpenGLCamera*)(ren->GetActiveCamera());
+-
+   // shape of input data changed?
+   float factor, offset;
+   this->GetCoincidentParameters(ren, actor, factor, offset);
+   unsigned int scv = (this->CurrentInput->GetPointData()->GetNormals() ? 0x01 : 0) +
+     (this->HaveCellScalars ? 0x02 : 0) + (this->HaveCellNormals ? 0x04 : 0) +
+-    ((cam->GetParallelProjection() != 0.0) ? 0x08 : 0) + ((offset != 0.0) ? 0x10 : 0) +
++    ((factor != 0.0) ? 0x08 : 0) + ((offset != 0.0) ? 0x10 : 0) +
+     (this->VBOs->GetNumberOfComponents("scalarColor") ? 0x20 : 0) +
+     ((this->VBOs->GetNumberOfComponents("tcoord") % 4) << 6);
+@@ -2381,6 +2381,19 @@
+     lineWidth[1] = 2.0 * actor->GetProperty()->GetLineWidth() / vp[3];
+     cellBO.Program->SetUniform2f("lineWidthNVC", lineWidth);
+   }
++  
++  // handle coincident
++  if (cellBO.Program->IsUniformUsed("coffset"))
++  {
++    float factor, offset;
++    this->GetCoincidentParameters(ren, actor,factor,offset);
++    cellBO.Program->SetUniformf("coffset",offset);
++    // cfactor isn't always used when coffset is.
++    if (cellBO.Program->IsUniformUsed("cfactor"))
++    {
++      cellBO.Program->SetUniformf("cfactor", factor);
++    }
++  }
+ }
+ //-----------------------------------------------------------------------------
+@@ -2436,25 +2449,6 @@
+     }
+   }
+-  // handle coincident
+-  if (cellBO.Program->IsUniformUsed("cCValue"))
+-  {
+-    float diag = actor->GetLength();
+-    float factor, offset;
+-    this->GetCoincidentParameters(ren, actor, factor, offset);
+-    if (cam->GetParallelProjection())
+-    {
+-      // one unit of offset is based on 1/1000 of bounding length
+-      cellBO.Program->SetUniformf("cCValue", -2.0 * 0.001 * diag * offset * vcdc->GetElement(2, 2));
+-    }
+-    else
+-    {
+-      cellBO.Program->SetUniformf("cCValue", vcdc->GetElement(2, 2));
+-      cellBO.Program->SetUniformf("cDValue", vcdc->GetElement(3, 2));
+-      cellBO.Program->SetUniformf("cSValue", -0.001 * diag * offset);
+-    }
+-  }
+-
+   // If the VBO coordinates were shifted and scaled, apply the inverse transform
+   // to the model->view matrix:
+   vtkOpenGLVertexBufferObject* vvbo = this->VBOs->GetVBO("vertexMC");
diff --git a/products/patches/qt-4.8.4-enable-webkit-compilation-whith-gcc5.patch b/products/patches/qt-4.8.4-enable-webkit-compilation-whith-gcc5.patch
new file mode 100644 (file)
index 0000000..9b2e14b
--- /dev/null
@@ -0,0 +1,12 @@
+diff -rupN qt-4.8.4_old/configure qt-4.8.4_new/configure
+--- qt-4.8.4_old/configure     2012-11-23 11:11:23.000000000 +0100
++++ qt-4.8.4_new/configure     2015-07-02 10:04:54.286480668 +0200
+@@ -7666,7 +7666,7 @@ case "$XPLATFORM" in
+     *-g++*)
+       # Check gcc's version
+       case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in
+-          4*|3.4*)
++          4*|3.4*|5*)
+               ;;
+             3.3*)
+                 canBuildWebKit="no"
diff --git a/products/patches/qt-463-gcc46.patch b/products/patches/qt-463-gcc46.patch
new file mode 100755 (executable)
index 0000000..d82e7c0
--- /dev/null
@@ -0,0 +1,11 @@
+diff -ru qt-everywhere-opensource-src-4.6.3/config.tests/unix/stl/stltest.cpp Qt-463/config.tests/unix/stl/stltest.cpp
+--- qt-everywhere-opensource-src-4.6.3/config.tests/unix/stl/stltest.cpp       2010-06-02 04:03:18.000000000 +0200
++++ Qt-463/config.tests/unix/stl/stltest.cpp   2011-05-11 10:23:35.968238594 +0200
+@@ -49,6 +49,7 @@
+ #include <vector>
+ #include <algorithm>
+ #include <iostream>
++#include <cstddef>
+ // something mean to see if the compiler and C++ standard lib are good enough
+ template<class K, class T>
diff --git a/products/patches/qt-5.5.1-qlockfile.patch b/products/patches/qt-5.5.1-qlockfile.patch
new file mode 100644 (file)
index 0000000..fe863eb
--- /dev/null
@@ -0,0 +1,116 @@
+diff -Naur --exclude=CVS --exclude=.git qt-everywhere-opensource-src-5.5.1/qtbase/src/corelib/io/qlockfile_p.h qt-everywhere-opensource-src-5.5.1-patched/qtbase/src/corelib/io/qlockfile_p.h
+--- qt-everywhere-opensource-src-5.5.1/qtbase/src/corelib/io/qlockfile_p.h     2015-10-13 07:35:31.000000000 +0300
++++ qt-everywhere-opensource-src-5.5.1-patched/qtbase/src/corelib/io/qlockfile_p.h     2016-01-29 11:53:10.000000000 +0300
+@@ -78,7 +78,7 @@
+     static QString processNameByPid(qint64 pid);
+ #ifdef Q_OS_UNIX
+-    static int checkFcntlWorksAfterFlock();
++    static int checkFcntlWorksAfterFlock(const QString &fn);
+ #endif
+     QString fileName;
+diff -Naur --exclude=CVS --exclude=.git qt-everywhere-opensource-src-5.5.1/qtbase/src/corelib/io/qlockfile_unix.cpp qt-everywhere-opensource-src-5.5.1-patched/qtbase/src/corelib/io/qlockfile_unix.cpp
+--- qt-everywhere-opensource-src-5.5.1/qtbase/src/corelib/io/qlockfile_unix.cpp        2015-10-13 07:35:31.000000000 +0300
++++ qt-everywhere-opensource-src-5.5.1-patched/qtbase/src/corelib/io/qlockfile_unix.cpp        2016-01-29 11:53:10.000000000 +0300
+@@ -39,6 +39,10 @@
+ #include "QtCore/qfileinfo.h"
+ #include "QtCore/qdebug.h"
+ #include "QtCore/qdatetime.h"
++#include "QtCore/qfileinfo.h"
++#include "QtCore/qcache.h"
++#include "QtCore/qglobalstatic.h"
++#include "QtCore/qmutex.h"
+ #include "private/qcore_unix_p.h" // qt_safe_open
+ #include "private/qabstractfileengine_p.h"
+@@ -89,10 +93,10 @@
+     return pos;
+ }
+-int QLockFilePrivate::checkFcntlWorksAfterFlock()
++int QLockFilePrivate::checkFcntlWorksAfterFlock(const QString &fn)
+ {
+ #ifndef QT_NO_TEMPORARYFILE
+-    QTemporaryFile file;
++    QTemporaryFile file(fn);
+     if (!file.open())
+         return 0;
+     const int fd = file.d_func()->engine()->handle();
+@@ -114,24 +118,34 @@
+ #endif
+ }
+-static QBasicAtomicInt fcntlOK = Q_BASIC_ATOMIC_INITIALIZER(-1);
++// Cache the result of checkFcntlWorksAfterFlock for each directory a lock
++// file is created in because in some filesystems, like NFS, both locks
++// are the same.  This does not take into account a filesystem changing.
++// QCache is set to hold a maximum of 10 entries, this is to avoid unbounded
++// growth, this is caching directories of files and it is assumed a low number
++// will be sufficient.
++typedef QCache<QString, bool> CacheType;
++Q_GLOBAL_STATIC_WITH_ARGS(CacheType, fcntlOK, (10));
++static QBasicMutex fcntlLock;
+ /*!
+   \internal
+   Checks that the OS isn't using POSIX locks to emulate flock().
+   OS X is one of those.
+ */
+-static bool fcntlWorksAfterFlock()
++static bool fcntlWorksAfterFlock(const QString &fn)
+ {
+-    int value = fcntlOK.load();
+-    if (Q_UNLIKELY(value == -1)) {
+-        value = QLockFilePrivate::checkFcntlWorksAfterFlock();
+-        fcntlOK.store(value);
++    QMutexLocker lock(&fcntlLock);
++    bool *worksPtr = fcntlOK->object(fn);
++    if (!worksPtr) {
++        worksPtr = new bool(QLockFilePrivate::checkFcntlWorksAfterFlock(fn));
++        fcntlOK->insert(fn, worksPtr);
+     }
+-    return value == 1;
++
++    return *worksPtr;
+ }
+-static bool setNativeLocks(int fd)
++static bool setNativeLocks(const QString &fileName, int fd)
+ {
+ #if defined(LOCK_EX) && defined(LOCK_NB)
+     if (flock(fd, LOCK_EX | LOCK_NB) == -1) // other threads, and other processes on a local fs
+@@ -143,8 +157,10 @@
+     flockData.l_start = 0;
+     flockData.l_len = 0; // 0 = entire file
+     flockData.l_pid = getpid();
+-    if (fcntlWorksAfterFlock() && fcntl(fd, F_SETLK, &flockData) == -1) // for networked filesystems
++    if (fcntlWorksAfterFlock(QDir::cleanPath(QFileInfo(fileName).absolutePath()) + QString('/'))
++        && fcntl(fd, F_SETLK, &flockData) == -1) { // for networked filesystems
+         return false;
++    }
+     return true;
+ }
+@@ -171,8 +187,10 @@
+         }
+     }
+     // Ensure nobody else can delete the file while we have it
+-    if (!setNativeLocks(fd))
+-        qWarning() << "setNativeLocks failed:" << strerror(errno);
++    if (!setNativeLocks(fileName, fd)) {
++        const int errnoSaved = errno;
++        qWarning() << "setNativeLocks failed:" << qt_error_string(errnoSaved);
++    }
+     if (qt_write_loop(fd, fileData.constData(), fileData.size()) < fileData.size()) {
+         close(fd);
+@@ -193,7 +211,7 @@
+     const int fd = qt_safe_open(lockFileName.constData(), O_WRONLY, 0644);
+     if (fd < 0) // gone already?
+         return false;
+-    bool success = setNativeLocks(fd) && (::unlink(lockFileName) == 0);
++    bool success = setNativeLocks(fileName, fd) && (::unlink(lockFileName) == 0);
+     close(fd);
+     return success;
+ }
diff --git a/products/patches/qt-5.9.1-UB20-FD32-socketcanbackend.patch b/products/patches/qt-5.9.1-UB20-FD32-socketcanbackend.patch
new file mode 100644 (file)
index 0000000..ddbd3d9
--- /dev/null
@@ -0,0 +1,10 @@
+--- qt_ref/qtserialbus/src/plugins/canbus/socketcan/socketcanbackend.h 2020-09-17 15:55:49.189400916 +0200
++++ qt/qtserialbus/src/plugins/canbus/socketcan/socketcanbackend.h     2020-09-17 15:57:23.325190527 +0200
+@@ -37,6 +37,7 @@
+ #ifndef SOCKETCANBACKEND_H
+ #define SOCKETCANBACKEND_H
++#include <linux/sockios.h>
+ #include <QtSerialBus/qcanbusframe.h>
+ #include <QtSerialBus/qcanbusdevice.h>
+ #include <QtSerialBus/qcanbusdeviceinfo.h>
diff --git a/products/patches/qt-5.9.1-mapbox-FD32.patch b/products/patches/qt-5.9.1-mapbox-FD32.patch
new file mode 100644 (file)
index 0000000..48829b2
--- /dev/null
@@ -0,0 +1,33 @@
+diff -rupN qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/convert.hpp qt/qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/convert.hpp
+--- qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/convert.hpp      2020-09-22 09:51:10.824285795 +0200
++++ qt/qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/convert.hpp  2020-09-22 12:36:07.546531484 +0200
+@@ -3,7 +3,7 @@
+ #include <array>
+ #include <type_traits>
+ #include <utility>
+-
++#include <stdint.h>
+ namespace mbgl {
+ namespace util {
+diff -rupN qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp qt/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp
+--- qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp  2020-09-22 09:51:10.850286258 +0200
++++ qt/qtlocation/src/3rdparty/mapbox-gl-native/platform/default/bidi.cpp      2020-09-22 12:39:55.042544429 +0200
+@@ -5,6 +5,7 @@
+ #include <unicode/ushape.h>
+ #include <memory>
++#include <stdexcept>
+ namespace mbgl {
+diff -rupN qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/platform/qt/src/bidi.cpp qt/qtlocation/src/3rdparty/mapbox-gl-native/platform/qt/src/bidi.cpp
+--- qt_ref/qtlocation/src/3rdparty/mapbox-gl-native/platform/qt/src/bidi.cpp   2020-09-22 09:51:10.903287202 +0200
++++ qt/qtlocation/src/3rdparty/mapbox-gl-native/platform/qt/src/bidi.cpp       2020-09-22 12:40:52.602559767 +0200
+@@ -1,5 +1,5 @@
+ #include <memory>
+-
++#include <stdexcept>
+ #include <mbgl/text/bidi.hpp>
+ #include <QString>
diff --git a/products/patches/qt_5.5.1-qwebengine.patch b/products/patches/qt_5.5.1-qwebengine.patch
new file mode 100644 (file)
index 0000000..e6cc031
--- /dev/null
@@ -0,0 +1,25 @@
+diff -Naur qt-5.5.1_SRC_orig/qtwebengine/src/3rdparty/chromium/mojo/public/c/system/macros.h qt-5.5.1_SRC_modif/qtwebengine/src/3rdparty/chromium/mojo/public/c/system/macros.h
+--- qt-5.5.1_SRC_orig/qtwebengine/src/3rdparty/chromium/mojo/public/c/system/macros.h  2015-10-13 07:35:48.000000000 +0300
++++ qt-5.5.1_SRC_modif/qtwebengine/src/3rdparty/chromium/mojo/public/c/system/macros.h 2015-12-23 11:18:45.000000000 +0300
+@@ -66,10 +66,18 @@
+ // Unlike the C++11 |alignas()|, |alignment| must be an integer. It may not be a
+ // type, nor can it be an expression like |MOJO_ALIGNOF(type)| (due to the
+ // non-C++11 MSVS version).
+-#if __cplusplus >= 201103L
++#if defined(__GNUC__)
++  #if (__GNUC__<=4) and (_GNUC_MINOR__<= 7)
++    #define MOJO_ALIGNAS(alignment) __attribute__((aligned(alignment)))
++  #else
++    #if __cplusplus >= 201103L
++     #define MOJO_ALIGNAS(alignment) alignas(alignment)
++    #else
++     #define MOJO_ALIGNAS(alignment) __attribute__((aligned(alignment)))
++    #endif
++  #endif
++#elif __cplusplus >= 201103L
+ #define MOJO_ALIGNAS(alignment) alignas(alignment)
+-#elif defined(__GNUC__)
+-#define MOJO_ALIGNAS(alignment) __attribute__((aligned(alignment)))
+ #elif defined(_MSC_VER)
+ #define MOJO_ALIGNAS(alignment) __declspec(align(alignment))
+ #else
diff --git a/products/patches/remove-windows-python-subprojects.patch b/products/patches/remove-windows-python-subprojects.patch
new file mode 100755 (executable)
index 0000000..fcfba6d
--- /dev/null
@@ -0,0 +1,69 @@
+diff -rupN Python-2.7.3/PCbuild/pcbuild.sln Python-2.7.3_NEW/PCbuild/pcbuild.sln\r
+--- Python-2.7.3/PCbuild/pcbuild.sln   2012-04-10 01:07:35.000000000 +0200\r
++++ Python-2.7.3_NEW/PCbuild/pcbuild.sln       2015-06-17 14:50:34.674755000 +0200\r
+@@ -38,12 +38,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C9\r
+               {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
+       EndProjectSection\r
+ EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bsddb", "_bsddb.vcproj", "{B4D38F3F-68FB-42EC-A45D-E00657BB3627}"\r
+-      ProjectSection(ProjectDependencies) = postProject\r
+-              {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}\r
+-              {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
+-      EndProjectSection\r
+-EndProject\r
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes", "_ctypes.vcproj", "{0E9791DB-593A-465F-98BC-681011311618}"\r
+       ProjectSection(ProjectDependencies) = postProject\r
+               {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
+@@ -69,34 +63,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C9\r
+               {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
+       EndProjectSection\r
+ EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcproj", "{13CECB97-4119-4316-9D42-8534019A5A44}"\r
+-      ProjectSection(ProjectDependencies) = postProject\r
+-              {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
+-              {A1A295E5-463C-437F-81CA-1F32367685DA} = {A1A295E5-463C-437F-81CA-1F32367685DA}\r
+-      EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcproj", "{C6E20F84-3247-4AD6-B051-B073268F73BA}"\r
+-      ProjectSection(ProjectDependencies) = postProject\r
+-              {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}\r
+-              {86937F53-C189-40EF-8CE8-8759D8E7D480} = {86937F53-C189-40EF-8CE8-8759D8E7D480}\r
+-              {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
+-      EndProjectSection\r
+-EndProject\r
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcproj", "{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}"\r
+       ProjectSection(ProjectDependencies) = postProject\r
+               {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
+       EndProjectSection\r
+ EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcproj", "{4946ECAC-2E69-4BF8-A90A-F5136F5094DF}"\r
+-      ProjectSection(ProjectDependencies) = postProject\r
+-              {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
+-      EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bz2", "bz2.vcproj", "{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}"\r
+-      ProjectSection(ProjectDependencies) = postProject\r
+-              {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
+-      EndProjectSection\r
+-EndProject\r
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcproj", "{18CAE28C-B454-46C1-87A0-493D91D97F03}"\r
+       ProjectSection(ProjectDependencies) = postProject\r
+               {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
+@@ -114,17 +85,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C9\r
+ EndProject\r
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdist_wininst", "bdist_wininst.vcproj", "{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}"\r
+ EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcproj", "{447F05A8-F581-4CAC-A466-5AC7936E207E}"\r
+-      ProjectSection(ProjectDependencies) = postProject\r
+-              {B11D750F-CD1F-4A96-85CE-E69A5C5259F9} = {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}\r
+-              {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
+-      EndProjectSection\r
+-EndProject\r
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcproj", "{A1A295E5-463C-437F-81CA-1F32367685DA}"\r
+-      ProjectSection(ProjectDependencies) = postProject\r
+-              {6DE10744-E396-40A5-B4E2-1B69AA7C8D31} = {6DE10744-E396-40A5-B4E2-1B69AA7C8D31}\r
+-      EndProjectSection\r
+-EndProject\r
+ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multiprocessing.vcproj", "{9E48B300-37D1-11DD-8C41-005056C00008}"\r
+       ProjectSection(ProjectDependencies) = postProject\r
+               {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26} = {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}\r
diff --git a/products/patches/scipy-0.13.3.patch b/products/patches/scipy-0.13.3.patch
new file mode 100755 (executable)
index 0000000..f34f9d6
--- /dev/null
@@ -0,0 +1,38 @@
+--- scipy-0.13.3.old/scipy/_build_utils/_fortran.py    2014-02-04 05:56:48.000000000 +0100
++++ scipy-0.13.3/scipy/_build_utils/_fortran.py        2014-09-09 10:14:33.868172555 +0200
+@@ -9,12 +9,12 @@ __all__ = ['needs_g77_abi_wrapper', 'spl
+ def _uses_veclib(info):
+-    r_accelerate = re.compile("Accelerate|vecLib")
++    #r_accelerate = re.compile("Accelerate|vecLib")
+-    extra_link_args = info.get('extra_link_args', '')
+-    for arg in extra_link_args:
+-        if r_accelerate.search(arg):
+-            return True
++    #extra_link_args = info.get('extra_link_args', '')
++    #for arg in extra_link_args:
++    #    if r_accelerate.search(arg):
++    #        return True
+     return False
+@@ -22,12 +22,12 @@ def uses_accelerate(info):
+     return _uses_veclib(info)
+ def uses_mkl(info):
+-    r_mkl = re.compile("mkl_core")
++    #r_mkl = re.compile("mkl_core")
+-    libraries = info.get('libraries', '')
+-    for library in libraries:
+-        if r_mkl.search(library):
+-            return True
++    #libraries = info.get('libraries', '')
++    #for library in libraries:
++    #    if r_mkl.search(library):
++    #        return True
+     return False
diff --git a/products/patches/scipy-0.14.1.patch b/products/patches/scipy-0.14.1.patch
new file mode 100644 (file)
index 0000000..046c10b
--- /dev/null
@@ -0,0 +1,37 @@
+diff -rupN scipy-0.14.1_old/scipy/_build_utils/_fortran.py scipy-0.14.1_new/scipy/_build_utils/_fortran.py
+--- scipy-0.14.1_old/scipy/_build_utils/_fortran.py    2014-11-23 21:41:04.000000000 +0100
++++ scipy-0.14.1_new/scipy/_build_utils/_fortran.py    2015-04-02 10:04:31.334629000 +0200
+@@ -13,11 +13,11 @@ __all__ = ['needs_g77_abi_wrapper', 'spl
+ def uses_veclib(info):
+     if sys.platform != "darwin":
+         return False
+-    r_accelerate = re.compile("vecLib")
+-    extra_link_args = info.get('extra_link_args', '')
+-    for arg in extra_link_args:
+-        if r_accelerate.search(arg):
+-            return True
++    #r_accelerate = re.compile("vecLib")
++    #extra_link_args = info.get('extra_link_args', '')
++    #for arg in extra_link_args:
++    #    if r_accelerate.search(arg):
++    #        return True
+     return False
+@@ -33,11 +33,11 @@ def uses_accelerate(info):
+ def uses_mkl(info):
+-    r_mkl = re.compile("mkl_core")
+-    libraries = info.get('libraries', '')
+-    for library in libraries:
+-        if r_mkl.search(library):
+-            return True
++    #r_mkl = re.compile("mkl_core")
++    #libraries = info.get('libraries', '')
++    #for library in libraries:
++    #    if r_mkl.search(library):
++    #        return True
+     return False
diff --git a/products/patches/sphinx_rtd_theme-0.1.9_no_dependence_sphinx.patch b/products/patches/sphinx_rtd_theme-0.1.9_no_dependence_sphinx.patch
new file mode 100644 (file)
index 0000000..bf4d4d5
--- /dev/null
@@ -0,0 +1,5 @@
+diff -pruN sphinx_rtd_theme-0.1.9_OLD/requirements.txt sphinx_rtd_theme-0.1.9/requirements.txt
+--- sphinx_rtd_theme-0.1.9_OLD/requirements.txt        2015-11-20 14:31:27.184306650 +0100
++++ sphinx_rtd_theme-0.1.9/requirements.txt    2015-11-20 14:32:03.492486693 +0100
+@@ -1 +0,0 @@
+-sphinx>=1.3
diff --git a/products/patches/tbb-2019_U8_windows10.patch b/products/patches/tbb-2019_U8_windows10.patch
new file mode 100644 (file)
index 0000000..7e8bb0e
--- /dev/null
@@ -0,0 +1,38 @@
+--- tbb_ref/build/build.py
++++ tbb/build/build.py
+@@ -109,12 +109,10 @@
+     if is_win and args.msbuild:
+         preview_release_dir = release_dir = jp(args.tbbroot, 'build', 'vs'+args.vs, args.vs_platform, 'Release')
+         if not args.no_rebuild or not os.path.isdir(release_dir):
+-            assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Release %s build/vs%s/makefile.sln'% \
+-                            (args.vs_platform, args.build_args, args.vs)) == 0
++            assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Release %s build/vs%s/makefile.sln'%(args.vs_platform, args.build_args, args.vs)) == 0
+         preview_debug_dir = debug_dir = jp(args.tbbroot, 'build', 'vs'+args.vs, args.vs_platform, 'Debug')
+         if not args.no_rebuild or not os.path.isdir(debug_dir):
+-            assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Debug %s build/vs%s/makefile.sln'% \
+-                            (args.vs_platform, args.build_args, args.vs)) == 0
++            assert os.system('msbuild /m /p:Platform=%s /p:Configuration=Debug %s build/vs%s/makefile.sln'%(args.vs_platform, args.build_args, args.vs)) == 0
+     else:
+         release_dir = jp(args.tbbroot, 'build', args.build_prefix+'_release')
+         debug_dir = jp(args.tbbroot, 'build', args.build_prefix+'_debug')
+@@ -198,7 +196,7 @@
+     paths = [os.path.abspath(d) for d in [args.prefix, inc_dir, irml_dir, lib_dir]+release_dirs]
+     os.environ["TBBROOT"] = paths[0]
+     # all the paths must be relative to python/ directory or be absolute
+-    assert system('python python/setup.py build -b%s build_ext -I%s -L%s install -f'% \
+-        (paths[2], paths[1], ':'.join(paths[2:]))) == 0
++    assert system('python python/setup.py build -b%s build_ext -I%s -L%s install -f --prefix=%s'% \
++        (paths[2], paths[1], ':'.join(paths[2:]), args.prefix)) == 0
+ print("done")
+--- tbb_ref/build/windows.inc
++++ tbb/build/windows.inc
+@@ -12,7 +12,7 @@
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+-export SHELL = cmd
++export shell = cmd
+ ifdef tbb_build_dir
+   test_dir:=$(tbb_build_dir)
diff --git a/products/patches/tcl-8.6.9_windows.patch b/products/patches/tcl-8.6.9_windows.patch
new file mode 100644 (file)
index 0000000..55fef34
--- /dev/null
@@ -0,0 +1,99 @@
+--- tcl_ref/pkgs/itcl4.1.2/win/rules.vc
++++ tcl/pkgs/itcl4.1.2/win/rules.vc
+@@ -992,7 +992,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcl_ref/pkgs/sqlite3.25.3/win/rules.vc
++++ tcl/pkgs/sqlite3.25.3/win/rules.vc
+@@ -992,7 +992,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcl_ref/pkgs/tdbc1.1.0/win/rules.vc
++++ tcl/pkgs/tdbc1.1.0/win/rules.vc
+@@ -994,7 +994,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcl_ref/pkgs/tdbcmysql1.1.0/win/rules.vc
++++ tcl/pkgs/tdbcmysql1.1.0/win/rules.vc
+@@ -994,7 +994,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcl_ref/pkgs/tdbcodbc1.1.0/win/rules.vc
++++ tcl/pkgs/tdbcodbc1.1.0/win/rules.vc
+@@ -994,7 +994,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcl_ref/pkgs/tdbcpostgres1.1.0/win/rules.vc
++++ tcl/pkgs/tdbcpostgres1.1.0/win/rules.vc
+@@ -994,7 +994,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcl_ref/pkgs/tdbcsqlite3-1.1.0/win/rules.vc
++++ tcl/pkgs/tdbcsqlite3-1.1.0/win/rules.vc
+@@ -994,7 +994,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcl_ref/pkgs/thread2.8.4/win/rules.vc
++++ tcl/pkgs/thread2.8.4/win/rules.vc
+@@ -992,7 +992,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcl_ref/win/rules.vc
++++ tcl/win/rules.vc
+@@ -992,7 +992,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
diff --git a/products/patches/tcltk-8.6.9_windows.patch b/products/patches/tcltk-8.6.9_windows.patch
new file mode 100644 (file)
index 0000000..8daf339
--- /dev/null
@@ -0,0 +1,110 @@
+--- tcltk_ref/tcl/pkgs/itcl4.1.2/win/rules.vc
++++ tcltk/tcl/pkgs/itcl4.1.2/win/rules.vc
+@@ -992,7 +992,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcltk_ref/tcl/pkgs/sqlite3.25.3/win/rules.vc
++++ tcltk/tcl/pkgs/sqlite3.25.3/win/rules.vc
+@@ -992,7 +992,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcltk_ref/tcl/pkgs/tdbc1.1.0/win/rules.vc
++++ tcltk/tcl/pkgs/tdbc1.1.0/win/rules.vc
+@@ -994,7 +994,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcltk_ref/tcl/pkgs/tdbcmysql1.1.0/win/rules.vc
++++ tcltk/tcl/pkgs/tdbcmysql1.1.0/win/rules.vc
+@@ -994,7 +994,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcltk_ref/tcl/pkgs/tdbcodbc1.1.0/win/rules.vc
++++ tcltk/tcl/pkgs/tdbcodbc1.1.0/win/rules.vc
+@@ -994,7 +994,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcltk_ref/tcl/pkgs/tdbcpostgres1.1.0/win/rules.vc
++++ tcltk/tcl/pkgs/tdbcpostgres1.1.0/win/rules.vc
+@@ -994,7 +994,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcltk_ref/tcl/pkgs/tdbcsqlite3-1.1.0/win/rules.vc
++++ tcltk/tcl/pkgs/tdbcsqlite3-1.1.0/win/rules.vc
+@@ -994,7 +994,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcltk_ref/tcl/pkgs/thread2.8.4/win/rules.vc
++++ tcltk/tcl/pkgs/thread2.8.4/win/rules.vc
+@@ -992,7 +992,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcltk_ref/tcl/win/rules.vc
++++ tcltk/tcl/win/rules.vc
+@@ -992,7 +992,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
+--- tcltk_ref/tk/win/rules.vc
++++ tcltk/tk/win/rules.vc
+@@ -992,7 +992,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
diff --git a/products/patches/tk-8.6.9_windows.patch b/products/patches/tk-8.6.9_windows.patch
new file mode 100644 (file)
index 0000000..e60e501
--- /dev/null
@@ -0,0 +1,11 @@
+--- tk_ref/win/rules.vc
++++ tk/win/rules.vc
+@@ -992,7 +992,7 @@
+ # PRJSTUBLIB - output path of the generated project stubs library
+ # RESFILE - output resource file (only if not static build)
+-SUFX      = tsgx
++SUFX      = 
+ !if $(DEBUG)
+ BUILDDIRTOP = Debug
diff --git a/products/patches/xdata-0.9.11.patch b/products/patches/xdata-0.9.11.patch
new file mode 100644 (file)
index 0000000..330c675
--- /dev/null
@@ -0,0 +1,42 @@
+diff -Naur --exclude=CVS --exclude=.git xdata-0.9.11_SRC.orig/src/XDATA2SALOME/xsalome.py xdata-0.9.11_SRC/src/XDATA2SALOME/xsalome.py
+--- xdata-0.9.11_SRC.orig/src/XDATA2SALOME/xsalome.py  2011-10-03 12:07:33.000000000 +0400
++++ xdata-0.9.11_SRC/src/XDATA2SALOME/xsalome.py       2015-10-22 12:45:38.000000000 +0300
+@@ -8,6 +8,19 @@
+ # --
+ #
++def getHostName():
++    import os
++    try:
++        import socket
++        host = socket.gethostname()
++    except:
++        host = None
++        pass
++    if not host: host = os.getenv("HOSTNAME")
++    if not host: host = os.getenv("HOST")
++    if not host: host = "unknown"
++    return host
++
+ def searchFreePort():
+     print "Searching a free port for naming service:",
+     NSPORT=2810
+@@ -19,7 +32,7 @@
+         status = os.system("netstat -ltn | grep -E :%s"%(NSPORT))
+         if status:
+             home = os.environ['HOME']
+-            hostname = os.environ['HOSTNAME']
++            hostname = getHostName()
+             os.environ['OMNIORB_CONFIG'] = '%s/.omniORB_%s.cfg'%(home, NSPORT)
+             f = open(os.environ['OMNIORB_CONFIG'], "w")
+             f.write("ORBInitRef NameService=corbaname::%s:%s\n"%(hostname, NSPORT))
+@@ -163,7 +176,7 @@
+                 self.study_manager = study_manager
+                 pass
+             #
+-            theComputer = os.getenv("HOSTNAME")
++            theComputer = getHostName()
+             computerSplitName = theComputer.split('.')
+             theComputer = computerSplitName[0]
+             #
+
diff --git a/products/patches/xdata-0.9.9.python2.7.patch b/products/patches/xdata-0.9.9.python2.7.patch
new file mode 100755 (executable)
index 0000000..cd2c68e
--- /dev/null
@@ -0,0 +1,16 @@
+diff -Naur --exclude=CVS xdata-0.9.9-orig/src/XDATA2SALOME/tests/SAB_geomwrappingcorbatest.py xdata-0.9.9-patched/src/XDATA2SALOME/tests/SAB_geomwrappingcorbatest.py
+--- xdata-0.9.9-orig/src/XDATA2SALOME/tests/SAB_geomwrappingcorbatest.py       2013-03-18 21:10:35.000000000 +0400
++++ xdata-0.9.9-patched/src/XDATA2SALOME/tests/SAB_geomwrappingcorbatest.py    2013-08-02 15:10:25.000000000 +0400
+@@ -96,7 +96,11 @@
+             try:
+                 self.failUnlessEqual(exc_msg_lines[-1].strip(), 'TypeError: unsubscriptable object')
+             except AssertionError:
+-                self.failUnlessEqual(exc_msg_lines[-1].strip(), "TypeError: 'object' object is unsubscriptable")
++              try:
++                  self.failUnlessEqual(exc_msg_lines[-1].strip(), "TypeError: 'object' object is unsubscriptable")
++              except AssertionError:
++                  self.failUnlessEqual(exc_msg_lines[-1].strip(), "TypeError: 'object' object has no attribute '__getitem__'")
++                  pass
+                 pass
+             self.failUnlessEqual(exc_msg_lines[-2].strip(), 'res = a[43]')
+             pass
diff --git a/products/patches/xdata_qt.patch b/products/patches/xdata_qt.patch
new file mode 100644 (file)
index 0000000..0bdbe16
--- /dev/null
@@ -0,0 +1,23 @@
+--- xdata-0.9.11_orig/src/XDATAGUI/xqt.py 2010-09-30 16:27:40.000000000 +0200\r
++++ xdata-0.9.11/src/XDATAGUI/xqt.py   2015-07-28 14:59:02.551760564 +0200\r
+@@ -568,9 +568,16 @@\r
+     # ---------------------\r
+     \r
+     if QComboBox.insertItem.__name__ != "__x_insertItem":\r
+-        def __x_insertItem(self, text, index=-1):\r
+-            if index == -1:\r
+-                index = self.count()\r
++        def __x_insertItem(self, val1, val2=-1):\r
++            if isinstance(val1, int):\r
++                index = val1\r
++                text = val2\r
++            else:\r
++                index = val2\r
++                text = val1\r
++                if index == -1:\r
++                    index = self.count()\r
++                    pass\r
+                 pass\r
+             result = QComboBox.insertItem_orig(self, index, text)\r
+             return result\r
+\r
diff --git a/products/patches/yacs_cea_v2.patch b/products/patches/yacs_cea_v2.patch
new file mode 100644 (file)
index 0000000..abfcace
--- /dev/null
@@ -0,0 +1,12 @@
+diff -rupN YACS_orig/src/salomegui/resources/SalomeApp.xml.in YACS/src/salomegui/resources/SalomeApp.xml.in
+--- YACS_orig/src/salomegui/resources/SalomeApp.xml.in 2011-09-16 08:24:47.000000000 +0200
++++ YACS/src/salomegui/resources/SalomeApp.xml.in      2012-03-29 16:07:14.000000000 +0200
+@@ -38,7 +38,7 @@
+   <section name="YACS" >
+     <!-- Module preferences -->
+     <parameter name="font" value="Courier,9" />
+-    <parameter name="COMPONENT_INSTANCE_NEW" value="true" />
++    <parameter name="COMPONENT_INSTANCE_NEW" value="false" />
+     <parameter name="userCatalog" value="YACSUserCatalog.xml" />
+     <parameter name="autoComputeLinks" value="true" />
+     <parameter name="simplifyLink" value="false" />
diff --git a/products/patches/yacs_without_expat.patch b/products/patches/yacs_without_expat.patch
new file mode 100644 (file)
index 0000000..7cb412f
--- /dev/null
@@ -0,0 +1,23 @@
+diff -pruN YACS-orig/adm/cmake/CMakeLists.txt YACS/adm/cmake/CMakeLists.txt
+--- YACS-orig/adm/cmake/CMakeLists.txt 2014-06-23 14:36:42.695397292 +0200
++++ YACS/adm/cmake/CMakeLists.txt      2014-06-23 14:37:01.907992394 +0200
+@@ -23,8 +23,6 @@
+ # These files are data, module or lib files
+ SET(_adm_data
+-  FindExpat.cmake
+-  FindSalomeExpat.cmake
+   FindQScintilla.cmake
+   FindSalomeQScintilla.cmake
+   FindSphinx.cmake
+diff -pruN YACS-orig/adm/unix/config_files/CMakeLists.txt YACS/adm/unix/config_files/CMakeLists.txt
+--- YACS-orig/adm/unix/config_files/CMakeLists.txt     2014-06-23 14:36:42.695397292 +0200
++++ YACS/adm/unix/config_files/CMakeLists.txt  2014-06-23 14:36:54.691768877 +0200
+@@ -25,7 +25,6 @@ SET(_m4_data
+   check_boost.m4
+   check_cas.m4
+   check_cppunit.m4
+-  check_expat.m4
+   check_htmlgen.m4
+   check_libxml.m4
+   check_omniorb.m4
diff --git a/products/patches/yacsgen_7_8_med_medcoupling.patch b/products/patches/yacsgen_7_8_med_medcoupling.patch
new file mode 100644 (file)
index 0000000..2286728
--- /dev/null
@@ -0,0 +1,49 @@
+diff -rupN YACSGEN_ori/module_generator/gener.py YACSGEN_new/module_generator/gener.py\r
+--- YACSGEN_ori/module_generator/gener.py      2017-01-18 15:12:06.603950115 +0100\r
++++ YACSGEN_new/module_generator/gener.py      2017-01-20 11:00:42.912760405 +0100\r
+@@ -438,8 +438,30 @@ class Generator(object):\r
+     prefix = os.path.abspath(self.module.prefix)\r
+     component_libs = "".join(map(lambda x: x.libraryName()+" ",\r
+                                            module.components))\r
+-    add_modules = "".join(map(lambda x:cmake_find_module.substitute(module=x),\r
+-                                       self.used_modules))\r
++    add_modules = ""\r
++    for x in self.used_modules:\r
++      cmake_text = cmake_find_module.substitute(module=x)\r
++      if x == "MED":\r
++        cmake_text += """\r
++\r
++#####################################\r
++# FIND MEDCOUPLING\r
++#####################################\r
++SET(MEDCOUPLING_ROOT_DIR $ENV{MEDCOUPLING_ROOT_DIR} CACHE PATH "Path to MEDCOUPLING module")\r
++IF(EXISTS ${MEDCOUPLING_ROOT_DIR})\r
++  LIST(APPEND CMAKE_MODULE_PATH "${MEDCOUPLING_ROOT_DIR}/cmake_files")\r
++  FIND_PACKAGE(SalomeMEDCoupling REQUIRED)\r
++  ADD_DEFINITIONS(${MEDCOUPLING_DEFINITIONS})\r
++  INCLUDE_DIRECTORIES(${MEDCOUPLING_INCLUDE_DIRS})\r
++ELSE(EXISTS ${MEDCOUPLING_ROOT_DIR})\r
++  MESSAGE(FATAL_ERROR "We absolutely need MEDCOUPLING module, please define MEDCOUPLING_ROOT_DIR")\r
++ENDIF(EXISTS ${MEDCOUPLING_ROOT_DIR})\r
++#####################################\r
++\r
++"""\r
++      add_modules = add_modules + cmake_text\r
++      pass\r
++\r
+     self.makeFiles({"CMakeLists.txt":cmake_root_cpp.substitute(\r
+                                                  module=self.module.name,\r
+                                                  module_min=self.module.name.lower(),\r
+diff -rupN YACSGEN_ori/module_generator/hxxcompo.py YACSGEN_new/module_generator/hxxcompo.py\r
+--- YACSGEN_ori/module_generator/hxxcompo.py   2017-01-18 15:12:06.608950285 +0100\r
++++ YACSGEN_new/module_generator/hxxcompo.py   2017-01-20 11:00:42.913760396 +0100\r
+@@ -459,7 +459,8 @@ class HXX2SALOMEComponent(Component):\r
+       gui_xml_fr=hxxgui_xml_fr.substitute(component_name=self.name)\r
+       gui_xml_en=hxxgui_xml_en.substitute(component_name=self.name)\r
+       gui_salomeapp_gen=cppsalomeapp.substitute(module=self.name,\r
+-                                                lmodule=self.name.lower())\r
++                                                lmodule=self.name.lower(),\r
++                                                version="V0")\r
+       # for a salome component generated by hxx2salome from a c++ component, \r
+       # the documentation points at the c++ component documentation\r
+       salome_doc_path=os.path.join("%"+self.name+"_ROOT_DIR%","share",\r
diff --git a/products/patches/yacsgen_7_8_portage.patch b/products/patches/yacsgen_7_8_portage.patch
new file mode 100644 (file)
index 0000000..bb881e3
--- /dev/null
@@ -0,0 +1,63 @@
+diff --git a/module_generator/gener.py b/module_generator/gener.py
+index 3a001df..f03d799 100644
+--- a/module_generator/gener.py
++++ b/module_generator/gener.py
+@@ -438,8 +438,30 @@ class Generator(object):
+     prefix = os.path.abspath(self.module.prefix)
+     component_libs = "".join(map(lambda x: x.libraryName()+" ",
+                                            module.components))
+-    add_modules = "".join(map(lambda x:cmake_find_module.substitute(module=x),
+-                                       self.used_modules))
++    add_modules = ""
++    for x in self.used_modules:
++      cmake_text = cmake_find_module.substitute(module=x)
++      if x == "MED":
++        cmake_text += """
++
++#####################################
++# FIND MEDCOUPLING
++#####################################
++SET(MEDCOUPLING_ROOT_DIR $ENV{MEDCOUPLING_ROOT_DIR} CACHE PATH "Path to MEDCOUPLING module")
++IF(EXISTS ${MEDCOUPLING_ROOT_DIR})
++  LIST(APPEND CMAKE_MODULE_PATH "${MEDCOUPLING_ROOT_DIR}/cmake_files")
++  FIND_PACKAGE(SalomeMEDCoupling REQUIRED)
++  ADD_DEFINITIONS(${MEDCOUPLING_DEFINITIONS})
++  INCLUDE_DIRECTORIES(${MEDCOUPLING_INCLUDE_DIRS})
++ELSE(EXISTS ${MEDCOUPLING_ROOT_DIR})
++  MESSAGE(FATAL_ERROR "We absolutely need MEDCOUPLING module, please define MEDCOUPLING_ROOT_DIR")
++ENDIF(EXISTS ${MEDCOUPLING_ROOT_DIR})
++#####################################
++
++"""
++      add_modules = add_modules + cmake_text
++      pass
++
+     self.makeFiles({"CMakeLists.txt":cmake_root_cpp.substitute(
+                                                  module=self.module.name,
+                                                  module_min=self.module.name.lower(),
+@@ -801,7 +823,10 @@ class Generator(object):
+     """
+     for name, content in dic.items():
+       filename = os.path.join(basedir, name)
+-      if isinstance(content, str):
++      if isinstance(content, basestring):
++        if isinstance(content, unicode): 
++            # encodage to utf-8 if unicode string
++            content=content.encode('utf8')
+         fil =  open(filename, 'w')
+         fil.write(content)
+         fil.close()
+diff --git a/module_generator/hxxcompo.py b/module_generator/hxxcompo.py
+index 738052e..46d2f13 100644
+--- a/module_generator/hxxcompo.py
++++ b/module_generator/hxxcompo.py
+@@ -459,7 +459,8 @@ class HXX2SALOMEComponent(Component):
+       gui_xml_fr=hxxgui_xml_fr.substitute(component_name=self.name)
+       gui_xml_en=hxxgui_xml_en.substitute(component_name=self.name)
+       gui_salomeapp_gen=cppsalomeapp.substitute(module=self.name,
+-                                                lmodule=self.name.lower())
++                                                lmodule=self.name.lower(),
++                                                version="V0")
+       # for a salome component generated by hxx2salome from a c++ component, 
+       # the documentation points at the c++ component documentation
+       salome_doc_path=os.path.join("%"+self.name+"_ROOT_DIR%","share",
diff --git a/products/patches/yacsgen_hxx.patch b/products/patches/yacsgen_hxx.patch
new file mode 100644 (file)
index 0000000..b618e82
--- /dev/null
@@ -0,0 +1,151 @@
+diff --git a/module_generator/hxx_tmpl.py b/module_generator/hxx_tmpl.py
+index 48b7552..328b345 100644
+--- a/module_generator/hxx_tmpl.py
++++ b/module_generator/hxx_tmpl.py
+@@ -25,7 +25,7 @@ except:
+ cxxCompo="""
+ // this cxx file was generated by yacsgen
+ #include "${component}_i.hxx"
+-#include "${component}.hxx"
++#include "${hxxfile}"
+ using namespace std;
+ #include <string>
+ #include <vector>
+diff --git a/module_generator/hxx_tmpl_gui.py b/module_generator/hxx_tmpl_gui.py
+index cc5eff8..fae982f 100644
+--- a/module_generator/hxx_tmpl_gui.py
++++ b/module_generator/hxx_tmpl_gui.py
+@@ -58,10 +58,10 @@ ${component_name}GUI::${component_name}GUI() :
+ }
+ // Gets a reference to the module's engine
+-${component_name}_ORB::${component_name}_Gen_ptr ${component_name}GUI::Init${component_name}Gen( SalomeApp_Application* app )
++${module_name}_ORB::${component_name}_Gen_ptr ${component_name}GUI::Init${component_name}Gen( SalomeApp_Application* app )
+ {
+   Engines::EngineComponent_var comp = app->lcc()->FindOrLoad_Component( "FactoryServer",COMPONENT_NAME );
+-  ${component_name}_ORB::${component_name}_Gen_ptr clr = ${component_name}_ORB::${component_name}_Gen::_narrow(comp);
++  ${module_name}_ORB::${component_name}_Gen_ptr clr = ${module_name}_ORB::${component_name}_Gen::_narrow(comp);
+   ASSERT(!CORBA::is_nil(clr));
+   return clr;
+ }
+@@ -149,7 +149,7 @@ void ${component_name}GUI::OnMyNewItem()
+ void ${component_name}GUI::OnCallAction()
+ {
+   // Create a ${component_name} component
+-  ${component_name}_ORB::${component_name}_Gen_ptr ${component_name}gen = ${component_name}GUI::Init${component_name}Gen( getApp() );
++  ${module_name}_ORB::${component_name}_Gen_ptr ${component_name}gen = ${component_name}GUI::Init${component_name}Gen( getApp() );
+   
+   // Do the job...
+   //
+@@ -256,7 +256,7 @@ hxxgui_h="""
+ #include <SalomeApp_Module.h>
+ #include <SALOMEconfig.h>
+-#include CORBA_CLIENT_HEADER(${component_name})
++#include CORBA_CLIENT_HEADER(${module_name})
+ class SalomeApp_Application;
+ class ${component_name}GUI: public SalomeApp_Module
+@@ -270,7 +270,7 @@ public:
+   QString engineIOR() const;
+   void    windows( QMap<int, int>& ) const;
+-  static ${component_name}_ORB::${component_name}_Gen_ptr Init${component_name}Gen( SalomeApp_Application* );
++  static ${module_name}_ORB::${component_name}_Gen_ptr Init${component_name}Gen( SalomeApp_Application* );
+   virtual void                createPreferences();
+   virtual void                preferencesChanged( const QString&, const QString& );
+diff --git a/module_generator/hxxcompo.py b/module_generator/hxxcompo.py
+index 46d2f13..b042ad7 100644
+--- a/module_generator/hxxcompo.py
++++ b/module_generator/hxxcompo.py
+@@ -54,11 +54,15 @@ class HXX2SALOMEComponent(Component):
+                  matches.append(os.path.join(path, filename))
+         return matches
++    assert cpplib[:3]=='lib' and cpplib[-3:]=='.so',\
++           'Error, library name %s does not conform to lib<name>.so pattern' 
++    cpplibname=cpplib[3:-3]
+     hxxfileful = search_file(hxxfile,cpp_path)
+     cpplibful = search_file(cpplib,cpp_path)
+     format_error = 'Error in HXX2SALOMEComponent : file %s not found in %s'
+     assert len(hxxfileful) > 0, format_error %  (hxxfile, cpp_path)
+     assert len(cpplibful) > 0, format_error % (cpplib, cpp_path)
++    self.hxxfile=hxxfile  # store it for cxxCompo template
+     hxxfile = hxxfileful[0]
+     cpplib = cpplibful[0]
+@@ -304,8 +308,8 @@ class HXX2SALOMEComponent(Component):
+            body=code,
+            ) )
+-    Includes = os.path.join(cpp_path, "include")
+-    Libs = [ Library( name=name+"CXX", path=os.path.join(cpp_path, "lib"))]
++    Includes = os.path.dirname(hxxfile)
++    Libs = [ Library( name=cpplibname, path=os.path.dirname(cpplib))]
+     Compodefs=""
+     Inheritedclass=""
+     self.inheritedconstructor=""
+@@ -438,28 +442,30 @@ class HXX2SALOMEComponent(Component):
+                            parameters=gen.makeArgs(serv),
+                            body=serv.body % {"module":gen.module.name+"_ORB"} )
+       services.append(service)
+-    return cxxCompo.substitute(component=self.name, 
++    return cxxCompo.substitute(component=self.name, hxxfile=self.hxxfile, 
+                                inheritedconstructor=self.inheritedconstructor,
+                                servicesdef="\n".join(defs),
+                                servicesimpl="\n".join(services))
+ # ------------------------------------------------------------------------------
+-  def getGUIfilesTemplate(self):
++  def getGUIfilesTemplate(self, module_name):
+       """generate in a temporary directory files for a generic GUI, 
+          and return a list with file names.
+          it is the responsability of the user to get rid 
+          of the temporary directory when finished
+       """
+-      gui_cxx=hxxgui_cxx.substitute(component_name=self.name)
+-      gui_h=hxxgui_h.substitute(component_name=self.name)
++      gui_cxx=hxxgui_cxx.substitute(component_name=self.name, 
++                                    module_name=module_name)
++      gui_h=hxxgui_h.substitute(component_name=self.name, 
++                                module_name=module_name)
+       gui_icon_ts=hxxgui_icon_ts.substitute(component_name=self.name)
+       gui_message_en=hxxgui_message_en.substitute(component_name=self.name)
+       gui_message_fr=hxxgui_message_fr.substitute(component_name=self.name)
+       gui_config=hxxgui_config.substitute(component_name=self.name)
+       gui_xml_fr=hxxgui_xml_fr.substitute(component_name=self.name)
+       gui_xml_en=hxxgui_xml_en.substitute(component_name=self.name)
+-      gui_salomeapp_gen=cppsalomeapp.substitute(module=self.name,
+-                                                lmodule=self.name.lower(),
++      gui_salomeapp_gen=cppsalomeapp.substitute(module=module_name,
++                                                lmodule=module_name.lower(),
+                                                 version="V0")
+       # for a salome component generated by hxx2salome from a c++ component, 
+       # the documentation points at the c++ component documentation
+diff --git a/module_generator/hxxparacompo.py b/module_generator/hxxparacompo.py
+index b093761..80aae50 100644
+--- a/module_generator/hxxparacompo.py
++++ b/module_generator/hxxparacompo.py
+@@ -355,7 +355,7 @@ void *th_%(serv_name)s(void *s)
+         self.thread_func_decl.append(service_definition[serv]["thread_func_decl"])
+         self.thread_str_decl.append(service_definition[serv]["thread_str_decl"])
+ #    Includes="-I${"+name+"CPP_ROOT_DIR}/include"
+-    Includes = os.path.join(cpp_path, "include")
++    Includes = os.path.dirname(hxxfileful)
+ #    Libs="-L${"+name+"CPP_ROOT_DIR}/lib -l"+cpplibname
+ #    Libs=[cpplibname+" PATH "+ os.path.join(cpp_path, "lib") ]
+     Libs = [ Library( name=cpplibname, path=os.path.join(cpp_path, "lib"))]
+diff --git a/script/hxx2salome.py b/script/hxx2salome.py
+index 053e697..7c28d82 100755
+--- a/script/hxx2salome.py
++++ b/script/hxx2salome.py
+@@ -146,7 +146,7 @@ def hxx2salome(cppdir,
+     # if a graphical user interface is required,
+     # ask HXX2SALOMEComponent to generate template files
+     if do_gui:
+-        gui_files=salome_compo.getGUIfilesTemplate()
++        gui_files=salome_compo.getGUIfilesTemplate(salome_compo.name)
+         g=Generator(Module(salome_compo.name,components=[salome_compo],
+             prefix=module_root_dir,
+             gui=gui_files),
diff --git a/products/perl.pyconf b/products/perl.pyconf
new file mode 100644 (file)
index 0000000..0db1945
--- /dev/null
@@ -0,0 +1,25 @@
+default :
+{
+    name : "perl"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      compile_time : "yes"
+    }
+}
+
+default_win :
+{
+   archive_info : {archive_name : "perl-" + $APPLICATION.products.perl + "_windows.tar.gz"}
+}
diff --git a/products/petsc.pyconf b/products/petsc.pyconf
new file mode 100644 (file)
index 0000000..a55aae0
--- /dev/null
@@ -0,0 +1,16 @@
+default :
+{
+    name : "petsc"
+    build_source : "script"
+    compil_script :  $name + ".sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
+
diff --git a/products/planegcs.pyconf b/products/planegcs.pyconf
new file mode 100644 (file)
index 0000000..08457c5
--- /dev/null
@@ -0,0 +1,21 @@
+default :
+{
+    name : "planegcs"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['eigen','boost']
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
+
diff --git a/products/pockets.pyconf b/products/pockets.pyconf
new file mode 100644 (file)
index 0000000..0e018cd
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "pockets"
+    build_source : "script"
+    compil_script : "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    depend : ['Python','six','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "pockets-" + $APPLICATION.products.pockets + "_windows.tar.gz"}
+}
diff --git a/products/pthreads.pyconf b/products/pthreads.pyconf
new file mode 100755 (executable)
index 0000000..9175b16
--- /dev/null
@@ -0,0 +1,37 @@
+default :
+{
+    name : "pthreads"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+   archive_info : {archive_name : "pthreads-" + $APPLICATION.products.pthreads + "_windows.tar.gz"}
+}
+
+# needed in order to screen with windows version - see below
+version_2_9_1:
+{
+  patches : []
+}
+
+version_2_9_1_win:
+{
+  patches : ["pthreads-2.9.1_windows.patch"]
+}
+
diff --git a/products/pybind11.pyconf b/products/pybind11.pyconf
new file mode 100644 (file)
index 0000000..416a430
--- /dev/null
@@ -0,0 +1,20 @@
+default :
+{
+    name : "pybind11"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+    }
+    depend : ['Python', 'setuptools']
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
\ No newline at end of file
diff --git a/products/pyparsing.pyconf b/products/pyparsing.pyconf
new file mode 100644 (file)
index 0000000..155e6be
--- /dev/null
@@ -0,0 +1,34 @@
+default :
+{
+    name : "pyparsing"
+    build_source : "script"
+    compil_script :   "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-pyparsing"]
+        rpm_dev : []
+        apt : ["python3-pyparsing"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python']
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+       incremental : "yes"
+       pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "pyparsing-" + $APPLICATION.products.pyparsing + "_windows.tar.gz"}
+}
diff --git a/products/pyreadline.pyconf b/products/pyreadline.pyconf
new file mode 100755 (executable)
index 0000000..e666780
--- /dev/null
@@ -0,0 +1,39 @@
+default :
+{
+    name : "pyreadline"
+    build_source : "script"
+    compil_script :  "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info :
+    {
+       rpm : ["readline"]
+       rpm_dev : []
+       apt : ["readline-common"]
+       apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "no" # bug on linux : windows version returned!
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "pyreadline-" + $APPLICATION.products.pyreadline + "_windows.tar.gz"} # in case pip is set to 'no'
+   depend : ["Python","setuptools"]
+   properties:
+   {
+     incremental : "yes"
+     pip : "yes"
+   }
+}
diff --git a/products/pytz.pyconf b/products/pytz.pyconf
new file mode 100644 (file)
index 0000000..c78b30d
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "pytz"
+    build_source : "script"
+    compil_script :   "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-pytz"]
+        rpm_dev : []
+        apt : ["python3-tz"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "pytz-" + $APPLICATION.products.pytz + "_windows.tar.gz"}
+}
diff --git a/products/qt.pyconf b/products/qt.pyconf
new file mode 100644 (file)
index 0000000..8c26d05
--- /dev/null
@@ -0,0 +1,76 @@
+default:
+{
+    name : "qt"
+    build_source : "script"
+    compil_script : $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : []
+        rpm_dev : ["qt5-devel"]
+        apt : ["build-essential"]
+        apt_dev : ["libgl1-mesa-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ["freetype"]
+    patches : []
+    check_install : ["lib/libQt5DBus.so"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+    }
+}
+
+default_win:
+{
+   check_install : []
+}
+
+version_4_8_4 :
+{
+    compil_script :  "qt-4.8.4.sh"
+    patches : ["qt-4.8.4-enable-webkit-compilation-whith-gcc5.patch"]
+    depend : []
+    check_install : []
+}
+
+version_5_5_1:
+{
+    compil_script :  "qt-5.5.1.sh"
+    patches : [
+                  "qt-5.5.1-qlockfile.patch"
+                  "qt_5.5.1-qwebengine.patch"
+              ]
+    depend : []
+}
+
+version_4_6_3:
+{
+    compil_script :  "qt-4.6.3.sh"
+    patches : ["qt-463-gcc46.patch"]
+    depend : []
+    check_install : []
+}
+
+version_5_6_1_1:
+{
+    compil_script : "qt-5.6.1" + $VARS.scriptExtension
+    depend : []
+}
+
+version_test:
+{
+    compil_script : "qt-5.6.1_test.sh"
+    depend : []
+}
+
+version_5_9_1 :
+{
+  patches : []
+}
diff --git a/products/qwt.pyconf b/products/qwt.pyconf
new file mode 100644 (file)
index 0000000..1f8ff3c
--- /dev/null
@@ -0,0 +1,59 @@
+default : 
+{
+    name : "qwt"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['qt']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+    }
+}
+
+version_6_1_0 :
+{
+    compil_script :  "qwt-6.1.0.sh"
+    archive_info:
+    {
+        archive_name : "qwt-6.1.0.tar.bz2"
+    }
+}
+
+version_6_1_2 :
+{
+    compil_script :  "qwt-6.1.0.sh"
+    archive_info:
+    {
+        archive_name : "qwt-6.1.2.tar.bz2"
+    }
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "no"
+    }
+}
+
+version_6_1_2_win :
+{
+    compil_script :  "qwt-6.1.0.bat"
+    archive_info:
+    {
+           archive_name : "qwt-6.1.2.tar.gz"
+    }
+}
+
+version_5_2_1 :
+{
+    archive_info:
+    {
+        archive_name : "qwt-5.2.1.tar.bz2"
+    }
+}
diff --git a/products/requests.pyconf b/products/requests.pyconf
new file mode 100755 (executable)
index 0000000..3ef8074
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "requests"
+    build_source : "script"
+    compil_script : "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    system_info :
+    {
+       rpm : ["python3-requests"]
+       rpm_dev : []
+       apt : ["python3-requests"]
+       apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools', 'certifi', 'urllib3', 'idna', 'chardet']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "requests-" + $APPLICATION.products.requests + "_windows.tar.gz"}
+}
diff --git a/products/root.pyconf b/products/root.pyconf
new file mode 100644 (file)
index 0000000..a28efad
--- /dev/null
@@ -0,0 +1,28 @@
+default :
+{
+    name : "root"
+    build_source : "cmake"
+    cmake_options : ""
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['cmake', 'Python']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+    }
+}
+version_6_16_00:
+{}
+
+version_6_16_00_win:
+{
+    archive_info : {archive_name : "root_v6.16.00-windows.tar.gz"}
+    build_source : "script"
+    compil_script :  "root.bat"
+}
\ No newline at end of file
diff --git a/products/ruby.pyconf b/products/ruby.pyconf
new file mode 100644 (file)
index 0000000..75bc32c
--- /dev/null
@@ -0,0 +1,25 @@
+default :
+{
+    name : "ruby"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      compile_time : "yes"
+    }
+}
+
+default_win :
+{
+   archive_info : {archive_name : "ruby-" + $APPLICATION.products.ruby + "_windows.tar.gz"}
+}
diff --git a/products/scipy.pyconf b/products/scipy.pyconf
new file mode 100755 (executable)
index 0000000..43f2241
--- /dev/null
@@ -0,0 +1,69 @@
+default :
+{
+    name : "scipy"
+    build_source : "script"
+    compil_script : "pip_install" + $VARS.scriptExtension
+    get_source : "archive"
+    patches : []
+    system_info : 
+    {
+        rpm : ["python3-scipy"]
+        rpm_dev : []
+        apt : ["python3-scipy"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['numpy','lapack']
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   archive_info : {archive_name : "scipy-" + $APPLICATION.products.scipy + "_windows.tar.gz"}
+}
+
+version_1_3_0 : 
+{
+}
+
+version_1_3_0_win :
+{
+    compil_script : "scipy.bat"
+}
+
+version_0_18_1 :
+{
+    compil_script : "scipy.sh"
+    # OP 29/03/2018 Suppress the dependency to setuptools
+    depend : ['numpy','lapack']
+}
+
+version_0_15_1 :
+{
+    compil_script : "scipy.sh"
+    depend : ['Python','numpy','lapack']
+    patches : [ "scipy-0.14.1.patch" ]
+}
+
+version_0_15_1_win :
+{
+    compil_script : "scipy.bat"
+}
+
+version_0_13_3 :
+{
+    compil_script : "scipy.sh"
+    depend : ['numpy','lapack']
+    patches : [ "scipy-0.13.3.patch" ]
+}
diff --git a/products/scons.pyconf b/products/scons.pyconf
new file mode 100644 (file)
index 0000000..5a280ac
--- /dev/null
@@ -0,0 +1,19 @@
+default :
+{
+    name : "scons"
+    build_source : "script"
+    compil_script : "scons.sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : [
+                "Python"
+             ]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install : "base"
+
+} 
+
diff --git a/products/scotch.pyconf b/products/scotch.pyconf
new file mode 100644 (file)
index 0000000..ce6a726
--- /dev/null
@@ -0,0 +1,41 @@
+default :
+{
+    name : "scotch"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["scotch"]
+        rpm_dev : ["scotch-devel"]
+        apt : ["libscotch"]
+        apt_dev : ["libscotch-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
+
+version_5_1_12b :
+{
+    name : "scotch"
+    build_source : "script"
+    compil_script :  $name + "-5.1.12.sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
+
+
+
diff --git a/products/setuptools.pyconf b/products/setuptools.pyconf
new file mode 100644 (file)
index 0000000..31d7709
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "setuptools"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "setuptools-" + $APPLICATION.products.setuptools + "_windows.tar.gz"}
+}
diff --git a/products/sip.pyconf b/products/sip.pyconf
new file mode 100644 (file)
index 0000000..b84e52f
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "sip"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : []
+        rpm_dev : ["python3-sip-devel"]
+        apt : ["python3-sip"]
+        apt_dev : ["python3-sip-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'qt']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
diff --git a/products/six.pyconf b/products/six.pyconf
new file mode 100644 (file)
index 0000000..d687fc3
--- /dev/null
@@ -0,0 +1,34 @@
+default :
+{
+    name : "six"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    patches : []
+    system_info : 
+    {
+        rpm : ["python3-six"]
+        rpm_dev : []
+        apt : ["python3-six"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "six-" + $APPLICATION.products.six + "_windows.tar.gz"}
+}
diff --git a/products/snowballstemmer.pyconf b/products/snowballstemmer.pyconf
new file mode 100644 (file)
index 0000000..13b7d96
--- /dev/null
@@ -0,0 +1,33 @@
+default :
+{
+    name : "snowballstemmer"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-snowballstemmer"]
+        rpm_dev : []
+        apt : ["python3-snowballstemmer"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "snowballstemmer-" + $APPLICATION.products.snowballstemmer + "_windows.tar.gz"}
+}
diff --git a/products/solvespace.pyconf b/products/solvespace.pyconf
new file mode 100644 (file)
index 0000000..72112c8
--- /dev/null
@@ -0,0 +1,17 @@
+version_2_1 :
+{
+    name : "solvespace"
+    build_source : "script"
+    compil_script :  $name + "-2.1.sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
+
diff --git a/products/sphinx_rtd_theme.pyconf b/products/sphinx_rtd_theme.pyconf
new file mode 100644 (file)
index 0000000..4c93f6b
--- /dev/null
@@ -0,0 +1,38 @@
+default :
+{
+    name : "sphinx_rtd_theme"
+    build_source : "script"
+    compil_script :  $name + ".sh"
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-sphinx_rtd_theme"]
+        rpm_dev : []
+        apt : ["python3-sphinx-rtd-theme"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python', 'Sphinx']
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+version_0_1_9:
+{
+    patches : [ 'sphinx_rtd_theme-0.1.9_no_dependence_sphinx.patch']
+    properties:
+    {
+      incremental : "yes"
+      pip : "no"
+    }
+}
diff --git a/products/sphinxcontrib.pyconf b/products/sphinxcontrib.pyconf
new file mode 100644 (file)
index 0000000..adccb5f
--- /dev/null
@@ -0,0 +1,19 @@
+default :
+{
+    name : "sphinxcontrib"
+    build_source : "script"
+    compil_script :  $name + ".sh"
+    get_source : "archive"
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    depend : ['Python','six','pockets','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+        pip : "yes"
+    }
+}
diff --git a/products/sphinxcontrib_applehelp.pyconf b/products/sphinxcontrib_applehelp.pyconf
new file mode 100644 (file)
index 0000000..f42048b
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "sphinxcontrib-applehelp"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : "sphinxcontrib_applehelp.py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "sphinxcontrib_applehelp"
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "sphinxcontrib_applehelp"
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "sphinxcontrib_applehelp-" + $APPLICATION.products.sphinxcontrib_applehelp + "_windows.tar.gz"}
+}
diff --git a/products/sphinxcontrib_devhelp.pyconf b/products/sphinxcontrib_devhelp.pyconf
new file mode 100644 (file)
index 0000000..b7d6d87
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "sphinxcontrib-devhelp"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : "sphinxcontrib_devhelp.py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "sphinxcontrib_devhelp"
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "sphinxcontrib_devhelp"
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "sphinxcontrib_devhelp-" + $APPLICATION.products.sphinxcontrib_devhelp + "_windows.tar.gz"}
+}
diff --git a/products/sphinxcontrib_htmlhelp.pyconf b/products/sphinxcontrib_htmlhelp.pyconf
new file mode 100644 (file)
index 0000000..fe20a34
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "sphinxcontrib-htmlhelp"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : "sphinxcontrib_htmlhelp.py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "sphinxcontrib_htmlhelp"
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "sphinxcontrib_htmlhelp"
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "sphinxcontrib_htmlhelp-" + $APPLICATION.products.sphinxcontrib_htmlhelp + "_windows.tar.gz"}
+}
diff --git a/products/sphinxcontrib_jsmath.pyconf b/products/sphinxcontrib_jsmath.pyconf
new file mode 100644 (file)
index 0000000..caac1c9
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "sphinxcontrib-jsmath"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : "sphinxcontrib_jsmath.py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "sphinxcontrib_jsmath"
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "sphinxcontrib_jsmath"
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "sphinxcontrib_jsmath-" + $APPLICATION.products.sphinxcontrib_jsmath + "_windows.tar.gz"}
+}
diff --git a/products/sphinxcontrib_napoleon.pyconf b/products/sphinxcontrib_napoleon.pyconf
new file mode 100644 (file)
index 0000000..0a5c6ab
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "sphinxcontrib_napoleon"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    depend : ['Python','six','pockets','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "sphinxcontrib_napoleon-" + $APPLICATION.products.sphinxcontrib_napoleon + "_windows.tar.gz"}
+}
diff --git a/products/sphinxcontrib_qthelp.pyconf b/products/sphinxcontrib_qthelp.pyconf
new file mode 100644 (file)
index 0000000..c782b10
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "sphinxcontrib-qthelp"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : "sphinxcontrib_qthelp.py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "sphinxcontrib_qthelp"
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "sphinxcontrib_qthelp"
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "sphinxcontrib_qthelp-" + $APPLICATION.products.sphinxcontrib_qthelp + "_windows.tar.gz"}
+}
diff --git a/products/sphinxcontrib_serializinghtml.pyconf b/products/sphinxcontrib_serializinghtml.pyconf
new file mode 100644 (file)
index 0000000..eecbb99
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "sphinxcontrib-serializinghtml"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : "sphinxcontrib_serializinghtml.py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "sphinxcontrib_serializinghtml-" + $APPLICATION.products.sphinxcontrib_serializinghtml + "_windows.tar.gz"}
+}
diff --git a/products/sphinxcontrib_websupport.pyconf b/products/sphinxcontrib_websupport.pyconf
new file mode 100755 (executable)
index 0000000..0e0cc8c
--- /dev/null
@@ -0,0 +1,34 @@
+default :
+{
+    name : "sphinxcontrib_websupport"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-sphinxcontrib-websupport"]
+        rpm_dev : []
+        apt : ["python3-sphinxcontrib.websupport"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      single_install_dir : "no"
+      pip : "yes"
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "sphinxcontrib_websupport-" + $APPLICATION.products.sphinxcontrib_websupport + "_windows.tar.gz"}
+}
diff --git a/products/sphinxintl.pyconf b/products/sphinxintl.pyconf
new file mode 100644 (file)
index 0000000..5804a43
--- /dev/null
@@ -0,0 +1,26 @@
+default :
+{
+    name : "sphinx_intl"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+        env_script : "sphinxintl.py"
+    }
+    depend : ['Python', 'setuptools', 'click', 'Sphinx','Babel','six','pytz']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "sphinx_intl-" + $APPLICATION.products.sphinxintl + "_windows.tar.gz"}
+}
diff --git a/products/subprocess32.pyconf b/products/subprocess32.pyconf
new file mode 100644 (file)
index 0000000..82bc6f8
--- /dev/null
@@ -0,0 +1,19 @@
+default :
+{
+    name : "subprocess32"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    archive_info:
+    {
+        archive_name : $name + "-3.5.0rc1.tar.gz"
+    }
+    environ :
+    {
+        env_script : $name + ".py"
+    }
+    depend : ['Python', 'setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
diff --git a/products/swig.pyconf b/products/swig.pyconf
new file mode 100644 (file)
index 0000000..756b517
--- /dev/null
@@ -0,0 +1,32 @@
+default :
+{
+    name : "swig"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info :
+    {
+        rpm : []
+        rpm_dev : ["swig"]
+        apt : []
+        apt_dev : ["swig"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      compile_and_runtime : "yes"
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+   archive_info : {archive_name : "swig-" + $APPLICATION.products.swig + "_windows.tar.gz"}
+}
diff --git a/products/tbb.pyconf b/products/tbb.pyconf
new file mode 100644 (file)
index 0000000..bae7f47
--- /dev/null
@@ -0,0 +1,42 @@
+default :
+{
+    name : "tbb"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["tbb"]
+        rpm_dev : ["tbb-devel"]
+        apt : ["libtbb"]
+        apt_dev : ["libtbb-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['llvm']
+    build_depend : ["cmake"]
+    patches : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "no"
+    }
+}
+
+version_2019_U8_win :
+{
+    archive_info : {archive_name : "tbb-2019_U8.tar.gz"}
+    patches : ['tbb-2019_U8_windows10.patch']
+    depend : ['Python']
+    opt_depend : ['ispc']
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
diff --git a/products/tcl.pyconf b/products/tcl.pyconf
new file mode 100644 (file)
index 0000000..501dcfc
--- /dev/null
@@ -0,0 +1,43 @@
+default :
+{
+    name : "tcl"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["tcl"]
+        rpm_dev : ["tcl-devel"]
+        apt : ["libtcl"]
+        apt_dev : ["tcl-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    patches: []
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
+
+default_win:
+{
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "no"
+    }
+}
+
+version_8_6_9:
+{
+  patches : []
+}
+
diff --git a/products/tcltk.pyconf b/products/tcltk.pyconf
new file mode 100644 (file)
index 0000000..b201478
--- /dev/null
@@ -0,0 +1,40 @@
+default :
+{
+    name : "tcltk"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+        incremental : "yes"
+        single_install_dir : "yes"
+    }
+}
+
+default_win:
+{
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
+
+# needed in order to screen with windows version - see below
+version_8_6_9:
+{
+  patches : []
+}
+
+version_8_6_9_win:
+{
+  patches : ["tcltk-8.6.9_windows.patch"]
+}
diff --git a/products/tk.pyconf b/products/tk.pyconf
new file mode 100644 (file)
index 0000000..8885b38
--- /dev/null
@@ -0,0 +1,42 @@
+default :
+{
+    name : "tk"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["tk"]
+        rpm_dev : ["tk-devel"]
+        apt : ["libtk"]
+        apt_dev : ["tk-dev"]
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    patches : []
+    depend : ["tcl"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "yes"
+    }
+}
+
+default_win:
+{
+    properties :
+    {
+      incremental : "yes"
+      single_install_dir : "no"
+    }
+}
+
+version_8_6_9:
+{
+  patches : []
+}
diff --git a/products/typing.pyconf b/products/typing.pyconf
new file mode 100644 (file)
index 0000000..649923e
--- /dev/null
@@ -0,0 +1,16 @@
+default :
+{
+    name : "typing"
+    build_source : "script"
+    compil_script :  $name + ".sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ["Python"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
+
diff --git a/products/uranie_win.pyconf b/products/uranie_win.pyconf
new file mode 100755 (executable)
index 0000000..63a478c
--- /dev/null
@@ -0,0 +1,15 @@
+default :
+{
+    name : "uranie_win"
+    build_source : "script"
+    compil_script :  "uranie_win.sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : "uranie_win.py"
+    }
+    depend : []
+    install_dir : $APPLICATION.workdir + $VARS.sep + 'INSTALL' + $VARS.sep + "uranie"
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + "uranie"
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + "uranie"
+}
diff --git a/products/urllib3.pyconf b/products/urllib3.pyconf
new file mode 100755 (executable)
index 0000000..a1bf4b5
--- /dev/null
@@ -0,0 +1,34 @@
+default :
+{
+    name : "urllib3"
+    build_source : "script"
+    compil_script :  'pip_install' + $VARS.scriptExtension
+    get_source : "archive"
+    system_info : 
+    {
+        rpm : ["python3-urllib3"]
+        rpm_dev : []
+        apt : ["python3-urllib3"]
+        apt_dev : []
+    }
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['Python','setuptools']
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+      pip : "yes"
+    }
+}
+
+default_win :
+{
+   compil_script :  'pip_install_whl' + $VARS.scriptExtension
+   archive_info : {archive_name : "urllib3-" + $APPLICATION.products.urllib3 + "_windows.tar.gz"}
+   depend : ['Python','setuptools','idna']
+}
diff --git a/products/vtk.pyconf b/products/vtk.pyconf
new file mode 100644 (file)
index 0000000..32b9074
--- /dev/null
@@ -0,0 +1,17 @@
+default :
+{
+    name : "vtk"
+    build_source : "script"
+    compil_script :  $name + ".sh"
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : ['tcl', 'tk', 'Python']
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+}
+
diff --git a/products/zlib.pyconf b/products/zlib.pyconf
new file mode 100755 (executable)
index 0000000..0a6d9e6
--- /dev/null
@@ -0,0 +1,30 @@
+default :
+{
+    name : "zlib"
+    build_source : "script"
+    compil_script :  $name + $VARS.scriptExtension
+    get_source : "archive"
+    environ :
+    {
+       env_script : $name + ".py"
+    }
+    depend : []
+    build_depend : ["cmake"]
+    source_dir : $APPLICATION.workdir + $VARS.sep + 'SOURCES' + $VARS.sep + $name
+    build_dir : $APPLICATION.workdir + $VARS.sep + 'BUILD' + $VARS.sep + $name
+    install_dir : 'base'
+    properties:
+    {
+      incremental : "yes"
+    }
+}
+
+default_win :
+{
+   archive_info : {archive_name : "zlib-" + $APPLICATION.products.zlib + "_windows.tar.gz"}
+   properties:
+   {
+     incremental : "yes"
+     single_install_dir : "yes"
+   }
+}
diff --git a/salome-W10.pyconf b/salome-W10.pyconf
new file mode 100644 (file)
index 0000000..1f80aae
--- /dev/null
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+project_path : $PWD
+
+# Where to search the archives of the products
+ARCHIVEPATH : "\\\\terre\\data\\tmpsalome\\salome\\prerequis\\archives"
+ARCHIVEFTP : "ftp.cea.fr/pub/salome/prerequisites"
+# Where to search the pyconf of the applications
+APPLICATIONPATH : $project_path + "\\applications\\"
+# Where to search the pyconf of the products
+PRODUCTPATH : $project_path + "\\products"
+# Where to search the pyconf of the jobs of the project
+JOBPATH : $project_path + r"\\jobs\\" 
+# Where to search for licences
+LICENCEPATH : "\\\\terre\\data\\tmpsalome\\salome\\prerequis\\install\\LICENSE:/data/tmpsalome/salome/prerequis/install/LICENCE:/export/home/salome/prerequis/install/LICENCE:/volatile/salome/prerequis/install/LICENCE:/soft/commun/SALOME/LICENSE"
+
+git_info : 
+{
+    default_git_server : "http://git.salome-platform.org/gitpub/"
+    default_git_server_dev : "https://codev-tuleap.cea.fr/plugins/git/salome/"
+}
+
+test_bases :
+[
+      {
+        name : 'SALOME'
+        get_sources : 'git'
+        info :
+        {
+          base : 'https://codev-tuleap.cea.fr/plugins/git/spns/CEATESTBASE.git'
+        }
+      }
+]
diff --git a/salome.pyconf b/salome.pyconf
new file mode 100644 (file)
index 0000000..c1b054e
--- /dev/null
@@ -0,0 +1,34 @@
+#!/usr/bin/env python
+#-*- coding:utf-8 -*-
+
+project_path : $PWD
+
+# Where to search the archives of the products
+ARCHIVEPATH : "/data/tmpsalome/salome/prerequis/archives"
+ARCHIVEFTP : "ftp.cea.fr/pub/salome/prerequisites"
+# Where to search the pyconf of the applications
+APPLICATIONPATH : $project_path + "/applications/"
+# Where to search the pyconf of the products
+PRODUCTPATH : $project_path + "/products/"
+# Where to search the pyconf of the jobs of the project
+JOBPATH : $project_path + "/jobs/" 
+# Where to search for licences
+LICENCEPATH : "\\\\terre\\data\\tmpsalome\\salome\\prerequis\\install\\LICENSE:/data/tmpsalome/salome/prerequis/install/LICENCE:/export/home/salome/prerequis/install/LICENCE:/volatile/salome/prerequis/install/LICENCE:/soft/commun/SALOME/LICENSE"
+
+git_info : 
+{
+    default_git_server : "http://git.salome-platform.org/gitpub/"
+    default_git_server_dev : "https://codev-tuleap.cea.fr/plugins/git/salome/"
+}
+
+test_bases :
+[
+      {
+        name : 'SALOME'
+        get_sources : 'git'
+        info :
+        {
+          base : 'https://codev-tuleap.cea.fr/plugins/git/spns/CEATESTBASE.git'
+        }
+      }
+]